summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/libgq/debian/fixup-scratchbox
blob: b39ad5fc28a87d4817f7a210a93d246de0629353 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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