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
This commit is contained in:
@@ -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"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user