Re: Draft manifest
[email protected] (Mark Murray) Mon, 06 May 2002 20:27:45 +0100
| Newsgroups | perl.dist |
|---|---|
| Message-ID | <[email protected]> |
[ CC: list attacked with a machete ] Said Nicholas Clark <[email protected]>: > I think the furore was that by just removing CGI you broke our assumption > (or contract) - that if a perl says it's version N, then it comes with all > the library that version N shipped with. .... which is why I'm finding the split model so attractive. > "The FreeBSD 5.0 core doesn't contain a full perl distribution. Although > /usr/bin/perl is present, most of the libraries are not present. I have no problem with that. > As I understand both sides positions as this > > FreeBSD: We'd like to have the perl interpreter available to remake the > FreeBSD userspace and kernel, but the full libraries that come with > it are far too big a burden for the core. > We'd like to provide the rest of perl as a package, so that those > want to rebuild the kernel but don't want to run perl themselves > aren't forced to have perl present. Yes. Plus we'd like the perl interpreter to be in a standard place so that those perverts who write module-free scripts are able to do so. ;-) Also, in terms of the "perl contract", its nice to have perl in /usr/bin/perl. > p5p: When we say perl version X, we mean both the interpreter and all > the libraries that were released in the source package for X. > Many scripts make assumptions about which modules are present based > on the version of the interpreter they are running under, and p5p > considers this supported behaviour. Hence we don't want scripts > (or users) to encounter something they think is perl version X > which doesn't have all the libraries, and doesn't say that it doesn't > fulfil this expectation of all the libraries But the split model will break this assumption? > Not sure how glob() works though. perl-borg would want to have /usr/bin/perl > do glob() with File/Glob.so So perl-borg can include it? What am I missing? > minimal perl wouldn't want File/Glob.so, but (I presume) would want glob() > to work. Not for us :-). And if folk wanted it, they would know where to get it. (Again, what am I missing?) > However, you don't need the latest perl to do this. What's wrong with > building this extension in /usr/src/gnu/usr.bin/perl/library/Fcntl > with /usr/bin/perl during make world? Because that uses MakeMaker, and MakeMaker is hostile to cross-builds. We've managed to get it to work, but it is as fragile as hell, and things like "make installworld" over nfs onto another box, a second "make installworld" on the same box and "make -DNOCLEAN world" often fail because MakeMaker objects to Makefiles or paths. MakeMaker is very difficult to instruct properly; it ignores system settings like what compiler to use, ${CFLAGS}, paths, runtime defaults and so on. It is a prime perpetrator of the "build options" == "runtime defaults" crime :-). For the general information of the perl community: FreeBSD's "make world" happens in 3 stages (actually more, I am simplifying). 1) Build the build tools. These are built using the available system and are installed somewhere in /usr/obj/.../tmp/... and are the tools that will be exclusively used to build the rest of the system. They include some headers, libraries and tools, and are _not_ cross built. 2) Build the world. the above tools are invoked on the source tree to build the whole OS (not ports from /usr/ports) into /usr/obj/usr/src/... This part of the build does not (should not) consult the installed OS at all, so includes are used from the source tree, and libraries used must be built before use (where they are used /in situ/ during the build). This lot can be cross built. 3) install the build. This is a staged "make install" plus some other housekeeping of the already built stuff in /usr/obj/usr/src/... The "other housekeeping" is stuff like making sure that the regulation directories are present with the regulation permissions (see src/etc/mtree/* or hier(7) to see what I'm talking about here). This may be installed on a machine that did not do the build via NFS or installed in a place decided later with something like "make -DDESTDIR=${INSTALLDIR} installworld". M -- o Mark Murray \_ O.\_ Warning: this .sig is umop ap!sdn