nixpart: Move all 0.4 dependencies into one dir.

Once nixpart 1.0 is released we then only need to delete one single
directory rather than searching for needles in a haystack, that is, all
of <nixpkgs>. Also, it keeps my sanity at an almost healthy level.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
aszlig 2014-10-22 08:15:30 +02:00
parent 7676ff5973
commit 78ef5f9c14
No known key found for this signature in database
GPG Key ID: D0EBD0EC8C2DC961
14 changed files with 243 additions and 141 deletions

View File

@ -68,7 +68,7 @@ in {
machine = { config, pkgs, ... }: {
environment.systemPackages = [
pkgs.pythonPackages.nixpart0
pkgs.file pkgs.btrfsProgs pkgs.xfsprogs pkgs.lvm2_2_02_106
pkgs.file pkgs.btrfsProgs pkgs.xfsprogs pkgs.lvm2
];
virtualisation.emptyDiskImages = [ 4096 4096 ];
};

View File

@ -1,29 +0,0 @@
{ stdenv, fetchurl, buildPythonPackage, blivet
# Propagated to blivet
, useNixUdev ? null, udevSoMajor ? null
}:
let
blivetOverrides = stdenv.lib.filterAttrs (k: v: v != null) {
inherit useNixUdev udevSoMajor;
};
in buildPythonPackage rec {
name = "nixpart-${version}";
version = "0.4.1";
src = fetchurl {
url = "https://github.com/aszlig/nixpart/archive/v${version}.tar.gz";
sha256 = "0avwd8p47xy9cydlbjxk8pj8q75zyl68gw2w6fnkk78dcb1a3swp";
};
propagatedBuildInputs = [ (blivet.override blivetOverrides) ];
doCheck = false;
meta = {
description = "NixOS storage manager/partitioner";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.aszlig ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -7,11 +7,7 @@
assert useNixUdev -> udev != null;
let
pyenable = { enablePython = true; };
selinuxWithPython = libselinux.override pyenable;
cryptsetupWithPython = cryptsetup.override pyenable;
in buildPythonPackage rec {
buildPythonPackage rec {
name = "blivet-${version}";
version = "0.17-1";
@ -43,7 +39,7 @@ in buildPythonPackage rec {
'');
propagatedBuildInputs = [
pykickstart pyparted pyblock selinuxWithPython cryptsetupWithPython
pykickstart pyparted pyblock libselinux cryptsetup
] ++ stdenv.lib.optional useNixUdev udev;
# tests are currently _heavily_ broken upstream

View File

@ -0,0 +1,28 @@
{ stdenv, fetchurl, devicemapper, libgcrypt, libuuid, pkgconfig, popt
, enablePython ? true, python ? null
}:
assert enablePython -> python != null;
stdenv.mkDerivation rec {
name = "cryptsetup-1.6.3";
src = fetchurl {
url = "http://cryptsetup.googlecode.com/files/${name}.tar.bz2";
sha256 = "1n1qk5chyjspbiianrdb55fhb4wl0vfyqz2br05vfb24v4qlgbx2";
};
configureFlags = [ "--enable-cryptsetup-reencrypt" ]
++ stdenv.lib.optional enablePython "--enable-python";
buildInputs = [ devicemapper libgcrypt libuuid pkgconfig popt ]
++ stdenv.lib.optional enablePython python;
meta = {
homepage = http://code.google.com/p/cryptsetup/;
description = "LUKS for dm-crypt";
license = stdenv.lib.licenses.gpl2;
maintainers = with stdenv.lib.maintainers; [ viric chaoflow ];
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@ -0,0 +1,76 @@
{ stdenv, fetchurl, python, buildPythonPackage
# Propagated to blivet
, useNixUdev ? true, udevSoMajor ? null
# Propagated dependencies
, pkgs, urlgrabber
}:
let
blivet = import ./blivet.nix {
inherit stdenv fetchurl buildPythonPackage;
inherit pykickstart pyparted pyblock cryptsetup multipath_tools;
inherit useNixUdev udevSoMajor;
inherit (pkgs) lsof utillinux udev;
libselinux = pkgs.libselinux.override { enablePython = true; };
};
cryptsetup = import ./cryptsetup.nix {
inherit stdenv fetchurl python;
inherit (pkgs) pkgconfig libgcrypt libuuid popt;
devicemapper = lvm2;
};
dmraid = import ./dmraid.nix {
inherit stdenv fetchurl;
devicemapper = lvm2;
};
lvm2 = import ./lvm2.nix {
inherit stdenv fetchurl;
inherit (pkgs) pkgconfig utillinux udev coreutils;
};
multipath_tools = import ./multipath-tools.nix {
inherit stdenv fetchurl lvm2;
inherit (pkgs) readline udev libaio gzip;
};
parted = import ./parted.nix {
inherit stdenv fetchurl;
inherit (pkgs) utillinux readline libuuid gettext check;
devicemapper = lvm2;
};
pyblock = import ./pyblock.nix {
inherit stdenv fetchurl python lvm2 dmraid;
};
pykickstart = import ./pykickstart.nix {
inherit stdenv fetchurl python buildPythonPackage urlgrabber;
};
pyparted = import ./pyparted.nix {
inherit stdenv fetchurl python buildPythonPackage parted;
inherit (pkgs) pkgconfig e2fsprogs;
};
in buildPythonPackage rec {
name = "nixpart-${version}";
version = "0.4.1";
src = fetchurl {
url = "https://github.com/aszlig/nixpart/archive/v${version}.tar.gz";
sha256 = "0avwd8p47xy9cydlbjxk8pj8q75zyl68gw2w6fnkk78dcb1a3swp";
};
propagatedBuildInputs = [ blivet ];
doCheck = false;
meta = {
description = "NixOS storage manager/partitioner";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.aszlig ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -0,0 +1,34 @@
{ stdenv, fetchurl, lvm2, libaio, gzip, readline, udev }:
stdenv.mkDerivation rec {
name = "multipath-tools-0.4.9";
src = fetchurl {
url = "http://christophe.varoqui.free.fr/multipath-tools/${name}.tar.bz2";
sha256 = "04n7kazp1zrlqfza32phmqla0xkcq4zwn176qff5ida4a60whi4d";
};
sourceRoot = ".";
buildInputs = [ lvm2 libaio readline ];
preBuild =
''
makeFlagsArray=(GZIP="${gzip}/bin/gzip -9 -c" prefix=$out mandir=$out/share/man/man8 man5dir=$out/share/man/man5 LIB=lib)
substituteInPlace multipath/Makefile --replace /etc $out/etc
substituteInPlace kpartx/Makefile --replace /etc $out/etc
substituteInPlace kpartx/kpartx.rules --replace /sbin/kpartx $out/sbin/kpartx
substituteInPlace kpartx/kpartx_id --replace /sbin/dmsetup ${lvm2}/sbin/dmsetup
substituteInPlace libmultipath/defaults.h --replace /lib/udev/scsi_id ${udev}/lib/udev/scsi_id
substituteInPlace libmultipath/hwtable.c --replace /lib/udev/scsi_id ${udev}/lib/udev/scsi_id
'';
meta = {
description = "Tools for the Linux multipathing driver";
homepage = http://christophe.varoqui.free.fr/;
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -0,0 +1,29 @@
{ stdenv, fetchurl, python, lvm2, dmraid }:
stdenv.mkDerivation rec {
name = "pyblock-${version}";
version = "0.53";
src = fetchurl rec {
url = "http://pkgs.fedoraproject.org/repo/pkgs/python-pyblock/"
+ "${name}.tar.bz2/${md5}/${name}.tar.bz2";
md5 = "f6d33a8362dee358517d0a9e2ebdd044";
};
postPatch = ''
sed -i -e 's|/usr/include/python|${python}/include/python|' \
-e 's/-Werror *//' -e 's|/usr/|'"$out"'/|' Makefile
'';
buildInputs = [ python lvm2 dmraid ];
makeFlags = [
"USESELINUX=0"
"SITELIB=$(out)/lib/${python.libPrefix}/site-packages"
];
meta = {
description = "Interface for working with block devices";
license = stdenv.lib.licenses.gpl2Plus;
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, python, buildPythonPackage, fetchurl, urlgrabber }:
buildPythonPackage rec {
name = "pykickstart-${version}";
version = "1.99.39";
src = fetchurl rec {
url = "http://pkgs.fedoraproject.org/repo/pkgs/pykickstart/"
+ "${name}.tar.gz/${md5}/${name}.tar.gz";
md5 = "d249f60aa89b1b4facd63f776925116d";
};
postPatch = ''
sed -i -e "s/for tst in tstList/for tst in sorted(tstList, \
key=lambda m: m.__name__)/" tests/baseclass.py
'';
propagatedBuildInputs = [ urlgrabber ];
checkPhase = ''
export PYTHONPATH="$PYTHONPATH:."
${python}/bin/${python.executable} tests/baseclass.py -vv
'';
meta = {
homepage = "http://fedoraproject.org/wiki/Pykickstart";
description = "Read and write Fedora kickstart files";
license = stdenv.lib.licenses.gpl2Plus;
};
}

View File

@ -0,0 +1,42 @@
{ stdenv, fetchurl, pkgconfig, python, buildPythonPackage, parted, e2fsprogs }:
buildPythonPackage rec {
name = "pyparted-${version}";
version = "3.10";
src = fetchurl {
url = "https://fedorahosted.org/releases/p/y/pyparted/${name}.tar.gz";
sha256 = "17wq4invmv1nfazaksf59ymqyvgv3i8h4q03ry2az0s9lldyg3dv";
};
postPatch = ''
sed -i -e 's|/sbin/mke2fs|${e2fsprogs}&|' tests/baseclass.py
sed -i -e '
s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
' tests/test__ped_ped.py
'' + stdenv.lib.optionalString stdenv.isi686 ''
# remove some integers in this test case which overflow on 32bit systems
sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
tests/test__ped_ped.py
'';
preConfigure = ''
PATH="${parted}/sbin:$PATH"
'';
buildInputs = [ pkgconfig ];
propagatedBuildInputs = [ parted ];
checkPhase = ''
patchShebangs Makefile
make test PYTHON=${python.executable}
'';
meta = {
homepage = "https://fedorahosted.org/pyparted/";
description = "Python interface for libparted";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -1937,12 +1937,6 @@ let
parted = callPackage ../tools/misc/parted { hurd = null; };
# Needed for blivet 0.17 and nixpart 0.4
parted_3_1 = callPackage ../tools/misc/parted/3.1.nix {
hurd = null;
devicemapper = lvm2_2_02_106;
};
pitivi = callPackage ../applications/video/pitivi {
gst = gst_all_1;
clutter-gtk = clutter_gtk;
@ -7665,11 +7659,6 @@ let
cryptsetup = callPackage ../os-specific/linux/cryptsetup { };
# Needed for nixpart 0.4 and blivet 0.17
cryptsetup_oldlvm2 = callPackage ../os-specific/linux/cryptsetup {
devicemapper = lvm2_2_02_106;
};
cramfsswap = callPackage ../os-specific/linux/cramfsswap { };
darwin = let
@ -7717,11 +7706,6 @@ let
devicemapper = devicemapper.override {enable_dmeventd = true;};
};
# Needed for nixpart 0.4 and blivet 0.17
dmraid_rc15 = callPackage ../os-specific/linux/dmraid/rc15.nix {
devicemapper = lvm2_2_02_106;
};
drbd = callPackage ../os-specific/linux/drbd { };
dstat = callPackage ../os-specific/linux/dstat {
@ -8152,9 +8136,6 @@ let
lvm2 = callPackage ../os-specific/linux/lvm2 { };
# Needed for nixpart 0.4 and blivet 0.17
lvm2_2_02_106 = callPackage ../os-specific/linux/lvm2/2.02.106.nix { };
mdadm = callPackage ../os-specific/linux/mdadm { };
mingetty = callPackage ../os-specific/linux/mingetty { };
@ -8168,11 +8149,6 @@ let
multipath_tools = callPackage ../os-specific/linux/multipath-tools { };
# Needed for nixpart 0.4 and blivet 0.17
multipath_tools_oldlvm2 = callPackage ../os-specific/linux/multipath-tools {
lvm2 = lvm2_2_02_106;
};
musl = callPackage ../os-specific/linux/musl { };
nettools = callPackage ../os-specific/linux/net-tools { };

View File

@ -65,13 +65,6 @@ let
blivet = callPackage ../development/python-modules/blivet { };
blivet_0_17 = callPackage ../development/python-modules/blivet/0.17.nix {
pyblock = self.pyblock_0_53;
pyparted = self.pyparted_3_10;
multipath_tools = pkgs.multipath_tools_oldlvm2;
cryptsetup = pkgs.cryptsetup_oldlvm2;
};
dbus = callPackage ../development/python-modules/dbus {
dbus = pkgs.dbus;
};
@ -130,9 +123,7 @@ let
# This is used for NixOps to make sure we won't break it with the next major
# version of nixpart.
nixpart0 = callPackage ../tools/filesystems/nixpart/0.4.nix {
blivet = self.blivet_0_17;
};
nixpart0 = callPackage ../tools/filesystems/nixpart/0.4 { };
pitz = callPackage ../applications/misc/pitz { };
@ -6526,34 +6517,6 @@ let
};
};
# pyblock 0.53 with old LVM, needed for blivet 0.17 and nixpart 0.4
pyblock_0_53 = stdenv.mkDerivation rec {
name = "pyblock-${version}";
version = "0.53";
src = pkgs.fetchurl rec {
url = "http://pkgs.fedoraproject.org/repo/pkgs/python-pyblock/"
+ "${name}.tar.bz2/${md5}/${name}.tar.bz2";
md5 = "f6d33a8362dee358517d0a9e2ebdd044";
};
postPatch = ''
sed -i -e 's|/usr/include/python|${python}/include/python|' \
-e 's/-Werror *//' -e 's|/usr/|'"$out"'/|' Makefile
'';
buildInputs = with self; [ python pkgs.lvm2_2_02_106 pkgs.dmraid_rc15 ];
makeFlags = [
"USESELINUX=0"
"SITELIB=$(out)/lib/${python.libPrefix}/site-packages"
];
meta = {
description = "Interface for working with block devices";
license = stdenv.lib.licenses.gpl2Plus;
};
};
pycapnp = buildPythonPackage rec {
name = "pycapnp-0.4.4";
@ -6937,49 +6900,6 @@ let
};
};
# Needed for blivet 0.17 and nixpart 0.4
pyparted_3_10 = buildPythonPackage rec {
name = "pyparted-${version}";
version = "3.10";
disabled = isPyPy;
src = pkgs.fetchurl {
url = "https://fedorahosted.org/releases/p/y/pyparted/${name}.tar.gz";
sha256 = "17wq4invmv1nfazaksf59ymqyvgv3i8h4q03ry2az0s9lldyg3dv";
};
postPatch = ''
sed -i -e 's|/sbin/mke2fs|${pkgs.e2fsprogs}&|' tests/baseclass.py
sed -i -e '
s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
' tests/test__ped_ped.py
'' + optionalString stdenv.isi686 ''
# remove some integers in this test case which overflow on 32bit systems
sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
tests/test__ped_ped.py
'';
preConfigure = ''
PATH="${pkgs.parted}/sbin:$PATH"
'';
buildInputs = with self; [ pkgs.pkgconfig ];
propagatedBuildInputs = with self; [ pkgs.parted_3_1 ];
checkPhase = ''
patchShebangs Makefile
make test PYTHON=${python.executable}
'';
meta = {
homepage = "https://fedorahosted.org/pyparted/";
description = "Python interface for libparted";
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux;
};
};
pyptlib = buildPythonPackage (rec {
name = "pyptlib-${version}";