build_appimage.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #!/bin/bash
  2. ########################################################################
  3. # Package the binaries built in CI as an AppImage
  4. # By Simon Peter 2016
  5. # For more information, see http://appimage.org/
  6. ########################################################################
  7. if [ $ARCH = '64' ]; then
  8. export ARCH='x86_64';
  9. elif [ $ARCH = '32' ]; then
  10. export ARCH='i386';
  11. fi
  12. APP=SuperTux
  13. LOWERAPP=supertux2
  14. GIT_REV=$(git rev-parse --short HEAD)
  15. echo $GIT_REV
  16. RELEASE_VERSION=$(git describe --tags)
  17. make install DESTDIR=$HOME/$APP/$APP.AppDir
  18. cd $HOME/$APP/
  19. wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh
  20. #Remove line that should not be in functions.sh
  21. sed -i -r 's/set -x//' functions.sh
  22. #Silence wget
  23. sed -i 's/wget/wget -q/' functions.sh
  24. . ./functions.sh
  25. cd $APP.AppDir
  26. ########################################################################
  27. # Copy desktop and icon file to AppDir for AppRun to pick them up
  28. ########################################################################
  29. get_apprun
  30. get_desktop
  31. # SVG icons are not supported by get_icon, copy it over manually.
  32. cp ./usr/share/icons/hicolor/scalable/apps/$LOWERAPP.svg . || true
  33. ls -lh $LOWERAPP.svg || true
  34. ########################################################################
  35. # Copy in the dependencies that cannot be assumed to be available
  36. # on all target systems
  37. ########################################################################
  38. copy_deps
  39. if [ -d "./usr/lib/x86_64-linux-gnu/gstreamer-1.0/" ] ; then
  40. mv -v ./usr/lib/x86_64-linux-gnu/gstreamer-1.0/* ./usr/lib/x86_64-linux-gnu/
  41. rm -vr ./usr/lib/x86_64-linux-gnu/gstreamer-1.0
  42. fi
  43. if [ -d "./usr/lib/x86_64-linux-gnu/pulseaudio/" ] ; then
  44. mv -v ./usr/lib/x86_64-linux-gnu/pulseaudio/* ./usr/lib/x86_64-linux-gnu/
  45. rm -vr ./usr/lib/x86_64-linux-gnu/pulseaudio
  46. fi
  47. ########################################################################
  48. # Delete stuff that should not go into the AppImage
  49. ########################################################################
  50. # Delete dangerous libraries; see
  51. # https://github.com/probonopd/AppImages/blob/master/excludelist
  52. #delete_blacklisted # We'll need to specify our own blacklist, see below.
  53. # Fix the function ourselves for now
  54. # Delete blacklisted files
  55. delete_blacklisted_patched()
  56. {
  57. BLACKLISTED_FILES=$( cat_file_from_url https://github.com/probonopd/AppImages/raw/master/excludelist | sed '/^\s*$/d' | sed '/^#.*$/d' | sed '/libkrb5.so.26/d' | sed '/libkrb5.so.3/d' | sed '/libhcrypto.so.4/d' | sed '/libhx509.so.5/d' | sed '/libroken.so.18/d' | sed '/libwind.so.0/d')
  58. echo $BLACKLISTED_FILES
  59. for FILE in $BLACKLISTED_FILES ; do
  60. FOUND=$(find . -xtype f -name "${FILE}" 2>/dev/null)
  61. if [ ! -z "$FOUND" ] ; then
  62. echo "Deleting blacklisted ${FOUND}"
  63. rm -f "${FOUND}"
  64. fi
  65. done
  66. # Do not bundle developer stuff
  67. rm -rf usr/include || true
  68. rm -rf usr/lib/cmake || true
  69. rm -rf usr/lib/pkgconfig || true
  70. find . -name '*.la' | xargs -i rm {}
  71. }
  72. delete_blacklisted_patched
  73. ########################################################################
  74. # desktopintegration asks the user on first run to install a menu item
  75. ########################################################################
  76. get_desktopintegration $LOWERAPP
  77. ########################################################################
  78. # Determine the version of the app; also include needed glibc version
  79. ########################################################################
  80. VERSION=${RELEASE_VERSION}
  81. export VERSION
  82. ########################################################################
  83. # Patch away absolute paths
  84. ########################################################################
  85. patch_usr
  86. ########################################################################
  87. # AppDir complete
  88. # Now packaging it as an AppImage
  89. ########################################################################
  90. cd .. # Go out of AppImage
  91. mkdir -p ../out/
  92. generate_type2_appimage