summaryrefslogtreecommitdiff
path: root/solenv/bin/make-raspbian-root-tarball
blob: 71054095715b78d882db408844e74fe9206fd25e (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
80
81
#!/bin/sh

# When lacking a proper cross-compilation package system from Linux
# (or some other Unix) to Raspbian, instead create a tarball of
# headers, libraries and pkg-config files on a Raspbian system and
# unpack that then on the build system, and pass in a -sysroot switch
# to the cross-compiler.

cd /

# Exclude irrelevant stuff, like shared libraries that actually are
# "modules" loaded at run-time by some software.

EXCLUDE='lib/ld-linux \
lib/klibc- \
lib/arm-linux-gnueabihf/security/ \
usr/lib/arm-linux-gnueabihf/ImageMagick- \
usr/lib/arm-linux-gnueabihf/autofs/ \
usr/lib/arm-linux-gnueabihf/directfb- \
usr/lib/arm-linux-gnueabihf/gconv/ \
usr/lib/arm-linux-gnueabihf/gdbus- \
usr/lib/arm-linux-gnueabihf/gdk-pixbuf- \
usr/lib/arm-linux-gnueabihf/gio/ \
usr/lib/arm-linux-gnueabihf/gvfs/ \
usr/lib/arm-linux-gnueabihf/jack/ \
usr/lib/arm-linux-gnueabihf/libgphoto2/ \
usr/lib/arm-linux-gnueabihf/libgphoto2_port/ \
usr/lib/arm-linux-gnueabihf/libgtk-2.0/ \
usr/lib/arm-linux-gnueabihf/libgtk-3.0/ \
usr/lib/arm-linux-gnueabihf/libproxy/ \
usr/lib/arm-linux-gnueabihf/odbc/ \
usr/lib/arm-linux-gnueabihf/pango/ \
usr/lib/arm-linux-gnueabihf/plymouth/ \
usr/lib/arm-linux-gnueabihf/qt4/ \
usr/lib/arm-linux-gnueabihf/sane \
usr/lib/libblas.so \
usr/lib/liblapack.so'

EXCLUDE=`echo "$EXCLUDE" | tr -d '
' | sed -e 's/ /|/g'`

FILELIST=`mktemp`
STAGINGDIR=`mktemp -d`

find lib/*.so* \
     lib/arm-linux-gnueabihf \
     usr/include \
     usr/lib/liblpsolve*.a \
     usr/lib/*.so* \
     usr/lib/arm-linux-gnueabihf \
     usr/lib/jvm/java-6-openjdk-armhf/include \
     usr/lib/jvm/java-6-openjdk-armhf/jre/lib/arm \
     usr/lib/pkgconfig \
     usr/share/pkgconfig \
    -type f -o -type l |
    grep -v -E "^($EXCLUDE)" >$FILELIST

tar -c --files-from=$FILELIST -f - | (cd $STAGINGDIR && tar xf -)

rm $FILELIST

cd $STAGINGDIR
# Change absolute symlinks to relative
find . -type l -print0 | xargs -0 ls -ld | grep -- '-> /' | 
    while read mode links user group size month day yearortime link arrow target; do
	target=`echo "$target" | sed -e 's,/,..;,'`
	while test `expr index $target /` -gt 0; do
	    target=`echo "$target" | sed -e 's,/,;,'`
	    target="..;$target"
	done
	target=`echo "$target" | sed -e 's,;,/,g'`
	ln -f -s $target $link
    done

RESULT=/tmp/raspbian-root-`date +%Y%m%d`.tar.gz
tar czf $RESULT .

cd /
rm -rf $STAGINGDIR

echo === Result in $RESULT ===