at master 3.7 kB view raw
1{ 2 lib, 3 callPackage, 4 fetchgit, 5 tools ? null, 6 curl, 7 pkg-config, 8 git, 9 python3, 10 runCommand, 11 writeText, 12 cacert, 13 flutterVersion, 14 version, 15 hashes, 16 url, 17 hostPlatform, 18 targetPlatform, 19 buildPlatform, 20}@pkgs: 21let 22 target-constants = callPackage ./constants.nix { platform = targetPlatform; }; 23 build-constants = callPackage ./constants.nix { platform = buildPlatform; }; 24 tools = pkgs.tools or (callPackage ./tools.nix { inherit hostPlatform buildPlatform; }); 25 26 boolOption = value: if value then "True" else "False"; 27in 28runCommand "flutter-engine-source-${version}-${buildPlatform.system}-${targetPlatform.system}" 29 { 30 pname = "flutter-engine-source"; 31 inherit version; 32 33 inherit (tools) depot_tools; 34 35 nativeBuildInputs = [ 36 curl 37 pkg-config 38 git 39 tools.cipd 40 (python3.withPackages ( 41 ps: with ps; [ 42 httplib2 43 six 44 ] 45 )) 46 ]; 47 48 gclient = writeText "flutter-engine-${version}.gclient" '' 49 solutions = [{ 50 "managed": False, 51 "name": "${lib.optionalString (lib.versionAtLeast flutterVersion "3.29") "engine/"}src/flutter", 52 "url": "${url}", 53 "custom_vars": { 54 "download_fuchsia_deps": False, 55 "download_android_deps": False, 56 "download_linux_deps": ${boolOption targetPlatform.isLinux}, 57 "setup_githooks": False, 58 "download_esbuild": False, 59 "download_dart_sdk": False, 60 "host_cpu": "${build-constants.alt-arch}", 61 "host_os": "${build-constants.alt-os}", 62 }, 63 }] 64 65 target_os_only = True 66 target_os = [ 67 "${target-constants.alt-os}" 68 ] 69 70 target_cpu_only = True 71 target_cpu = [ 72 "${target-constants.alt-arch}" 73 ] 74 ''; 75 76 NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; 77 GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt"; 78 SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt"; 79 DEPOT_TOOLS_UPDATE = "0"; 80 DEPOT_TOOLS_COLLECT_METRICS = "0"; 81 PYTHONDONTWRITEBYTECODE = "1"; 82 83 outputHashAlgo = "sha256"; 84 outputHashMode = "recursive"; 85 outputHash = 86 (hashes."${buildPlatform.system}" or { })."${targetPlatform.system}" 87 or (throw "Hash not set for ${targetPlatform.system} on ${buildPlatform.system}"); 88 } 89 ( 90 '' 91 source ${../../../../build-support/fetchgit/deterministic-git} 92 export -f clean_git 93 export -f make_deterministic_repo 94 95 '' 96 + ( 97 if lib.versionAtLeast flutterVersion "3.29" then 98 '' 99 mkdir -p source 100 cp $gclient source/.gclient 101 cd source 102 '' 103 else 104 '' 105 mkdir -p $out 106 cp $gclient $out/.gclient 107 cd $out 108 '' 109 ) 110 + '' 111 112 export PATH=$PATH:$depot_tools 113 python3 $depot_tools/gclient.py sync --no-history --shallow --nohooks -j $NIX_BUILD_CORES 114 '' 115 + lib.optionalString (lib.versionAtLeast flutterVersion "3.29") '' 116 cp -r engine/src/flutter/third_party/* engine/src/flutter/engine/src/flutter/third_party/ 117 mv engine/src/flutter/engine $out 118 '' 119 + '' 120 find $out -name '.git' -exec rm -rf {} \; || true 121 122 rm -rf $out/src/{buildtools,fuchsia} 123 rm -rf $out/src/flutter/{buildtools,prebuilts,third_party/swiftshader,third_party/gn/.versions} 124 rm -rf $out/src/flutter/{third_party/dart/tools/sdks/dart-sdk,third_party/ninja/ninja,third_party/java} 125 rm -rf $out/src/third_party/{dart/tools/sdks/dart-sdk,libcxx/test} 126 127 rm -rf $out/.cipd $out/.gclient $out/.gclient_entries $out/.gclient_previous_custom_vars $out/.gclient_previous_sync_commits 128 '' 129 )