Added undocumented mount and debug modes to the appimage
[citadel.git] / appimage / build_appimage.sh
1 #!/bin/bash
2
3 rm -vf citadel-*appimage
4
5 export CITADEL_BUILD_DIR=/tmp/citadel-build-$$
6 export WEBCIT_BUILD_DIR=/tmp/webcit-build-$$
7 rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
8
9 # libcitadel has to be built in a "real" library directory
10 pushd ../libcitadel || exit 1
11 make distclean 2>/dev/null
12 ./bootstrap || exit 2
13 ./configure || exit 3
14 make || exit 4
15 make install || exit 5
16 popd
17
18 # Build the Citadel server
19 pushd ../citadel || exit 6
20 make distclean 2>/dev/null
21 ./bootstrap || exit 7
22 ./configure --prefix=$CITADEL_BUILD_DIR || exit 8
23 make || exit 9
24 make install || exit 10
25 popd
26
27 # Build WebCit
28 pushd ../webcit || exit 11
29 make distclean 2>/dev/null
30 ./bootstrap || exit 12
31 ./configure --prefix=$WEBCIT_BUILD_DIR || exit 13
32 make || exit 14
33 make install || exit 15
34 popd
35
36 # Clear out any old versions in the AppDir
37 rm -frv citadel.AppDir/usr
38 mkdir -p citadel.AppDir/usr/bin
39 mkdir -p citadel.AppDir/usr/lib
40
41 # Copy over all the libraries we used
42 for bin in $CITADEL_BUILD_DIR/citserver $WEBCIT_BUILD_DIR/webcit $CITADEL_BUILD_DIR/ctdlmigrate `which gdb`
43 do
44         for x in `ldd $bin | awk ' { print $3 } ' | grep -v -e '^$' | grep -v 'libc.so' | grep -v 'libpthread.so' | grep -v 'libresolv.so'`
45         do
46                 cp -v -L $x citadel.AppDir/usr/lib/
47         done
48 done
49 ldconfig -v citadel.AppDir/usr/lib
50
51 # Copy over some utilities
52 for bin in db_dump db_load db_recover gdb
53 do
54         cp `which $bin` citadel.AppDir/usr/bin/ || exit 16
55 done
56
57 # Install the Citadel Server application tree
58 mkdir -p citadel.AppDir/usr/local/citadel || exit 17
59 rsync -va $CITADEL_BUILD_DIR/ ./citadel.AppDir/usr/local/citadel/ || exit 18
60
61 # Install the WebCit application tree
62 mkdir -p citadel.AppDir/usr/local/webcit || exit 19
63 rsync -va $WEBCIT_BUILD_DIR/ ./citadel.AppDir/usr/local/webcit/ || exit 20
64
65 # Remove the build directories
66 rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
67
68 cc ctdlvisor.c -o citadel.AppDir/usr/bin/ctdlvisor || exit 21
69
70 CPU=`uname -m`
71 basefilename=citadel-`date +%s`
72 if [ $CPU == x86_64 ] ; then
73         export ARCH=x86_64
74 elif [ $CPU == armv7l ] ; then
75         export ARCH=ARM
76 fi
77 echo ARCH: $ARCH
78 echo CPU: $CPU
79 appimagetool citadel.AppDir/ ${basefilename}-${CPU}.appimage