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

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: