From 3644299a66d765f9ef16aa8b62433abb09632be9 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Fri, 12 Dec 2025 22:59:37 +0100 Subject: [PATCH] appimage: fix possible issue with the appimagetool binary (#14717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zero-out AppImage magic bytes from the ELF header extended ABI version so binfmt+qemu can be used (e.g. when executed from `docker run --platform …`). Cf.: - https://github.com/AppImage/AppImageKit/issues/1056 - https://github.com/AppImage/AppImageSpec/blob/master/draft.md#type-2-image-format - https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#:~:text=EI_ABIVERSION --- make/appimage.mk | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/make/appimage.mk b/make/appimage.mk index 8573434fb..0766a9953 100644 --- a/make/appimage.mk +++ b/make/appimage.mk @@ -14,7 +14,16 @@ plugins/timesync.koplugin $(filter-out tools/trace_require.lua tools/wbuilder.lua,$(wildcard tools/*)) endef -update: all +appimagetool $(APPIMAGETOOL): + wget -O $(APPIMAGETOOL).part '$(APPIMAGETOOL_URL)' + # Zero-out AppImage magic bytes from the ELF header extended ABI version so + # binfmt+qemu can be used (e.g. when executed from `docker run --platform …`). + # Cf. https://github.com/AppImage/AppImageKit/issues/1056. + printf '\0\0\0' | dd conv=notrunc obs=1 seek=8 of=$(APPIMAGETOOL).part + chmod +x ./$(APPIMAGETOOL).part + mv $(APPIMAGETOOL).part $(APPIMAGETOOL) + +update: all $(APPIMAGETOOL) cd $(INSTALL_DIR)/koreader && '$(abspath tools/mkrelease.sh)' ../appimage/ . $(release_excludes) cp $(APPIMAGE_DIR)/{AppRun,koreader.desktop} resources/koreader.png $(INSTALL_DIR)/appimage/ sed -e 's/%%VERSION%%/$(VERSION)/' -e 's/%%DATE%%/$(RELEASE_DATE)/' $(PLATFORM_DIR)/common/koreader.metainfo.xml >$(INSTALL_DIR)/appimage/koreader.appdata.xml @@ -24,13 +33,9 @@ ifeq (,$(wildcard $(UBUNTU_LIBBSD))) echo 'WARNING: not bundling missing $(UBUNTU_LIBBSD)' 1>&2 else cp $(UBUNTU_LIBBSD) $(INSTALL_DIR)/appimage/libs/ -endif -ifeq (,$(wildcard $(APPIMAGETOOL))) - # Download appimagetool. - wget '$(APPIMAGETOOL_URL)' - chmod a+x ./$(APPIMAGETOOL) endif # Generate AppImage. ARCH='$(APPIMAGE_ARCH)' ./$(APPIMAGETOOL) --appimage-extract-and-run $(INSTALL_DIR)/appimage $(KOREADER_APPIMAGE) -PHONY += update +PHONY += appimagetool update +SOUND += $(APPIMAGETOOL)