Dependencies, their tracking and what we need to improve.

Dennis Veatch dennisveatch at bellsouth.net
Mon Jul 18 15:57:46 CEST 2011


On Sunday, July 17, 2011 3:15:29 PM Auke Kok wrote:
> On 07/17/2011 03:14 AM, Duncan Gibson wrote:
> > Auke wrote:
...
> >> It sounds rather harsh, I can understand that. But given the amount
> >> of core code I wrote for lunar over the years, I think I can safely
> >> say that I've learned enough from it to realize that it would be more
> >> efficient to design something from scratch.
> > 
> > Based on your experience then, and with the benefit of hindsight, what
> > are the pros and cons of the current Lunar package management system?
> > 
> > - Is the basic information/structure of the module control files,
> > 
> >    DETAILS, DEPENDS, etc. sufficient?
> 
> no - the biggest gap is that "BUILD" needs to be split up in "BUILD" and
> "INSTALL" scripts. That would enable things like fakeroot, installwatch
> much more easy. It would also enable building-as-non-root.

I can grasp a split of BUILD making some things more easy. But I will ask a 
dumb question; what is the big deal of building as non-root? Excluding of 
course the potential to set $SOURCE_DIRECTORY/$BUILD_DIRECTORY to / or some 
such.

> 
> DEPENDS/CONFLICTS are inherently the same thing, so they should be in
> one file, actually, why are we doing separate files again? None of this
> should be in separate files to begin with IMO

I dunno why, someone a long time ago suggested CONFLICTS as a quick fix. In any 
case there is probably a more elegant way than a simple c&p of a CONFLICTS 
into DEPENDS. Care to give an example?

> 
> > - Are there things missing?
> 
> definately. subpackages for one.

You mean a split like other distros and you end up with -devel, -manual, -this 
and -that type thing?

> 
...
> 
> > - Is bash the Achilles' Heel of the whole system?
> 
> no.
> 
> but it will never be performant, or secure.
> 
> > If you were to build a new package management system from scratch for
> > the new Sofaris :-) distribution, how would you do it differently?
> 
> no lame names, like "sofaris", for one ;)
> 
....
> 
> I would completely not use any install method like installwatch,
> checkinstall, or paco. It's just not needed anymore... chroot building
> fixes that problem, and it fixes the other problem too. (*)

Ratler made a little patch for gcc to get around that and it looks like this;

sedit 's;^\(build_install_headers_dir=\).*;\1install-headers-cp;' 
gcc/config.build &&

I have been using it for a while now and not found any issues. Sure its a hack 
to get around the installwatch problem of being basically; broken.

> 
> > Whether the package management system is written in bash, C/C++, Perl
> > Python, uses a database for dependencies, or whatever, is irrelevant.
> 
> Not really. At one point the amount of packages needing to be handled
> becomes too big, exactly the problem with lunar.
> 
> That's why redoing lunar in python/perl doesn't make sense: You'd be an
> idiot not going for C/C++ in the first place. So, we stick with bash.

OK. So C/C++ to replace many of the functions used in the lunar 
functions/plugins with bash retained for DETAILS, DEPENDS, etc. So would that 
be it or would a database still be needed/useful?

> 
> > Sure, some give better support for certain operations than others, and
> > may be faster at run-time, but none of the languages themselves address
> > the issues above. They could also introduce new problems: would you
> > want to automatically re-lin pyLunar when lunar update rebuilds Python?
> 
> yes, you most definately will want to do that.
> 
> > For whatever they're worth, my suggestions would be:
> > (a) improve the cpu detection/handling for the gcc plugins;
> 
> what's wrong with -O2 -march=native?
> 
> really, this seems like a non-issue. Just make that the entire
> distro-default. Anyone can then change it for themselves.

I'd say on the next ISO spin to make that the default.

> 
> > (b) streamline the ISO build system so that we can release new ISOs
> > 
> >      as each major version of gcc/udev/whatever hits the moonbase.
> >      Maybe not as full-release ISOs as such, but for use "as-is".
> > 
> > I don't see how we can code around the "smart" configuration systems
> > without building each module in an almost empty chroot environment.
> 
> what's wrong with building in a "clean" environment? seems like an ideal
> situation to me...
> 
> > We could maybe switch to using the slightly more recent installwatch
> > from the checkinstall sources, but that doesn't solve everything.
> > I wonder how the other source based distros work round these issues.
> 
> I checked it out, and, it doesn't function properly: You'll get all
> sorts of broken compiles if you use that codebase.
> 
> > Enough waffle from me.
> 
> Auke

Out of all this I still have to ask this silly question; How does any of this 
address the "clever" scripts that do not have on/off switches?

Or is the real answer to those a less automated build?

-- 
Dennis `stumbles` Veatch
Lunar Linux Developer
http://www.lunar-linux.org/


More information about the Lunar-dev mailing list