diff options
Diffstat (limited to 'src/3rdparty/libgq/debian/fixup-scratchbox')
-rwxr-xr-x | src/3rdparty/libgq/debian/fixup-scratchbox | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/3rdparty/libgq/debian/fixup-scratchbox b/src/3rdparty/libgq/debian/fixup-scratchbox new file mode 100755 index 0000000..b39ad5f --- /dev/null +++ b/src/3rdparty/libgq/debian/fixup-scratchbox @@ -0,0 +1,79 @@ +#! /bin/sh + +# XXX - this needs to run under fakeroot... + +exec 3>&1 1>&2 + +real_dpkg_checkbuilddeps () { + SBOX_REDIRECT_IGNORE=/usr/bin/perl /usr/bin/perl /usr/bin/dpkg-checkbuilddeps "$@" +} + +finish () { + if ! real_dpkg_checkbuilddeps; then + echo "This package does not use any devkits." + echo "Please install all build dependencies as real packages." + echo >&3 FAIL + fi + exit 0 +} + +# The stamp file can not be in the source tree because then it would +# end up in the source package, which is not what we want. We put it +# into /var/tmp so that it gets deleted when a new rootstrap is +# extracted. + +STAMP=/var/tmp/SANITIZED.$(head debian/changelog | md5sum | cut -d' ' -f1) + +if [ -e $STAMP ]; then + exit 0; +fi + +# Only do permanent changes if this is BIFH + +echo "$USER" | grep -q 'bifh[0-9]' || finish + +# prevent bash from killing the system +rm -f /var/lib/bash/provide-sh + +# clean ~/.texmf-var to avoid trouble with stale things hiding there. +rm -rf ~/.texmf-var/ + +pfx="dpkg-checkbuilddeps: Unmet build dependencies:" +deps=`real_dpkg_checkbuilddeps 2>&1 | grep "^$pfx" | \ + sed -e "s/$pfx//" -e s'/([^)]*)//g' -e 's/|//'` +deps="$deps build-essential automake autoconf libtool ed gawk diff dpkg-dev" +for d in $deps; do + echo apt-get "$@" install $d + apt-get -o DPkg::Options::=--force-confold -q --force-yes --yes install $d +done +apt-get -o DPkg::Options::=--force-confold -q --force-yes --yes dist-upgrade + +# Make sure we get a fresh fakeroot installation + +# We can't seem to control the value of LD_PRELOAD well enough, so we +# just copy the good version of libfakeroot over the bad one that +# Scratchbox uses. This will result in a good version of libfakeroot +# talking to a bad version of faked, but that seems to work well +# enough. The protocol between the two is really simple and unlikely +# to change even when new syscalls are wrapped. And this is a +# desperate hack anyway, so it's OK if there is blood all over the +# floor from time to time. +# +# After we have overwritten libfakeroot, it no longer works with any +# host binaries, such as the ones in /scratchbox/compilers/bin or +# /scratchbox/tools/bin. Thus, we must avoid running those when +# fakerooted. +# +# We use "cp -l" here to avoid overwriting a library that is in use. +# +if [ "$(fakeroot -v)" = "fakeroot version 1.4.2" ]; then + apt-get -q --force-yes --yes --reinstall install fakeroot + cp -fl /usr/lib/libfakeroot/libfakeroot-sysv.so /usr/lib/libfakeroot-sysv/libfakeroot.so.0 + cp -fl /usr/lib/libfakeroot/libfakeroot-tcp.so /usr/lib/libfakeroot-tcp/libfakeroot.so.0 +else + echo "We have $(fakeroot -v), hurray!" +fi + +touch $STAMP + +finish |