many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
when there is a filename with an embedded space in the directory.
Fixes PR 15755 from Simon Burge (simonb@wasabisystems.com).
Whilst I'm here, only include the build information for the package
Makefile once.
extracts the contents of archive named by the shell variable
"extract_file" based on the file extension of the archive. The contents
are dumped into the current directory.
* Unify the EXTRACT_CMD handling. We now define the default EXTRACT_CMD
to be ${_SHELL_EXTRACT} (see above). Otherwise, if it's already defined
in the package Makefile, then that EXTRACT_CMD is used to extract all of
the archives.
* Rearrange the locking code so that it's localized instead of interspersed
in the extraction code.
* Add EXTRACT_CMD definitions for files that are only compressed (foo.c.gz)
that decompress the file into ${WRKDIR}.
Summary of changes:
- removal of USE_GTEXINFO
- addition of mk/texinfo.mk
- inclusion of this file in package Makefiles requiring it
- `install-info' substituted by `${INSTALL_INFO}' in PLISTs
- tuning of mk/bsd.pkg.mk:
removal of USE_GTEXINFO
INSTALL_INFO added to PLIST_SUBST
`${INSTALL_INFO}' replace `install-info' in target rules
print-PLIST target now generate `${INSTALL_INFO}' instead of `install-info'
- a couple of new patch files added for a handful of packages
- setting of the TEXINFO_OVERRIDE "switch" in packages Makefiles requiring it
- devel/cssc marked requiring texinfo 4.0
- a couple of packages Makefiles were tuned with respect of INFO_FILES and
makeinfo command usage
See -newly added by this commit- section 10.24 of Packages.txt for
further information.
If you need to download from a dynamic URL you can set DYNAMIC_MASTER_SITES
and a 'make fetch' will call files/getsite.sh with the name of each file
to download as an argument, expecting it to output the URL of the directory
from which to download it. graphics/ns-cult3d is an example of this usage.
PKG_SYSCONFVAR is the special suffix used to distinguish any overriding
values for a particular package (see next item). It defaults to
${PKGNAME}, but for a collection of related packages that should
all have the same PKG_SYSCONFDIR value, it can be set in each of
the package Makefiles to a common value.
PKG_SYSCONFDIR.${PKG_SYSCONFVAR} overrides the value of ${PKG_SYSCONFDIR}
for packages with the same value for PKG_SYSCONFVAR.
Package maintainers may want to set PKG_SYSCONFVAR to a common value for
related packages, e.g. all of the amanda packages set PKG_SYSCONFVAR=amanda
so that the PKG_SYSCONFDIR for all of them may be tweaked by just setting
PKG_SYSCONFDIR.amanda in /etc/mk.conf.
automatically DEPENDed if EXTRACT_SUFX is set to a known suffix but
EXTRACT_ONLY is set to an empty value. This should fix the problems for
audio/guspatches and textproc/iso8879 in the 2002-01-28 i386 bulk-build
results.
packages themselves, as /etc/mk.conf may contain harmful settings for
package builds. Just to clarify, /etc/mk.conf is still included by the
Makefiles in pkgsrc, just not by the Makefiles used to build the software
itself. This should fix pkg/15297 by gabriel rosenkoetter
<gr@grappa.eclipsed.net>.
shouldn't be set as the environment for a make process invoked at the
package (${.CURDIR}) level during the install phase because it can contain
harmful settings.
putting them all into one large case statement instead of successive if
statements, and by removing the creation and constant testing of a temp
file to mark when the distfile is extracted.
up version of the bare-bones code in PR 7590, from David Maxwell.
The definition governing the type of locking used is PKGSRC_LOCKTYPE,
which can take any of the values "none", "sleep", and "once". The
default is "none". If "sleep" locking is used, and process A is
building a package, when process B attempts to build the same package,
process B will sleep for PKGSRC_SLEEPSECS seconds, and attempt to grab
the lock again.
Coarse-grained locking uses the OBJHOSTNAME definition to ensure that
the PID space is regular for shlock(1) to do its work. The
pkgsrc/pkgtools/shlock package has been provided for environments
where shlock is not standard.
extract all of the files listed in ${EXTRACT_ONLY}. This is so that a
package author doesn't have to grub through bsd.pkg.mk in order to find
how to override the extraction method. Problem noted by Antti Kantee in
private email.
If set, the first component of the hostname (up to the first '.', if any),
will be appended to "work." to form the WRKDIR_BASENAME.
OBJHOSTNAME takes precedence over OBJMACHINE.
ceremony, as we can use SITES_foo instead, as is now documented in
Packages.txt. The former were only ever used by exactly three packages
(ghostscript, ghostscript-nox11, and kterm).
motivation is to make the order that sites are hit more sane, and
especially to prevent hitting sites that aren't ever expected to have
the sought after file.
Now, ${MASTER_SITE_OVERRIDE} is always hit first. If that fails, then
the sites designated for that file, then ${MASTER_SITE_BACKUP}, are hit
(by default), but with the order subject to ${MASTER_SORT_REGEX} and
${MASTER_SORT_AWK}. The "designated sites" are usually ${MASTER_SITES}
for files in ${DISTFILES}, and ${PATCH_SITES} for files in ${PATCH_FILES}.
However, defining a variable `${SITES_foo}' in the package "Makefile"
overrides that for file "foo". [The use of ${MASTER_SITES_foo} and
${PATCH_SITES_foo}, which is currently only used by a couple of packages
for the same purpose, is deprecated, and will be shortly unsupported.]
Also eliminate redundancy in the do-fetch and fetch-list-one-pkg targets,
by making them use a single, common macro (escaped with `:Q' in the
fetch-list-one-pkg case), so "make fetch-list-one-pkg | sh" now does
exactly the same thing as "make do-fetch".
well as the normal shared objects. This means that the new toolchain, that
links in libgcc_pic.a, will build proper shared objects again.
Bump to nb5 and make this the required version.
Fixes pkg/15120 from Matthias Scheler <tron@colwyn.zhadum.de>
autoconf-2.5* by touching some more files. Thanks to YAMAMOTO Takashi
<yamt@mwd.biglobe.ne.jp> for pointing out the error in private e-mail.
Also list several packages on which to verify this code after making
changes to the AUTOMAKE*_PATTERNS.
touch some files before the configure script is run, and some more
afterwards. We touch the files afterwards since the configure script can
get modified after it is run, and touching some files afterwards prevents
them from being regenerated if they depend on the configure script.
suffices listed in ${_EXTRACT_SUFFICES}. Currently, _EXTRACT_SUFFICES has
.tar.bz2, .tbz, .tar.gz, .tgz, .tar, .zip, .lzh, and .lha. If the file
doesn't end in any of these suffices, then we use the old code to do the
extraction. This rids us of the mild annoyance where if you have several
distfiles, some ending in .tar.bz2, some in .tar.gz, and others in .zip,
then you have to create a post-extract target to extract all of the ones
not ending in the suffix that you designate in EXTRACT_SUFX.
I've tested this with some representative packages: archivers/gtar-base,
print/cups, www/surfraw, and print/ghostscript-nox11.
as standard.
Hoist the default definition of ${GMAKE} from bsd.pkg.mk into the different
defs.${OPSYS}.mk files.
A non-standard location or name for GMAKE can still be specified in
/etc/mk.conf.
references of the pkglint package.
_PKGSRCDIR is an internal definition in bsd.pkg.mk, and a few packages
which would like to refer to other packages in the build tree. It should
not be set by users, but neither should it stop a user from building a
package if it is defined, so make it obvious that this is the case.
Makefiles during the build process by touching various auto{conf,make}
source files to make them up-to-date. Packages that require regenerating
the configure script and Makefile.in files should make the appropriate
calls to auto{conf,make} in a pre-configure target. This allows the
various targets listed in ${_CONFIG_PREREQ} to modify the generated files
without triggering the GNU auto* tools and having the modifications be
overwritten.
Syntax:
MASTER_SITES_completefilename= http://specific.master/site
and similarly for PATCH_SITES.
Convert print/ghostscript-nox11 and x11/kterm to take advantage of this.
currently only occurs for packages that use bsd.pkg.install.mk.
There are two new targets, pre-install-script and post-install-script, that
default to doing nothing. The order of targets called for a "make install"
is:
pre-install-script
pre-install
do-install
post-install
post-install-script
The new targets are defined in bsd.pkg.install.mk to call the INSTALL
script with the PRE-INSTALL and POST-INSTALL options.
LIBTOOL_OVERRIDE steps into a separate do-libtool-override target. Create
a new variable _CONFIGURE_POSTREQ that currently lists do-libtool-override.
Also add some documentation for the two _CONFIGURE_* variables:
_CONFIGURE_PREREQ is a list of targets to run after pre-configure but before
do-configure. These targets typically edit the files used by the
do-configure target.
_CONFIGURE_POSTREQ is a list of targets to run after do-configure but before
post-configure. These targets typically edit the files generated by
the do-configure target that are used during the build phase.
pkgsrc. Instead, a new variable PKGREVISION is invented that can get
bumped independent of DISTNAME and PKGNAME.
Example #1:
DISTNAME= foo-X.Y
PKGREVISION= Z
=> PKGNAME= foo-X.YnbZ
Example #2:
DISTNAME= barthing-X.Y
PKGNAME= bar-X.Y
PKGREVISION= Z
=> PKGNAME= bar=X.YnbZ (!)
On subsequent changes, only PKGREVISION needs to be bumped, no more risk
of getting DISTNAME changed accidentally.
use to set PKGBASE, which is used in the name of the package-specific
config directory override (PKG_SYSCONFDIR.${PKGBASE}). Prior to this, if
PKGNAME wasn't explicitly set in the package, then the override would not
work.
This value may be customized in various ways:
PKG_SYSCONFBASE is the main config directory under which all package
configuration files are to be found.
PKG_SYSCONFSUBDIR is the subdirectory of PKG_SYSCONFBASE under which the
configuration files for a particular package may be found.
PKG_SYSCONFDIR.${PKGBASE} overrides the value of ${PKG_SYSCONFDIR} for a
particular package.
Users will typically want to set PKG_SYSCONFBASE to /etc, or accept the
default location of ${PREFIX}/etc.
This obsoletes the use of CONFDIR, which was active for only 6 days, so no
need to have a workaround to still accept old CONFDIR settings.
individual defs.${OPSYS}.mk files, and use them in bsd.pkg.mk.
+ _OPSYS_HAS_MANZ defines whether or not the OS does MANZ handling as standard
+ _PREFORMATTED_MAN_DIR is the name of directory (cat or man) where
preformatted manual pages go.
Rename the internal definitions used in the generation of PLIST files to
start with '_'.
This completes the "generic" changes to bsd.pkg.mk.
config files should go. It may be overridden on a per-package basis by
defining CONFDIR.${PKGBASE}, e.g. CONFDIR.php. ${CONFDIR} defaults to
${PREFIX}/etc, but it may be overridden in /etc/mk.conf, e.g. by setting
CONFDIR=/etc.
Packages will eventually be altered to find their config files in
${CONFDIR}.
not bsd.pkg.mk, so that the user is more aware of them (there were placeholder
examples of both definitions in bsd.pkg.defaults.mk already).
Explain PRE_ROOT_CMD a bit more throroughly, and correct an example of
its use.
Make an alternative definition for SU_CMD sync with reality.
more speedups for building packages.
Get rid of a .USE macro, and do not spawn sub-makes for the pre-, do- and
post-target stages, replacing them with standard make(1) targets.
Timing information as follows (multiple runs performed, best results taken):
800 MHz Celeron, 128 MB, local pkgsrc, local obj
scripts/, pre,do,post-*: 0.731u 0.261s 0:02.04 48.5% 0+0k 29+168io 9pf+0w
no scripts/, pre,do,post-*: 0.678u 0.242s 0:01.30 70.0% 0+0k 0+169io 0pf+0w
no scripts/, no pre,do,post-*: 0.267u 0.089s 0:00.90 37.7% 0+0k 0+155io 0pf+0w
40 MHz Sparc, 36 MB, nfs pkgsrc, local obj
scripts/, pre,do,post-*: 22.590u 6.839s 0:33.31 88.3% 0+0k 121+254io 0pf+0w
no scripts/, pre,do,post-*: 22.481u 6.442s 0:33.30 86.8% 0+0k 120+251io 0pf+0w
no scripts/, no pre,do,post-*: 8.534u 4.189s 0:16.48 77.1% 0+0k 105+242io 0pf+0w
implicit `-print' action is performed on bar and not on foo. Surround
the search pattern in \( ... \) and add an explict -print so that all of
the results of the find are printed.
Problem noted and patch to fix this received in private email from Stoned
Elipot <seb@netbsd.org>.