From: Uwe Hermann Date: Thu, 11 Oct 2018 18:44:32 +0000 (+0200) Subject: sigrok-native-appimage: Bump upstream files in contrib/. X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=ca369dfa9d2872b8b642b32cbc0c2fecacc8ed2e;p=sigrok-util.git sigrok-native-appimage: Bump upstream files in contrib/. --- diff --git a/cross-compile/appimage/contrib/excludelist b/cross-compile/appimage/contrib/excludelist index e8ee31b..4baede7 100644 --- a/cross-compile/appimage/contrib/excludelist +++ b/cross-compile/appimage/contrib/excludelist @@ -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 diff --git a/cross-compile/appimage/contrib/functions.sh b/cross-compile/appimage/contrib/functions.sh index a266cd9..d8f9338 100644 --- a/cross-compile/appimage/contrib/functions.sh +++ b/cross-compile/appimage/contrib/functions.sh @@ -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= +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 }