diff options
author | Chris Rendle-Short <chris@killred.net> | 2019-06-06 14:45:13 +1000 |
---|---|---|
committer | Chris Rendle-Short <chris@killred.net> | 2019-06-06 14:45:13 +1000 |
commit | c0f8a9f49d6d7c485fb87c14d1bba1a0159627bc (patch) | |
tree | e09d302831bab277730fd36fbff864c4c7905c35 /pkgs/development/libraries/libblockdev | |
parent | 8b3d0b00d571878d0e5635f471ef3944b049478b (diff) |
libblockdev: add gptfdisk as a dependency
This fixes #62749 (sgdisk needed for creating luks-encrypted ext4 volumes via udisk2).
Diffstat (limited to 'pkgs/development/libraries/libblockdev')
-rw-r--r-- | pkgs/development/libraries/libblockdev/default.nix | 13 | ||||
-rw-r--r-- | pkgs/development/libraries/libblockdev/fix-paths.patch | 47 |
2 files changed, 57 insertions, 3 deletions
diff --git a/pkgs/development/libraries/libblockdev/default.nix b/pkgs/development/libraries/libblockdev/default.nix index eb38c2e38a69a..a807e39982739 100644 --- a/pkgs/development/libraries/libblockdev/default.nix +++ b/pkgs/development/libraries/libblockdev/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, gtk-doc, libxslt, docbook_xsl -, docbook_xml_dtd_43, python3, gobject-introspection, glib, udev, kmod, parted, libyaml +{ stdenv, fetchFromGitHub, substituteAll, autoreconfHook, pkgconfig, gtk-doc, libxslt, docbook_xsl +, docbook_xml_dtd_43, python3, gobject-introspection, glib, udev, kmod, parted, gptfdisk, libyaml , cryptsetup, lvm2, dmraid, utillinux, libbytesize, libndctl, nss, volume_key }: @@ -17,6 +17,13 @@ in stdenv.mkDerivation rec { outputs = [ "out" "dev" "devdoc" ]; + patches = [ + (substituteAll { + src = ./fix-paths.patch; + sgdisk = "${gptfdisk}/bin/sgdisk"; + }) + ]; + postPatch = '' patchShebangs scripts ''; @@ -26,7 +33,7 @@ in stdenv.mkDerivation rec { ]; buildInputs = [ - glib udev kmod parted cryptsetup lvm2 dmraid utillinux libbytesize libndctl nss volume_key libyaml + glib udev kmod parted gptfdisk cryptsetup lvm2 dmraid utillinux libbytesize libndctl nss volume_key libyaml ]; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/libblockdev/fix-paths.patch b/pkgs/development/libraries/libblockdev/fix-paths.patch new file mode 100644 index 0000000000000..85822165d8c5a --- /dev/null +++ b/pkgs/development/libraries/libblockdev/fix-paths.patch @@ -0,0 +1,47 @@ +--- a/src/plugins/part.c ++++ b/src/plugins/part.c +@@ -146,7 +146,7 @@ static GMutex deps_check_lock; + #define DEPS_LAST 2 + + static const UtilDep deps[DEPS_LAST] = { +- {"sgdisk", "0.8.6", NULL, "GPT fdisk \\(sgdisk\\) version ([\\d\\.]+)"}, ++ {"@sgdisk@", "0.8.6", NULL, "GPT fdisk \\(sgdisk\\) version ([\\d\\.]+)"}, + {"sfdisk", NULL, NULL, NULL}, + }; + +@@ -355,7 +355,7 @@ gboolean bd_part_create_table (const gchar *disk, BDPartTableType type, gboolean + } + + static gchar* get_part_type_guid_and_gpt_flags (const gchar *device, int part_num, guint64 *flags, GError **error) { +- const gchar *args[4] = {"sgdisk", NULL, device, NULL}; ++ const gchar *args[4] = {"@sgdisk@", NULL, device, NULL}; + gchar *output = NULL; + gchar **lines = NULL; + gchar **line_p = NULL; +@@ -1325,7 +1325,7 @@ gboolean bd_part_resize_part (const gchar *disk, const gchar *part, guint64 size + + + static gboolean set_gpt_flag (const gchar *device, int part_num, BDPartFlag flag, gboolean state, GError **error) { +- const gchar *args[5] = {"sgdisk", "--attributes", NULL, device, NULL}; ++ const gchar *args[5] = {"@sgdisk@", "--attributes", NULL, device, NULL}; + int bit_num = 0; + gboolean success = FALSE; + +@@ -1351,7 +1351,7 @@ static gboolean set_gpt_flag (const gchar *device, int part_num, BDPartFlag flag + } + + static gboolean set_gpt_flags (const gchar *device, int part_num, guint64 flags, GError **error) { +- const gchar *args[5] = {"sgdisk", "--attributes", NULL, device, NULL}; ++ const gchar *args[5] = {"@sgdisk@", "--attributes", NULL, device, NULL}; + guint64 real_flags = 0; + gchar *mask_str = NULL; + gboolean success = FALSE; +@@ -1791,7 +1791,7 @@ gboolean bd_part_set_part_name (const gchar *disk, const gchar *part, const gcha + * Tech category: %BD_PART_TECH_GPT-%BD_PART_TECH_MODE_MODIFY_PART + */ + gboolean bd_part_set_part_type (const gchar *disk, const gchar *part, const gchar *type_guid, GError **error) { +- const gchar *args[5] = {"sgdisk", "--typecode", NULL, disk, NULL}; ++ const gchar *args[5] = {"@sgdisk@", "--typecode", NULL, disk, NULL}; + const gchar *part_num_str = NULL; + gboolean success = FALSE; + guint64 progress_id = 0; |