diff options
author | Bignaux Ronan <ronan@aimao.org> | 2020-03-03 01:40:57 +0100 |
---|---|---|
committer | Bignaux Ronan <ronan@aimao.org> | 2020-03-03 01:40:57 +0100 |
commit | ebaedb5377dcc5e6aca28ef666871e424dd39938 (patch) | |
tree | 97df6fac37431fc4f9bd751e2c91d9b5362e42b6 /pkgs/build-support/appimage | |
parent | 619a095af0efa15631e311c98b56a015fdf4614b (diff) |
appimage: refactoring extractType2 to avoid use of appimage packer
Diffstat (limited to 'pkgs/build-support/appimage')
-rw-r--r-- | pkgs/build-support/appimage/default.nix | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/pkgs/build-support/appimage/default.nix b/pkgs/build-support/appimage/default.nix index c871df787b7ea..f4ccd038f7655 100644 --- a/pkgs/build-support/appimage/default.nix +++ b/pkgs/build-support/appimage/default.nix @@ -1,4 +1,4 @@ -{ stdenv, libarchive, patchelf, zlib, buildFHSUserEnv, writeScript }: +{ stdenv, libarchive, radare2, jq, buildFHSUserEnv, squashfsTools, writeScript }: rec { # Both extraction functions could be unified, but then @@ -19,15 +19,16 @@ rec { name = "${name}-extracted"; inherit src; - nativeBuildInputs = [ patchelf ]; + nativeBuildInputs = [ radare2 jq squashfsTools ]; buildCommand = '' install $src ./appimage - patchelf \ - --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \ - --replace-needed libz.so.1 ${zlib}/lib/libz.so.1 \ - ./appimage - ./appimage --appimage-extract + # multiarch offset one-liner using same method as AppImage + # see https://gist.github.com/probonopd/a490ba3401b5ef7b881d5e603fa20c93 + offset=$(r2 ./appimage -nn -Nqc "pfj.elf_header @ 0" |\ + jq 'map({(.name): .value}) | add | .shoff + (.shnum * .shentsize)') + + unsquashfs -o $offset ./appimage cp -rv squashfs-root $out ''; |