summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix43
1 files changed, 27 insertions, 16 deletions
diff --git a/flake.nix b/flake.nix
index b7e16a4..045b6d7 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,7 +1,7 @@
{
description = "A tool for modifying ELF executables and libraries";
- inputs.nixpkgs.url = "nixpkgs/nixos-20.09";
+ inputs.nixpkgs.url = "nixpkgs/nixos-21.05";
outputs = { self, nixpkgs }:
@@ -15,31 +15,23 @@
overlays = [ self.overlay ];
}
);
-
+ version = builtins.readFile ./version;
pkgs = nixpkgsFor.${"x86_64-linux"};
-
in
{
-
overlay = final: prev: {
-
- patchelf-new = final.stdenv.mkDerivation {
- name = "patchelf-${self.hydraJobs.tarball.version}";
- src = "${self.hydraJobs.tarball}/tarballs/*.tar.bz2";
- doCheck = true;
+ patchelf-new = final.callPackage ./patchelf.nix {
+ inherit version;
+ src = self;
};
-
};
hydraJobs = {
-
tarball =
pkgs.releaseTools.sourceTarball rec {
name = "patchelf-tarball";
- version = builtins.readFile ./version
- + "." + builtins.substring 0 8 self.lastModifiedDate
- + "." + (self.shortRev or "dirty");
+ inherit version;
versionSuffix = ""; # obsolete
src = self;
preAutoconf = "echo ${version} > version";
@@ -50,13 +42,29 @@
};
coverage =
- pkgs.releaseTools.coverageAnalysis {
+ (pkgs.releaseTools.coverageAnalysis {
name = "patchelf-coverage";
src = self.hydraJobs.tarball;
lcovFilter = ["*/tests/*"];
- };
+ }).overrideAttrs (old: {
+ preCheck = ''
+ # coverage cflag breaks this target
+ NIX_CFLAGS_COMPILE=''${NIX_CFLAGS_COMPILE//--coverage} make -C tests phdr-corruption.so
+ '';
+ });
build = forAllSystems (system: nixpkgsFor.${system}.patchelf-new);
+ build-sanitized = forAllSystems (system: nixpkgsFor.${system}.patchelf-new.overrideAttrs (old: {
+ configureFlags = [ "--with-asan " "--with-ubsan" ];
+ # -Wno-unused-command-line-argument is for clang, which does not like
+ # our cc wrapper arguments
+ CFLAGS = "-Werror -Wno-unused-command-line-argument";
+ }));
+
+ # x86_64-linux seems to be only working clangStdenv at the moment
+ build-sanitized-clang = nixpkgs.lib.genAttrs [ "x86_64-linux" ] (system: self.hydraJobs.build-sanitized.${system}.override {
+ stdenv = nixpkgsFor.${system}.llvmPackages_latest.libcxxStdenv;
+ });
release = pkgs.releaseTools.aggregate
{ name = "patchelf-${self.hydraJobs.tarball.version}";
@@ -64,6 +72,9 @@
[ self.hydraJobs.tarball
self.hydraJobs.build.x86_64-linux
self.hydraJobs.build.i686-linux
+ self.hydraJobs.build-sanitized.x86_64-linux
+ self.hydraJobs.build-sanitized.i686-linux
+ self.hydraJobs.build-sanitized-clang.x86_64-linux
];
meta.description = "Release-critical builds";
};