Merge pull request #308829 from r-ryantm/auto-update/qlog
[NixPkgs.git] / pkgs / build-support / release / default.nix
blobf5ab2db1a7541437267e1ac3d45f9ba51ac20541
1 { lib, pkgs }:
3 let
4   inherit (lib) optionalString;
6   inherit (pkgs)
7     autoconf
8     automake
9     checkinstall
10     clang-analyzer
11     cov-build
12     enableGCOVInstrumentation
13     lcov
14     libtool
15     makeGCOVReport
16     runCommand
17     stdenv
18     vmTools
19     xz
20     ;
23 rec {
25   sourceTarball = args: import ./source-tarball.nix (
26     { inherit lib stdenv autoconf automake libtool;
27     } // args);
29   makeSourceTarball = sourceTarball; # compatibility
31   binaryTarball = args: import ./binary-tarball.nix (
32     { inherit lib stdenv;
33     } // args);
35   mvnBuild = args: import ./maven-build.nix (
36     { inherit lib stdenv;
37     } // args);
39   nixBuild = args: import ./nix-build.nix (
40     { inherit lib stdenv;
41     } // args);
43   coverageAnalysis = args: nixBuild (
44     { inherit lcov enableGCOVInstrumentation makeGCOVReport;
45       doCoverageAnalysis = true;
46     } // args);
48   clangAnalysis = args: nixBuild (
49     { inherit clang-analyzer;
50       doClangAnalysis = true;
51     } // args);
53   coverityAnalysis = args: nixBuild (
54     { inherit cov-build xz;
55       doCoverityAnalysis = true;
56     } // args);
58   rpmBuild = args: import ./rpm-build.nix (
59     { inherit lib vmTools;
60     } // args);
62   debBuild = args: import ./debian-build.nix (
63     { inherit lib stdenv vmTools checkinstall;
64     } // args);
66   aggregate =
67     { name, constituents, meta ? { } }:
68     pkgs.runCommand name
69       { inherit constituents meta;
70         preferLocalBuild = true;
71         _hydraAggregate = true;
72       }
73       ''
74         mkdir -p $out/nix-support
75         touch $out/nix-support/hydra-build-products
76         echo $constituents > $out/nix-support/hydra-aggregate-constituents
78         # Propagate build failures.
79         for i in $constituents; do
80           if [ -e $i/nix-support/failed ]; then
81             touch $out/nix-support/failed
82           fi
83         done
84       '';
86   /* Create a channel job which success depends on the success of all of
87      its contituents. Channel jobs are a special type of jobs that are
88      listed in the channel tab of Hydra and that can be suscribed.
89      A tarball of the src attribute is distributed via the channel.
91      - constituents: a list of derivations on which the channel success depends.
92      - name: the channel name that will be used in the hydra interface.
93      - src: should point to the root folder of the nix-expressions used by the
94             channel, typically a folder containing a `default.nix`.
96        channel {
97          constituents = [ foo bar baz ];
98          name = "my-channel";
99          src = ./.;
100        };
102   */
103   channel =
104     { name, src, constituents ? [], meta ? {}, isNixOS ? true, ... }@args:
105     stdenv.mkDerivation ({
106       preferLocalBuild = true;
107       _hydraAggregate = true;
109       dontConfigure = true;
110       dontBuild = true;
112       patchPhase = optionalString isNixOS ''
113         touch .update-on-nixos-rebuild
114       '';
116       installPhase = ''
117         mkdir -p $out/{tarballs,nix-support}
119         tar cJf "$out/tarballs/nixexprs.tar.xz" \
120           --owner=0 --group=0 --mtime="1970-01-01 00:00:00 UTC" \
121           --transform='s!^\.!${name}!' .
123         echo "channel - $out/tarballs/nixexprs.tar.xz" > "$out/nix-support/hydra-build-products"
124         echo $constituents > "$out/nix-support/hydra-aggregate-constituents"
126         # Propagate build failures.
127         for i in $constituents; do
128           if [ -e "$i/nix-support/failed" ]; then
129             touch "$out/nix-support/failed"
130           fi
131         done
132       '';
134       meta = meta // {
135         isHydraChannel = true;
136       };
137     } // removeAttrs args [ "meta" ]);