]> sigrok.org Git - sigrok-util.git/commitdiff
sigrok-native-appimage: Bump upstream files in contrib/.
authorUwe Hermann <redacted>
Thu, 11 Oct 2018 18:44:32 +0000 (20:44 +0200)
committerUwe Hermann <redacted>
Thu, 11 Oct 2018 18:44:32 +0000 (20:44 +0200)
cross-compile/appimage/contrib/excludelist
cross-compile/appimage/contrib/functions.sh

index e8ee31bd083039d84713f8be7958958012170499..4baede77594d5d394cd163e578725d9129753a67 100644 (file)
@@ -2,6 +2,9 @@
 # should NOT be bundled inside AppImages. This is a working document; expect it to change
 # over time. File format: one filename per line. Each entry should have a justification comment.
 
+# See the useful tool at https://abi-laboratory.pro/index.php?view=navigator&symbol=hb_buffer_set_cluster_level#result
+# to investigate issues with missing symbols.
+
 ld-linux.so.2
 ld-linux-x86-64.so.2
 libanl.so.1
@@ -33,6 +36,7 @@ libstdc++.so.6
 # usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
 
 libGL.so.1
+libEGL.so.1
 # Part of the video driver (OpenGL); present on any regular
 # desktop system, may also be provided by proprietary drivers.
 # Known to cause issues if it's bundled.
@@ -45,6 +49,10 @@ libdrm.so.2
 # libGL error: failed to load driver: swrast
 # Unrecognized OpenGL version
 
+libglapi.so.0
+# Part of mesa
+# known to cause problems with graphics, see https://github.com/RPCS3/rpcs3/issues/4427#issuecomment-381674910
+
 libxcb.so.1
 # Workaround for:
 # Fedora 23
@@ -52,7 +60,7 @@ libxcb.so.1
 # Uncertain if this is required to be bundled for some distributions - if so we need to write a version check script and use LD_PRELOAD to load the system version if it is newer
 # Fedora 25:
 # undefined symbol: xcb_send_request_with_fds
-# https://github.com/probonopd/AppImages/issues/128
+# https://github.com/AppImage/AppImages/issues/128
 
 libX11.so.6
 # Workaround for:
@@ -79,9 +87,27 @@ libfontconfig.so.1
 # Workaround for:
 # Application stalls when loading fonts during application launch; e.g., KiCad on ubuntu-mate
 
-libselinux.so.1
+libthai.so.0
+# Workaround for:
+# audacity: /tmp/.mount_AudaciUsFbON/usr/lib/libthai.so.0: version `LIBTHAI_0.1.25' not found (required by /usr/lib64/libpango-1.0.so.0)
+# on openSUSE Tumbleweed
+
+# other "low-level" font rendering libraries
+# should fix https://github.com/probonopd/linuxdeployqt/issues/261#issuecomment-377522251
+# and https://github.com/probonopd/linuxdeployqt/issues/157#issuecomment-320755694
+libfreetype.so.6
+libharfbuzz.so.0
+
+# Note, after discussion we do not exlude this, but we can use a dummy library that just does nothing
+# libselinux.so.1
 # Workaround for:
 # sed: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory
+# Some distributions, such as Arch Linux, do not come with libselinux.so.1 by default.
+# The solution is to bundle a dummy mock library:
+# echo "extern int is_selinux_enabled(void){return 0;}" >> selinux-mock.c
+# gcc -s -shared -o libselinux.so.1 -Wl,-soname,libselinux.so.1 selinux-mock.c 
+# strip libselinux.so.1
+# More information: https://github.com/AppImage/AppImages/issues/83
 
 # The following are assumed to be part of the base system
 # Removing these has worked e.g., for Krita. Feel free to report if
@@ -99,8 +125,8 @@ libgpg-error.so.0
 # libheimntlm.so.0 # Seemingly needed when running Ubuntu 14.04 binaries on Fedora 23
 # libhx509.so.5 # Missing on openSUSE LEAP 42.0
 libICE.so.6
-libidn.so.11
-libk5crypto.so.3
+# libidn.so.11 # Does not come with Solus by default
+# libk5crypto.so.3 # Runnning AppImage built on Debian 9 or Ubuntu 16.04 on an Archlinux fails otherwise; https://github.com/AppImage/AppImages/issues/301
 libkeyutils.so.1
 # libkrb5.so.26 # Disputed, seemingly needed by Arch Linux since Kerberos is named differently there. Missing on openSUSE LEAP 42.0
 # libkrb5.so.3 # Disputed, seemingly needed by Arch Linux since Kerberos is named differently there
@@ -120,7 +146,7 @@ libgobject-2.0.so.0
 
 # Workaround for:
 # Rectangles instead of fonts
-# https://github.com/probonopd/AppImages/issues/240
+# https://github.com/AppImage/AppImages/issues/240
 libpangoft2-1.0.so.0
 libpangocairo-1.0.so.0
 libpango-1.0.so.0
@@ -132,6 +158,10 @@ libpango-1.0.so.0
 # in file libgpg-error.so.0 with link time reference
 libgpg-error.so.0
 
+libjack.so.0
+# it must match the ABI of the JACK server which is installed in the base system
+# rncbc confirmed this
+
 # Unsolved issue:
 # https://github.com/probonopd/linuxdeployqt/issues/35
 # Error initializing NSS with a persistent database (sql:/home/me/.pki/nssdb): libsoftokn3.so: cannot open shared object file: No such file or directory
@@ -139,13 +169,18 @@ libgpg-error.so.0
 # nss_error=-5925, os_error=0
 # libnss3.so should not be removed from the bundles, as this causes other issues, e.g.,
 # https://github.com/probonopd/linuxdeployqt/issues/35#issuecomment-256213517
-# and https://github.com/probonopd/AppImages/pull/114
+# and https://github.com/AppImage/AppImages/pull/114
 # libnss3.so
 
 # The following cannot be excluded, see
-# https://github.com/probonopd/AppImages/commit/6c7473d8cdaaa2572248dcc53d7f617a577ade6b
+# https://github.com/AppImage/AppImages/commit/6c7473d8cdaaa2572248dcc53d7f617a577ade6b
 # http://stackoverflow.com/questions/32644157/forcing-a-binary-to-use-a-specific-newer-version-of-a-shared-library-so
 # libssl.so.1
 # libssl.so.1.0.0
 # libcrypto.so.1
 # libcrypto.so.1.0.0
+
+# The following may be spefific to a particular GPU and may need to be excluded
+# according to https://github.com/RicardoEPRodrigues/3Engine/issues/4#issuecomment-402532194
+# libGLEW.so.2.0 # to be confirmed
+# libglut.so.3 # to be confirmed
index a266cd97983cb099bdaf3c635b2eae3488662a12..d8f93381bf9a31ec2ef7761e82b84e8b9f1e3933 100644 (file)
@@ -1,11 +1,18 @@
 # This file is supposed to be sourced by each Recipe
 # that wants to use the functions contained herein
 # like so:
-# wget -q https://github.com/AppImage/AppImages/raw/master/functions.sh -O ./functions.sh
+# wget -q https://github.com/AppImage/AppImages/raw/${PKG2AICOMMIT}/functions.sh -O ./functions.sh
 # . ./functions.sh
 
 # RECIPE=$(realpath "$0")
 
+# Specify a certain commit if you do not want to use master
+# by using:
+# export PKG2AICOMMIT=<git sha>
+if [ -z "$PKG2AICOMMIT" ] ; then
+  PKG2AICOMMIT=master
+fi
+
 # Options for apt-get to use local files rather than the system ones
 OPTIONS="-o Debug::NoLocking=1
 -o APT::Cache-Limit=125829120
@@ -34,7 +41,7 @@ case "$(uname -i)" in
 #  arm*)
 #    echo "ARM system architecture"
 #    SYSTEM_ARCH="";;
-  unknown)
+  unknown|AuthenticAMD|GenuineIntel)
 #         uname -i not answer on debian, then:
     case "$(uname -m)" in
       x86_64|amd64)
@@ -108,7 +115,7 @@ move_lib()
 # Delete blacklisted files
 delete_blacklisted()
 {
-  BLACKLISTED_FILES=$(cat_file_from_url https://github.com/AppImage/AppImages/raw/master/excludelist | sed 's|#.*||g')
+  BLACKLISTED_FILES=$(cat_file_from_url https://github.com/AppImage/AppImages/raw/${PKG2AICOMMIT}/excludelist | sed 's|#.*||g')
   echo $BLACKLISTED_FILES
   for FILE in $BLACKLISTED_FILES ; do
     FILES="$(find . -name "${FILE}" -not -path "./usr/optional/*")"
@@ -127,7 +134,8 @@ delete_blacklisted()
 # Echo highest glibc version needed by the executable files in the current directory
 glibc_needed()
 {
-  find . -name *.so -or -name *.so.* -or -type f -executable  -exec readelf -s '{}' 2>/dev/null \; | sed -n 's/.*@GLIBC_//p'| awk '{print $1}' | sort --version-sort | tail -n 1
+  find . -name *.so -or -name *.so.* -or -type f -executable  -exec strings {} \; | grep ^GLIBC_2 | sed s/GLIBC_//g | sort --version-sort | uniq | tail -n 1
+  # find . -name *.so -or -name *.so.* -or -type f -executable  -exec readelf -s '{}' 2>/dev/null \; | sed -n 's/.*@GLIBC_//p'| awk '{print $1}' | sort --version-sort | tail -n 1
 }
 # Add desktop integration
 # Usage: get_desktopintegration name_of_desktop_file_and_exectuable
@@ -176,11 +184,15 @@ generate_appimage()
 
   mkdir -p ../out || true
   rm ../out/$APP"-"$VERSION".glibc"$GLIBC_NEEDED"-"$ARCH".AppImage" 2>/dev/null || true
-  GLIBC_NEEDED=${GLIBC_NEEDED:=$(glibc_needed)}
+  GLIBC_NEEDED=$(glibc_needed)
   ./AppImageAssistant ./$APP.AppDir/ ../out/$APP"-"$VERSION".glibc"$GLIBC_NEEDED"-"$ARCH".AppImage"
 }
 
 # Generate AppImage type 2
+# Additional parameters given to this routine will be passed on to appimagetool
+#
+# If the environment variable NO_GLIBC_VERSION is set, the required glibc version
+# will not be added to the AppImage filename
 generate_type2_appimage()
 {
   # Get the ID of the last successful build on Travis CI
@@ -194,18 +206,39 @@ generate_type2_appimage()
   URL="https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${SYSTEM_ARCH}.AppImage"
   wget -c "$URL" -O appimagetool
   chmod a+x ./appimagetool
+  appimagetool=$(readlink -f appimagetool)
+
+  if [ "$DOCKER_BUILD" ]; then
+    appimagetool_tempdir=$(mktemp -d)
+    mv appimagetool "$appimagetool_tempdir"
+    pushd "$appimagetool_tempdir" &>/dev/null
+    ls -al
+    ./appimagetool --appimage-extract
+    rm appimagetool
+    appimagetool=$(readlink -f squashfs-root/AppRun)
+    popd &>/dev/null
+    _appimagetool_cleanup() { [ -d "$appimagetool_tempdir" ] && rm -r "$appimagetool_tempdir"; }
+    trap _appimagetool_cleanup EXIT
+  fi
+
+  if [ -z ${NO_GLIBC_VERSION+true} ]; then
+    GLIBC_NEEDED=$(glibc_needed)
+    VERSION_EXPANDED=$VERSION.glibc$GLIBC_NEEDED
+  else
+    VERSION_EXPANDED=$VERSION
+  fi
+
   set +x
+  GLIBC_NEEDED=$(glibc_needed)
   if ( [ ! -z "$KEY" ] ) && ( ! -z "$TRAVIS" ) ; then
     wget https://github.com/AppImage/AppImageKit/files/584665/data.zip -O data.tar.gz.gpg
     ( set +x ; echo $KEY | gpg2 --batch --passphrase-fd 0 --no-tty --skip-verify --output data.tar.gz --decrypt data.tar.gz.gpg )
     tar xf data.tar.gz
     sudo chown -R $USER .gnu*
     mv $HOME/.gnu* $HOME/.gnu_old ; mv .gnu* $HOME/
-    GLIBC_NEEDED=${GLIBC_NEEDED:=$(glibc_needed)}
-    VERSION=$VERSION.glibc$GLIBC_NEEDED ./appimagetool -n -s --bintray-user $BINTRAY_USER --bintray-repo $BINTRAY_REPO -v ./$APP.AppDir/
+    VERSION=$VERSION_EXPANDED "$appimagetool" $@ -n -s --bintray-user $BINTRAY_USER --bintray-repo $BINTRAY_REPO -v ./$APP.AppDir/
   else
-    GLIBC_NEEDED=${GLIBC_NEEDED:=$(glibc_needed)}
-    VERSION=$VERSION.glibc$GLIBC_NEEDED ./appimagetool -n --bintray-user $BINTRAY_USER --bintray-repo $BINTRAY_REPO -v ./$APP.AppDir/
+    VERSION=$VERSION_EXPANDED "$appimagetool" $@ -n --bintray-user $BINTRAY_USER --bintray-repo $BINTRAY_REPO -v ./$APP.AppDir/
   fi
   set -x
   mkdir -p ../out/ || true
@@ -220,7 +253,7 @@ generate_status()
   mkdir -p ./tmp/archives/
   mkdir -p ./tmp/lists/partial
   touch tmp/pkgcache.bin tmp/srcpkgcache.bin
-  wget -q -c "https://github.com/AppImage/AppImages/raw/master/excludedeblist"
+  wget -q -c "https://github.com/AppImage/AppImages/raw/${PKG2AICOMMIT}/excludedeblist"
   rm status 2>/dev/null || true
   for PACKAGE in $(cat excludedeblist | cut -d "#" -f 1) ; do
     printf "Package: $PACKAGE\nStatus: install ok installed\nArchitecture: all\nVersion: 9:999.999.999\n\n" >> status
@@ -258,7 +291,7 @@ get_version()
   if [ -z "$THEDEB" ] ; then
     echo "Version could not be determined from the .deb; you need to determine it manually"
   fi
-  VERSION=$(echo $THEDEB | cut -d "~" -f 1 | cut -d "_" -f 2 | cut -d "-" -f 1 | sed -e 's|1%3a||g' | sed -e 's|+dfsg||g' )
+  VERSION=$(echo $THEDEB | cut -d "~" -f 1 | cut -d "_" -f 2 | cut -d "-" -f 1 | sed -e 's|1%3a||g' | sed -e 's|.dfsg||g' )
   echo $VERSION
 }