Re: Automatic building of Debian: some results
> (Those who have been doing automatic builds as parts of the porting
> efforts can probably add more comments to this.)
We (m68k) didn't really do it automatically, only, maybe,
semi-automatically... But my comments come :-)
> * Source dependencies would be nice, but we can do without them for
> the time being by using a build machine that has lots of stuff
> installed.
There are also negative source-dependencies (example: for bash,
termcap-compat must not be installed, otherwise the resulting binary
is linked with libtermcap.so...). So you can't install just any
package you find :-)
I have written an experimental implementation of a source-dependency
build system, but it isn't quite finished yet. It works with
dependencies in an external file, so it doesn't need that information
somewhere in the source package. I add entries by experience :-)
The current script can handle versioned dependencies (but no
alternatives yet), and knows --for the case above-- about negative
dependencies, written down with a '!' prefix.
> * There are a number of packages that need stuff outside their own
> source package to build. For example, doc-linux needs an LDP mirror,
> and some packages seem to need Tcl/Tk source, or kernel source.
Yep, that can be annoying. To handle this, I've introduced so-called
"special dependencies", whose names aren't package names but can call
shell script snipplets. They involve a pre-test (do I need to execute
the script?), a pre action (e.g. unpack the source) and a post action
(remove it again). Example for Tcl 8.0 source tree:
*TCL80-SOURCE:
test {
[ -d tcl8.0 ]
}
pre {
dpkg-source -x ~/source/libs/tcl8.0_*.dsc;
ln -s tcl8.0-* tcl8.0;
(cd tcl8.0/unix; ./configure --prefix=/usr);
ln -s /usr/lib/libtcl8.0.so.1 tcl8.0/unix
ln -s /usr/lib/libtcl8.0.a tcl8.0/unix
}
post {
rm -rf tcl8.0-* tcl8.0
}
> * Some packages need conflicting tools to build. For example, some
> needed tk7.6-dev, some tk8.0-dev, I think. I don't know how to solve
> this.
I solved this by using apt-get to install the dependencies. apt-get
also automatically removes any conflicting packages. I parse the
output of it an reinstall any removed packages later. Using apt-get
also has the advantage that you can cut down the dependency list a
lot. E.g. if a package needs et to build, et dependends on
tcl8.0{,-dev}, and tk8.0{,-dev}. apt-get will install those 4
automatically, too. Again I parse its output to learn which packages I
have to deinstall afterwards.
> * On the whole, the situation (on a i386) is pretty nice.
Hmm... to the end I became rather disappointed, but could be that all
the easy packages were already recompiled and only the "bad" ones left
:-)
Roman
--
To UNSUBSCRIBE, email to debian-devel-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to: