Coder Social home page Coder Social logo

go-appimage's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-appimage's Issues

qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""

rm -rf appdir || true
mkdir -p appdir/usr/bin
mkdir -p appdir/usr/share/applications
mkdir -p appdir/usr/share/icons
cp /usr/bin/kcalc appdir/usr/bin/
cp /usr/share/applications/org.kde.kcalc.desktop appdir/usr/share/applications/
mkdir -p appdir/usr/share/icons/hicolor/scalable/applications
cp /usr/share/icons/Humanity/apps/48/kcalc.svg appdir/usr/share/icons/hicolor/scalable/applications/
Downloads/appimagetool-492-x86_64.AppImage deploy appdir/usr/share/applications/org.kde.kcalc.desktop 

If one changes the last line to use -s, then it works:

Downloads/appimagetool-492-x86_64.AppImage deploy appdir/usr/share/applications/org.kde.kcalc.desktop 

Proably the culprit is something in here:

2020/07/30 17:06:59 Patching qt_prfxpath, otherwise can't load platform plugin...
2020/07/30 17:06:59 Offset of qt_prfxpath: 3561388
2020/07/30 17:06:59 Qt prefix directory in the AppDir: appdir/usr/lib/x86_64-linux-gnu/qt5
2020/07/30 17:06:59 Relative path from ld-linux to Qt prefix directory in the AppDir: ../usr/lib/x86_64-linux-gnu/qt5

The "Relative path from ld-linux to Qt prefix directory in the AppDir" should only matter if -s is used. Why is it even running when it is not used?

GPU acceleration

This AppImage by @azubieta is known to run on debian-stable, ubuntu-xenial, fedora-33 and archlinux latest and has GPU acceleration working.

me@host:~$ Downloads/glmark2-latest-x86_64.AppImage --appimage-extract
squashfs-root/.DirIcon
squashfs-root/.bundle.yml
squashfs-root/.env
squashfs-root/AppRun
squashfs-root/application-x-executable.svg
squashfs-root/glmark2.desktop
squashfs-root/opt
squashfs-root/opt/libc
squashfs-root/opt/libc/etc
squashfs-root/opt/libc/etc/ld.so.conf.d
squashfs-root/opt/libc/etc/ld.so.conf.d/x86_64-linux-gnu.conf
squashfs-root/opt/libc/lib
squashfs-root/opt/libc/lib/x86_64-linux-gnu
squashfs-root/opt/libc/lib/x86_64-linux-gnu/ld-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libBrokenLocale-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libBrokenLocale.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libSegFault.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libanl-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libanl.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libc-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libc.so.6
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libcidn-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libcidn.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libcrypt-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libcrypt.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libdl-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libdl.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libgcc_s.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libm-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libm.so.6
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libmemusage.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libmvec-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libmvec.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnsl-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnsl.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_compat-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_compat.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_dns-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_dns.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_files-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_files.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_hesiod-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_hesiod.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_nis-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_nis.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_nisplus-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libnss_nisplus.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libpcprofile.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libpthread-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libpthread.so.0
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libresolv-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libresolv.so.2
squashfs-root/opt/libc/lib/x86_64-linux-gnu/librt-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/librt.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libthread_db-1.0.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libthread_db.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libutil-2.27.so
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libutil.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libz.so.1
squashfs-root/opt/libc/lib/x86_64-linux-gnu/libz.so.1.2.11
squashfs-root/opt/libc/lib64
squashfs-root/opt/libc/lib64/ld-linux-x86-64.so.2
squashfs-root/opt/libc/usr
squashfs-root/opt/libc/usr/lib
squashfs-root/opt/libc/usr/lib/gcc
squashfs-root/opt/libc/usr/lib/gcc/x86_64-linux-gnu
squashfs-root/opt/libc/usr/lib/gcc/x86_64-linux-gnu/8
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/audit
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/audit/sotruss-lib.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ANSI_X3.110.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ARMSCII-8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ASMO_449.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/BIG5.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/BIG5HKSCS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/BRF.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP10007.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1125.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1250.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1251.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1252.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1253.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1254.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1255.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1256.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1257.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP1258.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP737.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP770.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP771.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP772.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP773.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP774.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP775.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CP932.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CSN_369103.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/CWI.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/DEC-MCS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-AT-DE-A.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-AT-DE.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-CA-FR.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-DK-NO-A.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-DK-NO.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-ES-A.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-ES-S.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-ES.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-FI-SE-A.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-FI-SE.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-FR.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-IS-FRISS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-IT.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-PT.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-UK.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EBCDIC-US.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ECMA-CYRILLIC.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EUC-CN.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EUC-JISX0213.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EUC-JP-MS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EUC-JP.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EUC-KR.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/EUC-TW.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GB18030.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GBBIG5.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GBGBK.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GBK.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GEORGIAN-ACADEMY.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GEORGIAN-PS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GOST_19768-74.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GREEK-CCITT.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GREEK7-OLD.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/GREEK7.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/HP-GREEK8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/HP-ROMAN8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/HP-ROMAN9.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/HP-THAI8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/HP-TURKISH8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM037.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM038.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1004.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1008.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1008_420.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1025.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1026.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1046.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1047.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1097.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1112.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1122.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1123.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1124.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1129.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1130.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1132.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1133.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1137.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1140.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1141.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1142.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1143.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1144.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1145.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1146.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1147.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1148.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1149.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1153.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1154.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1155.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1156.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1157.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1158.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1160.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1161.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1162.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1163.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1164.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1166.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1167.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM12712.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1364.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1371.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1388.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1390.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM1399.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM16804.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM256.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM273.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM274.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM275.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM277.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM278.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM280.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM281.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM284.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM285.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM290.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM297.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM420.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM423.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM424.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM437.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM4517.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM4899.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM4909.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM4971.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM500.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM5347.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM803.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM850.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM851.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM852.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM855.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM856.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM857.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM858.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM860.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM861.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM862.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM863.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM864.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM865.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM866.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM866NAV.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM868.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM869.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM870.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM871.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM874.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM875.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM880.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM891.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM901.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM902.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM903.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM9030.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM904.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM905.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM9066.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM918.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM921.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM922.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM930.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM932.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM933.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM935.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM937.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM939.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM943.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IBM9448.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/IEC_P27-1.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/INIS-8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/INIS-CYRILLIC.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/INIS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISIRI-3342.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-2022-CN-EXT.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-2022-CN.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-2022-JP-3.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-2022-JP.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-2022-KR.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-IR-197.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO-IR-209.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO646.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-1.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-10.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-11.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-13.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-14.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-15.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-16.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-2.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-3.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-4.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-5.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-6.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-7.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-9.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO8859-9E.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_10367-BOX.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_11548-1.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_2033.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_5427-EXT.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_5427.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_5428.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_6937-2.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/ISO_6937.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/JOHAB.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/KOI-8.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/KOI8-R.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/KOI8-RU.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/KOI8-T.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/KOI8-U.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/LATIN-GREEK-1.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/LATIN-GREEK.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/MAC-CENTRALEUROPE.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/MAC-IS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/MAC-SAMI.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/MAC-UK.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/MACINTOSH.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/MIK.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/NATS-DANO.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/NATS-SEFI.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/PT154.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/RK1048.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/SAMI-WS2.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/SHIFT_JISX0213.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/SJIS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/T.61.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/TCVN5712-1.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/TIS-620.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/TSCII.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/UHC.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/UNICODE.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/UTF-16.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/UTF-32.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/UTF-7.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/VISCII.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/gconv-modules
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/libCNS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/libGB.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/libISOIR165.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/libJIS.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/libJISX0213.so
squashfs-root/opt/libc/usr/lib/x86_64-linux-gnu/gconv/libKSC.so
squashfs-root/opt/libc/usr/share
squashfs-root/opt/libc/usr/share/doc
squashfs-root/opt/libc/usr/share/doc/gcc-8-base
squashfs-root/opt/libc/usr/share/doc/gcc-8-base/README.Debian.amd64.gz
squashfs-root/opt/libc/usr/share/doc/gcc-8-base/TODO.Debian
squashfs-root/opt/libc/usr/share/doc/gcc-8-base/changelog.Debian.gz
squashfs-root/opt/libc/usr/share/doc/gcc-8-base/copyright
squashfs-root/opt/libc/usr/share/doc/libc6
squashfs-root/opt/libc/usr/share/doc/libc6/NEWS.Debian.gz
squashfs-root/opt/libc/usr/share/doc/libc6/NEWS.gz
squashfs-root/opt/libc/usr/share/doc/libc6/README.Debian.gz
squashfs-root/opt/libc/usr/share/doc/libc6/README.hesiod.gz
squashfs-root/opt/libc/usr/share/doc/libc6/changelog.Debian.gz
squashfs-root/opt/libc/usr/share/doc/libc6/copyright
squashfs-root/opt/libc/usr/share/doc/libgcc1
squashfs-root/opt/libc/usr/share/doc/zlib1g
squashfs-root/opt/libc/usr/share/doc/zlib1g/changelog.Debian.gz
squashfs-root/opt/libc/usr/share/doc/zlib1g/copyright
squashfs-root/opt/libc/usr/share/lintian
squashfs-root/opt/libc/usr/share/lintian/overrides
squashfs-root/opt/libc/usr/share/lintian/overrides/libc6
squashfs-root/opt/libc/usr/share/lintian/overrides/libgcc1
squashfs-root/usr
squashfs-root/usr/bin
squashfs-root/usr/bin/glmark2
squashfs-root/usr/bin/glmark2-drm
squashfs-root/usr/bin/glmark2-es2
squashfs-root/usr/bin/glmark2-es2-drm
squashfs-root/usr/lib
squashfs-root/usr/lib/x86_64-linux-gnu
squashfs-root/usr/lib/x86_64-linux-gnu/libapprun_hooks.so
squashfs-root/usr/lib/x86_64-linux-gnu/libjpeg.so.62
squashfs-root/usr/lib/x86_64-linux-gnu/libjpeg.so.62.0.0
squashfs-root/usr/lib/x86_64-linux-gnu/libpng16.so.16
squashfs-root/usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0
squashfs-root/usr/share
squashfs-root/usr/share/doc
squashfs-root/usr/share/doc/libjpeg62
squashfs-root/usr/share/doc/libjpeg62/README.6b2
squashfs-root/usr/share/doc/libjpeg62/README.gz
squashfs-root/usr/share/doc/libjpeg62/changelog.Debian.gz
squashfs-root/usr/share/doc/libjpeg62/copyright
squashfs-root/usr/share/doc/libpng16-16
squashfs-root/usr/share/doc/libpng16-16/ANNOUNCE
squashfs-root/usr/share/doc/libpng16-16/README.gz
squashfs-root/usr/share/doc/libpng16-16/TODO
squashfs-root/usr/share/doc/libpng16-16/changelog.Debian.gz
squashfs-root/usr/share/doc/libpng16-16/copyright
squashfs-root/usr/share/doc/libpng16-16/libpng-manual.txt.gz
squashfs-root/usr/share/doc-base
squashfs-root/usr/share/doc-base/libpng16
squashfs-root/usr/share/glmark2
squashfs-root/usr/share/glmark2/models
squashfs-root/usr/share/glmark2/models/asteroid-high.3ds
squashfs-root/usr/share/glmark2/models/asteroid-low.3ds
squashfs-root/usr/share/glmark2/models/bunny.obj
squashfs-root/usr/share/glmark2/models/cat.3ds
squashfs-root/usr/share/glmark2/models/cube.3ds
squashfs-root/usr/share/glmark2/models/horse.3ds
squashfs-root/usr/share/glmark2/models/jellyfish.jobj
squashfs-root/usr/share/glmark2/shaders
squashfs-root/usr/share/glmark2/shaders/README.shaders
squashfs-root/usr/share/glmark2/shaders/buffer-wireframe.frag
squashfs-root/usr/share/glmark2/shaders/buffer-wireframe.vert
squashfs-root/usr/share/glmark2/shaders/bump-height.frag
squashfs-root/usr/share/glmark2/shaders/bump-height.vert
squashfs-root/usr/share/glmark2/shaders/bump-normals-tangent.frag
squashfs-root/usr/share/glmark2/shaders/bump-normals-tangent.vert
squashfs-root/usr/share/glmark2/shaders/bump-normals.frag
squashfs-root/usr/share/glmark2/shaders/bump-normals.vert
squashfs-root/usr/share/glmark2/shaders/bump-poly.frag
squashfs-root/usr/share/glmark2/shaders/bump-poly.vert
squashfs-root/usr/share/glmark2/shaders/conditionals-step-conditional.all
squashfs-root/usr/share/glmark2/shaders/conditionals-step-simple.all
squashfs-root/usr/share/glmark2/shaders/conditionals.frag
squashfs-root/usr/share/glmark2/shaders/conditionals.vert
squashfs-root/usr/share/glmark2/shaders/depth.frag
squashfs-root/usr/share/glmark2/shaders/depth.vert
squashfs-root/usr/share/glmark2/shaders/desktop-blur.frag
squashfs-root/usr/share/glmark2/shaders/desktop.frag
squashfs-root/usr/share/glmark2/shaders/desktop.vert
squashfs-root/usr/share/glmark2/shaders/effect-2d-convolution.frag
squashfs-root/usr/share/glmark2/shaders/effect-2d.vert
squashfs-root/usr/share/glmark2/shaders/function-call.all
squashfs-root/usr/share/glmark2/shaders/function-step-low.all
squashfs-root/usr/share/glmark2/shaders/function-step-medium.all
squashfs-root/usr/share/glmark2/shaders/function.frag
squashfs-root/usr/share/glmark2/shaders/function.vert
squashfs-root/usr/share/glmark2/shaders/gradient.frag
squashfs-root/usr/share/glmark2/shaders/gradient.vert
squashfs-root/usr/share/glmark2/shaders/ideas-lamp-lit.frag
squashfs-root/usr/share/glmark2/shaders/ideas-lamp-lit.vert
squashfs-root/usr/share/glmark2/shaders/ideas-lamp-unlit.frag
squashfs-root/usr/share/glmark2/shaders/ideas-lamp-unlit.vert
squashfs-root/usr/share/glmark2/shaders/ideas-logo-flat.frag
squashfs-root/usr/share/glmark2/shaders/ideas-logo-flat.vert
squashfs-root/usr/share/glmark2/shaders/ideas-logo-shadow.frag
squashfs-root/usr/share/glmark2/shaders/ideas-logo-shadow.vert
squashfs-root/usr/share/glmark2/shaders/ideas-logo.frag
squashfs-root/usr/share/glmark2/shaders/ideas-logo.vert
squashfs-root/usr/share/glmark2/shaders/ideas-paper.frag
squashfs-root/usr/share/glmark2/shaders/ideas-paper.vert
squashfs-root/usr/share/glmark2/shaders/ideas-table.frag
squashfs-root/usr/share/glmark2/shaders/ideas-table.vert
squashfs-root/usr/share/glmark2/shaders/ideas-text.frag
squashfs-root/usr/share/glmark2/shaders/ideas-text.vert
squashfs-root/usr/share/glmark2/shaders/ideas-under-table.frag
squashfs-root/usr/share/glmark2/shaders/ideas-under-table.vert
squashfs-root/usr/share/glmark2/shaders/jellyfish.frag
squashfs-root/usr/share/glmark2/shaders/jellyfish.vert
squashfs-root/usr/share/glmark2/shaders/light-advanced.frag
squashfs-root/usr/share/glmark2/shaders/light-advanced.vert
squashfs-root/usr/share/glmark2/shaders/light-basic-tex-bilinear.frag
squashfs-root/usr/share/glmark2/shaders/light-basic-tex.frag
squashfs-root/usr/share/glmark2/shaders/light-basic-texgen.vert
squashfs-root/usr/share/glmark2/shaders/light-basic.frag
squashfs-root/usr/share/glmark2/shaders/light-basic.vert
squashfs-root/usr/share/glmark2/shaders/light-cel.frag
squashfs-root/usr/share/glmark2/shaders/light-phong.frag
squashfs-root/usr/share/glmark2/shaders/light-phong.vert
squashfs-root/usr/share/glmark2/shaders/light-refract.frag
squashfs-root/usr/share/glmark2/shaders/light-refract.vert
squashfs-root/usr/share/glmark2/shaders/loop-step-loop.all
squashfs-root/usr/share/glmark2/shaders/loop-step-simple.all
squashfs-root/usr/share/glmark2/shaders/loop.frag
squashfs-root/usr/share/glmark2/shaders/loop.vert
squashfs-root/usr/share/glmark2/shaders/pulsar-light.vert
squashfs-root/usr/share/glmark2/shaders/pulsar.vert
squashfs-root/usr/share/glmark2/shaders/shadow.frag
squashfs-root/usr/share/glmark2/shaders/shadow.vert
squashfs-root/usr/share/glmark2/shaders/terrain-blur.frag
squashfs-root/usr/share/glmark2/shaders/terrain-luminance.frag
squashfs-root/usr/share/glmark2/shaders/terrain-noise.frag
squashfs-root/usr/share/glmark2/shaders/terrain-normalmap.frag
squashfs-root/usr/share/glmark2/shaders/terrain-overlay.frag
squashfs-root/usr/share/glmark2/shaders/terrain-texture.vert
squashfs-root/usr/share/glmark2/shaders/terrain.frag
squashfs-root/usr/share/glmark2/shaders/terrain.vert
squashfs-root/usr/share/glmark2/shaders/text-renderer.frag
squashfs-root/usr/share/glmark2/shaders/text-renderer.vert
squashfs-root/usr/share/glmark2/textures
squashfs-root/usr/share/glmark2/textures/asteroid-height-map.png
squashfs-root/usr/share/glmark2/textures/asteroid-normal-map-tangent.png
squashfs-root/usr/share/glmark2/textures/asteroid-normal-map.png
squashfs-root/usr/share/glmark2/textures/crate-base.png
squashfs-root/usr/share/glmark2/textures/desktop-shadow-corner.png
squashfs-root/usr/share/glmark2/textures/desktop-shadow.png
squashfs-root/usr/share/glmark2/textures/desktop-window.png
squashfs-root/usr/share/glmark2/textures/effect-2d.png
squashfs-root/usr/share/glmark2/textures/glyph-atlas.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-01.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-02.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-03.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-04.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-05.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-06.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-07.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-08.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-09.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-10.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-11.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-12.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-13.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-14.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-15.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-16.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-17.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-18.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-19.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-20.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-21.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-22.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-23.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-24.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-25.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-26.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-27.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-28.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-29.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-30.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-31.png
squashfs-root/usr/share/glmark2/textures/jellyfish-caustics-32.png
squashfs-root/usr/share/glmark2/textures/jellyfish256.png
squashfs-root/usr/share/glmark2/textures/nasa1.png
squashfs-root/usr/share/glmark2/textures/nasa2.png
squashfs-root/usr/share/glmark2/textures/nasa3.png
squashfs-root/usr/share/glmark2/textures/terrain-backgrounddetailed6.jpg
squashfs-root/usr/share/glmark2/textures/terrain-grasslight-512-nm.jpg
squashfs-root/usr/share/glmark2/textures/terrain-grasslight-512.jpg
squashfs-root/usr/share/man
squashfs-root/usr/share/man/man1
squashfs-root/usr/share/man/man1/glmark2-drm.1
squashfs-root/usr/share/man/man1/glmark2-es2-drm.1
squashfs-root/usr/share/man/man1/glmark2-es2.1
squashfs-root/usr/share/man/man1/glmark2.1

[Bug] Not running on one of the supported Live systems

Hello,

Not running on one of the supported Live systems Grab a Ubuntu, Debian, Deepin, Fedora, openSUSE, elementary OS, KDE neon,... Live ISO and try from there.

How about everything that is Debian-based, including everything that is Ubuntu-based ?

For instance, I'm running Linux Mint.

Thanks

ERROR inotify, probably already watching: too many open files

Right now we are not keeping track of what is already being watched with inotify. Hence we are trying to watch the same object multiple times, which results in errors. Is there a more elegant way to do it? Is there a way to find out from inotify what we are already watching, so that we don't have to keep track ourselves?

Need to guess plugins directory differently (e.g., for Flatpak)

if strings.HasPrefix(filepath.Base(filepath.Dir(result)), "qt"+strconv.Itoa(qtVersion)) {
qt_prfxpath = filepath.Dir(result)
log.Println("Guessed qt_prfxpath to be", qt_prfxpath)
quirksModePatchQtPrfxPath = true
}

Need to guess plugins directory differently: When there is a platforms subdirectory there, assume that we have found the correct one.

Example:
https://travis-ci.com/github/probonopd/assembly-service/jobs/300887951#L558-L561

Make appimagetool run on Alpine/musl

Initial support is available, this allows us to package musl-based applications into AppImages:

#############################################
# Download and extract minimal Alpine system
#############################################

wget http://dl-cdn.alpinelinux.org/alpine/edge/releases/x86_64/alpine-minirootfs-3.11_rc1-x86_64.tar.gz
mkdir -p ./miniroot
cd ./miniroot
tar xf ../alpine-minirootfs-*.tar.gz
cd -

#############################################
# Prepare chroot
#############################################

sudo mount -o bind /dev miniroot/dev
sudo mount -t proc none miniroot/proc
sudo mount -t sysfs none miniroot/sys
sudo cp -p /etc/resolv.conf miniroot/etc/
sudo chroot miniroot /bin/sh <<\EOF

#############################################
# Now inside chroot
#############################################

# Upgrade to Edge, the rolling Alpine release (if we don't have it already)
sed -i -e 's/v[[:digit:]]\..*\//edge\//g' /etc/apk/repositories
apk upgrade --update-cache --available

# Install dependencies and download appimagetool
apk add wget squashfs-tools desktop-file-utils curl appstream libc6-compat
wget -c https://raw.githubusercontent.com/probonopd/uploadtool/master/upload.sh -O uploadtool
chmod +x uploadtool 
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-x86_64
wget http://192.168.0.14/home/me/go/src/github.com/probonopd/go-appimage/src/appimagetool/appimagetool ; chmod +x appimagetool # Not the AppImage for now
export PATH=$(readlink -f .):$PATH

# Install patchelf 0.9 because 0.10 cripples files
apk add  --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ patchelf=0.9-r2
# or from source 
apk add alpine-sdk bash util-linux wget autoconf gettext automake
wget https://github.com/NixOS/patchelf/archive/0.9.tar.gz # 0.10 cripples my files
tar xf *.tar.gz 
cd patchelf-*/
./bootstrap.sh
./configure --prefix=/usr
make -j$(nproc)
sudo make install
cd -

# Get the application to be packaged
apk add kcalc
apk fetch kcalc
export VERSION=$(ls kcalc-*.apk | cut -d - -f 2)
mkdir -p appdir ; cd appdir
tar xfv ../kcalc*.apk
cd -

./appimagetool -s deploy appdir/usr/share/applications/*.desktop

./appimagetool appdir/

#############################################
# Exit chroot and clean up
#############################################

exit
EOF
sudo umount miniroot/proc miniroot/sys miniroot/dev

Build error, why doesn't it use all the files in the directory?

https://travis-ci.com/probonopd/appimage/jobs/251219352#L359

https://stackoverflow.com/questions/17539407/how-to-import-local-packages-without-gopath

All the .go files in a single directory are part of the same package, and you don't need to import files in the same package (i.e., the same directory). You mentioned working outside

Why does it not work?

All the complicated stuff about GO111MODULE, vendor, modules... is un-go-like. Why can't it "just work"?

Properly handle ALSA using ALSA_PLUGIN_DIR

// ALSA
// FIXME: Doesn't seem to get loaded. Is ALSA_PLUGIN_DIR needed and working in ALSA?
// Is something like https://github.com/flatpak/freedesktop-sdk-images/blob/1.6/alsa-lib-plugin-path.patch needed in the bundled ALSA?
// TODO: What about the `share/alsa` subdirectory? libasound.so.* refers to it as well
for _, lib := range allELFs {
if strings.HasPrefix(filepath.Base(lib), "libasound.so") {
log.Println("Bundling alsa-lib directory (for <tbd>)...")
locs, err := findWithPrefixInLibraryLocations("alsa-lib")
if err != nil {
log.Println("Could not find alsa-lib directory")
log.Println("E.g., in Alpine Linux: apk add alsa-plugins alsa-plugins-pulse")
os.Exit(1)
} else {
log.Println("Bundling dependencies of alsa-lib directory...")
determineELFsInDirTree(appdir, locs[0])
}
break
}
}

A change was committed to ALSA master:
alsa-project/alsa-lib#34 (comment)

So we should see whether we can make it work now using ALSA master.

Icons in /usr/share/icons/hicolor/256x256/ don't seem to work

If I read the code correctly, then the code looks for the presence of the icon specified in the desktop file in appdir + /usr/share/icons/hicolor/256x256/ here:

} else if helpers.CheckIfFileExists(appdir + "/usr/share/icons/hicolor/256x256/" + iconname + ".png") {
// Search in usr/share/icons/hicolor/256x256 and copy from there
input, err := ioutil.ReadFile(appdir + "/usr/share/icons/hicolor/256x256/" + iconname + ".png")
if err != nil {
log.Println(err)
return
}
err = ioutil.WriteFile(appdir+".DirIcon", input, 0644)
if err != nil {
log.Println("Error copying ticon to", appdir+".DirIcon")
log.Println(err)
return
}
} else {

What strikes me though is that in the first check it is checked whether the icon exists at the root of the appdir. This in and of itself is not what I find interesting. Rather the fact that this code part sets the iconFile variable:

if helpers.CheckIfFileExists(appdir+"/"+iconname+".png") == true {
iconfile = appdir + "/" + iconname + ".png"
} else if helpers.CheckIfFileExists(appdir + "/usr/share/icons/hicolor/256x256/" + iconname + ".png") {

The second check however doesn't seem to set this variable. Thus

log.Println("Icon file:", iconfile)

Prints

Icon file: 

aka: An empty String.

A few lines down however this variable is used to assemble a path to copy:

err = helpers.CopyFile(iconfile, appdir+"/.DirIcon")

In my case this results in this error:

ERROR Copy .DirIcon: read .: is a directory

I also think it is interesting that the code above seems to create a .DirIcon file in the AppImage's root

input, err := ioutil.ReadFile(appdir + "/usr/share/icons/hicolor/256x256/" + iconname + ".png")
if err != nil {
log.Println(err)
return
}
err = ioutil.WriteFile(appdir+".DirIcon", input, 0644)
if err != nil {
log.Println("Error copying ticon to", appdir+".DirIcon")
log.Println(err)
return
}

and a bit further down we have

if helpers.CheckIfFileExists(appdir+"/.DirIcon") == true {
log.Println("Deleting pre-existing .DirIcon")
os.Remove(appdir + "/.DirIcon")
}

which seems to exactly cancel above action. Interestingly however I did not see the Deleting pre-existing .DirIcon message in my logs so maybe I am missing something here 🤔

All in all I think that maybe the functionality for icons in the respective subdir is broken atm...

Support GNOME RemoteVolumeMonitor

Tanglu GNU/Linux 3 (Chromodoris willani) from 2015 cannot currently run go-appimaged, because it uses a different way to notify the system about changes in the mounted volumes:

path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=MountRemoved

path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=MountAdded

path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=VolumeChanged

path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=VolumeMount

So it looks like we also need to implement this in addition to org.kde.Solid.PowerManagement and org.gtk.vfs.UDisks2VolumeMonitor...

Obey /etc/ld.so.conf

package main

import (
	"bufio"
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

func main() {

	// TODO: support musl; it uses /etc/ld-musl-$ARCH.path instead;
	// this is a simple newline or colon separated list of directories
	ldLibraryPathForCore := getDirsFromSoConf("/etc/ld.so.conf")
	fmt.Println(ldLibraryPathForCore)

}

// getDirsFromSoConf returns a []string with the directories specified
// in the ld config file at path, usually '/etc/ld.so.conf',
// and in its included config files. We need to search in those locations
// for libraries as well
func getDirsFromSoConf(path string) []string {
	var out []string
	f, err := os.Open(path)
	if err != nil {
		return nil
	}
	defer f.Close()
	scanner := bufio.NewScanner(f)
	for scanner.Scan() {
		line := scanner.Text()
		if strings.TrimSpace(line) == "" || strings.HasPrefix(line, "#") {
			continue
		} else if strings.HasPrefix(line, "include ") {
			p := strings.Split(line, " ")[1]
			files, err := filepath.Glob(p)
			if err != nil {
				return out
			}
			for _, file := range files {
				out = append(out, getDirsFromSoConf(file)...)
			}
			continue
		}
		out = append(out, strings.TrimSpace(line))
	}
	return out
}

argv[0] or proc/self/exe give ld-linux-x86-64.so instead of payload binary name

Hi,

After the fix in #44 -s deploy does indeed work for qt5 and it does appear to be completely self contained.

However a strange problem has arisen that was not an issue before. The same thing occurs at build 495 and that is why I tested build 497.

My application checks XDG_CONFIG_HOME for the location of the user's config folder.

That is now coming back as: /home/juus/.config/ld-linux-x86-64.so
This is also the case where a "My.AppImage.config" folder is available, putting an ld-linux-x86-64.so folder in there too.

Within that .config/ld-linux-x86-64.so folder everything then follows as if it was the normal .config folder, putting a folder with my Appname inside.

I've checked older AppImages (built with linuxdeploy) and that was not a problem, it always returned either /home/juus/.config or My.AppImage.config.

In the log references to "ld-linux-x86-64.so" were:

2020/08/02 11:16:48 Deploying /lib64/ld-linux-x86-64.so.2...
...
2020/08/02 11:16:49 Copying in and patching ELFs which are not already in the AppDir...
2020/08/02 11:16:49 Not writing rpath in commandoo.AppDir/usr/lib64/ld-linux-x86-64.so.2 because itname starts with ld-...
2020/08/02 11:16:49 Patching qt_prfxpath, otherwise can't load platform plugin...
2020/08/02 11:16:49 Offset of qt_prfxpath: 3561388
2020/08/02 11:16:49 Qt prefix directory in the AppDir: commandoo.AppDir/usr/lib/x86_64-linux-gnu/qt
2020/08/02 11:16:49 Relative path from ld-linux to Qt prefix directory in the AppDir: ../usr/lib/x864-linux-gnu/qt5
2020/08/02 11:16:49 Patching qt_prfxpath in libQt5Core.so.5 to ..
2020/08/02 11:16:50 Copying in copyright files...

Fix appimaged on Deepin 20 Beta

Run Deepin 20 Beta Live ISO, then run appimaged from this repository like this:

Wait for 2 minutes.

Result:

me@host:~$ systemctl --user status appimaged
● appimaged.service - AppImage system integration daemon
   Loaded: loaded (/home/me/.config/systemd/user/appimaged.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Thu 2020-05-21 12:35:30 CEST; 976ms ago
  Process: 8789 ExecStart=/home/me/Downloads/appimaged-482-x86_64.AppImage (code=exited, status=1/FAILURE)
 Main PID: 8789 (code=exited, status=1/FAILURE)

May 21 12:35:30 host systemd[3938]: appimaged.service: Main process exited, code=exited, status=1/FAILURE
May 21 12:35:30 host systemd[3938]: appimaged.service: Failed with result 'exit-code'.
me@host:~$ cat /etc/*release
DISTRIB_ID=Deepin
DISTRIB_RELEASE=20
DISTRIB_DESCRIPTION="Deepin 20 Beta"
DISTRIB_CODENAME=apricot
PRETTY_NAME="Deepin 20 Beta"
NAME="Deepin"
VERSION_ID="20 Beta"
VERSION="20 Beta"
ID=Deepin
HOME_URL="https://www.deepin.com/"
BUG_REPORT_URL="https://bbs.deepin.org/"

cc @shouhuanxiaoji

Getting informed by DBus about files to be thumbnailed

Objective

We have a daemon that handles AppImages, and among other things, can generate thumbnails for them and can integrate them into the system.

We want to be notified whenever AppImages (or more generally, ELF executable files) are displayed so that we can generate a thumbnail and, while we are at it, do desktop integration.

Thubnailer1 dbus

The Thumbnail management DBus specification at https://wiki.gnome.org/DraftSpecs/ThumbnailerSpec describes how to interact with thumbnailers over DBus.

We can see requests for files to be thumbnailed on the system using

dbus-monitor "type='signal',interface='org.freedesktop.thumbnails.Thumbnailer1'"

We can send a request to get a thumbnail using

dbus-send \
    --session \
    --print-reply \
    --dest=org.freedesktop.thumbnails.Thumbnailer1 \
    /org/freedesktop/thumbnails/Thumbnailer1 \
    org.freedesktop.thumbnails.Thumbnailer1.Queue \
    array:string:"file:///usr/share/pixmaps/xoo.png" \
    array:string:"image/png" \
    string:"normal" \
    string:"default" \
    uint32:0

Notes

On Xfce, thumbnails are requested when

  • A window in the file manager is opened that contains files with a mime type that is registered to be thumbnailed
  • Applications are shown in the applications menu

Thumbnails are not requested when

  • Firefox downloads a file with a mime type that is registered to be thumbnailed

Register a specialized thumbnailer

Note that by default, thumbnails get requested for files that have mime types that are registered to be thumbnailed, such as PNG and JPG, but not for ELF executables such as AppImages. How can we make it happen so that thumbnails get requested for ELF files, too?

Apparently we need to register a "specialized thumbnailer" over DBus so that we get notifications. Appaerntly we need to do this using the org.freedesktop.thumbnails.Manager1 interface. The following does not seem to work, why?

dbus-send \
    --session \
    --print-reply \
    --dest=org.freedesktop.thumbnails.Manager1 \
    /org/freedesktop/thumbnails/Manager1 \
    org.freedesktop.thumbnails.Manager1.Register \
    string:"/com/company/Thumbnailer1" \
    array:string:"file" \
    array:string:"application/x-executable"

This only results in

Error org.freedesktop.DBus.Error.InvalidArgs: Type of message, '(sasas)', does not match expected type '(ss)'

"Register a specialized thumbnailer dynamically" at https://wiki.gnome.org/DraftSpecs/ThumbnailerSpec shows some XML. Why XML? Where am I supposed to enter that XML? Why does the documentation not show how to send such a message using dbus-send? What is object_path supposed to be?

I interpret the XML on https://wiki.gnome.org/DraftSpecs/ThumbnailerSpec to translate to the dbus-send command above, but apparently I am wrong. What is the proper way of doing it?

Help please

Apparently registering a "specialized thumbnailer" over DBus is little-used, at least I was not able to find ample examples on GitHub.

Can someone please help me, @pvanhoof @robtaylor maybe?

Improve "Show in File Manager" by selecting the file

Currently we only open the folder in which the AppImage is located, but it would be much nicer if we could select the AppImage.

Deepin has this kind of functionality, e.g, in their screenshot application. The following DBus message gets sent:

method call time=1573414337.468604 sender=:1.257 -> destination=org.freedesktop.DBus serial=26 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='com.deepin.dde.Notification'"
method call time=1573414337.469102 sender=:1.257 -> destination=org.freedesktop.Notifications serial=27 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Deepin Screenshot"
   uint32 0
   string "deepin-screenshot"
   string ""
   string "Das Bild wurde in /home/deepin/Desktop/DeepinBildschirmfoto_Bereich auswählen_20191110193217.png gespeichert"
   array [
      string "_open"
      string "Ansicht"
   ]
   array [
      dict entry(
         string "x-deepin-action-_open"
         variant             string "/usr/bin/dde-file-manager,file:///home/deepin/Desktop?selectUrl=file:///home/deepin/Desktop/DeepinBildschirmfoto_Bereich auswählen_20191110193217.png"
      )
   ]
   int32 0

Note the selectUrl= part. Is this XDG standardized or a Deepin special feature?

https://github.com/linuxdeepin/dde-file-manager/blob/22d903350007cdafd4b612ecfbd4f36006facc99/dde-desktop/dbus/filedialog/com.deepin.filemanager.filedialog.xml#L24-L26

https://github.com/linuxdeepin/dde-file-manager/blob/995ead577fbcb366e7314a1179ae3c6aa27a765b/dde-file-manager-lib/views/dfileview.cpp#L2163-L2178

If so, this totally needs to become a XDG standard so that it will work on all Linux desktops.

dbus.(*Conn).Auth errors

Getting

panic: runtime error: slice bounds out of range [2:1]

goroutine 20 [running]:
github.com/godbus/dbus.(*Conn).inWorker(0xc000104200)
        /home/me/go/pkg/mod/github.com/godbus/[email protected]+incompatible/conn.go:355 +0xefe
created by github.com/godbus/dbus.(*Conn).Auth
        /home/me/go/pkg/mod/github.com/godbus/[email protected]+incompatible/auth.go:118 +0x621

Restarting appimaged usually resolves this.

Only use one build machine for all architectures

With the cross-compiler built into Go, it should be possible to only use one build machine for all architectures, hence saving Travis CI resources.

However, as long as we are using come C (currently for the calculation of the ELF size), we need to install a C crosscompiler toolchain, and this is where the usual Linux complexity begins.

dist: xenial
language: go

go:
- "1.13"

git:
  depth: 1

script:
  - sudo apt-get -y update
  - sudo apt-get -y install gcc-multilib g++-multilib gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu psmisc dbus-x11
  - if [ $(go env GOHOSTARCH) == "amd64" ] ; then wget -c -q https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz ; fi
  - if [ $(go env GOHOSTARCH) == "arm64" ] ; then wget -c -q https://github.com/upx/upx/releases/download/v3.95/upx-3.95-arm64_linux.tar.xz ; fi
  - tar xf upx-*_linux.tar.xz
  - export PATH=$(readlink -f upx-*_linux/):$PATH
  - export GO111MODULE=off # Needed?
  - go get github.com/probonopd/appimage/src/appimagetool
  - env CGO_ENABLED=1 GOOS=linux GOARCH=386 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 appimagetool
  - mv ./appimagetool ./appimagetool-386
  - go build -trimpath -ldflags="-s -w" appimagetool.go
  - upx -9 appimagetool
  - mv ./appimagetool ./appimagetool-amd64
  - env CC=arm-linux-gnueabi-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm32 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 appimagetool
  - mv ./appimagetool ./appimagetool-arm32
  - env CC=aarch64-linux-gnu CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 appimagetool
  - mv ./appimagetool ./appimagetool-arm64
  - go get github.com/probonopd/appimage/src/zsyncmake
  - env CGO_ENABLED=1 GOOS=linux GOARCH=386 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 zsyncmake
  - mv ./zsyncmake ./zsyncmake-386
  - go build -trimpath -ldflags="-s -w" zsyncmake.go
  - upx -9 zsyncmake
  - mv ./zsyncmake ./zsyncmake-amd64
  - env CC=arm-linux-gnueabi-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm32 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 zsyncmake
  - mv ./zsyncmake ./zsyncmake-arm32
  - env CC=aarch64-linux-gnu CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 zsyncmake
  - mv ./zsyncmake ./zsyncmake-arm64
  - go get github.com/probonopd/appimage/src/appimaged
  - env CGO_ENABLED=1 GOOS=linux GOARCH=386 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 appimaged
  - mv ./appimaged ./appimaged-386
  - go build -trimpath -ldflags="-s -w" appimaged.go
  - upx -9 appimaged
  - mv ./appimaged ./appimaged-amd64
  - env CC=arm-linux-gnueabi-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm32 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 appimaged
  - mv ./appimaged ./appimaged-arm32
  - env CC=aarch64-linux-gnu CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -trimpath -ldflags="-s -w" github.com/probonopd/appimage/src/appimaged
  - upx -9 appimaged
  - mv ./appimaged ./appimaged-arm64
  # Test run
  - ./appimaged-amd64 &
  - sleep 10
  - killall appimaged

after_success:
  - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
  - bash upload.sh *.386 *amd64 *arm32 *arm64
  
branches:
  except:
    - # Do not build tags that we create when we upload to GitHub Releases
    - /^(?i:continuous)/

#cache:
#  directories:
#    - $HOME/gopath/src
The following packages have unmet dependencies:
 gcc-aarch64-linux-gnu : Depends: gcc-5-aarch64-linux-gnu (>= 5.3.1-3~)
 gcc-arm-linux-gnueabi : Depends: gcc-5-arm-linux-gnueabi (>= 5.3.1-3~)
E: Unable to correct problems, you have held broken packages.

We should definitely revisit this once we do not use any C anymore.

appimagetool 489 -s deploy failure

Hi,

This is Julius, we had a conversation on appimage discourse re: "modern" appimages.

I tried your suggestion of -s deploy with that latest appimagetool 489. Here are what I think are the relevant failure messages:
2020/07/29 10:51:06 Find out whether Qt is a dependency of the application to be bundled...
2020/07/29 10:51:06 Detected Qt 5
2020/07/29 10:51:06 Offset of qt_prfxpath: 3561388
2020/07/29 10:51:06 Length of value of qt_prfxpath: 4
qt_prfxpath: /usr
2020/07/29 10:51:06 Got qt_prfxpath but it does not contain 'plugins'
...
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/lib/x86_64-linux-gnu/kconf_update_bin
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/lib/x86_64-linux-gnu/qt5
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/share/lintian/overrides
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/src/linux-headers-5.4.0-26/scripts
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/src/linux-headers-5.4.0-26-generic/scripts
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/src/linux-headers-5.4.0-42/scripts
2020/07/29 10:36:21 Guessed qt_prfxpath to be /usr/src/linux-headers-5.4.0-42-generic/scripts
Looking in /usr/src/linux-headers-5.4.0-42-generic/scripts/plugins
2020/07/29 10:36:21 Could not find 'plugins/platforms/libqxcb.so' in qtPrfxpath, exiting

my /usr/src/linux-headers-5.4.0-42-generic/scripts/ folder does not have a plugins folder or file.

I did check and that file does exist in my /usr/.../qt/ folder fwiw.

The file also was present in ./AppDir/usr/plugins/platforms (this appdir was pre-existing from a linuxdeploy).

I tried a "bare bones" (only a bin executable, icons, and the desktop file) appdir and had the same failure.

HTH.

Disable conflicing binfmt_misc

Some distribution are shipping with a conflicting implementation and annoying UX (asking users to move AppImages). We need to disable it.

neon@neon:~$ cat /proc/sys/fs/binfmt_misc/appimage-type1 
enabled
interpreter /usr/bin/AppImageLauncher
flags: 
offset 8
magic 414901
neon@neon:~$ cat /proc/sys/fs/binfmt_misc/appimage-type2
enabled
interpreter /usr/bin/AppImageLauncher
flags: 
offset 8
magic 414902

The following works to disable the annoying popups:

echo "0" | sudo tee /proc/sys/fs/binfmt_misc/appimage-type1
echo "0" | sudo tee /proc/sys/fs/binfmt_misc/appimage-type2

While we are at it, we should also do

systemctl --user stop appimagelauncherfs.service 
systemctl --user stop appimagelauncherd.service 

Implement signatures

Implement signatures.

Note to self for how to calculate sha256 hashes with skipping certain ranges (more precisely, calculate the hash as if the ranges consisted of 0x00s):

package main

import (
	"bytes"
	"crypto/sha256"
	"fmt"
	"hash"
	"io"
	"log"
	"os"
	"strconv"
)

func main() {
	f, err := os.Open("file.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()

	h := sha256.New()

	hashDummyRange(h, 5)
	hashRange(f, h, 5, 5)

	fmt.Printf("%x\n", h.Sum(nil))

	fmt.Println("Compare to doing it in one go")
	h = sha256.New()
	s := io.NewSectionReader(f, 0, 10)
	if _, err := io.Copy(h, s); err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%x\n", h.Sum(nil))
}

func hashRange(f *os.File, h hash.Hash, offset int64, length int64)  {
	fmt.Println("...continuing with checksum from offset", strconv.FormatInt(offset, 10), "for", strconv.FormatInt(length, 10), "bytes")
	s := io.NewSectionReader(f, offset, length)
	if _, err := io.Copy(h, s); err != nil {
		log.Fatal(err)
	}
}

func hashDummyRange(h hash.Hash, length int) {
	fmt.Println("Checksum for", strconv.Itoa(length), "bytes as if they were 0x00")
	h.Write(bytes.Repeat([]byte{0x00}, length))
}
$ xxd file.txt 
00000000: 0000 0000 0036 3738 3930 3132 3334 3536  .....67890123456

Results in:

Checksum for 5 bytes as if they were 0x00
...continuing with checksum from offset 5 for 5 bytes
9005925b7d0cc92b1c43ee07da6c45b120ce90c3bad1e9d311a5885a6cbab566
Compare to doing it in one go
9005925b7d0cc92b1c43ee07da6c45b120ce90c3bad1e9d311a5885a6cbab566

Move to go modules

Move to go modules so that we can pin the versions of dependencies being used.

However, using

go get github.com/probonopd/go-appimage
cd /home/me/go/src/github.com/probonopd/go-appimage/
go mod init
go mod tidy
go build ./...

we are running into

# github.com/coreos/go-systemd/dbus
/home/me/go/pkg/mod/github.com/coreos/[email protected]/dbus/dbus.go:127:33: cannot use dbus.SystemBusPrivate (type func() (*dbus.Conn, error)) as type func(...<T>) (*dbus.Conn, error) in argument to dbusAuthHelloConnection
/home/me/go/pkg/mod/github.com/coreos/[email protected]/dbus/dbus.go:136:33: cannot use dbus.SessionBusPrivate (type func() (*dbus.Conn, error)) as type func(...<T>) (*dbus.Conn, error) in argument to dbusAuthHelloConnection
/home/me/go/pkg/mod/github.com/coreos/[email protected]/dbus/dbus.go:146:42: undefined: dbus.ConnOption
/home/me/go/pkg/mod/github.com/coreos/[email protected]/dbus/dbus.go:204:48: undefined: dbus.ConnOption
/home/me/go/pkg/mod/github.com/coreos/[email protected]/dbus/dbus.go:224:53: undefined: dbus.ConnOption

inotify(?) prevents disks from being unmounted

inotify(?) prevents disks from being unmounted.

It should not.

Inotify watches can not prevent unmounting of filesystem. The documentation even mentions the specialized inotify event, that gets dispatched when the filesystem is unmounted: "IN_UNMOUNT - Filesystem containing watched object was unmounted". And if you were to read a tiny bit on the subject, you would discover, that inotify/fanotify have been specifically created to address issue of their predecessor dnotify, which didn't support unmounting watched directory.

Source: https://stackoverflow.com/questions/45951874/system-call-interface-to-proc-information#comment78876871_45951874

More information:
https://lwn.net/Articles/604686/

If it is not inotify, what is it then?

Interestingly this happens with the NTFS drive but not with e.g., Live ISO images written to USB disks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.