about summary refs log tree commit diff
path: root/pkgs/build-support/flutter
diff options
context:
space:
mode:
authorhacker1024 <hacker1024@users.sourceforge.net>2023-04-22 16:42:22 +1000
committerhacker1024 <hacker1024@users.sourceforge.net>2023-04-23 00:12:45 +1000
commit9f05297dc8875baeeeb8160b60f120affc259f2c (patch)
tree7ea6e2706fb0cbf38d32e7f60214ae72ba548291 /pkgs/build-support/flutter
parent37e93f7c3b9c98eef13733f2a558194db2d1b0f6 (diff)
flutter.buildFlutterApplication: Manually supply the dependency list
This removes the need for IFD.
Diffstat (limited to 'pkgs/build-support/flutter')
-rw-r--r--pkgs/build-support/flutter/default.nix21
1 files changed, 19 insertions, 2 deletions
diff --git a/pkgs/build-support/flutter/default.nix b/pkgs/build-support/flutter/default.nix
index 70428736c3248..622a19c32bd0f 100644
--- a/pkgs/build-support/flutter/default.nix
+++ b/pkgs/build-support/flutter/default.nix
@@ -5,6 +5,7 @@
 , llvmPackages_13
 , cacert
 , flutter
+, jq
 }:
 
 # absolutely no mac support for now
@@ -13,9 +14,11 @@
 , flutterBuildFlags ? [ ]
 , runtimeDependencies ? [ ]
 , customPackageOverrides ? { }
+, depsListFile ? null
 , vendorHash
 , pubspecLockFile ? null
 , nativeBuildInputs ? [ ]
+, preUnpack ? ""
 , postFixup ? ""
 , ...
 }@args:
@@ -41,8 +44,19 @@ let
       makeWrapper
       deps
       flutter
+      jq
     ] ++ nativeBuildInputs;
 
+    preUnpack = ''
+      if ! { [ '${lib.boolToString (depsListFile != null)}' = 'true' ] ${lib.optionalString (depsListFile != null) "&& cmp -s <(jq -Sc . '${depsListFile}') <(jq -Sc . '${finalAttrs.passthru.depsListFile}')"}; }; then
+        echo 1>&2 -e '\nThe dependency list file was either not given or differs from the expected result.' \
+                     '\nPlease copy the contents of ${finalAttrs.passthru.depsListFile} to a new file to pass to the depsListFile argument.'
+        exit 1
+      fi
+
+      ${preUnpack}
+    '';
+
     configurePhase = ''
       runHook preConfigure
 
@@ -106,11 +120,14 @@ let
 
       ${postFixup}
     '';
+
+    passthru = {
+      inherit (deps) depsListFile;
+    };
   });
 
   packageOverrideRepository = (callPackage ../../development/compilers/flutter/package-overrides { }) // customPackageOverrides;
-  packages = callPackage ../dart/list-dart-deps { dart = flutter; } deps;
-  productPackages = builtins.filter (package: package.kind != "dev") packages;
+  productPackages = builtins.filter (package: package.kind != "dev") (if depsListFile == null then [ ] else (builtins.fromJSON (builtins.readFile depsListFile)));
 in
 builtins.foldl'
   (prev: package: