Merge branch 'nixpart-1.0-preparations'.

Partially and temporarily addresses NixOS/nixops#228.

We now have an up-to-date version of Blivet and a bunch of its dependen-
cies as well as the old nixpart 0.4 with all its old and crappy
dependencies, which should fix _simple_ partitioning layouts for NixOps.

Also, nixpart 1.0 is now marked as broken, because it is not yet
released and this branch is more of a preparation and "damage control"
in case I shouldn't manage to finish nixpart + nixos-assimilate in time
for the next NixOS release.
This commit is contained in:
aszlig 2014-10-22 08:23:31 +02:00
commit 57aaf3d36e
No known key found for this signature in database
GPG Key ID: D0EBD0EC8C2DC961
21 changed files with 630 additions and 52 deletions

View File

@ -364,6 +364,7 @@
./tasks/filesystems/cifs.nix
./tasks/filesystems/ext.nix
./tasks/filesystems/f2fs.nix
./tasks/filesystems/jfs.nix
./tasks/filesystems/nfs.nix
./tasks/filesystems/reiserfs.nix
./tasks/filesystems/unionfs-fuse.nix

View File

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
with lib;
let
inInitrd = any (fs: fs == "jfs") config.boot.initrd.supportedFilesystems;
in
{
config = mkIf (any (fs: fs == "jfs") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.jfsutils ];
boot.initrd.kernelModules = mkIf inInitrd [ "jfs" ];
boot.initrd.extraUtilsCommands = mkIf inInitrd ''
cp -v ${pkgs.jfsutils}/sbin/fsck.jfs "$out/bin/"
'';
};
}

View File

@ -234,6 +234,7 @@ in rec {
# nix-build tests/login.nix -A result.
tests.avahi = callTest tests/avahi.nix {};
tests.bittorrent = callTest tests/bittorrent.nix {};
tests.blivet = callTest tests/blivet.nix {};
tests.containers = callTest tests/containers.nix {};
tests.firefox = callTest tests/firefox.nix {};
tests.firewall = callTest tests/firewall.nix {};

85
nixos/tests/blivet.nix Normal file
View File

@ -0,0 +1,85 @@
import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
name = "blivet";
machine = {
environment.systemPackages = [ pkgs.python blivet mock ];
boot.supportedFilesystems = [ "btrfs" "jfs" "reiserfs" "xfs" ];
virtualisation.memorySize = 768;
};
debugBlivet = false;
debugProgramCalls = false;
pythonTestRunner = pkgs.writeText "run-blivet-tests.py" ''
import sys
import logging
from unittest import TestLoader
from unittest.runner import TextTestRunner
${pkgs.lib.optionalString debugProgramCalls ''
blivet_program_log = logging.getLogger("program")
blivet_program_log.setLevel(logging.DEBUG)
blivet_program_log.addHandler(logging.StreamHandler(sys.stderr))
''}
${pkgs.lib.optionalString debugBlivet ''
blivet_log = logging.getLogger("blivet")
blivet_log.setLevel(logging.DEBUG)
blivet_log.addHandler(logging.StreamHandler(sys.stderr))
''}
runner = TextTestRunner(verbosity=2, failfast=False, buffer=False)
result = runner.run(TestLoader().discover('tests/', pattern='*_test.py'))
sys.exit(not result.wasSuccessful())
'';
blivetTest = pkgs.writeScript "blivet-test.sh" ''
#!${pkgs.stdenv.shell} -e
# Use the hosts temporary directory, because we have a tmpfs within the VM
# and we don't want to increase the memory size of the VM for no reason.
mkdir -p /tmp/xchg/bigtmp
TMPDIR=/tmp/xchg/bigtmp
export TMPDIR
mkPythonPath() {
nix-store -qR "$@" \
| sed -e 's|$|/lib/${pkgs.python.libPrefix}/site-packages|'
}
cp -Rd "${blivet.src}/tests" .
# Skip SELinux tests
rm -f tests/formats_test/selinux_test.py
# Race conditions in growing/shrinking during resync
rm -f tests/devicelibs_test/mdraid_*
# Deactivate small BTRFS device test, because it fails with newer btrfsprogs
sed -i -e '/^class *BTRFSAsRootTestCase3(/,/^[^ ]/ {
/^class *BTRFSAsRootTestCase3(/d
/^$/d
/^ /d
}' tests/devicelibs_test/btrfs_test.py
# How on earth can these tests ever work even upstream? O_o
sed -i -e '/def testDiskChunk[12]/,/^ *[^ ]/{n; s/^ */&return # /}' \
tests/partitioning_test.py
# fix hardcoded temporary directory
sed -i \
-e '1i import tempfile' \
-e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \
tests/loopbackedtestcase.py
PYTHONPATH=".:$(mkPythonPath "${blivet}" "${mock}" | paste -sd :)" \
python "${pythonTestRunner}"
'';
testScript = ''
$machine->waitForUnit("multi-user.target");
$machine->succeed("${blivetTest}");
$machine->execute("rm -rf /tmp/xchg/bigtmp");
'';
})

View File

@ -67,7 +67,7 @@ in {
machine = { config, pkgs, ... }: {
environment.systemPackages = [
pkgs.pythonPackages.nixpart
pkgs.pythonPackages.nixpart0
pkgs.file pkgs.btrfsProgs pkgs.xfsprogs pkgs.lvm2
];
virtualisation.emptyDiskImages = [ 4096 4096 ];
@ -209,7 +209,7 @@ in {
ensurePartition("swap", "swap");
ensurePartition("boot", "f2fs");
ensurePartition("root", "f2fs");
remoteAndCheck;
remountAndCheck;
ensureMountPoint("/mnt/boot", "f2fs");
};

View File

@ -1,52 +1,42 @@
{ 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
{ stdenv, fetchFromGitHub, buildPythonPackage, pykickstart, pyparted, pyblock
, pyudev, six, libselinux, cryptsetup, multipath_tools, lsof, utillinux
}:
assert useNixUdev -> udev != null;
let
pyenable = { enablePython = true; };
selinuxWithPython = libselinux.override pyenable;
cryptsetupWithPython = cryptsetup.override pyenable;
in buildPythonPackage rec {
name = "blivet-${version}";
version = "0.17-1";
version = "0.67";
src = fetchurl {
url = "https://git.fedorahosted.org/cgit/blivet.git/snapshot/"
+ "${name}.tar.bz2";
sha256 = "1k3mws2q0ryb7422mml6idmaasz2i2v6ngyvg6d976dx090qnmci";
src = fetchFromGitHub {
owner = "dwlehman";
repo = "blivet";
rev = name;
sha256 = "1gk94ghjrxfqnx53hph1j2s7qcv86fjz48is7l099q9c24rjv8ky";
};
postPatch = ''
sed -i -e 's|"multipath"|"${multipath_tools}/sbin/multipath"|' \
blivet/devicelibs/mpath.py blivet/devices.py
sed -i \
-e 's|"multipath"|"${multipath_tools}/sbin/multipath"|' \
-e '/^def set_friendly_names/a \ return False' \
blivet/devicelibs/mpath.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
'');
sed -i -e '/pvscan/s/, *"--cache"//' blivet/devicelibs/lvm.py
'';
propagatedBuildInputs = [
pykickstart pyparted pyblock selinuxWithPython cryptsetupWithPython
] ++ stdenv.lib.optional useNixUdev udev;
pykickstart pyparted pyblock pyudev selinuxWithPython cryptsetupWithPython
six
];
# tests are currently _heavily_ broken upstream
# Tests are in <nixos/tests/blivet.nix>.
doCheck = false;
meta = {

View File

@ -1,14 +1,14 @@
{ stdenv, fetchurl, attr, acl, zlib, libuuid, e2fsprogs, lzo
, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt }:
let version = "3.16.2"; in
let version = "3.17"; in
stdenv.mkDerivation rec {
name = "btrfs-progs-${version}";
src = fetchurl {
url = "mirror://kernel/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v${version}.tar.xz";
sha256 = "0avk8x0k91zrqvlbk8r067aw49byr8hvvr4niy48d3ib1jz2mmnl";
sha256 = "187hdfh10hrabvldqmhg88wdv0s9r7hc5264v83ykir9wxqvzbzc";
};
buildInputs = [

View File

@ -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;
};
}

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,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;
};
}

View File

@ -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;
};
}

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,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;
};
}

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

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

View File

@ -1,20 +1,26 @@
{ stdenv, fetchurl, devicemapper, libuuid, gettext, readline
{ stdenv, fetchurl, devicemapper, libuuid, gettext, readline, perl, python
, utillinux, check, enableStatic ? false, hurd ? null }:
stdenv.mkDerivation rec {
name = "parted-3.1";
name = "parted-3.2";
src = fetchurl {
url = "mirror://gnu/parted/${name}.tar.xz";
sha256 = "05fa4m1bky9d13hqv91jlnngzlyn7y4rnnyq6d86w0dg3vww372y";
sha256 = "1r3qpg3bhz37mgvp9chsaa3k0csby3vayfvz8ggsqz194af5i2w5";
};
patches = stdenv.lib.optional doCheck ./gpt-unicode-test-fix.patch;
postPatch = stdenv.lib.optionalString doCheck ''
patchShebangs tests
'';
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;
++ stdenv.lib.optionals doCheck [ check perl python ];
configureFlags =
(if (readline != null)

View File

@ -0,0 +1,38 @@
From Ludo's suggestion at:
http://debbugs.gnu.org/cgi/bugreport.cgi?msg=8;bug=18258
diff --git a/tests/.t0251-gpt-unicode.sh.swp b/tests/.t0251-gpt-unicode.sh.swp
deleted file mode 100644
index b41c337..0000000
Binary files a/tests/.t0251-gpt-unicode.sh.swp and /dev/null differ
diff --git a/tests/t0251-gpt-unicode.sh b/tests/t0251-gpt-unicode.sh
index c845950..fa63a72 100755
--- a/tests/t0251-gpt-unicode.sh
+++ b/tests/t0251-gpt-unicode.sh
@@ -22,7 +22,24 @@ dev=loop-file
# create zeroed device
truncate -s 10m $dev || fail=1
-export LC_ALL=C.UTF-8
+found_locale=no
+for locale in en_US de_DE fr_FR es_ES
+do
+ LC_ALL="$locale.UTF-8"
+ export LC_ALL
+
+ # In a UTF-8 locale, the string below prints as 4 characters.
+ if [ `printf 'foo\341\264\244' | wc -m` -eq 4 ]; then
+ found_locale=yes
+ break
+ fi
+done
+
+if [ "$found_locale" != "yes" ]; then
+ echo "no valid UTF-8 locale found; skipping" >&2
+ exit 77
+fi
+
# create gpt label with named partition
part_name=$(printf 'foo\341\264\244')
parted -s $dev mklabel gpt mkpart primary ext2 1MiB 2MiB name 1 $part_name > empty 2>&1 || fail=1

View File

@ -123,7 +123,7 @@ let
# This is used for NixOps to make sure we won't break it with the next major
# version of nixpart.
nixpart0 = self.nixpart;
nixpart0 = callPackage ../tools/filesystems/nixpart/0.4 { };
pitz = callPackage ../applications/misc/pitz { };
@ -6518,6 +6518,7 @@ let
};
};
pycapnp = buildPythonPackage rec {
name = "pycapnp-0.4.4";
disabled = isPyPy || isPy3k;
@ -6857,6 +6858,17 @@ let
sha256 = "17wq4invmv1nfazaksf59ymqyvgv3i8h4q03ry2az0s9lldyg3dv";
};
patches = singleton (pkgs.fetchurl {
url = "https://www.redhat.com/archives/pyparted-devel/"
+ "2014-April/msg00000.html";
postFetch = ''
sed -i -ne '/<!--X-Body-of-Message-->/,/<!--X-Body-of-Message-End-->/ {
s/^<[^>]*>//; /^$/!p
}' "$downloadedFile"
'';
sha256 = "1lakhz3nvx0qacn90bj1nq13zqxphiw4d9dsc44gwa8nj24j2zws";
});
postPatch = ''
sed -i -e 's|/sbin/mke2fs|${pkgs.e2fsprogs}&|' tests/baseclass.py
sed -i -e '
@ -8481,11 +8493,11 @@ let
six = buildPythonPackage rec {
name = "six-1.7.3";
name = "six-1.8.0";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/s/six/${name}.tar.gz";
md5 = "784c6e5541c3c4952de9c0a966a0a80b";
md5 = "1626eb24cc889110c38f7e786ec69885";
};
# error: invalid command 'test'