From patchwork Sat Sep 14 21:20:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Giacomo Leidi X-Patchwork-Id: 67955 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 3412727BBEA; Sat, 14 Sep 2024 22:22:20 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE,SPF_HELO_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 62BA927BBE2 for ; Sat, 14 Sep 2024 22:22:19 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1spaDJ-0004RX-FM; Sat, 14 Sep 2024 17:21:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spaDH-0004Qr-9v for guix-patches@gnu.org; Sat, 14 Sep 2024 17:21:51 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1spaDH-0006gX-18 for guix-patches@gnu.org; Sat, 14 Sep 2024 17:21:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=d5Rw70+sRJ9orkWrDTwkwjPoB8W6HKNORelsQr+yQV4=; b=Ia5m3TIPNTyLt4yDCq0Xq9AOL5X+WZnSTYAjVxo67JuKMTSCSxq1LxCW39OdR/1gqC0xy4MWL2Ibln4KN/gMSDAEDsf+jHAdbnqgeZ4UdPymCoQgbRdFBGzW3b72+N6jSnQ/Zmgivhq3G/baKAdIEHS77iatOMikZBIFido2dSIUGwmGJWIylXN6i80oRlYHzfYStRiPbMPz4FihIdlcK8clunhTHY2EemsjWv4evuLt7EcaQ7oZAEyQwjO/Gq54pWlD3HdCV2UwfQDoY12vwPUeMoVovzGN3hTL+ooYxuxeHauEVEIOutUt0+ylhYd6Xlzbzp+c98PlXLyUKkpC5g==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1spaDR-0000F9-Od for guix-patches@gnu.org; Sat, 14 Sep 2024 17:22:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#73260] [PATCH 2/3] gnu: Add libguestfs-minimal. Resent-From: Giacomo Leidi Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 14 Sep 2024 21:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73260 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 73260@debbugs.gnu.org Cc: Giacomo Leidi Received: via spool by 73260-submit@debbugs.gnu.org id=B73260.1726348905872 (code B ref 73260); Sat, 14 Sep 2024 21:22:01 +0000 Received: (at 73260) by debbugs.gnu.org; 14 Sep 2024 21:21:45 +0000 Received: from localhost ([127.0.0.1]:47870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spaDA-0000Dz-Qp for submit@debbugs.gnu.org; Sat, 14 Sep 2024 17:21:45 -0400 Received: from confino.investici.org ([93.190.126.19]:24599) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spaD8-0000Dm-Eh for 73260@debbugs.gnu.org; Sat, 14 Sep 2024 17:21:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=autistici.org; s=stigmate; t=1726348890; bh=d5Rw70+sRJ9orkWrDTwkwjPoB8W6HKNORelsQr+yQV4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=One7/w25/0bte32V+/YoqriK8FeSmO0e2+s0anLHVjOd6smhun/n3L5jciCU+TFCl iFEtTs37ka/0TJGrcAxj1Qf+tdW17lVaul+3tLyY4TPM6S2aha++CpJDP0d1B1JDKY aw2UbASgaHj6OTE5XPvrXQlLVdAR1FSmU3m0odKE= Received: from mx1.investici.org (unknown [127.0.0.1]) by confino.investici.org (Postfix) with ESMTP id 4X5kd65pM5z11BF; Sat, 14 Sep 2024 21:21:30 +0000 (UTC) Received: from [93.190.126.19] (mx1.investici.org [93.190.126.19]) (Authenticated sender: goodoldpaul@autistici.org) by localhost (Postfix) with ESMTPSA id 4X5kd64Fkbz119H; Sat, 14 Sep 2024 21:21:30 +0000 (UTC) Date: Sat, 14 Sep 2024 23:20:57 +0200 Message-ID: X-Mailer: git-send-email 2.46.0 In-Reply-To: <247263a340d7dedbf4671ebaf75da540e7e62734.1726348858.git.goodoldpaul@autistici.org> References: <247263a340d7dedbf4671ebaf75da540e7e62734.1726348858.git.goodoldpaul@autistici.org> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Giacomo Leidi X-ACL-Warn: , Giacomo Leidi via Guix-patches X-Patchwork-Original-From: Giacomo Leidi via Guix-patches via From: Giacomo Leidi Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/virtualization.scm (libguestfs-minimal): New variable. * gnu/packages/patches/libguestfs-syms.patch: Add file. * gnu/local.mk: Add it. Change-Id: Ide22707724ecd41145243c9f41adc3f5557c593e --- gnu/local.mk | 1 + gnu/packages/patches/libguestfs-syms.patch | 26 +++++ gnu/packages/virtualization.scm | 128 +++++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 gnu/packages/patches/libguestfs-syms.patch diff --git a/gnu/local.mk b/gnu/local.mk index fcdf174099..74d77ea4a7 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1597,6 +1597,7 @@ dist_patch_DATA = \ %D%/packages/patches/libgeotiff-fix-tests-with-proj-9.3.0.patch \ %D%/packages/patches/libgeotiff-fix-tests-with-proj-9.3.1.patch \ %D%/packages/patches/libgeotiff-fix-tests-on-i386.patch \ + %D%/packages/patches/libguestfs-syms.patch \ %D%/packages/patches/libobjc2-unbundle-robin-map.patch \ %D%/packages/patches/libvirt-add-install-prefix.patch \ %D%/packages/patches/libziparchive-add-includes.patch \ diff --git a/gnu/packages/patches/libguestfs-syms.patch b/gnu/packages/patches/libguestfs-syms.patch new file mode 100644 index 0000000000..a4308eef5f --- /dev/null +++ b/gnu/packages/patches/libguestfs-syms.patch @@ -0,0 +1,26 @@ +diff -urN a/lib/Makefile.am b/lib/Makefile.am +--- a/lib/Makefile.am 2023-07-20 17:35:16.489080853 +0200 ++++ b/lib/Makefile.am 2023-07-20 17:35:47.305793499 +0200 +@@ -160,8 +160,7 @@ + # Force libtool to name the library 'libguestfs.so.0.$(MAX_PROC_NR).0'. + # Include the version script to limit which symbols are exported. + libguestfs_la_LDFLAGS = \ +- -version-info $(MAX_PROC_NR):0:$(MAX_PROC_NR) \ +- $(VERSION_SCRIPT_FLAGS)$(srcdir)/libguestfs.syms ++ -version-info $(MAX_PROC_NR):0:$(MAX_PROC_NR) + + if HAVE_FUSE + # XXX Unfortunately FUSE_CFLAGS defines _FILE_OFFSET_BITS=64. +diff -urN a/lib/Makefile.in b/lib/Makefile.in +--- a/lib/Makefile.in 2023-07-20 17:35:16.489080853 +0200 ++++ b/lib/Makefile.in 2023-07-20 17:36:05.474213641 +0200 +@@ -1109,8 +1109,7 @@ + # Force libtool to name the library 'libguestfs.so.0.$(MAX_PROC_NR).0'. + # Include the version script to limit which symbols are exported. + libguestfs_la_LDFLAGS = \ +- -version-info $(MAX_PROC_NR):0:$(MAX_PROC_NR) \ +- $(VERSION_SCRIPT_FLAGS)$(srcdir)/libguestfs.syms ++ -version-info $(MAX_PROC_NR):0:$(MAX_PROC_NR) + + @HAVE_LIBVIRT_TRUE@libvirt_is_version_SOURCES = libvirt-is-version.c + @HAVE_LIBVIRT_TRUE@libvirt_is_version_LDADD = \ diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 60f17ea630..8abc64527b 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -59,6 +59,7 @@ (define-module (gnu packages virtualization) #:use-module (gnu packages admin) #:use-module (gnu packages assembly) #:use-module (gnu packages attr) + #:use-module (gnu packages augeas) #:use-module (gnu packages autotools) #:use-module (gnu packages backup) #:use-module (gnu packages base) @@ -66,11 +67,13 @@ (define-module (gnu packages virtualization) #:use-module (gnu packages bison) #:use-module (gnu packages bootloaders) #:use-module (gnu packages build-tools) + #:use-module (gnu packages cdrom) #:use-module (gnu packages check) #:use-module (gnu packages cluster) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages containers) + #:use-module (gnu packages cpio) #:use-module (gnu packages cross-base) #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) @@ -83,6 +86,7 @@ (define-module (gnu packages virtualization) #:use-module (gnu packages documentation) #:use-module (gnu packages elf) #:use-module (gnu packages figlet) + #:use-module (gnu packages file) #:use-module (gnu packages firmware) #:use-module (gnu packages flex) #:use-module (gnu packages fonts) @@ -95,6 +99,7 @@ (define-module (gnu packages virtualization) #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) + #:use-module (gnu packages gperf) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) #:use-module (gnu packages haskell) @@ -3020,3 +3025,126 @@ (define-public hivex file available through a C API, or through a separate program to export the hive as XML.") (license license:lgpl2.1))) + +(define-public libguestfs-minimal + (package + (name "libguestfs-minimal") + (version "1.53.6") + (source (origin + (method url-fetch) + (uri (string-append "https://libguestfs.org/download/" + (version-major+minor version) + "-stable/libguestfs-" version ".tar.gz")) + (sha256 + (base32 + "0vssarc3n4kv26fyjmkrrcvh55v41fhycba43pij3rc2izl72s2y")) + (patches + (search-patches "libguestfs-syms.patch")))) + (build-system gnu-build-system) + (arguments + (list #:configure-flags + #~(list "--disable-appliance" + "--disable-daemon" + "--disable-static" + "--with-distro=\"Guix System\"") + #:make-flags #~'("REALLY_INSTALL=yes") + #:phases + #~(let* ((lib/ocaml (string-append #$output "/lib/ocaml"))) + (modify-phases %standard-phases + (add-after 'unpack 'patch-makefiles + (lambda _ + (for-each patch-shebang + (find-files ".")) + (for-each (lambda (makefile) + (substitute* "ocaml/Makefile.am" + (("\\$\\(DESTDIR\\)\\$\\(OCAMLLIB\\)") + lib/ocaml))) + '("ocaml/Makefile.am" + "ocaml/Makefile.in")))) + (replace 'bootstrap + (lambda _ + (invoke "autoreconf" "-vif"))) + (replace 'check + (lambda* (#:key tests? make-flags #:allow-other-keys) + (when tests? + (apply invoke `("make" ,@make-flags "check-direct"))))) + (add-before 'install 'set-rpath + (lambda _ + (for-each + (lambda (sofile) + (invoke "ls" "-la" "ocaml/") + ;; The ‘validate-runpath’ phase fails to find libguestfs.so.0. + (invoke (string-append #$(this-package-native-input "patchelf") + "/bin/patchelf") + "--add-rpath" (string-append #$output "/lib") sofile)) + '("perl/blib/arch/auto/Sys/Guestfs/Guestfs.so" + "ocaml/dllmlguestfs.so")))) + (replace 'install + (lambda* (#:key make-flags #:allow-other-keys) + (mkdir-p "temp-build-dir") + (apply invoke `("make" ,@make-flags "INSTALLDIRS=vendor" + "install")))) + (add-after 'install 'wrap-binaries + (lambda _ + (let ((bin (string-append #$output "/bin"))) + (for-each + (lambda (binary) + (use-modules (srfi srfi-1)) + (wrap-program binary + `("PERL5LIB" ":" prefix + (,(string-append #$output + "/lib/perl5/site_perl"))) + `("PATH" ":" prefix + ,(search-path-as-list + '("bin") + (map second + '#$(package-inputs this-package)))))) + (find-files bin))))) + (replace 'validate-documentation-location + (lambda _ + (let ((man-dir + (string-append #$output "/man")) + (info-dir + (string-append #$output "/info"))) + (for-each (lambda (d) + (invoke "rm" "-rf" d)) + (list man-dir info-dir))))))))) + (native-inputs (list autoconf + automake + augeas + bison + cpio + flex + gettext-minimal + gperf + libtool + ocaml + ocaml-findlib + ncurses + patchelf + perl + perl-getopt-long + perl-module-build + pkg-config + po4a + xorriso + xz + zstd)) + (inputs + (list file + fuse + jansson + hivex + libtirpc + pcre2 + readline + qemu)) + (home-page "https://libguestfs.org/") + (synopsis "Access and modify virtual machine disk images") + (description + "@code{libguestfs} is a set of tools for accessing and modifying virtual +machine (VM) disk images. You can use this for viewing and editing files inside +guests, scripting changes to VMs, monitoring disk used/free statistics, creating +guests, P2V, V2V, performing backups, cloning VMs, building VMs, formatting +disks, resizing disks, and much more.") + (license (list license:gpl2+ license:lgpl2.1+))))