src/3rdparty/libgq/debian/fixup-scratchbox
changeset 37 758a864f9613
equal deleted inserted replaced
36:ef0373b55136 37:758a864f9613
       
     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