summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/kde-utils.scm80
-rw-r--r--gnu/packages/patches/ark-skip-xar-test.patch44
3 files changed, 125 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 9a3d8f6eca..3f132672c8 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -817,6 +817,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch	\
   %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch	\
   %D%/packages/patches/apr-skip-getservbyname-test.patch	\
+  %D%/packages/patches/ark-skip-xar-test.patch			\
   %D%/packages/patches/aspell-default-dict-dir.patch		\
   %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
diff --git a/gnu/packages/kde-utils.scm b/gnu/packages/kde-utils.scm
index 9b31ac2d9f..b5638876d5 100644
--- a/gnu/packages/kde-utils.scm
+++ b/gnu/packages/kde-utils.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Z572 <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,9 @@
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages imagemagick)
@@ -33,6 +37,82 @@
   #:use-module (gnu packages samba)
   #:use-module (gnu packages xorg))
 
+(define-public ark
+  (package
+    (name "ark")
+    (version "20.04.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://kde/stable/release-service/" version
+                                  "/src/ark-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0g5bfa1lc7mhrc2ngd4ldf33dpwr7gqrj95kp897pf632wwj23iw"))
+              ;; The libarchive package in Guix does not support
+              ;; xar; disable related tests.
+              (patches (search-patches "ark-skip-xar-test.patch"))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           ;; adddialogtest requires DISPLAY.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server")))
+               (setenv "HOME" (getcwd))
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1"))))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lrzip (assoc-ref inputs "lrzip"))
+                    (lzop  (assoc-ref inputs "lzop"))
+                    (p7zip (assoc-ref inputs "p7zip"))
+                    (unzip (assoc-ref inputs "unzip"))
+                    (zip   (assoc-ref inputs "zip"))
+                    (zstd  (assoc-ref inputs "zstd")))
+               (wrap-program (string-append out "/bin/ark")
+                 `("PATH" suffix
+                   ,(map (lambda (p)
+                           (string-append p "/bin"))
+                         (list lrzip lzop p7zip unzip zip zstd))))))))))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("kdoctools" ,kdoctools)
+       ("xorg-server" ,xorg-server)))
+    (inputs
+     `(("breeze-icons" ,breeze-icons)
+       ("karchive" ,karchive)
+       ("kconfig" ,kconfig)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("khtml" ,khtml)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kparts" ,kparts)
+       ("kpty" ,kpty)
+       ("kservice" ,kservice)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("libarchive" ,libarchive)
+       ("libzip" ,libzip)
+       ("qtbase" ,qtbase-5)
+       ("zlib" ,zlib)
+       ;; Command line tools used by Ark.
+       ("lrzip" ,lrzip)
+       ("lzop" ,lzop)
+       ("p7zip" ,p7zip)
+       ("unzip" ,unzip)
+       ("zip" ,zip)
+       ("zstd" ,zstd)))
+    (home-page "https://apps.kde.org/en/ark")
+    (synopsis "Graphical archiving tool")
+    (description "Ark is a graphical file compression/decompression utility
+with support for multiple formats, including tar, gzip, bzip2, rar and zip, as
+well as CD-ROM images.")
+    (license license:gpl2+)))
+
 (define-public kate
   (package
     (name "kate")
diff --git a/gnu/packages/patches/ark-skip-xar-test.patch b/gnu/packages/patches/ark-skip-xar-test.patch
new file mode 100644
index 0000000000..525201997b
--- /dev/null
+++ b/gnu/packages/patches/ark-skip-xar-test.patch
@@ -0,0 +1,44 @@
+Guix libarchive no support xar.
+
+--- ark-20.04.1.orig/autotests/kerfuffle/loadtest.cpp	2020-12-23 08:46:15.780782601 +0800
++++ ark-20.04.1/autotests/kerfuffle/loadtest.cpp	2020-12-23 11:13:17.101724042 +0800
+@@ -181,13 +181,6 @@
+         qDebug() << "lz4 executable not found in path. Skipping lz4 test.";
+     }
+ 
+-    QTest::newRow("xar archive")
+-            << QFINDTESTDATA("data/simplearchive.xar")
+-            << QStringLiteral("simplearchive")
+-            << true << false << false << false << false << 0 << Archive::Unencrypted
+-            << QStringLiteral("simplearchive")
+-            << QString();
+-
+     QTest::newRow("mimetype child of application/zip")
+             << QFINDTESTDATA("data/test.odt")
+             << QStringLiteral("test")
+--- ark-20.04.1.orig/autotests/kerfuffle/extracttest.cpp	2020-12-23 08:46:15.780782601 +0800
++++ ark-20.04.1/autotests/kerfuffle/extracttest.cpp	2020-12-23 11:14:02.801809620 +0800
+@@ -350,23 +350,6 @@
+         qDebug() << "lz4 executable not found in path. Skipping lz4 test.";
+     }
+ 
+-    archivePath = QFINDTESTDATA("data/simplearchive.xar");
+-    QTest::newRow("extract selected entries from a xar archive without path")
+-            << archivePath
+-            << QVector<Archive::Entry*> {
+-                   new Archive::Entry(this, QStringLiteral("dir1/file11.txt"), QString()),
+-                   new Archive::Entry(this, QStringLiteral("file4.txt"), QString())
+-               }
+-            << optionsNoPaths
+-            << 2;
+-
+-    archivePath = QFINDTESTDATA("data/simplearchive.xar");
+-    QTest::newRow("extract all entries from a xar archive with path")
+-            << archivePath
+-            << QVector<Archive::Entry*>()
+-            << optionsPreservePaths
+-            << 6;
+-
+     archivePath = QFINDTESTDATA("data/hello-1.0-x86_64.AppImage");
+     QTest::newRow("extract all entries from an AppImage with path")
+             << archivePath