diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 43 |
1 files changed, 27 insertions, 16 deletions
@@ -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"; }; |