summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaciej Krüger <mkg20001@gmail.com>2023-09-20 23:34:26 +0200
committerGitHub <noreply@github.com>2023-09-20 23:34:26 +0200
commit6cecfa12b554955b0e837b9efa391b9787bf64aa (patch)
tree6b30f1fb30330a44f3050247257efc0bba09f9f5
parenta1004f62d2e14025872844783de1d92803288488 (diff)
parent84347c2195eb5a7df786b2fbe046d34fdfe716c4 (diff)
downloadnixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.tar
nixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.tar.gz
nixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.tar.bz2
nixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.tar.lz
nixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.tar.xz
nixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.tar.zst
nixpkgs-6cecfa12b554955b0e837b9efa391b9787bf64aa.zip
Merge pull request #239570 from hacker1024/feature/flutter-wrapper-gapps
flutter: Use wrapGAppsHook
-rw-r--r--pkgs/build-support/flutter/default.nix7
-rw-r--r--pkgs/development/compilers/flutter/wrapper.nix53
2 files changed, 40 insertions, 20 deletions
diff --git a/pkgs/build-support/flutter/default.nix b/pkgs/build-support/flutter/default.nix
index c109804680f..a0ed1211ed8 100644
--- a/pkgs/build-support/flutter/default.nix
+++ b/pkgs/build-support/flutter/default.nix
@@ -3,8 +3,10 @@
 , stdenvNoCC
 , runCommand
 , makeWrapper
+, wrapGAppsHook
 , llvmPackages_13
 , cacert
+, glib
 , flutter
 , jq
 }:
@@ -68,8 +70,12 @@ let
       deps
       flutter
       jq
+      glib
+      wrapGAppsHook
     ] ++ nativeBuildInputs;
 
+    dontWrapGApps = true;
+
     preUnpack = ''
       ${lib.optionalString (!autoDepsList) ''
         if ! { [ '${lib.boolToString (depsListFile != null)}' = 'true' ] ${lib.optionalString (depsListFile != null) "&& cmp -s <(jq -Sc . '${depsListFile}') <(jq -Sc . '${finalAttrs.passthru.depsListFile}')"}; }; then
@@ -144,6 +150,7 @@ let
       for f in "$out"/bin/*; do
         wrapProgram "$f" \
           --suffix LD_LIBRARY_PATH : '${lib.makeLibraryPath finalAttrs.runtimeDependencies}' \
+          ''${gappsWrapperArgs[@]} \
           ${extraWrapProgramArgs}
       done
 
diff --git a/pkgs/development/compilers/flutter/wrapper.nix b/pkgs/development/compilers/flutter/wrapper.nix
index 794876460f2..47b64fe4740 100644
--- a/pkgs/development/compilers/flutter/wrapper.nix
+++ b/pkgs/development/compilers/flutter/wrapper.nix
@@ -33,6 +33,7 @@
 , makeWrapper
 , runCommandLocal
 , writeShellScript
+, wrapGAppsHook
 , git
 , which
 , pkg-config
@@ -166,31 +167,43 @@ let
   includeFlags = map (pkg: "-isystem ${lib.getOutput "dev" pkg}/include") (appStaticBuildDeps ++ extraIncludes);
   linkerFlags = (map (pkg: "-rpath,${lib.getOutput "lib" pkg}/lib") appRuntimeDeps) ++ extraLinkerFlags;
 in
-(callPackage ./sdk-symlink.nix { }) (runCommandLocal "flutter-wrapped"
+(callPackage ./sdk-symlink.nix { }) (stdenv.mkDerivation
 {
-  nativeBuildInputs = [
-    makeWrapper
-  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ];
+  pname = "flutter-wrapped";
+  inherit (flutter) version;
+
+  nativeBuildInputs = [ makeWrapper ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ]
+    ++ lib.optionals supportsLinuxDesktop [ glib wrapGAppsHook ];
 
   passthru = flutter.passthru // {
-    inherit (flutter) version;
     unwrapped = flutter;
     inherit engineArtifacts;
   };
 
+  dontUnpack = true;
+  dontWrapGApps = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    for path in ${builtins.concatStringsSep " " (builtins.foldl' (paths: pkg: paths ++ (map (directory: "'${pkg}/${directory}/pkgconfig'") ["lib" "share"])) [ ] pkgConfigPackages)}; do
+      addToSearchPath FLUTTER_PKG_CONFIG_PATH "$path"
+    done
+
+    mkdir -p $out/bin
+    makeWrapper '${immutableFlutter}' $out/bin/flutter \
+      --set-default ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \
+      --suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \
+      --suffix PKG_CONFIG_PATH : "$FLUTTER_PKG_CONFIG_PATH" \
+      --suffix LIBRARY_PATH : '${lib.makeLibraryPath appStaticBuildDeps}' \
+      --prefix CXXFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCxxFlags)}' \
+      --prefix CFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCFlags)}' \
+      --prefix LDFLAGS "''\t" '${builtins.concatStringsSep " " (map (flag: "-Wl,${flag}") linkerFlags)}' \
+      ''${gappsWrapperArgs[@]}
+
+    runHook postInstall
+  '';
+
   inherit (flutter) meta;
-} ''
-  for path in ${builtins.concatStringsSep " " (builtins.foldl' (paths: pkg: paths ++ (map (directory: "'${pkg}/${directory}/pkgconfig'") ["lib" "share"])) [ ] pkgConfigPackages)}; do
-    addToSearchPath FLUTTER_PKG_CONFIG_PATH "$path"
-  done
-
-  mkdir -p $out/bin
-  makeWrapper '${immutableFlutter}' $out/bin/flutter \
-    --set-default ANDROID_EMULATOR_USE_SYSTEM_LIBS 1 \
-    --suffix PATH : '${lib.makeBinPath (tools ++ buildTools)}' \
-    --suffix PKG_CONFIG_PATH : "$FLUTTER_PKG_CONFIG_PATH" \
-    --suffix LIBRARY_PATH : '${lib.makeLibraryPath appStaticBuildDeps}' \
-    --prefix CXXFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCxxFlags)}' \
-    --prefix CFLAGS "''\t" '${builtins.concatStringsSep " " (includeFlags ++ extraCFlags)}' \
-    --prefix LDFLAGS "''\t" '${builtins.concatStringsSep " " (map (flag: "-Wl,${flag}") linkerFlags)}'
-'')
+})