zig: commonify & bootstrap (#331011)
[NixPkgs.git] / pkgs / by-name / re / renovate / package.nix
blob5b4ce545d1f4618f4b287c07c72a22333e114965
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   makeWrapper,
6   nodejs,
7   overrideSDK,
8   pnpm_9,
9   python3,
10   testers,
11   xcbuild,
12   nixosTests,
13   nix-update-script,
14   yq-go,
17 stdenv.mkDerivation (finalAttrs: {
18   pname = "renovate";
19   version = "39.153.1";
21   src = fetchFromGitHub {
22     owner = "renovatebot";
23     repo = "renovate";
24     tag = finalAttrs.version;
25     hash = "sha256-QKCUHwm6c50wTDFbmAqhh/tV8Lzx9HD4U9k7ke6t8OE=";
26   };
28   postPatch = ''
29     substituteInPlace package.json \
30       --replace-fail "0.0.0-semantic-release" "${finalAttrs.version}"
31   '';
33   nativeBuildInputs = [
34     makeWrapper
35     nodejs
36     pnpm_9.configHook
37     python3
38     yq-go
39   ] ++ lib.optional stdenv.hostPlatform.isDarwin xcbuild;
41   pnpmDeps = pnpm_9.fetchDeps {
42     inherit (finalAttrs) pname version src;
43     hash = "sha256-MTkbRQnimEXP4XepJ+x2KGHtJTkqN9WBWvisAHH/j18=";
44   };
46   env.COREPACK_ENABLE_STRICT = 0;
48   buildPhase =
49     ''
50       runHook preBuild
52       # relax nodejs version
53       yq '.engines.node = "${nodejs.version}"' -i package.json
55       pnpm build
56       pnpm prune --prod --ignore-scripts
57     ''
58     # The optional dependency re2 is not built by pnpm and needs to be built manually.
59     # If re2 is not built, you will get an annoying warning when you run renovate.
60     + ''
61       pushd node_modules/.pnpm/re2*/node_modules/re2
63       mkdir -p $HOME/.node-gyp/${nodejs.version}
64       echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
65       ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
66       export npm_config_nodedir=${nodejs}
67       npm run rebuild
69       popd
71       runHook postBuild
72     '';
74   # TODO: replace with `pnpm deploy`
75   # now it fails to build with ERR_PNPM_NO_OFFLINE_META
76   # see https://github.com/pnpm/pnpm/issues/5315
77   installPhase = ''
78     runHook preInstall
80     mkdir -p $out/{bin,lib/node_modules/renovate}
81     cp -r dist node_modules package.json renovate-schema.json $out/lib/node_modules/renovate
83     makeWrapper "${lib.getExe nodejs}" "$out/bin/renovate" \
84       --add-flags "$out/lib/node_modules/renovate/dist/renovate.js"
85     makeWrapper "${lib.getExe nodejs}" "$out/bin/renovate-config-validator" \
86       --add-flags "$out/lib/node_modules/renovate/dist/config-validator.js"
88     runHook postInstall
89   '';
91   passthru = {
92     tests = {
93       version = testers.testVersion { package = finalAttrs.finalPackage; };
94       vm-test = nixosTests.renovate;
95     };
96     updateScript = nix-update-script { };
97   };
99   meta = {
100     description = "Cross-platform Dependency Automation by Mend.io";
101     homepage = "https://github.com/renovatebot/renovate";
102     changelog = "https://github.com/renovatebot/renovate/releases/tag/${finalAttrs.version}";
103     license = lib.licenses.agpl3Only;
104     maintainers = with lib.maintainers; [
105       marie
106       natsukium
107     ];
108     mainProgram = "renovate";
109     platforms = nodejs.meta.platforms;
110   };