I'm trying to build a set of packages using Crocodile beyond the
build-essential set, to encompass enough packages to run debootstrap
fully using only packages I have built in a reprepro repository. Many
packages build, but a bunch are giving me grief.
Two questions, one specific and then one general.
Specific question.
One example of a package I'm having problems with is console-data.
The first problem I had with this package was that the 'psfaddtable'
tool has changed how it takes arguments and the latest source package in
Sarge makes use in the rules file of the tool's new argument structure.
This was a relatively minor issue (a cat of the patch is at the end of
this message), where a '-' that used to be required as a file
placeholder is no longer needed (and no longer supplied in the rules
makefile).
A more serious problem occured after I fixed this, involving how
pbuilder-satisfydepends works to resolve and install build dependency
packages. The problem surrounds the 'dh_consoledata' tool, which is in
the dh-consoledata package, built as part of the console-common source
package, and related to debhelper. Scratchbox provides a version of
this tool. The package dependency check passes, but the console-data
build chokes when it can't find a required file to run the
'dh_consoledata' tool as follows:
dh_consoledata -i
/scratchbox/tools/bin/sh: line 1:
/usr/share/debhelper/dh-consoledata/config.in: No such file or directory
dh_consoledata: command returned error code
make: *** [binary-indep] Error 1
The file /usr/share/debhelper/dh-consoledata/config.in truly does not
exist. Now I had already sucessfully built the console-common source
package, so the dh-consoledata.deb file is sitting in my
crocodile/work/built/ directory, and could be installed. This package
contains what I assume is an alternate working version of the
dh_consoledata tool, including the needed files for dh_consoledata to
work. Unfortunately, pbuilder-satisfydepends decided not to install
that package, and use the Scratchbox provided version instead (which is
missing the needed file).
-> Attempting to parse the build-deps : pbuilder-satisfydepends,v 1.18
2003/04/20 03:40:36 dancer Exp $
-> Considering dbs
-> Using unversionedly scratchbox for: dbs
-> Trying dbs
-> Using scratchbox for: dbs
-> Considering debhelper (>= 4.1.6)
Using scratchbox provide: debhelper 4.2.32x
-> Trying debhelper
-> Using scratchbox for: debhelper
-> Considering dh-consoledata
-> Using unversionedly scratchbox for: dh-consoledata
-> Trying dh-consoledata
-> Using scratchbox for: dh-consoledata
-> Considering sharutils
-> Trying sharutils
-> Considering console-tools
-> Using unversionedly scratchbox for: console-tools
-> Trying console-tools
-> Using scratchbox for: console-tools
-> Installing sharutils
Reading Package Lists...
Building Dependency Tree...
sharutils is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
-> Finished parsing the build-deps
So, in a crocodile build scenario, is it possible to have
pbuilder-satisfydepends defer to installing the package if it is built
instead of using the Scratchbox version? Would this even work (I can
imagine installing the second version in addition to the Scratchbox one
could cause problems)? I'm running into several problems more like the
first where the tool has changed and the modern Sarge makefiles employ
the wrong syntax.
Now for the more general question. Is there a general way people use to
build all the tools they need from sources, bypassing the use of
many/any Scratchbox versions of the build tools. I'm not interested in
speed, only correct execution, so I don't mind if the tools need to run
under QEMU, so long as they run correctly. There is sort of a chicken
and egg problem here, in that it seems you need the Debian devkit in
order to build any packages in the first place, but would it be possible
to then create a Scratchbox sandbox that does not include the Debian
devkit, and instead uses the Crocodile set of packages to provide all
the build essential tools? In other words, once build-essential is
done, create another sandbox without the Debian devkit but with access
to the Crocodile packages and build additional packages here. The
documentation seems to indicate that the Debian devkit also sets some
environment variables in addition to populating tools. Really what I am
looking for is to have built as much from Sarge source as possible, so
I'm depending as little as possible on specific versions of tools from
the devkit.
I've read a bit about Scratchbox 2, and it sounds somewhat more like
what I'm trying to do here, but I haven't found enough to really
understand if it is ready to be fully used, and if so, what the ins and
outs are vs the older Scratchbox.
Any help as always appreciated.
Thanks,
-Jim Heck
Example cat of patch file to fix a tool problem with console-data:
diff -Naur console-data-2002.12.04dbs/debian/rules
console-data-2002.12.04dbs-patched/debian/rules
--- console-data-2002.12.04dbs/debian/rules 2004-11-13
11:51:10.000000000 -0500
+++ console-data-2002.12.04dbs-patched/debian/rules 2007-01-05
09:50:44.000000000 -0500
@@ -83,7 +83,7 @@
mkdir -p ${installdir}/usr/share/consolefonts
# First fix the sfm tables in the lat2u fonts
for d in ${topdir}/build-tree/extras/consolefonts/lat2u-*.psf ; do \
- psfaddtable $$d
${topdir}/build-tree/${TAR_DIR}/consoletrans/lat2u.sfm > X ; \
+ psfaddtable $$d
${topdir}/build-tree/${TAR_DIR}/consoletrans/lat2u.sfm - > X ; \
mv X $$d ; \
done
#
_______________________________________________
Scratchbox-users mailing list
Scratchbox-users@lists.scratchbox.org
http://lists.scratchbox.org/cgi-bin/mailman/listinfo/scratchbox-users