| 1 | #! /bin/sh
|
|---|
| 2 |
|
|---|
| 3 | # XXX - this needs to run under fakeroot...
|
|---|
| 4 |
|
|---|
| 5 | exec 3>&1 1>&2
|
|---|
| 6 |
|
|---|
| 7 | real_dpkg_checkbuilddeps () {
|
|---|
| 8 | SBOX_REDIRECT_IGNORE=/usr/bin/perl /usr/bin/perl /usr/bin/dpkg-checkbuilddeps "$@"
|
|---|
| 9 | }
|
|---|
| 10 |
|
|---|
| 11 | finish () {
|
|---|
| 12 | if ! real_dpkg_checkbuilddeps; then
|
|---|
| 13 | echo "This package does not use any devkits."
|
|---|
| 14 | echo "Please install all build dependencies as real packages."
|
|---|
| 15 | echo >&3 FAIL
|
|---|
| 16 | fi
|
|---|
| 17 | exit 0
|
|---|
| 18 | }
|
|---|
| 19 |
|
|---|
| 20 | # The stamp file can not be in the source tree because then it would
|
|---|
| 21 | # end up in the source package, which is not what we want. We put it
|
|---|
| 22 | # into /var/tmp so that it gets deleted when a new rootstrap is
|
|---|
| 23 | # extracted.
|
|---|
| 24 |
|
|---|
| 25 | STAMP=/var/tmp/SANITIZED.$(head debian/changelog | md5sum | cut -d' ' -f1)
|
|---|
| 26 |
|
|---|
| 27 | if [ -e $STAMP ]; then
|
|---|
| 28 | exit 0;
|
|---|
| 29 | fi
|
|---|
| 30 |
|
|---|
| 31 | # Only do permanent changes if this is BIFH
|
|---|
| 32 |
|
|---|
| 33 | echo "$USER" | grep -q 'bifh[0-9]' || finish
|
|---|
| 34 |
|
|---|
| 35 | # prevent bash from killing the system
|
|---|
| 36 | rm -f /var/lib/bash/provide-sh
|
|---|
| 37 |
|
|---|
| 38 | # clean ~/.texmf-var to avoid trouble with stale things hiding there.
|
|---|
| 39 | rm -rf ~/.texmf-var/
|
|---|
| 40 |
|
|---|
| 41 | pfx="dpkg-checkbuilddeps: Unmet build dependencies:"
|
|---|
| 42 | deps=`real_dpkg_checkbuilddeps 2>&1 | grep "^$pfx" | \
|
|---|
| 43 | sed -e "s/$pfx//" -e s'/([^)]*)//g' -e 's/|//'`
|
|---|
| 44 | deps="$deps build-essential automake autoconf libtool ed gawk diff dpkg-dev"
|
|---|
| 45 | for d in $deps; do
|
|---|
| 46 | echo apt-get "$@" install $d
|
|---|
| 47 | apt-get -o DPkg::Options::=--force-confold -q --force-yes --yes install $d
|
|---|
| 48 | done
|
|---|
| 49 | apt-get -o DPkg::Options::=--force-confold -q --force-yes --yes dist-upgrade
|
|---|
| 50 |
|
|---|
| 51 | # Make sure we get a fresh fakeroot installation
|
|---|
| 52 |
|
|---|
| 53 | # We can't seem to control the value of LD_PRELOAD well enough, so we
|
|---|
| 54 | # just copy the good version of libfakeroot over the bad one that
|
|---|
| 55 | # Scratchbox uses. This will result in a good version of libfakeroot
|
|---|
| 56 | # talking to a bad version of faked, but that seems to work well
|
|---|
| 57 | # enough. The protocol between the two is really simple and unlikely
|
|---|
| 58 | # to change even when new syscalls are wrapped. And this is a
|
|---|
| 59 | # desperate hack anyway, so it's OK if there is blood all over the
|
|---|
| 60 | # floor from time to time.
|
|---|
| 61 | #
|
|---|
| 62 | # After we have overwritten libfakeroot, it no longer works with any
|
|---|
| 63 | # host binaries, such as the ones in /scratchbox/compilers/bin or
|
|---|
| 64 | # /scratchbox/tools/bin. Thus, we must avoid running those when
|
|---|
| 65 | # fakerooted.
|
|---|
| 66 | #
|
|---|
| 67 | # We use "cp -l" here to avoid overwriting a library that is in use.
|
|---|
| 68 | #
|
|---|
| 69 | if [ "$(fakeroot -v)" = "fakeroot version 1.4.2" ]; then
|
|---|
| 70 | apt-get -q --force-yes --yes --reinstall install fakeroot
|
|---|
| 71 | cp -fl /usr/lib/libfakeroot/libfakeroot-sysv.so /usr/lib/libfakeroot-sysv/libfakeroot.so.0
|
|---|
| 72 | cp -fl /usr/lib/libfakeroot/libfakeroot-tcp.so /usr/lib/libfakeroot-tcp/libfakeroot.so.0
|
|---|
| 73 | else
|
|---|
| 74 | echo "We have $(fakeroot -v), hurray!"
|
|---|
| 75 | fi
|
|---|
| 76 |
|
|---|
| 77 | touch $STAMP
|
|---|
| 78 |
|
|---|
| 79 | finish
|
|---|