diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2022-09-26 20:32:33 +0200 |
---|---|---|
committer | Maximilian Bosch <maximilian@mbosch.me> | 2022-09-26 20:32:33 +0200 |
commit | 3ca9b9a8ad1b9dee2ec40eecca557f0578786b93 (patch) | |
tree | 78acd78931012c75db5d45d497e619a49f45d368 | |
parent | dae204faa0243b4d0c0234a5f5f83a2549ecb5b7 (diff) |
fetchNextcloudApp: rewrite with fetchzip & applyPatches
There are the following issues with the current implementation: * `fetchurl` with a tarball from GitHub appears to break occasionally because the tarballs are not necessarily reproducible. Because of that, `fetchFromGitHub` unpacks the tarball already because the contents are actually reproducible in contrast to the tarball. To have the same behavior here, we use `fetchzip` now (and `applyPatches` on top to apply additional patches if needed). * Fixes the way how patches are applied. Previously, when having patches for a git checkout of the app, these wouldn't apply because the `appname-version` prefix is missing. * Because all old hashes are broken with this, I added an evaluation check that breaks evaluation when using the old API (i.e. with `name`/`version` which are not needed anymore).
-rw-r--r-- | pkgs/build-support/fetchnextcloudapp/default.nix | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/pkgs/build-support/fetchnextcloudapp/default.nix b/pkgs/build-support/fetchnextcloudapp/default.nix index 1997c80c8a153..a7a3066ffab39 100644 --- a/pkgs/build-support/fetchnextcloudapp/default.nix +++ b/pkgs/build-support/fetchnextcloudapp/default.nix @@ -1,32 +1,27 @@ -{ stdenv, fetchurl, ... }: -{ name -, url -, version +{ stdenv, fetchzip, applyPatches, ... }: +{ url , sha256 , patches ? [ ] +, name ? null +, version ? null }: -stdenv.mkDerivation { - pname = "nc-app-${name}"; - inherit version patches; - - src = fetchurl { +if name != null || version != null then throw '' + `pkgs.fetchNextcloudApp` has been changed to use `fetchzip`. + To update, please + * remove `name`/`version` + * update the hash +'' +else applyPatches { + inherit patches; + src = fetchzip { inherit url sha256; + postFetch = '' + pushd $out &>/dev/null + if [ ! -f ./appinfo/info.xml ]; then + echo "appinfo/info.xml doesn't exist in $out, aborting!" + exit 1 + fi + popd &>/dev/null + ''; }; - - unpackPhase = '' - tar -xzpf $src - ''; - - installPhase = '' - approot="$(dirname $(dirname $(find -path '*/appinfo/info.xml' | head -n 1)))" - - if [ -d "$approot" ]; - then - mv "$approot/" $out - chmod -R a-w $out - else - echo "Could not find appinfo/info.xml" - exit 1; - fi - ''; } |