[ 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