The problem with the old method is that the libtool is configured to look
first in LOCALBASE for libraries to link to. Normaly this wouldn't cause
a problem. However if a port that builds a library with new API also builds
introspection files or say gtk bindings, then libtool will look first into
LOCALBASE and find the old library version for linking the introspection
files or gtk bindings. Due to the missing new API in old library the build
will fail with unresolved symbols.
The new ltverhack will patch the ltmain.sh and/or libtool files that where
bundled with the port. This libtool is correctly configured to first look
in for the just build libraries.
If the port bundled version of ltmain.sh and/or libtool aren't in ${WRKSRC}
then ltverhack_PATCH_FILES can be overwritten with there location in ${WRKSRC}.
As a bonus when using the new ltverhack configure will honor --disable-static
again. So please check your plist after converting.
While here shorten the number of tabs in the lthacks, ltverhack and
ltasneededhack PRE_PATCH components so they are just over 80 chars long.
Exp-run by: bdrewery@
PR: ports/183936
Obtained from: gnome dev repo
It is intended to replace USE_DOS2UNIX
By default it convert all the source files
Use:
DOS2UNIX_FILES= <a list of files>
to convert files relative to ${WRKSRC} (globs allowed)
DOS2UNIX_REGEX= <a regex>
To convert files matching the regex (using find -R -iregex)
DOS2UNIX_GLOB= <a glob pattern>
To convert files matching the glob pattern (using find -name)
The deeply nested expression for .for loop cannot be completely evaluated at
the time of loop expansion because PKGBASE will be assigned much later.
Approved by: bapt
This also adds a new USE_SDL=gfx2 variable to add SDL2_gfx as
LIB_DEPENDS other ports.
The SDL_gfx library evolved out of the SDL_gfxPrimitives code which provided
basic drawing routines such as lines, circles or polygons and SDL_rotozoom
which implemented a interpolating rotozoomer for SDL surfaces.
The current components of the SDL_gfx library are:
- Graphic Primitives (SDL_gfxPrimitves.h)
- Rotozoomer (SDL_rotozoom.h)
- Framerate control (SDL_framerate.h)
- MMX image filters (SDL_imageFilter.h)
WWW: http://www.ferzkopp.net/Software/SDL_gfx-2.0/
Simplify it a lot,
remove all not supported anymore web browsers,
Prepend private varible behind an underscore
Rename the gecko18, gecko19 target into a simple gecko target
If you are writing a plugin port please use this USES, and if this USES does fit your need please report it so we can improve.
Which is nice in case you end up with something like :
X11_USE= xorg=x11 xorg=ice xorg=sm xorg=xext xorg=xineramaproto
xorg=xinerama xorg=xrandr xorg=xrender xorg=xtst
now you can do :
X11_USE= xorg=x11,ice,sm,xext,xineramaproto,xinerama,xrandr,xrender,xtst
PR: ports/183892
Approved by: bapt
This allows stage dir support for python packages using easy_install
method from setuptools module.
easy_install target does not support a --root so we workaround it with
PYTHONUSERBASE and other user flags.
Submitted by: nivit, wg
With hat on: python
Exp-run: bdrewery
This allows upgrading a kernel without breaking any installed kernel ports
because during the upgrade /boot/kernel is renamed to /boot/kernel.old ,
resulting in moved files.
While /boot/modules is the default, it might be overridden by bsd.own.mk to
/boot/kernel before kmod is included, so setting MODULES_WITH_WORLD has no
effect.
This gives 2 new variables to the porters:
ALT_COMPILER_TYPE which can be empty, clang or cc depending on what ${CC} is
ALT_COMPILER_VERSION which will give the porter a 2 digit version of the alternative compiler
Requested by: many
Additionally, support staging in all ports being changed here, replace
USE_GMAKE=yes with USES=gmake and fix a typo in the CMake parameters passed
in kdevelop-kde4 when the OKTETA option is disabled.
Submitted by: Schaich Alonso <alonsoschaich@fastmail.fm>
always use the "@unexec rmdir" form in TMPPLIST. @dirrmtry lines are
substituted with this in bsd.port.mk, but only when generating TMPPLIST.
While here update the description in the header.
Submitted by: QAT for commit r332642 (8.4-QAT/i386)
Due to the RUN_DEPENDS and BUILD_DEPENDS specification of postgresql
components in bsd.database.mk not matching their package names,
net-mgmt/netmagis-database was failing during the RUN_DEPENDS stage
because it couldn't detect that a component was already installed.
Updating the pltcl line allowed that port to successfully built. The
other lines weren't tested but the problem would be the same.
Suggested by: wg
Bugfixes:
* @cmd in pkg-plist is now properly handled.
- It was previously treated the same as though there was a directory
following it, missing the prefix. (ordering matters in case...esac)
- Due to the cwd=${PREFIX} inside the while read line loop, state
tracking was broken and every new line assumed that cwd were the
prefix.
* stage-qa no longer complains about unstripped binaries if debugging is
active (WITH_DEBUG set && WITHOUT_DEBUG unset).
* The compress-man target uses ECHO_MSG, not ECHO_CMD, to print its
build step.
Additions:
* The plist parser now understands @unexec rmdir ... || ... lines,
including those with redirections, so that there are no false
positives for directories stripped with @unexec rmdir (usually
happens on stuff installed outside $PREFIX, as in /var).
* The system's root and var mtrees are now also expanded to avoid
false @dirrm positives if a port installs directories under /var
and has to create parents in the stagedir that are present in a fully
installed system (i. e. in the real $PREFIX).
* Given that pkg_create is deemed beyond repair with respect to deleting
files outside prefix, generate @unexec rmdir statements for such
directories, rather than @dirrmtry, to sidestep the problem.
Speedups:
* the orphan check now generates sorted lists of staged files,
and plisted/mtree files, and compares them with comm(1).
This saves us the overhead of running one grep process per file
and up to two per directory, and defers the actual list
processing to a shell utility. Complexity has not changed,
but overhead per item has.
* the orphan check now uses one file for directories and one file for
files mentioned in pkg-plist, so we need not decorate them with "dir "
and parse them out any longer.
* qa.sh's shebang scanner only looks at the first line of a file,
sed is told to exit from the 2nd line.
Other Changes:
* Split the makeplist/check-orphans logic out of bsd.stage.mk,
it is too unwieldy to maintain in make-escaped shell syntax,
and permits shell tracing with "SH=sh -x" (including quotes!)
* Unify the functions "makeplist" and "check-orphans" in one
script. The only difference is that makeplist assumes an empty
pkg-plist, whereas check-orphans parses it.
* overhaul the mtree extractor, avoiding awk.
Reviewed by: bapt
Approved by: portmgr (bapt)
USES=kmod takes no arguments and:
- adds kld to CATEGORIES
- sets SSP_UNSAFE
- sets IGNORE if the kernel sources are not found
- defines KMODDIR to /boot/modules by default, add it to
PLIST_SUB and MAKE_ENV, and create it upon installation
- handles cross-referencing kernel modules upon installation and
deinstallation
Approved by: bapt
- update firefox-esr to 24.1.0
- update thunderbird to 24.1.0
- update seamonkey to 22.0
- update libxul to 24.1.0
- don't remove/add share/applications directory
- remove checks for older gecko releases from bsd.gecko.mk
- drop support for FreeBSD 9.0
Not staged yet. I started working on it, but didn't finish it in time for
this release. I'll try to make the next one in 6 weeks.
In collaboration with: Jan Beich
post-install process instead of pre-install. in case pkgng is in
use.
Replace it by a new mecanism that allows to append scripts into
what will become pre-install, post-install, pre-deinstall or
post-deinstall
Change the user-group creation to use that mecanism in case the
ports tree is using pkgng.
Reported by: mandree
Reviewed by: bdrewery
${opt}_CONFIGURE_ENABLE and ${opt}_CONFIGURE_WITH now accept multiple arguments
and will be expanded accordingly, e.g.:
OPT_CONFIGURE_ENABLE= feature1 feature2 -- will add to CONFIGURE_ARGS:
OPT enabled: --enable-feature1 --enable-feature2
OPT disabled: --disable-feature1 --disable-feature2
Approved by: portmgr (bapt)
decided to build world with WITHOUT_ICONV set. There's no need for
this check to be based on OSVERSION.
Some users (i.e. me), report subtle application breakages with the
iconv-from-src that disappear when iconv-from-ports is installed.
Allow for a bridge till these issues are sorted out.
Approved by: portmgr (bdrewery)
- Provide support for Pure Programming Language based projects
PR: ports/179401
Submitted by: nemysis (self)
Approved by: pawel (mentor), bapt (portmgr)
The compiler.mk comments and code state that COMPILER_TYPE can only be
of the value "clang" or "gcc". However, the code that determines this
allows for a possible undefined third state (empty string). BMake
will emit a lot of errors about badly formatted conditionals if
COMPILER_TYPE is empty.
Since, by definition, if the COMPILER_TYPE is not clang, it must be
gcc, so skip the conditional gcc check and just set it. The entire
file must be updated if support for additional compilers is desired.
This bug was discovered because the gcc detection code failed to
identify the DragonFly base compiler (GCC 4.7.3) as gcc.
Approved by: portmgr (bapt)
Proudly brought to you by the KDE on FreeBSD team, with commits by makc@,
Schaich Alonso and yours truly.
Besides the tons of upstream fixes, we have mkspecs for GCC 4.9 and clang33
(from ports), staging support in the Makefiles and dependency fixes related
to pkg-config.
Many thanks to the people who helped test the ports using our area51
repository, and also to the people who provided patches and bug reports via
GNATS!
PR: ports/180615
ports/181921
ports/182049
Beware, this version of GCC is _not_ anywhere near ready for production
use. Use at your own risk, and rather don't use it for regular ports.
Submitted by: devzone.my@gmail.com
failure on every port that does not use shared-mime-info or need it.
Must return 0 at end of functions or it considers the last command ran as
the return code.
Reported by: eadler
With hat: portmgr
A couple of Q/A tests are done if the DEVELOPER macros is set in make.conf
Right now the tests are:
- Check if the symlinks are properly created
- Check if the binaries are stripped (just warn)
- Check if the STAGEDIR or the WORKDIR are referenced in the final files
- Check if the ports provide script with bad shebangs.
Supported arguments are:
- c++11-lang: the port needs a c++11 aware compiler what ever standard
library it uses, implies features
- c++11-lib: the port needs a c++11 standard library, implies features
- c11: the ports needs a c11 aware compiler implies features
- features: this will create a COMPILER_FEATURES variable which contains
the list of features ${CC} do support, implies env.
- env: the COMPILER_TYPE will be set to either gcc or clang.
By default the uses will try to use clang33 from ports when nothing in
base is relevant except if the user explicitly defines
FAVORITE_COMPILER=gcc in his make.conf
Please note that testing tinderbox prior to version: 4.0.1_1 is not able to
properly figure out the dependencies implied by this USES.
This is useful to be able to define extra mirrors in PATCH_SITES for
a group, while still depending on the master list of PATCH_SITES
For example:
.if ${PORT_OPTIONS:MX509}
PATCH_SITES= http://mirror1/x509-${X509_VERSION}/:x509
PATCHFILES= ${PORTNAME}-6.3p1+x509-${X509_VERSION}.diff.gz:-p1:x509
.endif
PATCH_SITES+= http://mirror2/${PORTNAME}/:DEFAULT,x509
This will use mirror1 only for the X509 option and mirror2 for X509. All
other patches will use mirror2 but not mirror1.
With hat: portmgr
PR: ports/52706
Submitted by: Alexey Neyman <alex.neyman@auriga.ru>
level to use. This allows multiple patches in 1 port to use different
PATCH_DIST_STRIP values without changing PATCH_DIST_STRIP.
Syntax: PATCHFILES= patch[:-pX][:distgroup]
PR: ports/168222
Submitted by: knu
With hat: portmgr
- Remove duplicate EXTRA_PATCHES comment
- Minor comment rewording: change "add it to" to "add its content to"
just like how we describe ${opt}_CMAKE_*
PR: ports/182626
Submitted by: sunpoet (myself)
Approved by: bapt (portmgr)
-- add PYTHON option to alsa-lib
-- drop unresponsive mirrors and those that rarely catch up
-- drop --disable-aload from alsa-lib, builds fine without
-- drop USE_LDCONFIG from alsa-plugins, useless for dlopen'd plugins
-- convert to new LIB_DEPENDS syntax and Makefile header
-- convert PLIST_SUB to OPTIONS_SUB
-- don't link alsa-utils against librt for clock_gettime(2)
-- pass paths to configure relative to --prefix value
-- install udev config(s) under PREFIX (for reference)
-- cleanup /var/lib as it's not in default MTREE_FILE
-- remove OSVERSION check for EOL releases
- allow staging
PR: ports/182245 [1]
Submitted by: Jan Beich <jbeich@tormail.org> [1]
Approved by: maintainer timeout
new DEFAULT_VERSIONS variable.
PYTHON_DEFAULT_VERSION, PYTHON2_DEFAULT_VERSION and
PYTHON3_DEFAULT_VERSION are deprecated. If you have set them in your
make.conf, you should change them something like
DEFAULT_VERSIONS=python=2.7 python2=2.7 python3=3.3
the package in STAGEDIR and then linking/copying it over to PACKAGES if
possible
With hat: portmgr
Reviewed by: bapt (earlier version)
Tested by: Stefan Bethke <stb@lassitu.de>
Reported by: many
install-package was depended on twice for install target, but it should
only be in SUSEQ
- Add a comment to make sequence code a bit more readable
With hat: portmgr
via USE_PYTHON=2 (for lang/python2) or USE_PYTHON=3 (for lang/python3).
This can be used for ports, which do not care, which specific minor
release version of Python 2.x or Python 3.x is used, as long as there
are proper symlinks to e.g. bin/python2 or bin/python3.
a kwm, zeising production:
MESA 9.1.6
Starring:
Mesa 9.1.6, including libGL, libGLU and dri (new xorg only)
Addition of libEGL and libglesv2
KMS support for ATI graphics cards in 10-current (new xorg only)
Improved sparc64 support for new xorg. [1]
pixman 0.30.2, including shlib bump and portrevision bumps
libX11 1.6.2
Make absolute pointing devices work with x11-drivers/xf86-input-mouse
x11-drivers/xf86-video-ati 7.2.0 for 10-current (KMS aware ati driver)
Also starring:
Updates to drivers and other libraries and utilities
Additional notes:
When updating MESA related ports (libGL, dri) you need to remove old versions
first. See UPDATING for details.
PR: ports/181962 [2]
Submitted by: marius [1]
zeising [2]
Exp-run by: bdrewery
Approved by: portmgr (bdrewery)
Thanks to all who helped testing!
Add support for specifying multiple versions in arguments, e.g.,
USES+=tcl:84,85. The picked version is the highest available one.
This basically brings in the last functionality that was left out in the
switch from USE_TCL to USES+=tcl, namely TCL_INVALID_VER. To specify an
invalid version, just list the valid ones.
Reviewed by: bdrewery (portmgr)
This will cause the ports framework to create the plist automatically
for distutils-based ports. All files installed via Python's distutils
mechanisms (either the traditional distutils or easy_install) will be
automtically added to the package list, regardless of the Python
version. It is somewhat similar to the RUBYGEM_AUTOPLIST knob.
- Introduce a new port Makefile knob PYTHON_PY3K_PLIST_HACK.
This automatically replaces .pyc and .pyo package list entries with
the relevant __pycache__ entries for Python 3.x. It should only be
used for ports, which do not use one of Python's default package
installation mechanisms and which are guaranteed to work with any
python version.
- perl.mk changes MAN3PREFIX only therefore we keep *MAN3 setting
- PERL5_MAN[124-9] point to non-existence directories
Submitted by: sunpoet
Reviewed by: az
Previous implementation was based on etc/man.d which doesn't exists in FreeBSD 8.
By default MANDIRS is ${MANPREFIX}/man. if a port adds USES=perl5 then the perl default locations is added
Reviewed by: bdrewery
- old USE_ZOPE knob support was removed from bsd.python.mk
- update CHANGES and bsd.sanity.mk accordingly
- add ZOPE options knob and use it in lang/py-mx-base
The work is done by Marcus von Appen, but any problems are mine.
Submitted by: mva (python ML)
The ports tree is now staged by default. With pkgng the sequence hasn't
changed, the main difference is that creating package is now independent
from installing it. With pkg_install, the package is now created first
and make install, do install the package.
New macros:
- STAGEDIR: PATH to the directory where the port will be staged.
- NO_STAGE: Keep the old behaviour of the ports tree (aka no staging area)
Unsupported macro if NO_STAGE is not set:
- MAN* with staging man page compression and handling of hardlinks and
symlinks is automatically done in the stage. the manpages becomes then a
"normal" plist files and should be tracked in pkg-plist.
- MANCOMPRESSED the compress-man target is able to only compress when it
needed.
New target:
- stage: this installs everything into the stage directory
- makeplist: this will create a pkg-plist and print it to stdout. This is
a sample plist and it should always be _reviewed_ not directly used.
NOTE: with staging only what is in the plist will be installed, nothing more,
meaning a port staged cannot have leftovers exect directories left. It is
really important to double check the pkg-plist to make sure all the files
the maintainer want to package are in! make makeplist can help in that area.
The goal is to handle as quickly as possible a full removal of the NO_STAGE
support.
More features can be added once the full ports tree is converted to using the
staging area
Conversion notes:
- Remove NO_STAGE
- in {pre,do,post}-install
* Before any usage of ${PREFIX}, ${ETCDIR}, ${PORTSDIR}, ${PORTEXAMPLES}
prepend ${STAGEDIR}
* Remove any thing that is done by @exec or +INSTALL script it will be
done automatically when syncing packages
* Remove any code to show PKG-MESSAGE it will be done automatically when
syncing packages
* Directory creation should remain in post-install (in particular because
pkgng doesn't work like pkg_install in that area and pkgng ignores the
@exec mkdir but directly pack the directory even if empty)
- PORTDOCS/PORTEXAMPELS
To support PORTDOCS, PORTEXAMPLES most of the time there is no more need
for hacks. just add the right %%PORTDOCS%% or %%PORTEXAMPLES%% in your
plist then the given files from the stagedir will or will not sync
according to NOPORTDOCS and NOPORTEXAMPLES.
With hat: portmgr
Reviewed by: bdrewery