diff options
Diffstat (limited to 'pkgs/development/compilers/flutter/wrapper.nix')
-rw-r--r-- | pkgs/development/compilers/flutter/wrapper.nix | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/pkgs/development/compilers/flutter/wrapper.nix b/pkgs/development/compilers/flutter/wrapper.nix deleted file mode 100644 index 4b20cf7f43f0..000000000000 --- a/pkgs/development/compilers/flutter/wrapper.nix +++ /dev/null @@ -1,163 +0,0 @@ -{ lib -, stdenv -, darwin -, callPackage -, flutter -, supportedTargetFlutterPlatforms ? [ - "universal" - "web" - ] - ++ lib.optional stdenv.hostPlatform.isLinux "linux" - ++ lib.optional (stdenv.hostPlatform.isx86_64 || stdenv.hostPlatform.isDarwin) "android" - ++ lib.optionals stdenv.hostPlatform.isDarwin [ "macos" "ios" ] -, artifactHashes ? flutter.artifactHashes -, extraPkgConfigPackages ? [ ] -, extraLibraries ? [ ] -, extraIncludes ? [ ] -, extraCxxFlags ? [ ] -, extraCFlags ? [ ] -, extraLinkerFlags ? [ ] -, makeWrapper -, runCommandLocal -, writeShellScript -, wrapGAppsHook3 -, git -, which -, pkg-config -, atk -, cairo -, gdk-pixbuf -, glib -, gtk3 -, harfbuzz -, libepoxy -, pango -, libX11 -, xorgproto -, libdeflate -, zlib -, cmake -, ninja -, clang -, lndir -, symlinkJoin -}: - -let - supportsLinuxDesktopTarget = builtins.elem "linux" supportedTargetFlutterPlatforms; - - flutterPlatformArtifacts = lib.genAttrs supportedTargetFlutterPlatforms (flutterPlatform: - (callPackage ./artifacts/prepare-artifacts.nix { - src = callPackage ./artifacts/fetch-artifacts.nix { - inherit flutterPlatform; - systemPlatform = stdenv.hostPlatform.system; - flutter = callPackage ./wrapper.nix { inherit flutter; }; - hash = artifactHashes.${flutterPlatform}.${stdenv.hostPlatform.system} or ""; - }; - })); - - cacheDir = symlinkJoin rec { - name = "flutter-cache-dir"; - paths = builtins.attrValues flutterPlatformArtifacts; - postBuild = '' - mkdir -p "$out/bin/cache" - ln -s '${flutter}/bin/cache/dart-sdk' "$out/bin/cache" - ''; - passthru.flutterPlatform = flutterPlatformArtifacts; - }; - - # By default, Flutter stores downloaded files (such as the Pub cache) in the SDK directory. - # Wrap it to ensure that it does not do that, preferring home directories instead. - immutableFlutter = writeShellScript "flutter_immutable" '' - export PUB_CACHE=''${PUB_CACHE:-"$HOME/.pub-cache"} - ${flutter}/bin/flutter "$@" - ''; - - # Tools that the Flutter tool depends on. - tools = [ git which ]; - - # Libraries that Flutter apps depend on at runtime. - appRuntimeDeps = lib.optionals supportsLinuxDesktopTarget [ - atk - cairo - gdk-pixbuf - glib - gtk3 - harfbuzz - libepoxy - pango - libX11 - libdeflate - ]; - - # Development packages required for compilation. - appBuildDeps = - let - # https://discourse.nixos.org/t/handling-transitive-c-dependencies/5942/3 - deps = pkg: builtins.filter lib.isDerivation ((pkg.buildInputs or [ ]) ++ (pkg.propagatedBuildInputs or [ ])); - collect = pkg: lib.unique ([ pkg ] ++ deps pkg ++ builtins.concatMap collect (deps pkg)); - in - builtins.concatMap collect appRuntimeDeps; - - # Some header files and libraries are not properly located by the Flutter SDK. - # They must be manually included. - appStaticBuildDeps = (lib.optionals supportsLinuxDesktopTarget [ libX11 xorgproto zlib ]) ++ extraLibraries; - - # Tools used by the Flutter SDK to compile applications. - buildTools = lib.optionals supportsLinuxDesktopTarget [ - pkg-config - cmake - ninja - clang - ]; - - # Nix-specific compiler configuration. - pkgConfigPackages = map (lib.getOutput "dev") (appBuildDeps ++ extraPkgConfigPackages); - 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 { }) (stdenv.mkDerivation -{ - pname = "flutter-wrapped"; - inherit (flutter) version; - - nativeBuildInputs = [ makeWrapper ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ] - ++ lib.optionals supportsLinuxDesktopTarget [ glib wrapGAppsHook3 ]; - - passthru = flutter.passthru // { - inherit (flutter) version; - unwrapped = flutter; - updateScript = ./update/update.py; - inherit cacheDir; - }; - - 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 \ - '' + lib.optionalString (flutter ? engine && flutter.engine.meta.available) '' - --set-default FLUTTER_ENGINE "${flutter.engine}" \ - --add-flags "--local-engine-host host_${flutter.engine.runtimeMode}${lib.optionalString (!flutter.engine.isOptimized) "_unopt"}" \ - '' + '' --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; -}) |