Commit graph

119 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 77376a215e debBuild: Allow setting a maintainer address 2014-02-06 14:36:50 +01:00
Eelco Dolstra 6b613f285c Fix nixBuild 2014-02-06 12:30:26 +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
Rob Vermaas 13e13f279b Do not assume a .rev attribute in available in src in maven-build.nix 2014-01-24 15:52:31 +01:00
Eelco Dolstra 16e626a80d Replace lib/java -> share/java 2014-01-09 13:01:38 +01:00
Eelco Dolstra 4728ec3f99 Fix some references to apacheAntOpenJDK 2014-01-06 14:36:13 +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
Peter Simons fd76a89bcb pkgs/build-support/release/nix-build.nix: unconfuse syntax highlighting 2013-04-18 12:18:39 +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
Eelco Dolstra 85d464a031 Remove some hackery 2013-03-06 16:57:57 +01:00
Eelco Dolstra a1c5d6642b build-support/release: Simplify meta.description
Phrases like "Build of a ..." are redundant because everything is a
build.
2013-03-01 12:50:29 +01:00
Eelco Dolstra 19ab71ff7a releaseTools.nixBuild: Put hydra-build-products in each output
Putting a single hydra-build-products in $out can cause $out to have
unnecessary dependencies on other outputs.
2013-02-18 13:57:02 +01:00
Eelco Dolstra a0a6f0edfd releaseTools.nixBuild: Support builds with multiple outputs 2013-02-13 13:54:32 +01:00
Rob Vermaas a049615e91 source-tarball.nix: try src.revCount when src.rev is not available. 2013-01-15 15:04:38 +01:00
Rob Vermaas 1d26619edf use openjdk as default for ant-build.nix 2012-08-25 19:39:49 +02:00
Shea Levy cff9e132e7 binary-tarball.nix: Forgot to source functions.sh 2012-08-09 07:12:20 -04:00
Petr Rockai ce77a5ceec Factor out repeated scriptlets from build-support/release/*.nix. 2012-07-23 20:33:04 +02:00
Petr Rockai 1eb5450bd4 Add --nodeps to rpm when test-uninstalling after a rpmBuild. 2012-07-23 20:31:51 +02:00
Petr Rockai e1c172ab6b Call rpm -U instead of rpm -i to test package installation. 2012-07-23 20:31:35 +02:00
Eelco Dolstra c2fd3c184b * Install/uninstall all RPMs in one operation. This is necessary if
the RPMs have dependencies between each other.

svn path=/nixpkgs/trunk/; revision=34303
2012-05-31 13:50:47 +00:00
Eelco Dolstra ed2564f750 * Set the version number of generated Debian packages. Note that dpkg
apparently doesn't allows underscores in version strings, so we
  replace them by dashes.  This is the exact opposite of RPM, which
  doesn't allow dashes.

svn path=/nixpkgs/trunk/; revision=34220
2012-05-24 15:07:38 +00:00
Eelco Dolstra 40609ab6d5 * Add a hook for running a test after the RPMs have been installed.
svn path=/nixpkgs/trunk/; revision=33966
2012-05-01 20:31:01 +00:00
Eelco Dolstra 8ecdd3a0aa * Don't do a mkdir in the postHook.
svn path=/nixpkgs/trunk/; revision=33569
2012-04-04 16:05:08 +00:00
Eelco Dolstra c3072a8df8 * When doing coverage builds, set useTempPrefix (in case we're doing
an "installcheck").

svn path=/nixpkgs/trunk/; revision=33261
2012-03-19 16:05:29 +00:00
Eelco Dolstra 9f683a5aac * After building an RPM, install and uninstall it.
svn path=/nixpkgs/trunk/; revision=33257
2012-03-19 13:40:57 +00:00
Eelco Dolstra ebd19ec705 * For "nix-build --run-env" it's desirable that $stdenv/setup (and by
extension postHook) does nothing else than set up the environment.
  It shouldn't touch $out because there may not be a $out.  So move
  the "imperative" bits of postHook into a separate phase.

svn path=/nixpkgs/trunk/; revision=33249
2012-03-19 03:45:36 +00:00
Eelco Dolstra 06d28ca8f1 * Support setting postPhases.
svn path=/nixpkgs/trunk/; revision=33247
2012-03-19 02:45:52 +00:00
Yury G. Kudryashov 0210e20b5a svn merge ^/nixpkgs/trunk
svn path=/nixpkgs/branches/stdenv-updates/; revision=32713
2012-03-01 07:04:39 +00:00
Ludovic Courtès bd68cc6f5b nix-build: Honor user-provided `failureHook'.
svn path=/nixpkgs/trunk/; revision=32680
2012-02-28 17:10:50 +00:00
Shea Levy ea195b2507 svn merge ^/nixpkgs/trunk
svn path=/nixpkgs/branches/stdenv-updates/; revision=32564
2012-02-25 19:57:34 +00:00
Arie Middelkoop 70d56e0638 Fixed autoconfPhase so that it additionally tests if ./bootstrap is a file (and not a directory with executable permission) before executing it.
svn path=/nixpkgs/trunk/; revision=32530
2012-02-23 23:50:56 +00:00
Eelco Dolstra c556a6ea46 * "ensureDir" -> "mkdir -p". "ensureDir" is a rather pointless
function, so obsolete it.

svn path=/nixpkgs/branches/stdenv-updates/; revision=31644
2012-01-18 20:16:00 +00:00
Eelco Dolstra f3c3f11520 * Debian requires/provides should be comma-separated.
svn path=/nixpkgs/trunk/; revision=31259
2012-01-03 22:33:48 +00:00
Eelco Dolstra 032617b0ab * Check whether any packages were generated. Apparently checkinstall
doesn't return a non-zero exit code if something goes wrong.

svn path=/nixpkgs/trunk/; revision=31258
2012-01-03 22:25:46 +00:00
Eelco Dolstra b583b816cc * Allow versionSuffix to be overriden.
svn path=/nixpkgs/trunk/; revision=30742
2011-12-05 14:16:30 +00:00
Rob Vermaas 0d62f0418c nix-build.nix: also recognize xz tarballs
svn path=/nixpkgs/trunk/; revision=29760
2011-10-11 14:47:56 +00:00
Eelco Dolstra a1f9b6f7b6 * Enable "make check" for checkinstall-based Debian builds. I always
assumed this was enabled...

svn path=/nixpkgs/trunk/; revision=29750
2011-10-11 09:13:31 +00:00
Eelco Dolstra 167c520570 * Added Debian 6.0 and Ubuntu 10.10.
svn path=/nixpkgs/trunk/; revision=25968
2011-02-14 16:52:32 +00:00
Rob Vermaas 2bd4d50f0d nix-build.nix/source-tarball.nix: remove -v flag when copying build directory, to avoid polluting the log
svn path=/nixpkgs/trunk/; revision=25404
2011-01-05 09:06:53 +00:00
Rob Vermaas f6426bad3b also add succeedOnFailure/keepBuildDirectory behaviour to source-tarball.nix
svn path=/nixpkgs/trunk/; revision=25400
2011-01-05 07:31:29 +00:00
Rob Vermaas 6016038097 nixBuild: add failurehook that saves build dir when succeedOnFailure = true and keepBuildDirectory = true
svn path=/nixpkgs/trunk/; revision=25243
2010-12-22 14:57:18 +00:00
Rob Vermaas cf8da224c6 fixing wrappers in ant-build
svn path=/nixpkgs/trunk/; revision=24637
2010-11-10 12:55:25 +00:00
Rob Vermaas 0df15241ca fixes to ant-build
svn path=/nixpkgs/trunk/; revision=24383
2010-10-20 12:30:03 +00:00
Rob Vermaas 5a7fa1d061 antBuild: minor changes
svn path=/nixpkgs/trunk/; revision=24376
2010-10-20 08:23:52 +00:00
Rob Vermaas b1332dca0f svn path=/nixpkgs/trunk/; revision=24366 2010-10-19 13:43:29 +00:00