Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel
[citadel.git] / appimage / build_appimage.sh
index eec8335b0e553a691c14e0c71da987b72ae1e240..4fddec1a54083bd3769255e4acdddeafb41685db 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+rm -vf citadel-*appimage
+
 export CITADEL_BUILD_DIR=/tmp/citadel-build-$$
 export WEBCIT_BUILD_DIR=/tmp/webcit-build-$$
 rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
@@ -13,6 +15,14 @@ make || exit 4
 make install || exit 5
 popd
 
+# Build the text mode client
+pushd ../textclient || exit 22
+make distclean 2>/dev/null
+./bootstrap || exit 23
+./configure --prefix=`pwd` || exit 24
+make || exit 25
+popd
+
 # Build the Citadel server
 pushd ../citadel || exit 6
 make distclean 2>/dev/null
@@ -37,21 +47,37 @@ mkdir -p citadel.AppDir/usr/bin
 mkdir -p citadel.AppDir/usr/lib
 
 # Copy over all the libraries we used
-for bin in $CITADEL_BUILD_DIR/citserver $WEBCIT_BUILD_DIR/webcit
+for bin in \
+       $CITADEL_BUILD_DIR/citserver \
+       $WEBCIT_BUILD_DIR/webcit \
+       $CITADEL_BUILD_DIR/ctdlmigrate \
+       ../textclient/citadel \
+       `which gdb`
 do
-       for x in `ldd $bin | awk ' { print $3 } ' | grep -v -e '^$' | grep -v 'libc.so' | grep -v 'libpthread.so' | grep -v 'libresolv.so'`
-       do
-               cp -v -L $x citadel.AppDir/usr/lib/
-       done
+       ldd $bin
+done | sort | while read libname junk libpath
+do
+       if [ ! -e ${libpath} 2>/dev/null ] ; then
+               echo -e \\033[31m ${libname} was not found and will not be packaged. \\033[0m
+       elif grep ^${libname}$ excludelist >/dev/null 2>/dev/null ; then
+               echo -e \\033[33m ${libname} is in the exclude list and will not be packaged. \\033[0m
+       else
+               echo -e \\033[32m ${libname} will be packaged. \\033[0m
+               cp -L ${libpath} citadel.AppDir/usr/lib/ 2>/dev/null
+       fi
 done
 ldconfig -v citadel.AppDir/usr/lib
 
 # Copy over some utilities
-for bin in db_dump db_load db_recover
+for bin in db_dump db_load db_recover gdb
 do
        cp `which $bin` citadel.AppDir/usr/bin/ || exit 16
 done
 
+# Copy over the client
+cp ../textclient/citadel citadel.AppDir/usr/bin/ || exit 26
+cp ../textclient/citadel.rc citadel.AppDir/ || exit 27
+
 # Install the Citadel Server application tree
 mkdir -p citadel.AppDir/usr/local/citadel || exit 17
 rsync -va $CITADEL_BUILD_DIR/ ./citadel.AppDir/usr/local/citadel/ || exit 18
@@ -65,12 +91,15 @@ rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
 
 cc ctdlvisor.c -o citadel.AppDir/usr/bin/ctdlvisor || exit 21
 
-cpu=`uname -p`
-basefilename=citadel-`date +%s`
-if [ $cpu == x86_64 ] ; then
-       ARCH=x86_64 appimagetool citadel.AppDir/ ${basefilename}-x64.appimage
-else
-       ARCH=ARM appimagetool citadel.AppDir/ ${basefilename}-arm32.appimage
+CPU=`uname -m`
+basefilename=citadel-`cat ../release_version.txt`
+if [ $CPU == x86_64 ] ; then
+       export ARCH=x86_64
+elif [ $CPU == armv7l ] ; then
+       export ARCH=armhf
+elif [ $CPU == aarch64 ] ; then
+       export ARCH=aarch64
 fi
-
-
+echo ARCH: $ARCH
+echo CPU: $CPU
+appimagetool citadel.AppDir/ ${basefilename}-${CPU}.appimage