mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-22 14:45:27 +00:00
* Moved the Debian and RPM closure generators to vm/default.nix.
* In addition to the `diskImages' set, there now is a `diskImageFuns' set that holds functions to build a disk image for a specific distribution, given a list of names of top-level packages that should be included in the image. This makes it easier to customise an image (e.g. if you want to build an RPM in an image with some very specific dependencies that aren't in the default image). * Added Fedora 6. svn path=/nixpkgs/trunk/; revision=11513
This commit is contained in:
parent
17bc8a1b90
commit
d000918941
|
@ -1,64 +0,0 @@
|
|||
with import ../../../.. {};
|
||||
|
||||
rec {
|
||||
|
||||
debClosureGenerator =
|
||||
{name, packages, urlPrefix, toplevel}:
|
||||
runCommand "${name}.nix" {} ''
|
||||
bunzip2 < ${packages} > ./Packages
|
||||
${perl}/bin/perl -I${dpkg} -w ${./deb-closure.pl} \
|
||||
./Packages ${urlPrefix} ${toString toplevel} > $out
|
||||
'';
|
||||
|
||||
|
||||
commonPackages = [
|
||||
"base-passwd"
|
||||
"dpkg"
|
||||
"libc6-dev"
|
||||
"perl"
|
||||
"sysvinit"
|
||||
"bash"
|
||||
"gzip"
|
||||
"bzip2"
|
||||
"tar"
|
||||
"grep"
|
||||
"findutils"
|
||||
"g++"
|
||||
"make"
|
||||
"curl"
|
||||
"patch"
|
||||
"diff"
|
||||
];
|
||||
|
||||
|
||||
# Ubuntu 7.10 "Gutsy Gibbon", i386.
|
||||
|
||||
ubuntu710i386Packages = fetchurl {
|
||||
url = mirror://ubuntu/dists/gutsy/main/binary-i386/Packages.bz2;
|
||||
sha1 = "8b52ee3d417700e2b2ee951517fa25a8792cabfd";
|
||||
};
|
||||
|
||||
ubuntu710i386Debs = debClosureGenerator {
|
||||
name = "ubuntu-7.10-gutsy-i386";
|
||||
packages = ubuntu710i386Packages;
|
||||
urlPrefix = mirror://ubuntu;
|
||||
toplevel = commonPackages;
|
||||
};
|
||||
|
||||
|
||||
# Debian 4.0r3 "Etch", i386.
|
||||
|
||||
debian40r3i386Packages = fetchurl {
|
||||
url = mirror://debian/dists/etch/main/binary-i386/Packages.bz2;
|
||||
sha256 = "7a8f2777315d71fd7321d1076b3bf5f76afe179fe66c2ce8e1ff4baed6424340";
|
||||
};
|
||||
|
||||
debian40r3i386Debs = debClosureGenerator {
|
||||
name = "debian-4.0r3-etch-i386";
|
||||
packages = debian40r3i386Packages;
|
||||
urlPrefix = mirror://debian;
|
||||
toplevel = commonPackages;
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -487,6 +487,157 @@ rec {
|
|||
});
|
||||
|
||||
|
||||
/* Generate a Nix expression containing fetchurl calls for the
|
||||
closure of a set of top-level RPM packages from the
|
||||
`primary.xml.gz' file of a Fedora or OpenSUSE distribution. */
|
||||
|
||||
rpmClosureGenerator =
|
||||
{name, packagesList, urlPrefix, packages}:
|
||||
|
||||
runCommand "${name}.nix" {buildInputs = [perl perlXMLSimple];} ''
|
||||
gunzip < ${packagesList} > ./packages.xml
|
||||
perl -w ${rpm/rpm-closure.pl} \
|
||||
./packages.xml ${urlPrefix} ${toString packages} > $out
|
||||
'';
|
||||
|
||||
|
||||
/* Helper function that combines rpmClosureGenerator and
|
||||
fillDiskWithRPMs to generate a disk image from a set of package
|
||||
names. */
|
||||
|
||||
makeImageFromRPMDist =
|
||||
{name, fullName, size ? 1024, urlPrefix, packagesList, packages, postInstall ? ""}:
|
||||
|
||||
fillDiskWithRPMs {
|
||||
inherit name fullName size postInstall;
|
||||
rpms = import (rpmClosureGenerator {
|
||||
inherit name packagesList urlPrefix packages;
|
||||
}) {inherit fetchurl;};
|
||||
};
|
||||
|
||||
|
||||
/* Like `rpmClosureGenerator', but now for Debian/Ubuntu releases
|
||||
(i.e. generate a closure from a Packages.bz2 file). */
|
||||
|
||||
debClosureGenerator =
|
||||
{name, packagesList, urlPrefix, packages}:
|
||||
|
||||
runCommand "${name}.nix" {} ''
|
||||
bunzip2 < ${packagesList} > ./Packages
|
||||
${perl}/bin/perl -I${dpkg} -w ${deb/deb-closure.pl} \
|
||||
./Packages ${urlPrefix} ${toString packages} > $out
|
||||
'';
|
||||
|
||||
|
||||
/* Helper function that combines debClosureGenerator and
|
||||
fillDiskWithDebs to generate a disk image from a set of package
|
||||
names. */
|
||||
|
||||
makeImageFromDebDist =
|
||||
{name, fullName, size ? 1024, urlPrefix, packagesList, packages, postInstall ? ""}:
|
||||
|
||||
fillDiskWithDebs {
|
||||
inherit name fullName size postInstall;
|
||||
debs = import (debClosureGenerator {
|
||||
inherit name packagesList urlPrefix packages;
|
||||
}) {inherit fetchurl;};
|
||||
};
|
||||
|
||||
|
||||
/* A bunch of functions that build disk images of various Linux
|
||||
distributions, given a set of top-level package names to be
|
||||
installed in the image. */
|
||||
|
||||
diskImageFuns = {
|
||||
|
||||
fedora7i386 = args: makeImageFromRPMDist ({
|
||||
name = "fedora-7-i386";
|
||||
fullName = "Fedora 7 (i386)";
|
||||
packagesList = fetchurl {
|
||||
url = mirror://fedora/linux/releases/7/Fedora/i386/os/repodata/primary.xml.gz;
|
||||
sha256 = "0zq7ifirj45wry7b2qkm12qhzzazal3hn610h5kwbrfr2xavs882";
|
||||
};
|
||||
urlPrefix = mirror://fedora/linux/releases/7/Fedora/i386/os;
|
||||
} // args);
|
||||
|
||||
fedora8i386 = args: makeImageFromRPMDist ({
|
||||
name = "fedora-8-i386";
|
||||
fullName = "Fedora 8 (i386)";
|
||||
packagesList = fetchurl {
|
||||
url = mirror://fedora/linux/releases/8/Fedora/i386/os/repodata/primary.xml.gz;
|
||||
sha256 = "0vr9345rrk0vhs4pc9cjp8npdkqz0xqyirv84vhyfn533m9ws36f";
|
||||
};
|
||||
urlPrefix = mirror://fedora/linux/releases/8/Fedora/i386/os;
|
||||
} // args);
|
||||
|
||||
ubuntu710i386 = args: makeImageFromDebDist ({
|
||||
name = "ubuntu-7.10-gutsy-i386";
|
||||
fullName = "Ubuntu 7.10 Gutsy (i386)";
|
||||
packagesList = fetchurl {
|
||||
url = mirror://ubuntu/dists/gutsy/main/binary-i386/Packages.bz2;
|
||||
sha1 = "8b52ee3d417700e2b2ee951517fa25a8792cabfd";
|
||||
};
|
||||
urlPrefix = mirror://ubuntu;
|
||||
} // args);
|
||||
|
||||
debian40r3i386 = args: makeImageFromDebDist ({
|
||||
name = "debian-4.0r3-etch-i386";
|
||||
fullName = "Debian 4.0r3 Etch (i386)";
|
||||
packagesList = fetchurl {
|
||||
url = mirror://debian/dists/etch/main/binary-i386/Packages.bz2;
|
||||
sha256 = "7a8f2777315d71fd7321d1076b3bf5f76afe179fe66c2ce8e1ff4baed6424340";
|
||||
};
|
||||
urlPrefix = mirror://ubuntu;
|
||||
} // args);
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* Common packages for Fedora images. */
|
||||
commonFedoraPackages = [
|
||||
"autoconf"
|
||||
"automake"
|
||||
"basesystem"
|
||||
"bzip2"
|
||||
"curl"
|
||||
"diffutils"
|
||||
"fedora-release"
|
||||
"findutils"
|
||||
"gawk"
|
||||
"gcc-c++"
|
||||
"gzip"
|
||||
"make"
|
||||
"patch"
|
||||
"perl"
|
||||
"pkgconfig"
|
||||
"rpm"
|
||||
"rpm-build"
|
||||
"tar"
|
||||
"unzip"
|
||||
];
|
||||
|
||||
|
||||
/* Common packages for Debian/Ubuntu images. */
|
||||
commonDebianPackages = [
|
||||
"base-passwd"
|
||||
"dpkg"
|
||||
"libc6-dev"
|
||||
"perl"
|
||||
"sysvinit"
|
||||
"bash"
|
||||
"gzip"
|
||||
"bzip2"
|
||||
"tar"
|
||||
"grep"
|
||||
"findutils"
|
||||
"g++"
|
||||
"make"
|
||||
"curl"
|
||||
"patch"
|
||||
"diff"
|
||||
];
|
||||
|
||||
|
||||
/* A bunch of disk images. */
|
||||
|
||||
diskImages = {
|
||||
|
@ -539,27 +690,13 @@ rec {
|
|||
rpms = import ./rpm/fedora-5-i386.nix {inherit fetchurl;};
|
||||
};
|
||||
|
||||
fedora8i386 = fillDiskWithRPMs {
|
||||
name = "fedora-8-i386";
|
||||
fullName = "Fedora 8 (i386)";
|
||||
size = 1024;
|
||||
rpms = import (import ./rpm/rpm-closure.nix).rpmsFedora8i386 {inherit fetchurl;};
|
||||
};
|
||||
fedora7i386 = diskImageFuns.fedora7i386 { packages = commonFedoraPackages; };
|
||||
fedora8i386 = diskImageFuns.fedora8i386 { packages = commonFedoraPackages; };
|
||||
|
||||
ubuntu710i386 = fillDiskWithDebs {
|
||||
name = "ubuntu-7.10-gutsy-i386";
|
||||
fullName = "Ubuntu 7.10 Gutsy (i386)";
|
||||
size = 1024;
|
||||
debs = import (import ./deb/deb-closure.nix).ubuntu710i386Debs {inherit fetchurl;};
|
||||
};
|
||||
|
||||
debian40r3i386 = fillDiskWithDebs {
|
||||
name = "debian-4.0r3-etch-i386";
|
||||
fullName = "Debian 4.0r3 Etch (i386)";
|
||||
size = 1024;
|
||||
debs = import (import ./deb/deb-closure.nix).debian40r3i386Debs {inherit fetchurl;};
|
||||
};
|
||||
ubuntu710i386 = diskImageFuns.ubuntu710i386 { packages = commonDebianPackages; };
|
||||
debian40r3i386 = diskImageFuns.debian40r3i386 { packages = commonDebianPackages; };
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
with import ../../../.. {};
|
||||
|
||||
rec {
|
||||
|
||||
rpmClosureGenerator =
|
||||
{name, packages, urlPrefix, toplevel}:
|
||||
runCommand "${name}.nix" {buildInputs = [perl perlXMLSimple];} ''
|
||||
gunzip < ${packages} > ./packages.xml
|
||||
perl -w ${./rpm-closure.pl} \
|
||||
./packages.xml ${urlPrefix} ${toString toplevel} > $out
|
||||
'';
|
||||
|
||||
|
||||
commonFedoraPackages = [
|
||||
"autoconf"
|
||||
"automake"
|
||||
"basesystem"
|
||||
"bzip2"
|
||||
"curl"
|
||||
"diffutils"
|
||||
"fedora-release"
|
||||
"findutils"
|
||||
"gawk"
|
||||
"gcc-c++"
|
||||
"gzip"
|
||||
"make"
|
||||
"patch"
|
||||
"perl"
|
||||
"pkgconfig"
|
||||
"rpm"
|
||||
"rpm-build"
|
||||
"tar"
|
||||
"unzip"
|
||||
];
|
||||
|
||||
|
||||
# Fedora 8, i386.
|
||||
|
||||
packagesFedora8i386 = fetchurl {
|
||||
url = mirror://fedora/linux/releases/8/Fedora/i386/os/repodata/primary.xml.gz;
|
||||
sha256 = "0vr9345rrk0vhs4pc9cjp8npdkqz0xqyirv84vhyfn533m9ws36f";
|
||||
};
|
||||
|
||||
rpmsFedora8i386 = rpmClosureGenerator {
|
||||
name = "fedora-8-i386";
|
||||
packages = packagesFedora8i386;
|
||||
urlPrefix = mirror://fedora/linux/releases/8/Fedora/i386/os;
|
||||
toplevel = [commonFedoraPackages];
|
||||
};
|
||||
|
||||
|
||||
}
|
Loading…
Reference in a new issue