out of date - it was based on a.out OBJECT_FMT, and added entries in the
generated PLISTs to reflect the symlinks that ELF packages uses. It also
tried to be clever, and removed and recreated any symbolic links that were
created, which has resulted in some fun, especially with packages which
use dlopen(3) to load modules. Some recent changes to our ld.so to bring
it more into line with other Operating Systems also exposed some cracks.
+ Modify bsd.pkg.mk and its shared object handling, so that PLISTs now contain
the ELF symlinks.
+ Don't mess about with file system entries when handling shared objects in
bsd.pkg.mk, since it's likely that libtool and the BSD *.mk processing will
have got it right, and have a much better idea than we do.
+ Modify PLISTs to contain "ELF symlinks"
+ On a.out platforms, delete any "ELF symlinks" from the generated PLISTs
+ On ELF platforms, no extra processing needs to be done in bsd.pkg.mk
+ Modify print-PLIST target in bsd.pkg.mk to add dummy symlink entries on
a.out platforms
+ Update the documentation in Packages.txt
With many thanks to Thomas Klausner for keeping me honest with this.
of the top level build script and into the {pre,post}-build scripts. This
ensures that either of those scripts may be run directly and not rely on
a variable being set by the top level script.
Thanks to Hubert Feyrer for pointing out the problem in a private email.
These changes do not require any user changes to the build.conf file and
should be transparent to the user.
- set BROKENF and BLDLOG in the 'build' script and pass those variables
down to {pre,post}-build in the environment to make sure we only set them
in one place. The values are determined by a
make show-var VARNAME=BROKENFILE
This causes the default (set in bsd.bulk-pkg.mk) or the user overridden
value from /etc/mk.conf or the environment to be correctly determined. This
is more robust that relying on a build.conf setting which may or may not be
correctly set.
- have pre-build only clean up BROKENF and BLDLOG files instead of
.broken* and .make*
This avoids conflicts when pkgsrc is shared among different machines.
perl in a previous (pkgsrc) life.
* add "lint" target to run pkglint
* Add commented out direction on how to use bzip2 compressed
binary packages
* Some cleanup (clean target, ...)
Reviewed by Thomas Klauser <wiz@netbsd.org>.
pkgsrc is shared via nfs where multiple machines may want to run the script
at the same time. Also avoid conflicts if multiple copies are run on the
same machine at once.
hard coding it.
- explicitly only add $BROKENFILE's to the output rather than .broken.* This makes
things work correctly when /usr/pkgsrc is shared among several machines which might
use .broken.`hostname` for its broken file logs.
The ${PLIST} target must run after all the pre/do/post-install targets
were run (they may generate ${PLIST_SRC}!).
This whole code-path should use the make dependency system, not fork
make(1) over and over again.
* In real-su-install, do not call "make ${PLIST}" manually, but rather depend
on the ${PLIST} file being there for the do-su-install target.
* Break out shlib-handlink from real-su-install, and put it into target
do-shlib-handling, which will either touch then PLIST (when called via
the ${PLIST} target) or do the necessary steps to setup shared library
handling (creating symlinks on ELF, running ldconfig on a.out, etc.,
when called via real-su-install)
* Removed some unnecessary tests (check if $PLIST is there when it
can be assumed to be there, ...)
long time. Oh well.)
* Only replace the value of PATH for "PATH", not any variable whose name
starts with PATH (like PKGPATH :-)
Hinted by Jason R. Mastaler <jason@mastaler.com> on tech-pkg.
Let's take timidity, which needs ncurses and tk. By setting
NEED_NCURSES=1 and adding it to MAKEFLAGS, all other required pkgs
automagically depend on ncurses - tk, tcl (which is slurped in by
tk), ...