From 2e024cb867c57d589c8dee482fec131df08b7e39 Mon Sep 17 00:00:00 2001 From: oxalica Date: Mon, 22 Feb 2021 22:32:37 +0800 Subject: [PATCH] {partition-manager,libsForQt5.kpmcore}: 3.3.1 -> 4.2.0 and fix build --- .../development/libraries/kpmcore/default.nix | 42 +++++++++---- pkgs/tools/misc/partition-manager/default.nix | 60 +++++++++++++++---- 2 files changed, 77 insertions(+), 25 deletions(-) diff --git a/pkgs/development/libraries/kpmcore/default.nix b/pkgs/development/libraries/kpmcore/default.nix index 315a38197a1..c3621d37587 100644 --- a/pkgs/development/libraries/kpmcore/default.nix +++ b/pkgs/development/libraries/kpmcore/default.nix @@ -1,25 +1,38 @@ -{ stdenv, lib, fetchurl, extra-cmake-modules -, qtbase, kio -, libatasmart, parted -, util-linux }: +{ stdenv, lib, fetchurl, fetchpatch, extra-cmake-modules +, qca-qt5, kauth, kio, polkit-qt, qtbase +, util-linux +}: stdenv.mkDerivation rec { pname = "kpmcore"; - version = "3.3.0"; + # NOTE: When changing this version, also change the version of `partition-manager`. + version = "4.2.0"; src = fetchurl { url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz"; - sha256 = "0s6v0jfrhjg31ri5p6h9n4w29jvasf5dj954j3vfpzl91lygmmmq"; + hash = "sha256-MvW0CqvFZtzcJlya6DIpzorPbKJai6fxt7nKsKpJn54="; }; + patches = [ + # Fix build with `kcoreaddons` >= 5.77.0 + (fetchpatch { + url = "https://github.com/KDE/kpmcore/commit/07e5a3ac2858e6d38cc698e0f740e7a693e9f302.patch"; + sha256 = "sha256-LYzea888euo2HXM+acWaylSw28iwzOdZBvPBt/gjP1s="; + }) + # Fix crash when `fstab` omits mount options. + (fetchpatch { + url = "https://github.com/KDE/kpmcore/commit/eea84fb60525803a789e55bb168afb968464c130.patch"; + sha256 = "sha256-NJ3PvyRC6SKNSOlhJPrDDjepuw7IlAoufPgvml3fap0="; + }) + ]; + buildInputs = [ - qtbase - libatasmart - parted # we only need the library - + qca-qt5 + kauth kio + polkit-qt - util-linux # needs blkid (note that this is not provided by util-linux-compat) + util-linux # Needs blkid in configure script (note that this is not provided by util-linux-compat) ]; nativeBuildInputs = [ extra-cmake-modules ]; @@ -27,8 +40,11 @@ stdenv.mkDerivation rec { dontWrapQtApps = true; meta = with lib; { - maintainers = with lib.maintainers; [ peterhoeg ]; + description = "KDE Partition Manager core library"; + homepage = "https://invent.kde.org/system/kpmcore"; + license = with licenses; [ cc-by-40 cc0 gpl3Plus mit ]; + maintainers = with maintainers; [ peterhoeg oxalica ]; # The build requires at least Qt 5.14: - broken = lib.versionOlder qtbase.version "5.14"; + broken = versionOlder qtbase.version "5.14"; }; } diff --git a/pkgs/tools/misc/partition-manager/default.nix b/pkgs/tools/misc/partition-manager/default.nix index 845c0fec921..064590ef979 100644 --- a/pkgs/tools/misc/partition-manager/default.nix +++ b/pkgs/tools/misc/partition-manager/default.nix @@ -1,30 +1,66 @@ -{ mkDerivation, fetchurl, lib +{ mkDerivation, fetchurl, lib, makeWrapper , extra-cmake-modules, kdoctools, wrapGAppsHook, wrapQtAppsHook , kconfig, kcrash, kinit, kpmcore -, eject, libatasmart , util-linux, qtbase +, cryptsetup, lvm2, mdadm, smartmontools, systemdMinimal, util-linux +, btrfs-progs, dosfstools, e2fsprogs, exfat, f2fs-tools, fatresize, hfsprogs +, jfsutils, nilfs-utils, ntfs3g, reiser4progs, reiserfsprogs, udftools, xfsprogs, zfs }: let - pname = "partitionmanager"; + # External programs are resolved by `partition-manager` and then + # invoked by `kpmcore_externalcommand` from `kpmcore` as root. + # So these packages should be in PATH of `partition-manager`. + # https://github.com/KDE/kpmcore/blob/06f15334ecfbe871730a90dbe2b694ba060ee998/src/util/externalcommand_whitelist.h + runtimeDeps = lib.makeBinPath [ + cryptsetup + lvm2 + mdadm + smartmontools + systemdMinimal + util-linux + + btrfs-progs + dosfstools + e2fsprogs + exfat + f2fs-tools + fatresize + hfsprogs + jfsutils + nilfs-utils + ntfs3g + reiser4progs + reiserfsprogs + udftools + xfsprogs + zfs + + # FIXME: Missing command: tune.exfat hfsck hformat fsck.nilfs2 {fsck,mkfs,debugfs,tunefs}.ocfs2 + ]; + in mkDerivation rec { - name = "${pname}-${version}"; - version = "3.3.1"; + pname = "partitionmanager"; + # NOTE: When changing this version, also change the version of `kpmcore`. + version = "4.2.0"; src = fetchurl { - url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz"; - sha256 = "0jhggb4xksb0k0mj752n6pz0xmccnbzlp984xydqbz3hkigra1si"; + url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz"; + hash = "sha256-6Qlt1c47Eek6TkWWBzTyBZYJ1jfhtwsC9X5q5h6IhPg="; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook wrapQtAppsHook ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook wrapQtAppsHook makeWrapper ]; - # refer to kpmcore for the use of eject - buildInputs = [ eject libatasmart util-linux ]; propagatedBuildInputs = [ kconfig kcrash kinit kpmcore ]; + postFixup = '' + wrapProgram $out/bin/partitionmanager \ + --prefix PATH : "${runtimeDeps}" + ''; + meta = with lib; { description = "KDE Partition Manager"; - license = licenses.gpl2; + license = with licenses; [ cc-by-40 cc0 gpl3Plus lgpl3Plus mit ]; homepage = "https://www.kde.org/applications/system/kdepartitionmanager/"; - maintainers = with maintainers; [ peterhoeg ]; + maintainers = with maintainers; [ peterhoeg oxalica ]; }; }