built and possible deinstalled as dependency. Addresses PR 10629 by
Erich.T.Enke@wheaton.edu.
(If that's not enough, we can still introduce a "make clean ; make install"-
type target, but for now i'd prefer not to was the cycles)
prevents 'make update' from "resuming" an update that never even began.
Thus, a sequence of
make clean-update
make update
is now safe, no matter if 'make update' was started previously or not.
update target work with pkgsrc installations that have more (or less) than
two components (like /src/NetBSD-current/pkgsrc). Thanks for Matthias
Scheler for noting this!
which takes entries of the format <make-definition-name>=<pkgname>. This
has not been added to MAKEFLAGS because (a) premature optimisation is the
root of all evil, and (b) because the .for loop used to implement this
shows the wrong results when multiple prefices are evaluated.
Modify all the package Makefiles to use EVAL_PREFIX, thereby simplifying
them considerably.
ALso simplify the logic to calculate the prefix as well.
package's prefix would not work as part of the environment specification
via MAKE_ENV (as it would not be executed in the correct directory).
Fix this by invoking pkg_info(1) directly, not via an intermediate make(1)
step - this is not as clean, but more effective (i.e. it works).
${LOCALBASE}/etc, and is the parent directory of the priv package's
user configuration data.
Modify Makefile to pick up this definition, and pass it on as an argument
to the configure script.
Modify the PLIST to include this location, and pre-process the PLIST at
install time to set the correct location.
a bit more user-friendly.
Introduce a show-{gtk+,imlib,kdebase,qt1,qt2,xpm}-prefix target in
bsd.pkg.mk, and use "${MAKE} show-*-prefix" in package Makefiles.
now, each branch is only traversed once instead of possibly multiple times.
depending on the size of the DEPENDS list, the speedup is _huge_. For example
make clean CLEANDEPENDS=yes
in x11/gnome now takes around 12 minutes instead of 4 hours on a DECstation
5000/240.
Thanks to Hubert for help and suggestions on this. Look for more changes to
come as this same problem exists in other areas.
(Users can still set it if they want, but it won't make much
difference).
In bsd.pkg.mk, check for the presence of the xpkgwedge package to
determine whether to use LOCALBASE for X11 programs. Set
_USE_LOCALBASE_FOR_X11 (an internal definition) if xpkgwedge is
installed. Remove BUILD_DEPENDS on xpkgwedge (it would always have
been true anyway).
Add a new X11PREFIX definition, which reflects the PREFIX for X11
packages, and set it to LOCALBASE or X11BASE accordingly.
Remove all references to USE_LOCALBASE_FOR_X11 from the xpkgwedge
package.
In all, make the installation of xpkgwedge a tad less clumsy.
* s/.MAKEFLAGS/MAKEFLAGS/ in one place
* add check-shlibs target. Need to at least document that later. :)
(Should be added at end of root-install target, to check if the pkg's
binaries/libs will find the shared libs they need)
depends, but use pkg_info -sS instead. Some code-restructuring and renaming
of the targets while there: print-pkg-size-this prints the size of the
current pkg, and print-pkg-size-depends prints the size of all the depends
ONLY (i.e. NO LONGER including the size of the current pkg).
Speeds up "make install" on a pkg requiring teTeX from ~3.2s to ~1.7s.
- files & symlinks first
- @exec/@unexec calls are added for info files
- @dirrm statements last
- empty directories are handled properly
- dirs from mtree files are excluded
Usage:
- make install
- make print-PLIST | brain >pkg/PLIST
Moved over from bsd.hf-pkg.mk, after it's lived there for quite
some time now.
invocations per dependency.
XXX
This is really quite stupid, in that the characters we're quoting are also
shell metacharacters that are passed unquoted to the shell in other places.
CVS ----------------------------------------------------------------------
was missing.
* Do make(1) pattern substitutions for fetch-list-recursive.
* Eliminate subshells in clean-depends and fetch-list-recursive.
* Make the rmdir for the WRKOBJDIR removal silent if it fails.
* Slight optimization to fetch-list-one-pkg: don't do the basename operation
twice.
the substitution hacks are all done in one place.
Protect a few things with double quotes just to be safe.
Fix `readme' target that was left broken in last commit.
* in package-depends split handling of DEPENDS and RUN_DEPENDS again. The
fact that the code was equal for both cases (and thus broken!) is no
excuse to fold the two together. (What's the difference? DEPENDS has a
pkg name/patter as first value, RUN_DEPENDS has a executable name of
file/path)
* cut down two more ()s
* fix binpkg-list to find binary pkgs again. Remember, $PACKAGES is where
binary packages are placed, under a well defined directory structure
(including dir "All" and category dirs).
* Sort available binary pkgs in README.html by machine again
* Inline one more use of the "package-path" target. It's unused now.
Anyone care if we remove it?
* Fix variable name in print-pkg-depend-sizes: the first component of
DEPENDS is a package-name/patter, not a program.
Major changes:
* Avoid a big bunch of subshells/forks/execs by using make(1) features;
should be good for some minor speedups.
* Use shell builtins for echo, true, false, test. Using full paths here
causes fork&execs, making things slow. Only changed for NetBSD.
* Rename all references to ${.MAKEFLAGS} to ${MAKEFLAGS}. See make(1).
* Evaluate all !=s only once, and add them to MAKEFLAGS
* Pass ${MAKEFLAGS} to ALL ${MAKE} calls
Now PKGTOOLS_VERSION is really only set once in a whole "make package"
cycle, even across dependencies.
Minor changes:
* SORTED_MASTER_SITES was renamed SORTED_MASTER_SITES_CMD and is now
(only) execuded in the places where it's needed.
* Don't check for /usr/bin/fetch - we never had it, and if someone
depends on it he can set FETCH_CMD instead.
* Don't fall back to README.port
* Replace some commands by their uppercase equivalents (sed -> ${SED},
same for grep, awk, ...)
* Some whitespace changes to improve readability
=> With these changes, times for a "make clean" in x11/kde go down to 20%,
time for "make readme" goes down to 33%!
Add a new USE_LIBTOOL definition that uses the libtool package instead of
pkglibtool which is now considered outdated.
USE_PKGLIBTOOL is available for backwards compatibility with old packages
but is deprecated for new packages.
root-DEinstall, after all :)
* while there, pass these flags to the pkg_delete called for dependencies.
Now "make deinstall DEINSTALLDEPENDS=yes" should actually work, i.e. no
BUILD_DEPENDS should be left behind. (Hi Dan!)
from which an installed package can be re-installed. This can be used
to build up a list of host specific packages, which is useful, for
example, in re-building all packages on a machine for a.out to ELF
transition.
In the USE_JAVA case, make PATH include ${JAVA_HOME}/bin, and set CLASSPATH in
CONFIGURE_ENV and SCRIPTS_ENV as well (no pkgs use this yet, but they could...)
This should make java packages build happily in bulk pkg builds where CLASSPATH
is not set or JAVA_HOME/bin is not in PATH on the system as a whole :-)
pkgsrc/lang/jdk/pkg/MESSAGE advises people to set CLASSPATH, they
may not have by the time they build a dependent package, especially if
jdk was pulled in as a prerequisite...
DEPENDS_TARGET to builds for dependencies.
This results in "make package" creating packages for all missing
dependencies as well, instead of merely installing them on the system.
This is a more consistent and intuitive behaviour.
Running "make install" will install the dependencies just like before
(no binary packages will be built).
installed, instead of just saying that the version installed is older.
Useful e.g. for the -current packages which don't have -current in their
name (gimp, mutt, cvs et al.)
The installed package tools were last updated on 1999/01/01. <====
Please make and install the pkgsrc/pkgtools/pkg_install package.
Print out the second date from the right variable.
setting M4, and by adding M4 and YACC to CONFIGURE_ENV (YACC is already set,
for NetBSD, in "sys.mk"). If it turns out that a package really needs "gm4"
for "m4", or "bison -y" for "yacc", the corresponding variable will have to
be set in the package's Makefile (and the explicit dependency added, too).
them now, in mk.conf.example, and add a small comment explaining what they
do.
When SMART_MESSAGES is defined, when compiling packages, the make(1)
target is displayed, and also the current stack of packages being built.
(implements $PACKAGE_DEPENDS_QUICK)
--
Thomas Klausner hinted me at some interresting problem WRT the
print-depends package. If something depends on suse_linus-6.*, that
package will register whatever suse_linux there is right now on the system
(in his case V6.1). What print-depends then does is also dig out any pkgs
required for suse_linux, based on what's in pkgsrc, which is of course
_wrong_, as this most likely doesn't match the installed version.[*] The
right thing instead is to print whatever the (currently installed)
suse_linux package depends on, which can be read from "pkg_info -qf"
output, looking at the @pkgdep lines.
Of course this only works if the pkg is actually installed, so it cannot
be used for README.html generation etc., but that's bad luck.
One positive aspect of using the @pkgdep list instead of going down
recursively is that this saves some time and processes. On my P133 it's
going down from ~11s to 0.5s for the pkgsrc/x11/kde package. During a
"make package" of kde itself (not counting the depending pkgs) this will
cut down like 20s (once for the fake-pkg target, and another one for the
pkg_create args - maybe a 3rd time for pkg_create in fake-pkg, but I don't
want to check that right now).
Anyways, a general solution would be to use the "pkg_info -qf | grep
@pkgdep" in print-depends instead of recursion (only!) in the places that
we know that the depends are installed. Which is the PKG_ARGS assignment
(for pkg_create) and the fake-pkg target.
[*] Plus it may be questioned that we should not go down recursively
for pkg depends anyways, but this is used in too many subtle ways
throughout the system to change.
target won't delete BUILD_DEPENDS packages. No one should be setting
DEINSTALLDEPENDS to ALL in /etc/mk.conf--it's done unconditionally by
the update target. Setting DEINSTALLDEPENDS to anything but NO or ALL
will still cause the BUILD_DEPENDS to be pkg_deleted.
installed pkg and this won't be caught by "pkg_delete -r".
There are still situations where pkgs can be left behind if they were
pulled in as BUILD_DEPENDS of any depends installed via the "depends"
target. Maybe Makefile-level recursion should be used instead of
"pkg_delete -r" to implement this...
userland (checked by existence of /sbin/ping6).
with the change, the default value for USE_INET6 will be like this:
- non-NetBSD: undefined
- NetBSD releases prior and including 1.4.x: undefined
- NetBSD-current (pre-1.5) prior to IPv6 integration: undefined
- NetBSD-current after IPv6 integration: USE_INET6=YES
It is advised to obey the default.
USE_CRYPTO: YES, NO; Default: YES
- whether or not net/speakfreely is compiled with support for
encrypted connections
USE_IDEA: YES, NO; Default: package-dependent
- whether or not to compile with support for patented IDEA;
used by net/speakfreely and security/ssh
Also, remove SSH_DONT_USE_IDEA. This is still handled by ssh Makefile,
but is marked as deprecated.
governs whether a package which was installed before OBJECT_FMT was added
to the BUILD_DEFS will display an warning message. To shut up the message,
set WARN_NO_OBJECT_FMT to "no".
1.) protect definition of show-shlib-type with `if !target(show-shlib-type)'
so that it can be overriden in a pkg makefile
2.) move the definition in lang/jdk/Makefile before the include of bsd.pkg.mk
to trigger this.
Without these changes, show-shlib-type was `ELF\na.out' on i386/ELF, so
it was still treated as ELF.
lang/jdk now works on i386/ELF (yay!).
While there, fix JAVA_HOME default to be JDK_HOME if PKG_JVM is jdk
and JDK_HOME is defined.
This halts the execution if an installed package's object format is not
the same as the object format currently in use. It can be set to "no" on
the rare occasion where the interface to the pre-requisite packages is one
of a binary, not a library.
When an installed package is found as part of a DEPENDS pre-requisite,
check its object format. If there is none in the installed package,
that package was probably built before 29th September 1999, which was
when the OBJECT_FMT definition was added to the BUILD_DEFS, so print a
warning and continue. If the object format of the installed package
and ${OBJECT_FMT} are the same, then continue. If the object format
of the installed package and ${OBJECT_FMT} differ, then print an error
message explaining the error, and exit.
for users to choose their own JVM.
USE_JAVA sets up DEPENDS and $JAVA_HOME appropriately, based on PKG_JVM.
Currently sane values of PKG_JVM are `jdk' and `kaffe', where the default
is `jdk' on NetBSD-*-i386, and `kaffe' elsewhere.
match more than one package, and warn about it:
*** WARNING: Dependency on 'gnome-*' expands to several installed packages
( gnome-libs-1.0.53 gnome-core-1.0.53 gnome-print-0.9 ).
Please check if this is really intended!
In such a case, the pattern ('gnome-*') should be tightened to only match
what's really intended (e.g. 'gnome-[0-9]*').
$DEPENDS with wildcards and relational depends possible. (The previous
solution with :Q was not useful as this also quoted the seperator between
the single depends, making the DEPENDS useless).
(Need to test PKGTOOLS_VERSION, not PKGTOOLS_REQD, to see if the new code
is present; for PKGTOOLS_VERSION to get defined, some code needs to get
moved around a bit, though)
additional make call), and pass it in the environment to any
recursive make calls. 'make fetch' in gnumeric on my system is now
> 15% faster checking dependencies.
target to create the PLIST on the fly. (This is just an alias for the
existing ${PLIST} target, but with that you have to type the full path
which is inconvenient).
miyu% make
===> xephem-3.1 Unacceptable license: no-commercial-use.
To build this package, add this line to your /etc/mk.conf:
ACCEPTABLE_LICENSES+=no-commercial-use
To do this, we need to change the semantics of the IGNORE variable. It is
no longer taken as one variable, but rather as one variable with several
lines, seperated by whitespace. Each line will be printed on it's own.
In addition, the code for the IGNORE_FAIL has been slightly moved around
so IGNORE_SILENT can be used together with IGNORE_FAIL now. (does someone
use this?).
substitute pkglibtool for the pkg's own libtool.
"ltconfig" is script to make "libtool" script.
"ltconfig" is executed by GNU's "configure" script at
"do-configure" target.
if USE_LIBTOOL and LTCONFIG_OVERRIDE defined, specified "ltconfig"
is overrided to symlink pkglibtool to "libtool" instead of making
"libtool" before executing "configure".
if USE_LIBTOOL and LIBTOOL_OVERRIDE defined, specified "libtool" is
removed, and symlinked from pkglibtool after executing "configure"
(and "ltconfig").
installed version and binary packages. The size can be queried then
via pkg_info:
xfeyrer @ noon% pkg_info -s xv
Information for xv-3.10apl1:
Size of this package in bytes: 4670692
xfeyrer @ noon% pkg_info -S xv
Information for xv-3.10apl1:
Size in bytes including required pkgs: 14610165
While doing work on the size code, support for the @src directive was
removed (formerly enabled with the pkg_create -s switch, but unused in
our pkg system). The new pkg_info -s and -S switches were tested on
installed, local (file) and remote (ftp) packages.
In bsd.pkg.mk, take special care for pkg_* versions that do not have
the pkg_create -s and -S switches and do not record size information
there.
USE_FORTRAN should be set in the package Makefile. The logic added by this
commit will choose a fortran compiler to use and set the correct dependency
rather than having this selection scattered across each package which needs
a fortran compiler.
- Add PKG_FC variable. By setting PKG_FC in /etc/mk.conf, users can force the
selection of which fortran compiler gets used by the package system. If not
specified, PKG_FC defaults to f2c-f77 on pre-1.4 systems that did not include
/usr/bin/f77. In addition PKG_FC defaults to f2c-f77 on newer systems since
f77 is still somewhat buggy. When /usr/bin/f77 becomes more stable, the
default should be changed from f2c-f77 to f77.
MASTER_SITE_BACKUP doesn't end in //.
For this, any setting of MASTER_SITE_LOCAL in /etc/mk.conf must no longer
include ${DIST_SUBDIR} - this will be added automatically, if needed.
if patch(1) is smart enough (i.e. not Solaris by default). Also
introduce a second patch stage (in the package patch phase, not the
distribution patches), whereby a misapplied patch with
${PATCH_FUZZ_FACTOR} will be tried again without a fuzz factor. This
will fail on package patches which patch many files, but these should
be fixed anyway.
PLIST, as shared objects. Tested with both GNU egrep and Solaris XPG4
egrep. Not the most compact of regular expressions, due to
non-portability of {n,m} repetition atoms between different versions
of egrep.
Here is a summary of the changed behaviour:
* A "make update" will no longer clean the subtree before running.
* If called a second time, it will resume package installation, in
case a previous "make update" was interrupted for some reason.
(just make sure you don't call "make clean" in between ;-)
* Unless "NOCLEAN" is set, "make update" will clean up the subtree
after successfully updating _all_ packages (to avoid a dirty directory
structure for future makes).
* A "clean-update" target has been introduced to clean up the subtree
that gets updated. This should be used prior to an initial "make
update" if you suspect that one of the packages that get updated may
be dirty.
XXX: this still does not automatically check for or update any obsolete
´upstream' packages (e.g., if gtk depends on glib, a "make update"
in the gtk directory won't automatically update glib, you have to
do it the other way round).
- substitute leading tabs with spaces in IRRD_USE_PGP comment
- use ``YES'' instead of ``yes'' for appropriate variables
- move GLX_CHIPSET, INN_DATA_DIR and KNEWS_* so that the variables are sorted
alphabetically
- add description of possible values for USE_GIF
- comment out NMH_MTA (nmh Makefiles DTRT)
- append = to variables as appropriate so that make(1) will parse them
correctly if they are uncommented
Other minor cleanups:
- s/set, not set/defined, not defined/ in comments
- use empty value consistently for variables whose only purpose is to
be either defined or undefined (previously, either ``yes'', ``1'' or
empty value was used)
- mark variable UVM as obsolete (XXX it should be g/c'ed probably)
show-downlevel target) is a shell glob pattern, not a regular expression,
so wildcards are '*', not '.*'. Due to the format of package names, the
regular expression will match in most cases (a single digit major version
number), but that's no excuse.
the fix from The Wiz in pkg PR 8597. This will still produce erroneous
results for the foo-current vs. foo package discrepancy, but that's left
as an exercise for a later day.
if and only if there are no patches and patch-sum already exists.
This is necessary to meet the original purpose of that target, which
is to "catch" users who happen to have old patches lying around,
for whatever reason. Also, don't update patch-sum if it wouldn't change.
@exec ln -fs dlopen.3.gz %D/emul/linux/usr/man/man3/dlclose.3.gz
into the list of manpages to decompress (for automatic manpage compression
handling.
Bug hit in the emulators/suse_base package, hashed out by tron.