1{
2 stdenv,
3 buildPlatform,
4 hostPlatform,
5 callPackage,
6 fetchgit,
7 fetchurl,
8 writeText,
9 runCommand,
10 darwin,
11 writeShellScriptBin,
12 depot_toolsCommit ? "7d95eb2eb054447592585c73a8ff7adad97ecba1",
13 depot_toolsHash ? "sha256-F7KDuVg11qLKkohIjuXpNdxpnSsT6Z3hE9+wFIG2sSk=",
14 cipdCommit ? "89ada246fcbf10f330011e4991d017332af2365b",
15 cipdHashes ? {
16 "linux-386" = "7f264198598af2ef9d8878349d33c1940f1f3739e46d986962c352ec4cce2690";
17 "linux-amd64" = "2ada6b46ad1cd1350522c5c05899d273f5c894c7665e30104e7f57084a5aeeb9";
18 "linux-arm64" = "96eca7e49f6732c50122b94b793c3a5e62ed77bce1686787a8334906791b4168";
19 "linux-armv6l" = "06394601130652c5e1b055a7e4605c21fc7c6643af0b3b3cac8d2691491afa81";
20 "linux-mips64" = "f3eda6542b381b7aa8f582698498b0e197972c894590ec35f18faa467c868f5c";
21 "linux-mips64le" = "74229ada8e2afd9c8e7c58991126869b2880547780d4a197a27c1dfa96851622";
22 "linux-mipsle" = "2f3c18ec0ad48cd44a9ff39bb60e9afded83ca43fb9c7a5ea9949f6fdd4e1394";
23 "linux-ppc64" = "79425c0795fb8ba12b39a8856bf7ccb853e85def4317aa6413222f307d4c2dbd";
24 "linux-ppc64le" = "f9b3d85dde70f1b78cd7a41d2477834c15ac713a59317490a4cdac9f8f092325";
25 "linux-riscv64" = "bd695164563a66e8d3799e8835f90a398fbae9a4eec24e876c92d5f213943482";
26 "linux-s390x" = "6f501af80541e733fda23b4208a21ea05919c95d236036a2121e6b6334a2792c";
27 "macos-amd64" = "41d05580c0014912d6c32619c720646fd136e4557c9c7d7571ecc8c0462733a1";
28 "macos-arm64" = "dc672bd16d9faf277dd562f1dc00644b10c03c5d838d3cc3d3ea29925d76d931";
29 "windows-386" = "fa6ed0022a38ffc51ff8a927e3947fe7e59a64b2019dcddca9d3afacf7630444";
30 "windows-amd64" = "b5423e4b4429837f7fe4d571ce99c068aa0ccb37ddbebc1978a423fd2b0086df";
31 },
32}:
33let
34 constants = callPackage ./constants.nix { platform = buildPlatform; };
35 host-constants = callPackage ./constants.nix { platform = hostPlatform; };
36 stdenv-constants = callPackage ./constants.nix { platform = stdenv.hostPlatform; };
37in
38{
39 depot_tools = fetchgit {
40 url = "https://chromium.googlesource.com/chromium/tools/depot_tools.git";
41 rev = depot_toolsCommit;
42 hash = depot_toolsHash;
43 };
44
45 cipd =
46 let
47 unwrapped =
48 runCommand "cipd-${cipdCommit}"
49 {
50 src = fetchurl {
51 name = "cipd-${cipdCommit}-unwrapped";
52 url = "https://chrome-infra-packages.appspot.com/client?platform=${stdenv-constants.platform}&version=git_revision:${cipdCommit}";
53 sha256 = cipdHashes.${stdenv-constants.platform};
54 };
55 }
56 ''
57 mkdir -p $out/bin
58 install -m755 $src $out/bin/cipd
59 '';
60 in
61 writeShellScriptBin "cipd" ''
62 params=$@
63
64 if [[ "$1" == "ensure" ]]; then
65 shift 1
66 params="ensure"
67
68 while [ "$#" -ne 0 ]; do
69 if [[ "$1" == "-ensure-file" ]]; then
70 ensureFile="$2"
71 shift 2
72 params="$params -ensure-file $ensureFile"
73
74 sed -i 's/''${platform}/${host-constants.platform}/g' "$ensureFile"
75 sed -i 's/gn\/gn\/${stdenv-constants.platform}/gn\/gn\/${constants.platform}/g' "$ensureFile"
76
77 if grep flutter/java/openjdk "$ensureFile" >/dev/null; then
78 sed -i '/src\/flutter\/third_party\/java\/openjdk/,+2 d' "$ensureFile"
79 fi
80 else
81 params="$params $1"
82 shift 1
83 fi
84 done
85 fi
86
87 exec ${unwrapped}/bin/cipd $params
88 '';
89
90 vpython =
91 pythonPkg:
92 runCommand "vpython3" { } "mkdir -p $out/bin && ln -s ${pythonPkg}/bin/python $out/bin/vpython3";
93
94 xcode-select = writeShellScriptBin "xcode-select" ''
95 echo ${darwin.xcode}/Contents/Developer
96 '';
97}