Subject: HEADSUP: bsd.pkg.mk shared object changes
To: None <tech-pkg@netbsd.org>
From: Alistair Crooks <alistaircrooks@excite.com>
List: tech-pkg
Date: 01/04/2001 07:21:30
The shared object handling in bsd.pkg.mk was beginning to creak at the
edges, and so some changes have been made to bring it more in line with
reality.

What this means to you:

(a) as a user of pkgsrc - hopefully nothing, if I've done this right. (I had
to hand edit 337 PLISTs, so I may have messed up somewhere). If you see any
problems which relate to shared libraries or shared objects when installing,
de-installing or using print-PLIST with packages, please use send-pr in the
usual way.

(b) as a creator of packages destined for pkgsrc - please just list all the
file system entries in the PLIST (this is a change from existing behaviour,
is less complex, more intuitive, and more ELFy). In the bad old days, if
your package installed  lib/libfoo.so.x.y, that's all that you would put in
the PLIST, even on an ELF box. In the new scheme of things, you should put

lib/libfoo.so
lib/libfoo.so.x
lib/libfoo.so.x.y

into your PLIST. If the package is being installed on an a.out port,
bsd.pkg.mk will automatically remove the unnecessary symlink entries from
the generated PLIST.

The commit message is as follows:

The way that shared objects were handled in the PLISTs and bsd.pkg.mk was
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.
+ 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.

Regards,
Alistair


--
Alistair Crooks (agc@pkgsrc.org)





_______________________________________________________
Send a cool gift with your E-Card
http://www.bluemountain.com/giftcenter/