Merge pull request #721 from AppImage/TheAssassin/debuggable-runtime
[appimagekit/gsi.git] / build.sh
bloba4887644d5b12a41b5ce8123506efc0019407c9e
1 #!/bin/bash
4 # This script installs the required build-time dependencies
5 # and builds AppImages for AppImageKit
8 STRIP="strip"
9 STATIC_BUILD=1
10 JOBS=${JOBS:-1}
11 RUN_TESTS=0
13 while [ $1 ]; do
14 case $1 in
15 '--debug' | '-d' )
16 STRIP="true"
18 '--use-shared-libs' | '-s' )
19 STATIC_BUILD=0
21 '--run-tests' | '-t' )
22 RUN_TESTS=1
24 '--clean' | '-c' )
25 rm -rf build
26 git clean -df
27 rm -rf squashfuse/* squashfuse/.git
28 rm -rf squashfs-tools/* squashfs-tools/.git
29 exit
31 '--help' | '-h' )
32 echo 'Usage: ./build.sh [OPTIONS]'
33 echo
34 echo 'OPTIONS:'
35 echo ' -h, --help: Show this help screen'
36 echo ' -d, --debug: Build with debug info.'
37 echo ' -n, --no-dependencies: Do not try to install distro specific build dependencies.'
38 echo ' -s, --use-shared-libs: Use distro provided shared versions of inotify-tools and openssl.'
39 echo ' -c, --clean: Clean all artifacts generated by the build.'
40 exit
42 esac
44 shift
45 done
48 if cat /etc/*release | grep "CentOS" 2>&1 >/dev/null; then
49 if [ -e /opt/rh/devtoolset-4/enable ]; then
50 . /opt/rh/devtoolset-4/enable
54 echo "$KEY" | md5sum
56 set -e
57 set -x
59 HERE="$(dirname "$(readlink -f "${0}")")"
60 cd "$HERE"
62 # Fetch git submodules
63 git submodule update --init --recursive
65 # Clean up from previous run
66 [ -d build/ ] && rm -rf build/
68 # Build AppImage
69 mkdir build
70 cd build
72 cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTING=ON -DAPPIMAGEKIT_PACKAGE_DEBS=ON
73 make -j$JOBS
74 make install DESTDIR=install_prefix/
76 if [ $RUN_TESTS -ne 0 ]; then
77 ctest -V
80 xxd src/runtime | head -n 1
82 # Do NOT strip runtime
83 find install_prefix/usr/bin/ -not -iname runtime -print -exec "$STRIP" "{}" \; 2>/dev/null
85 ls -lh install_prefix/usr/bin/
86 for FILE in install_prefix/usr/bin/*; do
87 echo "$FILE"
88 ldd "$FILE" || true
89 done
91 bash -ex "$HERE/build-appdirs.sh"
93 ls -lh
95 mkdir -p out
96 cp -r install_prefix/usr/{bin,lib/appimagekit}/* appdirs/*.AppDir out/