| #! /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 |