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