New FreeBSD package system (a.k.a. Daemon Package System (dps))

Mike Meyer mwm-keyword-freebsdhackers2.e313df at mired.org
Sat May 12 04:56:20 UTC 2007


In <20070511191057.GA25833 at xor.obsecurity.org>, Kris Kennaway <kris at obsecurity.org> typed:
> > There are clearly other workable ideas - as I said, the linux folks
> > managed to make it work. But it's not an easy problem. I certainly
> > wouldn't suggest rebuilding the packaging system to deal with this,
> > except as part of a larger effort. On the other hand, since people are
> > working on the ports/package system (I see port/pkg database and some
> > ports infrastructure work in the current SoC projects list), not
> > keeping this goal in mind would seem to be a bit short-sighted. I
> > wouldn't be surprised if your option #1 could benefit from this as
> > well.
> But you said you were interested in working on it...so what is your
> idea?

Actually, I said it's on my list of things to do. That's a rather long
list. I'm more interested in port building, but the dependencies to
that one look like:

1) Get a gcc build whose driver correctly handles "-m32" for
   cross-compiling. The system gcc can do cross-compilation, but the
   driver doesn't know where the various bits it needs to link the
   generated objects with live, so you have to tell it about those
   things by hand. Possibly one of the versions in ports does this,
   but it would be nice if the one in the base system did this. I
   believe it's mostly a matter of properly configuring the gcc build.

2) Rework the ports dependency/conflict detection facilities. Mostly,
   figuring out the architecture of the current build vs. any
   previously installed packages or ports it depends on or conflicts
   with. There are also some things that could be done to make the
   dependencies more reliable, like auto-detecting shared library
   dependencies and adding those. Having the target platform for an
   installed package in the package database would be a nice jump on
   this.

3) Now we get to the interesting part: figuring out where the bits for
   the cross-installation are going to land. A lot depends on how far
   apart we want to keep the two worlds. I'd like them to be
   integrated, as the point of being able to install 32-bit binaries
   on a 64-bit system is to run applications that aren't yet 32-bit
   clean, so the only collisions should be shared libraries common to
   applications from both sets. A lot will depend on how badly things
   collide. The other factor is that I'd like the build platform to be
   tranparent to the end user: you should be able to build 32-bit
   packages on either 32 or 64 bit platforms, and use them on
   either. This ties back to the "How do we figure out where our
   libraries are" issue. I don't know if all these goals can be met.

4) Once that's done, start working on getting cross-building and
   installing ports working. This is a long way from any work being
   done on it, so I don't have any details. Doing step #2 would help
   with fleshing out these step.

5) Now make make building packages from those ports and installing
   from those packages work.

   	<mike
-- 
Mike Meyer <mwm at mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.


More information about the freebsd-hackers mailing list