build_appimage.sh 3.8 KB

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