Subject: Re: slackware_compat imported to wip/ [revised]
To: Michal Pasternak <michal@pasternak.w.lub.pl>
From: Michal Pasternak <michal@pasternak.w.lub.pl>
List: tech-pkg
Date: 03/14/2004 22:59:40
Michal Pasternak [Fri, Mar 12, 2004 at 02:04:52PM +0100]:
> Also, even if the binary base is relativley small (30 MB), it allows

As I said before, I was quite wrong here.  30 MB was for very basic subset
of Linux functionality. Full development environment, that can build
bootstrap package is about 114 MB, but that doesn't really matter.

What *does* matter, is that pkgsrc bootstrap (and mk/defs.* files) have
quite low autodetection capabilities. Running quite incomplete, chrooted
Linux environment gives possibilities to find such weaknesses.

The question is: what are minimal - really minimal - requirements to compile
and run pkgsrc bootstrap stuff.

tnftp seems to need more resources, than it really should. I'd consider
replacing it with some other application, that doesn't need curses (it won't
compile on slackware_devel chroot without slackware_ncurses) and is more
portable (signal() problems on QNX - the signal it wants is in POSIX, okay,
QNX doesn't support it yet, but tnftp uses it to display progressbar - my
assumption).

Another example, patch(1) utility - which is present in pkgsrc as
devel/patch and can be compiled and installed without any problems in
slackware_devel chroot environment, even if installed - won't be used by
pkgsrc, because mk/defs.Linux.mk assumes, that it will be always present on
a Linux system as /usr/bin/patch . Sometimes, it will. Sometimes - on a
Debian system with only gcc installed, it won't be there. Some OS provide
patch. Some don't. It exists in pkgsrc, but in such cases it can't be used.

Perhaps we should add another phase to bootstrap package. First, it should
install minimal set of utilities, just like it does right now. In the added
phase, it could look for missing stuff (like patch(1)) and in case such
things don't exist, it should install it.

Autodetecting tools each time "bmake" is launched in a pkg directory could
take too much time. I rather think bootstrap could generate some
configuration file (defs.site.mk?), that would be included before
defs.${OPSYS}.mk. All defs.${OPSYS}.mk settings then should be set with ?=,
not with = or :=, so they can be overriden.

I don't have any ideas about findutils and bc. Tar and gzip should be
already provided by the operating system, for sure. 

Comments?

-- 
mp