Commit graph

23 commits

Author SHA1 Message Date
Austin Seipp
76b05b1630 releaseTools: add {clang,coverity}Analysis tools
These two expressions greatly simplify using the clang-analyzer or
Coverity static analyzer on your C/C++ projects. In fact, they are
identical to nixBuild in every way out of the box, and should 'Just
Work' providing your code can be compiled with Clang already.

The trick is that when running 'make', we actually just alias it to the
appropriate scan build tool, and add a post-build hook that will bundle
up the results appropriately and unalias it.

For Clang, we put the results in $out/analysis and add an 'analysis'
report to $out/nix-support/hydra-build-products pointing to the result
HTML - this means that if the analyzer finds any bugs, the HTML results
will automatically show up Hydra for easy viewing.

For Coverity, it's slightly different. Instead we run the build tool and
after we're done, we tar up the results in a format that Coverity Scan's
service understands. We put the tarball in $out/tarballs under the name
'foo-cov-int.xz' and add an entry for the file to hydra-build-products
as well for easy viewing.

Of course for Coverity you must then upload the build. A Hydra plugin to
do this is on the way, and it will automatically pick up the
cov-int.tar.xz for uploading.

Note that coverityAnalysis requires allowUnfree = true;, as well as the
cov-build tools, which you can download from https://scan.coverity.com -
they're not linked to your account or anything, it's just an annoying
registration wall.

Note this is a first draft. In particular, scan-build fixes the C/C++
compiler to be Clang, and it's perfectly reasonable to want to use Clang
for the analyzer but have scan-build invoke GCC instead.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2014-05-02 14:07:37 -05:00
Eelco Dolstra
497997cc38 Move generation of coverage reports from nixos/lib/testing to releaseTools
Also, turn some stdenv adapters into setup hooks.
2014-03-03 13:57:08 +01:00
Eelco Dolstra
80647127a3 Turn the coverage analysis stdenv adapters into setup hooks
Stdenv adapters are kinda weird and un-idiomatic (especially when they
don't actually change stdenv).  It's more idiomatic to say

  buildInputs = [ makeCoverageAnalysisReport ];
2014-02-05 19:18:33 +01:00
Eelco Dolstra
0ff6f51703 Build aggregates locally
They're so trivial that we don't want to copy all those dependencies
to remote machines.
2013-08-21 14:50:34 +02:00
Eelco Dolstra
7151b3719f Aggregates should not have a build product 2013-08-21 11:47:57 +02:00
Eelco Dolstra
68469ca342 releaseTools.aggregate: Rename ‘members’ to ‘constituents’ 2013-08-15 02:29:08 +02:00
Eelco Dolstra
d46858d5b8 Propagate failure of aggregate members 2013-08-15 01:40:33 +02:00
Eelco Dolstra
b38647766d releaseTools: Add ‘aggregate’ function
An aggregate is a trivial build that depends on other builds.  This is
intended to provide a declarative replacement of Hydra's "view"
mechanism.

For instance, you can define an aggregate named "critical" that
depends on a selected set of jobs:

  critical = releaseTools.aggregate
    { name = "foo-${tarball.version}";
      members =
        [ tarball
          build.x86_64-linux
          ...
        ];
      meta.description = "Release-critical builds";
    };

The "critical" build will only succeed if all its members
(dependencies) succeed.
2013-03-26 11:58:59 +01:00
Rob Vermaas
5a7fa1d061 antBuild: minor changes
svn path=/nixpkgs/trunk/; revision=24376
2010-10-20 08:23:52 +00:00
Rob Vermaas
addc98c02f initial version for maven builder
svn path=/nixpkgs/trunk/; revision=20558
2010-03-11 14:44:17 +00:00
Rob Vermaas
edb6a80ac3 ant builder
svn path=/nixpkgs/trunk/; revision=20395
2010-03-05 10:09:22 +00:00
Eelco Dolstra
d27514cb28 * Sync with the trunk once more.
* Turn on everything in Hydra.

svn path=/nixpkgs/branches/stdenv-updates/; revision=14806
2009-03-31 15:30:47 +00:00
Eelco Dolstra
f30fe65b3e * makeSourceTarball -> sourceTarball.
* Added a function binaryTarball to do a DESTDIR build into
  /usr/local.  Useful for making statically linked binaries.  However,
  it may be better to do this in a VM (since if you do it in a Nix
  build environment, you can still end up with a lot of Nix
  dependencies in your binaries, even if you do static linking).

svn path=/nixpkgs/trunk/; revision=14726
2009-03-26 14:11:59 +00:00
Eelco Dolstra
3593b97d63 * Sync with the trunk.
svn path=/nixpkgs/branches/stdenv-updates/; revision=14557
2009-03-16 12:45:27 +00:00
Eelco Dolstra
45081f330d * Append the version to the "name" attribute to make the store paths
of Hydra builds more distinct (e.g. "patchelf-build-0.5pre1234"
  instead of just "patchelf-build").  If the version isn't known,
  append at least the revision.

* Propagate the release name of the source tarball to Nix builds.
  Useful to provide sensible package names in channels.

svn path=/nixpkgs/trunk/; revision=14294
2009-03-02 13:45:48 +00:00
Eelco Dolstra
c1579d2e78 * stdenv branch: synced with the trunk.
svn path=/nixpkgs/branches/stdenv-updates/; revision=13785
2009-01-16 10:59:27 +00:00
Eelco Dolstra
d25aa3c8a5 * checkinstall: build properly on x86_64.
* checkinstall: get rid of the RUNPATH in the LD_PRELOAD library so
  that it works with native Glibc (e.g. in VM builds).
* debBuild: use our own checkinstall.  In particular this allows us to
  build Debs on x86_64.

svn path=/nixpkgs/trunk/; revision=13608
2008-12-10 17:12:19 +00:00
Eelco Dolstra
e4a8b61eba svn path=/nixpkgs/branches/stdenv-updates/; revision=13604 2008-12-10 10:58:07 +00:00
Eelco Dolstra
2b2bb11f32 * Always include "/nix/store/*" in lcovFilter.
svn path=/nixpkgs/trunk/; revision=13583
2008-12-04 15:32:30 +00:00
Eelco Dolstra
e056ebd34e * Don't repeat the standard definition of $phases.
svn path=/nixpkgs/trunk/; revision=13493
2008-11-28 16:12:50 +00:00
Eelco Dolstra
c90bd0756c * Automatically build Debian packages using checkinstall, as suggested
by Pjotr Prins a while back.  This could also be used to generate
  RPMs for packages that don't have a spec-file.

* Added checkinstall to Nixpkgs.  However we don't use our own build
  yet because with it "make install" segfaults in a Debian VM, while
  the pre-built binary does work.

svn path=/nixpkgs/trunk/; revision=13400
2008-11-25 02:20:41 +00:00
Eelco Dolstra
da8bcbd9a5 * Moved more stuff from the release tree.
svn path=/nixpkgs/trunk/; revision=13395
2008-11-25 00:20:51 +00:00
Eelco Dolstra
01acea6bbc * Start moving the Nix expressions that support the build farm
(e.g. making source tarballs, doing coverage analysis) to the
  Nixpkgs tree.  This makes it easier to run build farm jobs locally
  since you don't need to check out the "release" tree separately.
  Also it means one less input to declare for build farm jobs.

* Removed succeedOnFailure and separate logging of phases.  Hydra
  doesn't need that.

svn path=/nixpkgs/trunk/; revision=13388
2008-11-24 15:10:06 +00:00