remove libz from excludelist
[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 text mode client
19 pushd ../textclient || exit 22
20 make distclean 2>/dev/null
21 ./bootstrap || exit 23
22 ./configure --prefix=`pwd` || exit 24
23 make || exit 25
24 popd
25
26 # Build the Citadel server
27 pushd ../citadel || exit 6
28 make distclean 2>/dev/null
29 ./bootstrap || exit 7
30 ./configure --prefix=$CITADEL_BUILD_DIR || exit 8
31 make || exit 9
32 make install || exit 10
33 popd
34
35 # Build WebCit
36 pushd ../webcit || exit 11
37 make distclean 2>/dev/null
38 ./bootstrap || exit 12
39 ./configure --prefix=$WEBCIT_BUILD_DIR || exit 13
40 make || exit 14
41 make install || exit 15
42 popd
43
44 # Clear out any old versions in the AppDir
45 rm -frv citadel.AppDir/usr
46 mkdir -p citadel.AppDir/usr/bin
47 mkdir -p citadel.AppDir/usr/lib
48
49 # Copy over all the libraries we used
50 for bin in \
51         $CITADEL_BUILD_DIR/citserver \
52         $WEBCIT_BUILD_DIR/webcit \
53         $CITADEL_BUILD_DIR/ctdlmigrate \
54         ../textclient/citadel \
55         `which gdb`
56 do
57         ldd $bin
58 done | sort | while read libname junk libpath
59 do
60         if [ ! -e ${libpath} 2>/dev/null ] ; then
61                 echo -e \\033[31m ${libname} was not found and will not be packaged. \\033[0m
62         elif grep ^${libname}$ excludelist >/dev/null 2>/dev/null ; then
63                 echo -e \\033[33m ${libname} is in the exclude list and will not be packaged. \\033[0m
64         else
65                 echo -e \\033[32m ${libname} will be packaged. \\033[0m
66                 cp -L ${libpath} citadel.AppDir/usr/lib/ 2>/dev/null
67         fi
68 done
69 ldconfig -v citadel.AppDir/usr/lib
70
71 # Copy over some utilities
72 for bin in db_dump db_load db_recover gdb
73 do
74         cp `which $bin` citadel.AppDir/usr/bin/ || exit 16
75 done
76
77 # Copy over the client
78 cp ../textclient/citadel citadel.AppDir/usr/bin/ || exit 26
79 cp ../textclient/citadel.rc citadel.AppDir/ || exit 27
80
81 # Install the Citadel Server application tree
82 mkdir -p citadel.AppDir/usr/local/citadel || exit 17
83 rsync -va $CITADEL_BUILD_DIR/ ./citadel.AppDir/usr/local/citadel/ || exit 18
84
85 # Install the WebCit application tree
86 mkdir -p citadel.AppDir/usr/local/webcit || exit 19
87 rsync -va $WEBCIT_BUILD_DIR/ ./citadel.AppDir/usr/local/webcit/ || exit 20
88
89 # Remove the build directories
90 rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
91
92 cc ctdlvisor.c -o citadel.AppDir/usr/bin/ctdlvisor || exit 21
93
94 CPU=`uname -m`
95 basefilename=citadel-`date +%s`
96 if [ $CPU == x86_64 ] ; then
97         export ARCH=x86_64
98 elif [ $CPU == armv7l ] ; then
99         export ARCH=ARM
100 fi
101 echo ARCH: $ARCH
102 echo CPU: $CPU
103 appimagetool citadel.AppDir/ ${basefilename}-${CPU}.appimage