[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Autocompilation and source dependencies



Dan Jacobowitz <drow@false.org> writes:

> Some thoughts...
> 
> On Thu, Oct 29, 1998 at 10:58:54AM +0100, Brederlow wrote:
> > - The debian mirror will be mounted via nfs as read-only filesystem.
> 
> Non-issue.  APT, remember?

Yep, but apt can't install .dsc files (yet). The script needs to get
the source from somewhere.

> > - All packages that are known to be necessary to build the package are 
> >   installed via apt-get install. Questions asked and answerers given
> >   should be recorded and reused for further tries. At the first try,
> >   no dependencies will be known, so nothing more will be installed.
> 
> To be honest, I'm substantially more interested in the ability to do
> this on the local system.  There are, as a rule, not all that many
> packages required to build the system.  A chroot is nice, but doing it
> outside of one could be more useful.

If you want a complete build, every -dev package will be needed. Most
or all of them depend on their non-dev packages. Thats several 100 MB
of diskspace needed to build the system.

The reason for the changeroot is, that garbage can be remove
efficiently after the build and if you want to compile, another 30 MB
wasted for the changeroot won't matter.

Once the dependencies are known, apt could be told to install .dsc
files just like it does install .deb files. The user would then get
prompted, whether he wants to install all that garbage needed to build 
the source. The apt starts some build script and installes the
produces .deb files on success.

> First of all, a speed tip - make libtricks send it to a _file_.  Both
> simplify parsing and increase speed quite amazingly.

The newer version of libtricks can do that now. :)

> I think that while this is a nice idea, source depends added by hand
> will be a lot more useful.  There are some definite problems - for
> instance, packages which will build just fine without emacs installed
> but more completely with, or ditto makeinfo.

That should not be a problem at all. Somewhere during the build the
rules or the configure or the make will look for emacs. The libtricks
trace will then show entries for the not found file:

/sbin/emacs
/usr/sbin/emacs
/bin/emacs
/usr/bin/emacs
/usr/local/bin/emacs
...

With that, the script should see that emacs will be needed and add
that to the list of dependencies. Thats a dependency, which could be
overlooked for years, because all sane enviroments have emacs or
xemacs installed. For stuff like /bin/ls, thats pretty much the only
change to detect the dependency.

What would be a problem, are package that should be build without
package bla installed, because a non-bla version (e.g. xemacs-no-mule) 
is needed. In such rare cases, its the rule file that must watch that
the appropriat configuration is selected during the build
(e.g. ./configure --no-mule) and not job of a compilescript to detect
that a dependency should be left out.

> Dan

May the Source be with you.
			Goswin


Reply to: