about summary refs log tree commit diff
path: root/pkgs/tools/filesystems/nixpart
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2014-10-22 08:15:30 +0200
committeraszlig <aszlig@redmoonstudios.org>2014-10-22 08:22:59 +0200
commit78ef5f9c14785d99a9670c65c2735610735a0bc4 (patch)
treeb22c099ad0b3bbc7e7b262685fac0f3852aab26b /pkgs/tools/filesystems/nixpart
parent7676ff5973edf14292d4de94a5c5353a5ebb5fae (diff)
downloadnixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.tar
nixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.tar.gz
nixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.tar.bz2
nixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.tar.lz
nixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.tar.xz
nixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.tar.zst
nixlib-78ef5f9c14785d99a9670c65c2735610735a0bc4.zip
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>
Diffstat (limited to 'pkgs/tools/filesystems/nixpart')
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4.nix29
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/blivet.nix54
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/cryptsetup.nix28
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/default.nix76
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/dmraid.nix26
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/lvm2.nix58
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/multipath-tools.nix34
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/parted.nix57
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/pyblock.nix29
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/pykickstart.nix30
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/pyparted.nix42
11 files changed, 434 insertions, 29 deletions
diff --git a/pkgs/tools/filesystems/nixpart/0.4.nix b/pkgs/tools/filesystems/nixpart/0.4.nix
deleted file mode 100644
index 633f04320c37..000000000000
--- a/pkgs/tools/filesystems/nixpart/0.4.nix
+++ /dev/null
@@ -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;
-  };
-}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/blivet.nix b/pkgs/tools/filesystems/nixpart/0.4/blivet.nix
new file mode 100644
index 000000000000..44333b519cbe
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/blivet.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, buildPythonPackage, pykickstart, pyparted, pyblock
+, libselinux, cryptsetup, multipath_tools, lsof, utillinux
+, useNixUdev ? true, udev ? null
+# This is only used when useNixUdev is false
+, udevSoMajor ? 1
+}:
+
+assert useNixUdev -> udev != null;
+
+buildPythonPackage rec {
+  name = "blivet-${version}";
+  version = "0.17-1";
+
+  src = fetchurl {
+    url = "https://git.fedorahosted.org/cgit/blivet.git/snapshot/"
+        + "${name}.tar.bz2";
+    sha256 = "1k3mws2q0ryb7422mml6idmaasz2i2v6ngyvg6d976dx090qnmci";
+  };
+
+  postPatch = ''
+    sed -i -e 's|"multipath"|"${multipath_tools}/sbin/multipath"|' \
+      blivet/devicelibs/mpath.py blivet/devices.py
+    sed -i -e '/"wipefs"/ {
+      s|wipefs|${utillinux}/sbin/wipefs|
+      s/-f/--force/
+    }' blivet/formats/__init__.py
+    sed -i -e 's|"lsof"|"${lsof}/bin/lsof"|' blivet/formats/fs.py
+    sed -i -r -e 's|"(u?mount)"|"${utillinux}/bin/\1"|' blivet/util.py
+    sed -i '/pvscan/s/, *"--cache"//' blivet/devicelibs/lvm.py
+  '' + (if useNixUdev then ''
+    sed -i -e '/find_library/,/find_library/ {
+      c libudev = "${udev}/lib/libudev.so.1"
+    }' blivet/pyudev.py
+  '' else ''
+    sed -i \
+      -e '/^somajor *=/s/=.*/= ${toString udevSoMajor}/p' \
+      -e 's|common =.*|& + ["/lib/x86_64-linux-gnu", "/lib/i686-linux-gnu"]|' \
+      blivet/pyudev.py
+  '');
+
+  propagatedBuildInputs = [
+    pykickstart pyparted pyblock libselinux cryptsetup
+  ] ++ stdenv.lib.optional useNixUdev udev;
+
+  # tests are currently _heavily_ broken upstream
+  doCheck = false;
+
+  meta = {
+    homepage = "https://fedoraproject.org/wiki/Blivet";
+    description = "Module for management of a system's storage configuration";
+    license = [ "GPLv2+" "LGPLv2.1+" ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/cryptsetup.nix b/pkgs/tools/filesystems/nixpart/0.4/cryptsetup.nix
new file mode 100644
index 000000000000..c612512b8cc9
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/cryptsetup.nix
@@ -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;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/default.nix b/pkgs/tools/filesystems/nixpart/0.4/default.nix
new file mode 100644
index 000000000000..9ea2f9bfdc77
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/default.nix
@@ -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;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/dmraid.nix b/pkgs/tools/filesystems/nixpart/0.4/dmraid.nix
new file mode 100644
index 000000000000..35efa8533ab1
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/dmraid.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, devicemapper }:
+
+stdenv.mkDerivation rec {
+  name = "dmraid-1.0.0.rc15";
+
+  src = fetchurl {
+    url = "http://people.redhat.com/~heinzm/sw/dmraid/src/old/${name}.tar.bz2";
+    sha256 = "01bcaq0sc329ghgj7f182xws7jgjpdc41bvris8fsiprnxc7511h";
+  };
+
+  preConfigure = "cd */";
+
+  buildInputs = [ devicemapper ];
+
+  meta = {
+    description = "Old-style RAID configuration utility";
+    longDescritipn = ''
+      Old RAID configuration utility (still under development, though).
+      It is fully compatible with modern kernels and mdadm recognizes
+      its volumes. May be needed for rescuing an older system or nuking
+      the metadata when reformatting.
+    '';
+    maintainers = [ stdenv.lib.maintainers.raskin ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/lvm2.nix b/pkgs/tools/filesystems/nixpart/0.4/lvm2.nix
new file mode 100644
index 000000000000..9e2b0c900794
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/lvm2.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, pkgconfig, udev, utillinux, coreutils }:
+
+let
+  v = "2.02.106";
+in
+
+stdenv.mkDerivation {
+  name = "lvm2-${v}";
+
+  src = fetchurl {
+    url = "ftp://sources.redhat.com/pub/lvm2/releases/LVM2.${v}.tgz";
+    sha256 = "0nr833bl0q4zq52drjxmmpf7bs6kqxwa5kahwwxm9411khkxz0vc";
+  };
+
+  configureFlags =
+    "--disable-readline --enable-udev_rules --enable-udev_sync --enable-pkgconfig --enable-applib";
+
+  buildInputs = [ pkgconfig udev ];
+
+  preConfigure =
+    ''
+      substituteInPlace scripts/lvmdump.sh \
+        --replace /usr/bin/tr ${coreutils}/bin/tr
+      substituteInPlace scripts/lvm2_activation_generator_systemd_red_hat.c \
+        --replace /usr/sbin/lvm $out/sbin/lvm \
+        --replace /usr/bin/udevadm ${udev}/bin/udevadm
+
+      sed -i /DEFAULT_SYS_DIR/d Makefile.in
+      sed -i /DEFAULT_PROFILE_DIR/d conf/Makefile.in
+    '';
+
+  enableParallelBuilding = true;
+
+  #patches = [ ./purity.patch ];
+
+  # To prevent make install from failing.
+  preInstall = "installFlags=\"OWNER= GROUP= confdir=$out/etc\"";
+
+  # Install systemd stuff.
+  #installTargets = "install install_systemd_generators install_systemd_units install_tmpfiles_configuration";
+
+  postInstall =
+    ''
+      substituteInPlace $out/lib/udev/rules.d/13-dm-disk.rules \
+        --replace $out/sbin/blkid ${utillinux}/sbin/blkid
+
+      # Systemd stuff
+      mkdir -p $out/etc/systemd/system $out/lib/systemd/system-generators
+      cp scripts/blk_availability_systemd_red_hat.service $out/etc/systemd/system
+      cp scripts/lvm2_activation_generator_systemd_red_hat $out/lib/systemd/system-generators
+    '';
+
+  meta = {
+    homepage = http://sourceware.org/lvm2/;
+    descriptions = "Tools to support Logical Volume Management (LVM) on Linux";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/multipath-tools.nix b/pkgs/tools/filesystems/nixpart/0.4/multipath-tools.nix
new file mode 100644
index 000000000000..90722d74ace1
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/multipath-tools.nix
@@ -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;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/parted.nix b/pkgs/tools/filesystems/nixpart/0.4/parted.nix
new file mode 100644
index 000000000000..01b9f391a443
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/parted.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, devicemapper, libuuid, gettext, readline
+, utillinux, check, enableStatic ? false, hurd ? null }:
+
+stdenv.mkDerivation rec {
+  name = "parted-3.1";
+
+  src = fetchurl {
+    url = "mirror://gnu/parted/${name}.tar.xz";
+    sha256 = "05fa4m1bky9d13hqv91jlnngzlyn7y4rnnyq6d86w0dg3vww372y";
+  };
+
+  buildInputs = [ libuuid ]
+    ++ stdenv.lib.optional (readline != null) readline
+    ++ stdenv.lib.optional (gettext != null) gettext
+    ++ stdenv.lib.optional (devicemapper != null) devicemapper
+    ++ stdenv.lib.optional (hurd != null) hurd
+    ++ stdenv.lib.optional doCheck check;
+
+  configureFlags =
+       (if (readline != null)
+        then [ "--with-readline" ]
+        else [ "--without-readline" ])
+    ++ stdenv.lib.optional (devicemapper == null) "--disable-device-mapper"
+    ++ stdenv.lib.optional enableStatic "--enable-static";
+
+  doCheck = true;
+
+  preCheck =
+    stdenv.lib.optionalString doCheck
+      # The `t0400-loop-clobber-infloop.sh' test wants `mkswap'.
+      "export PATH=\"${utillinux}/sbin:$PATH\"";
+
+  meta = {
+    description = "Create, destroy, resize, check, and copy partitions";
+
+    longDescription = ''
+      GNU Parted is an industrial-strength package for creating, destroying,
+      resizing, checking and copying partitions, and the file systems on
+      them.  This is useful for creating space for new operating systems,
+      reorganising disk usage, copying data on hard disks and disk imaging.
+
+      It contains a library, libparted, and a command-line frontend, parted,
+      which also serves as a sample implementation and script backend.
+    '';
+
+    homepage = http://www.gnu.org/software/parted/;
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    maintainers = [
+      # Add your name here!
+      stdenv.lib.maintainers.ludo
+    ];
+
+    # GNU Parted requires libuuid, which is part of util-linux-ng.
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/pyblock.nix b/pkgs/tools/filesystems/nixpart/0.4/pyblock.nix
new file mode 100644
index 000000000000..2ce126d7169f
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/pyblock.nix
@@ -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;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/pykickstart.nix b/pkgs/tools/filesystems/nixpart/0.4/pykickstart.nix
new file mode 100644
index 000000000000..7bc3f54c2363
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/pykickstart.nix
@@ -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;
+  };
+}
diff --git a/pkgs/tools/filesystems/nixpart/0.4/pyparted.nix b/pkgs/tools/filesystems/nixpart/0.4/pyparted.nix
new file mode 100644
index 000000000000..67f318c863e1
--- /dev/null
+++ b/pkgs/tools/filesystems/nixpart/0.4/pyparted.nix
@@ -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;
+  };
+}