diff options
Diffstat (limited to 'release.nix')
-rw-r--r-- | release.nix | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/release.nix b/release.nix new file mode 100644 index 0000000..b556a8e --- /dev/null +++ b/release.nix @@ -0,0 +1,118 @@ +{ patchelfSrc ? { outPath = ./.; revCount = 1234; shortRev = "abcdef"; } +, nixpkgs ? builtins.fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-20.03.tar.gz +, officialRelease ? false +, systems ? [ "x86_64-linux" "i686-linux" "aarch64-linux" ] +}: + +let + + pkgs = import nixpkgs { system = builtins.currentSystem or "x86_64-linux"; }; + + + jobs = rec { + + + tarball = + pkgs.releaseTools.sourceTarball rec { + name = "patchelf-tarball"; + version = builtins.readFile ./version + + (if officialRelease then "" else + "." + + ((if patchelfSrc ? lastModifiedDate + then builtins.substring 0 8 patchelfSrc.lastModifiedDate + else toString patchelfSrc.revCount or 0) + + "." + (patchelfSrc.shortRev or ""))); + versionSuffix = ""; # obsolete + src = patchelfSrc; + preAutoconf = "echo ${version} > version"; + postDist = '' + cp README.md $out/ + echo "doc readme $out/README.md" >> $out/nix-support/hydra-build-products + ''; + }; + + + coverage = + pkgs.releaseTools.coverageAnalysis { + name = "patchelf-coverage"; + src = tarball; + lcovFilter = ["*/tests/*"]; + }; + + + build = pkgs.lib.genAttrs systems (system: + + with import nixpkgs { inherit system; }; + + releaseTools.nixBuild { + name = "patchelf"; + src = tarball; + doCheck = !stdenv.isDarwin && system != "i686-cygwin" && system != "i686-solaris"; + buildInputs = lib.optionals stdenv.isLinux [ acl attr ]; + isReproducible = system != "aarch64-linux"; # ARM machines are still on Nix 1.11 + }); + + /* + rpm_fedora27x86_64 = makeRPM_x86_64 (diskImages: diskImages.fedora27x86_64); + + deb_debian9i386 = makeDeb_i686 (diskImages: diskImages.debian9i386); + deb_debian9x86_64 = makeDeb_x86_64 (diskImages: diskImages.debian9x86_64); + + deb_ubuntu1804i386 = makeDeb_i686 (diskImages: diskImages.ubuntu1804i386); + deb_ubuntu1804x86_64 = makeDeb_x86_64 (diskImages: diskImages.ubuntu1804x86_64); + */ + + + release = pkgs.releaseTools.aggregate + { name = "patchelf-${tarball.version}"; + constituents = + [ tarball + build.x86_64-linux + build.i686-linux + /* + rpm_fedora27x86_64 + deb_debian9i386 + deb_debian9x86_64 + deb_ubuntu1804i386 + deb_ubuntu1804x86_64 + */ + ]; + meta.description = "Release-critical builds"; + }; + + }; + + + makeRPM_i686 = makeRPM "i686-linux"; + makeRPM_x86_64 = makeRPM "x86_64-linux"; + + makeRPM = + system: diskImageFun: + + with import nixpkgs { inherit system; }; + + releaseTools.rpmBuild rec { + name = "patchelf-rpm"; + src = jobs.tarball; + diskImage = diskImageFun vmTools.diskImages; + meta = { schedulingPriority = 50; }; + }; + + + makeDeb_i686 = makeDeb "i686-linux"; + makeDeb_x86_64 = makeDeb "x86_64-linux"; + + makeDeb = + system: diskImageFun: + + with import nixpkgs { inherit system; }; + + releaseTools.debBuild { + name = "patchelf-deb"; + src = jobs.tarball; + diskImage = diskImageFun vmTools.diskImages; + meta = { schedulingPriority = 50; }; + }; + + +in jobs |