sdrangel: fix build on x86_64-darwin
[NixPkgs.git] / pkgs / build-support / release / rpm-build.nix
blobccbbd57107bdc3bfeffd56a61acdd8ac29085a06
1 # This function builds an RPM from a source tarball that contains a
2 # RPM spec file (i.e., one that can be built using `rpmbuild -ta').
4 { name ? "rpm-build"
5 , diskImage
6 , src, lib, vmTools
7 , ... } @ args:
9 vmTools.buildRPM (
11   removeAttrs args ["vmTools"] //
13   {
14     name = name + "-" + diskImage.name + (lib.optionalString (src ? version) "-${src.version}");
16     preBuild = ''
17       . ${./functions.sh}
18       propagateImageName
19       src=$(findTarball $src)
20     '';
22     postInstall = ''
23       declare -a rpms rpmNames
24       for i in $out/rpms/*/*.rpm; do
25         if echo $i | grep -vq "\.src\.rpm$"; then
26           echo "file rpm $i" >> $out/nix-support/hydra-build-products
27           rpms+=($i)
28           rpmNames+=("$(rpm -qp "$i")")
29         fi
30       done
32       echo "installing ''${rpms[*]}..."
33       rpm -Up ''${rpms[*]} --excludepath /nix/store
35       eval "$postRPMInstall"
37       echo "uninstalling ''${rpmNames[*]}..."
38       rpm -e ''${rpmNames[*]} --nodeps
40       for i in $out/rpms/*/*.src.rpm; do
41         echo "file srpm $i" >> $out/nix-support/hydra-build-products
42       done
44       for rpmdir in $extraRPMs ; do
45         echo "file rpm-extra $(ls $rpmdir/rpms/*/*.rpm | grep -v 'src\.rpm' | sort | head -1)" >> $out/nix-support/hydra-build-products
46       done
47     '';
49     meta = (lib.optionalAttrs (args ? meta) args.meta) // {
50       description = "RPM package for ${diskImage.fullName}";
51     };
52   }