b3ab8ea6e2fd3b591caa76446f993252da183b2d
[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         ldd $bin
45 done | sort | while read libname junk libpath
46 do
47         if [ ! -e ${libpath} 2>/dev/null ] ; then
48                 echo -e \\033[31m ${libname} was not found and will not be packaged. \\033[0m
49         elif grep ^${libname}$ excludelist >/dev/null 2>/dev/null ; then
50                 echo -e \\033[33m ${libname} is in the exclude list and will not be packaged. \\033[0m
51         else
52                 echo -e \\033[32m ${libname} will be packaged. \\033[0m
53                 cp -L ${libpath} citadel.AppDir/usr/lib/ 2>/dev/null
54         fi
55 done
56 ldconfig -v citadel.AppDir/usr/lib
57
58 # Copy over some utilities
59 for bin in db_dump db_load db_recover gdb
60 do
61         cp `which $bin` citadel.AppDir/usr/bin/ || exit 16
62 done
63
64 # Install the Citadel Server application tree
65 mkdir -p citadel.AppDir/usr/local/citadel || exit 17
66 rsync -va $CITADEL_BUILD_DIR/ ./citadel.AppDir/usr/local/citadel/ || exit 18
67
68 # Install the WebCit application tree
69 mkdir -p citadel.AppDir/usr/local/webcit || exit 19
70 rsync -va $WEBCIT_BUILD_DIR/ ./citadel.AppDir/usr/local/webcit/ || exit 20
71
72 # Remove the build directories
73 rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
74
75 cc ctdlvisor.c -o citadel.AppDir/usr/bin/ctdlvisor || exit 21
76
77 CPU=`uname -m`
78 basefilename=citadel-`date +%s`
79 if [ $CPU == x86_64 ] ; then
80         export ARCH=x86_64
81 elif [ $CPU == armv7l ] ; then
82         export ARCH=ARM
83 fi
84 echo ARCH: $ARCH
85 echo CPU: $CPU
86 appimagetool citadel.AppDir/ ${basefilename}-${CPU}.appimage