build-appimage.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #! /bin/bash
  2. set -xe
  3. mkdir /app
  4. mkdir /build
  5. #Set Qt-5.11
  6. export QT_BASE_DIR=/opt/qt511
  7. export QTDIR=$QT_BASE_DIR
  8. export PATH=$QT_BASE_DIR/bin:$PATH
  9. export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib:$LD_LIBRARY_PATH
  10. export PKG_CONFIG_PATH=$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
  11. #set defaults
  12. export SUFFIX=${DRONE_PULL_REQUEST:=master}
  13. if [ $SUFFIX != "master" ]; then
  14. SUFFIX="PR-$SUFFIX"
  15. fi
  16. #QtKeyChain 0.9.1
  17. cd /build
  18. git clone https://github.com/frankosterfeld/qtkeychain.git
  19. cd qtkeychain
  20. git checkout v0.9.1
  21. mkdir build
  22. cd build
  23. cmake -D CMAKE_INSTALL_PREFIX=/usr ../
  24. make -j4
  25. make DESTDIR=/app install
  26. #Build client
  27. cd /build
  28. mkdir build-client
  29. cd build-client
  30. cmake -D CMAKE_INSTALL_PREFIX=/usr \
  31. -D NO_SHIBBOLETH=1 \
  32. -D QTKEYCHAIN_LIBRARY=/app/usr/lib/x86_64-linux-gnu/libqt5keychain.so \
  33. -D QTKEYCHAIN_INCLUDE_DIR=/app/usr/include/qt5keychain/ \
  34. -DMIRALL_VERSION_SUFFIX=PR-$DRONE_PULL_REQUEST \
  35. -DMIRALL_VERSION_BUILD=$DRONE_BUILD_NUMBER \
  36. $DRONE_WORKSPACE
  37. make -j4
  38. make DESTDIR=/app install
  39. # Move stuff around
  40. cd /app
  41. mv ./usr/lib/x86_64-linux-gnu/nextcloud/* ./usr/lib/x86_64-linux-gnu/
  42. mv ./usr/lib/x86_64-linux-gnu/* ./usr/lib/
  43. rm -rf ./usr/lib/nextcloud
  44. rm -rf ./usr/lib/cmake
  45. rm -rf ./usr/include
  46. rm -rf ./usr/mkspecs
  47. rm -rf ./usr/lib/x86_64-linux-gnu/
  48. # Don't bundle nextcloudcmd as we don't run it anyway
  49. rm -rf ./usr/bin/nextcloudcmd
  50. # Don't bundle the explorer extentions as we can't do anything with them in the AppImage
  51. rm -rf ./usr/share/caja-python/
  52. rm -rf ./usr/share/nautilus-python/
  53. rm -rf ./usr/share/nemo-python/
  54. # Move sync exlucde to right location
  55. mv ./etc/Nextcloud/sync-exclude.lst ./usr/bin/
  56. rm -rf ./etc
  57. sed -i -e 's|Icon=nextcloud|Icon=Nextcloud|g' usr/share/applications/nextcloud.desktop # Bug in desktop file?
  58. cp ./usr/share/icons/hicolor/512x512/apps/Nextcloud.png . # Workaround for linuxeployqt bug, FIXME
  59. # Because distros need to get their shit together
  60. cp -R /lib/x86_64-linux-gnu/libssl.so* ./usr/lib/
  61. cp -R /lib/x86_64-linux-gnu/libcrypto.so* ./usr/lib/
  62. cp -P /usr/local/lib/libssl.so* ./usr/lib/
  63. cp -P /usr/local/lib/libcrypto.so* ./usr/lib/
  64. # NSS fun
  65. cp -P -r /usr/lib/x86_64-linux-gnu/nss ./usr/lib/
  66. # Use linuxdeployqt to deploy
  67. cd /build
  68. wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
  69. chmod a+x linuxdeployqt*.AppImage
  70. ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract
  71. rm ./linuxdeployqt-continuous-x86_64.AppImage
  72. unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
  73. export LD_LIBRARY_PATH=/app/usr/lib/
  74. ./squashfs-root/AppRun /app/usr/share/applications/nextcloud.desktop -bundle-non-qt-libs
  75. # Set origin
  76. ./squashfs-root/usr/bin/patchelf --set-rpath '$ORIGIN/' /app/usr/lib/libnextcloudsync.so.0
  77. # Build AppImage
  78. ./squashfs-root/AppRun /app/usr/share/applications/nextcloud.desktop -appimage
  79. mv Nextcloud*.AppImage Nextcloud-${SUFFIX}-${DRONE_COMMIT}-x86_64.AppImage
  80. curl --upload-file $(readlink -f ./Nextcloud*.AppImage) https://transfer.sh/Nextcloud-${SUFFIX}-${DRONE_COMMIT}-x86_64.AppImage
  81. echo
  82. echo "Get the AppImage at the link above!"