From ca2d1eea45cdbbc55e3e3b970bcc2e2ea487fb6a Mon Sep 17 00:00:00 2001 From: SomberNight Date: Wed, 22 Sep 2021 16:40:15 +0200 Subject: [PATCH] build appimage: update appimagetool and stop using fork of mksquashfs The latest release of appimagetool bundles a new enough version of mksquashfs. We had been building a fork of mksquashfs but all the relevant patches there had been upstreamed. Note: we still need a wrapper when calling mksquashfs, as appimagetool calls it with "-mkfs-time 0" and we have the SOURCE_DATE_EPOCH env var set; and these two would conflict. Two ways to fix: either unset SOURCE_DATE_EPOCH for that context, or build a wrapper that removes the "-mkfs-time 0". The former would be cleaner but for some reason I did not manage to build reproducibly that way. The latter seems to work. related: - https://github.com/AppImage/AppImageKit/issues/929#issuecomment-580769875 > Now official squashfs 4.4 makes reproducible images by default - https://github.com/AppImage/AppImageKit/pull/996 --- contrib/build-linux/appimage/make_appimage.sh | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/contrib/build-linux/appimage/make_appimage.sh b/contrib/build-linux/appimage/make_appimage.sh index 9d4f2e1ce..4681d93d3 100755 --- a/contrib/build-linux/appimage/make_appimage.sh +++ b/contrib/build-linux/appimage/make_appimage.sh @@ -16,7 +16,6 @@ export GCC_STRIP_BINARIES="1" # pinned versions PYTHON_VERSION=3.9.7 PKG2APPIMAGE_COMMIT="eb8f3acdd9f11ab19b78f5cb15daa772367daf15" -SQUASHFSKIT_COMMIT="ae0d656efa2d0df2fcac795b6823b44462f19386" VERSION=`git describe --tags --dirty --always` @@ -35,8 +34,8 @@ info "downloading some dependencies." download_if_not_exist "$CACHEDIR/functions.sh" "https://raw.githubusercontent.com/AppImage/pkg2appimage/$PKG2APPIMAGE_COMMIT/functions.sh" verify_hash "$CACHEDIR/functions.sh" "78b7ee5a04ffb84ee1c93f0cb2900123773bc6709e5d1e43c37519f590f86918" -download_if_not_exist "$CACHEDIR/appimagetool" "https://github.com/AppImage/AppImageKit/releases/download/12/appimagetool-x86_64.AppImage" -verify_hash "$CACHEDIR/appimagetool" "d918b4df547b388ef253f3c9e7f6529ca81a885395c31f619d9aaf7030499a13" +download_if_not_exist "$CACHEDIR/appimagetool" "https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage" +verify_hash "$CACHEDIR/appimagetool" "df3baf5ca5facbecfc2f3fa6713c29ab9cefa8fd8c1eac5d283b79cab33e4acb" download_if_not_exist "$CACHEDIR/Python-$PYTHON_VERSION.tar.xz" "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz" verify_hash "$CACHEDIR/Python-$PYTHON_VERSION.tar.xz" "f8145616e68c00041d1a6399b76387390388f8359581abc24432bb969b5e3c57" @@ -68,16 +67,6 @@ tar xf "$CACHEDIR/Python-$PYTHON_VERSION.tar.xz" -C "$BUILDDIR" ) -info "Building squashfskit" -git clone "https://github.com/squashfskit/squashfskit.git" "$BUILDDIR/squashfskit" -( - cd "$BUILDDIR/squashfskit" - git checkout "${SQUASHFSKIT_COMMIT}^{commit}" - make -C squashfs-tools mksquashfs || fail "Could not build squashfskit" -) -MKSQUASHFS="$BUILDDIR/squashfskit/squashfs-tools/mksquashfs" - - "$CONTRIB"/make_libsecp256k1.sh || fail "Could not build libsecp" cp -f "$PROJECT_ROOT/electrum/libsecp256k1.so.0" "$APPDIR/usr/lib/libsecp256k1.so.0" || fail "Could not copy libsecp to its destination" @@ -245,14 +234,16 @@ info "creating the AppImage." sed -i 's|AI\x02|\x00\x00\x00|' "$CACHEDIR/appimagetool_copy" chmod +x "$CACHEDIR/appimagetool_copy" "$CACHEDIR/appimagetool_copy" --appimage-extract - # We build a small wrapper for mksquashfs that removes the -mkfs-fixed-time option - # that mksquashfs from squashfskit does not support. It is not needed for squashfskit. - cat > ./squashfs-root/usr/lib/appimagekit/mksquashfs << EOF + # We build a small wrapper for mksquashfs that removes the -mkfs-time option + # as it conflicts with SOURCE_DATE_EPOCH. + mv "$BUILDDIR/squashfs-root/usr/lib/appimagekit/mksquashfs" "$BUILDDIR/squashfs-root/usr/lib/appimagekit/mksquashfs_orig" + cat > "$BUILDDIR/squashfs-root/usr/lib/appimagekit/mksquashfs" << EOF #!/bin/sh -args=\$(echo "\$@" | sed -e 's/-mkfs-fixed-time 0//') -"$MKSQUASHFS" \$args +args=\$(echo "\$@" | sed -e 's/-mkfs-time 0//') +"$BUILDDIR/squashfs-root/usr/lib/appimagekit/mksquashfs_orig" \$args EOF - env VERSION="$VERSION" ARCH=x86_64 SOURCE_DATE_EPOCH=1530212462 ./squashfs-root/AppRun --no-appstream --verbose "$APPDIR" "$APPIMAGE" + chmod +x "$BUILDDIR/squashfs-root/usr/lib/appimagekit/mksquashfs" + env VERSION="$VERSION" ARCH=x86_64 ./squashfs-root/AppRun --no-appstream --verbose "$APPDIR" "$APPIMAGE" )