about summary refs log tree commit diff
path: root/pkgs/build-support/fetchnextcloudapp
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2022-09-26 20:32:33 +0200
committerMaximilian Bosch <maximilian@mbosch.me>2022-09-26 20:32:33 +0200
commit3ca9b9a8ad1b9dee2ec40eecca557f0578786b93 (patch)
tree78acd78931012c75db5d45d497e619a49f45d368 /pkgs/build-support/fetchnextcloudapp
parentdae204faa0243b4d0c0234a5f5f83a2549ecb5b7 (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).
Diffstat (limited to 'pkgs/build-support/fetchnextcloudapp')
-rw-r--r--pkgs/build-support/fetchnextcloudapp/default.nix47
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
-  '';
 }