[PATCH] gnu: hwloc-1: Update to 1.11.13 and add upstream patch to fix a test

  • Done
  • quality assurance status badge
Details
4 participants
  • Ludovic Courtès
  • Ludovic Courtès
  • Maxime Devos
  • Philippe SWARTVAGHER
Owner
unassigned
Submitted by
Philippe SWARTVAGHER
Severity
normal
P
P
Philippe SWARTVAGHER wrote on 7 Apr 2022 17:30
(address . guix-patches@gnu.org)(name . Philippe SWARTVAGHER)(address . philippe.swartvagher@inria.fr)
20220407153002.885065-1-philippe.swartvagher@inria.fr
gnu/packages/mpi.scm (hwloc-1):
* Update to 1.11.13
* Add upstream patch not in the release to fix one test on BTRFS filesystems
* Use the target of the redirection in the source URL, as advised by `guix lint`
* Apply `guix style`
---
gnu/packages/mpi.scm | 72 +++++++++----------
gnu/packages/patches/hwloc-1-test-btrfs.patch | 55 ++++++++++++++
2 files changed, 87 insertions(+), 40 deletions(-)
create mode 100644 gnu/packages/patches/hwloc-1-test-btrfs.patch

Toggle diff (176 lines)
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 94c32684fb..b0ec1b17ca 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -57,41 +57,37 @@ (define-public hwloc-1
;; to migrate to 2.0.
(package
(name "hwloc")
- (version "1.11.12")
+ (version "1.11.13")
(source (origin
(method url-fetch)
- (uri (string-append "https://www.open-mpi.org/software/hwloc/v"
- (version-major+minor version)
- "/downloads/hwloc-" version ".tar.bz2"))
+ (uri (string-append
+ "https://download.open-mpi.org/release/hwloc/v"
+ (version-major+minor version) "/hwloc-" version ".tar.bz2"))
(sha256
(base32
- "0za1b9lvrm3rhn0lrxja5f64r0aq1qs4m0pxn1ji2mbi8ndppyyx"))))
-
+ "1j69p8a1pjpbpwn4w7l4dfxmaxxqikchjzqw1ncw05zmcmvlnjd4"))
+ (patches (search-patches "hwloc-1-test-btrfs.patch"))))
(properties
- ;; Tell the 'generic-html' updater to monitor this URL for updates.
- `((release-monitoring-url
- . "https://www-lb.open-mpi.org/software/hwloc/current")))
-
+ ;; Tell the 'generic-html' updater to monitor this URL for updates.
+ `((release-monitoring-url #{.}#
+ "https://www-lb.open-mpi.org/software/hwloc/current")))
(build-system gnu-build-system)
- (outputs '("out" ;'lstopo' & co., depends on Cairo, libx11, etc.
- "lib" ;small closure
- "doc" ;400+ section 3 man pages
+ (outputs '("out" ;'lstopo' & co., depends on Cairo, libx11, etc.
+ "lib" ;small closure
+ "doc" ;400+ section 3 man pages
"debug"))
- (inputs
- `(("libx11" ,libx11)
- ("cairo" ,cairo)
- ("ncurses" ,ncurses)
- ("expat" ,expat)
- ,@(if (not (string-prefix? "armhf"
- (or (%current-target-system)
- (%current-system))))
- `(("numactl" ,numactl))
- '())))
+ (inputs `(("libx11" ,libx11) ("cairo" ,cairo)
+ ("ncurses" ,ncurses)
+ ("expat" ,expat)
+ ,@(if (not (string-prefix? "armhf"
+ (or (%current-target-system)
+ (%current-system))))
+ `(("numactl" ,numactl))
+ '())))
(propagated-inputs
- ;; hwloc.pc lists it in 'Requires.private'.
- (list libpciaccess))
- (native-inputs
- (list pkg-config))
+ ;; hwloc.pc lists it in 'Requires.private'.
+ (list libpciaccess))
+ (native-inputs (list pkg-config))
(arguments
`(#:configure-flags '("--localstatedir=/var")
#:phases
@@ -101,32 +97,28 @@ (define-public hwloc-1
;; Arrange to skip 'tests/linux-libnuma', which fails on some
;; machines: <https://github.com/open-mpi/hwloc/issues/213>.
(substitute* "tests/linux-libnuma.c"
- (("numa_available\\(\\)")
- "-1"))
- #t))
+ (("numa_available\\(\\)") "-1")) #t))
(add-after 'install 'refine-libnuma
;; Give -L arguments for libraries to avoid propagation
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "lib"))
- (numa (assoc-ref inputs "numactl")))
- (substitute* (map (lambda (f) (string-append out "/" f))
+ (let ((out (assoc-ref outputs "lib")) (numa (assoc-ref inputs
+ "numactl")))
+ (substitute* (map (lambda (f)
+ (string-append out "/" f))
'("lib/pkgconfig/hwloc.pc" "lib/libhwloc.la"))
- (("-lnuma" lib)
- (string-append "-L" numa "/lib " lib))))))
+ (("-lnuma" lib) (string-append "-L" numa "/lib " lib))))))
(add-after 'install 'avoid-circular-references
(lambda* (#:key outputs #:allow-other-keys)
(let ((lib (assoc-ref outputs "lib")))
;; Suppress the 'prefix=' and 'exec_prefix=' lines so that the
;; "lib" output doesn't refer to "out".
(substitute* (string-append lib "/lib/pkgconfig/hwloc.pc")
- (("^.*prefix=.*$")
- ""))
- #t)))
+ (("^.*prefix=.*$") "")) #t)))
(add-after 'install 'move-man3-pages
(lambda* (#:key outputs #:allow-other-keys)
;; Move section 3 man pages to the "doc" output.
- (let ((out (assoc-ref outputs "out"))
- (doc (assoc-ref outputs "doc")))
+ (let ((out (assoc-ref outputs "out")) (doc (assoc-ref outputs
+ "doc")))
(copy-recursively (string-append out "/share/man/man3")
(string-append doc "/share/man/man3"))
(delete-file-recursively (string-append out "/share/man/man3"))
diff --git a/gnu/packages/patches/hwloc-1-test-btrfs.patch b/gnu/packages/patches/hwloc-1-test-btrfs.patch
new file mode 100644
index 0000000000..32f2919abc
--- /dev/null
+++ b/gnu/packages/patches/hwloc-1-test-btrfs.patch
@@ -0,0 +1,55 @@
+From 093316a897a2eb4972a7a3a5888f40975d03f6bf Mon Sep 17 00:00:00 2001
+From: Brice Goglin <Brice.Goglin@inria.fr>
+Date: Tue, 5 Apr 2022 17:39:50 +0200
+Subject: [PATCH] linux: (partial) fix the discovery of hugepages on btrfs
+ fsroot
+
+btrfs always returns 1 in directory stat.st_nlink.
+It breaks make check in tests/linux/ because the hugepages discovery
+uses st_nlink to allocate the memory page_types array.
+
+Always allocate at least 3 page_types slots
+(enough for all known cases, 1 for normal, 2 for huge pages)
+
+(partially cherry-picked from commit 7f351cec9bfe54a031f35ad16c9cfb99784d76dc)
+
+We don't reallocate later if needed as in 2.x commit 7f351cec9bfe54a031f35ad16c9cfb99784d76dc
+because v1.11 doesn't deserve a complete fix. Just commit the minimal change
+so that tests/linux/2i386-2t-hugepagesizecount with HWLOC_PAGESIZE_DEBUG=4096
+doesn't crash in btrfs anymore (test-topology.sh fails during make check if /tmp is in btrfs).
+
+Thanks to Philippe Swartvagher for the report.
+
+Signed-off-by: Brice Goglin <Brice.Goglin@inria.fr>
+---
+ src/topology-linux.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/topology-linux.c b/src/topology-linux.c
+index 58c275fea..269eca7f5 100644
+--- a/src/topology-linux.c
++++ b/src/topology-linux.c
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright © 2009 CNRS
+- * Copyright © 2009-2019 Inria. All rights reserved.
++ * Copyright © 2009-2022 Inria. All rights reserved.
+ * Copyright © 2009-2013, 2015 Université Bordeaux
+ * Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved.
+ * Copyright © 2015 Intel, Inc. All rights reserved.
+@@ -2329,7 +2329,14 @@ hwloc_get_procfs_meminfo_info(struct hwloc_topology *topology,
+
+ err = hwloc_stat("/sys/kernel/mm/hugepages", &st, data->root_fd);
+ if (!err) {
+- types = 1 + st.st_nlink-2;
++ types = 1 /* normal non-huge size */ + st.st_nlink - 2 /* ignore . and .. */;
++ if (types < 3)
++ /* some buggy filesystems (e.g. btrfs when reading from fsroot)
++ * return wrong st_nlink for directories (always 1 for btrfs).
++ * use 3 as a sane default (default page + 2 huge sizes).
++ * hwloc_parse_hugepages_info() will extend it if needed.
++ */
++ types = 3;
+ has_sysfs_hugepages = 1;
+ }
+

base-commit: 7409f246e2b0be9a2b3b6ae246385f3f197e5fbb
--
2.30.2
M
M
Maxime Devos wrote on 7 Apr 2022 20:28
ab1d2c9ff0e995ce5ecb1ca748e6560f77425046.camel@telenet.be
Philippe SWARTVAGHER schreef op do 07-04-2022 om 17:30 [+0200]:
Toggle quote (2 lines)
> +                `((release-monitoring-url #{.}#

Why the #{ }#? The . is not a symbol, it tells the Scheme reader the
surrounding 'release-monitoring-url' and "https://" form a pair.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYk8tSxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rWMAP9FU1Z5V+UQVUrGBaffDm55msOb
pL43WMgLgiqf8H2MjQD/WamPuA/WvSWJM/YYYVsI1AJC0Ep8sBIIo9VX6OrAyQw=
=5PyG
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 7 Apr 2022 20:29
7a72bc8225a2c5030fbe913f146f31810d1e2e43.camel@telenet.be
Philippe SWARTVAGHER schreef op do 07-04-2022 om 17:30 [+0200]:
Toggle quote (5 lines)
> +              ("expat" ,expat)
> +              ,@(if (not (string-prefix? "armhf"
> +                                         (or (%current-target-system)
> +                                             (%current-system))))

Why?

Also, this is incorrect when cross-compiling, because (%current-target-
system) would be something like "arm-linux-gnueabihf". Consider using
one of the target-...? procedures from (guix utils) instead.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYk8tmBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7u/CAP0YE1J38/ZE3kxHF2jbasrNvIQD
IamINFg1dIzwzXRYTwEAgxUjj5PnCGNFm8+Dy4BsncuCX5IC8wgCidrpXp9fpgY=
=QS1t
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 11 Apr 2022 22:36
Re: bug#54767: [PATCH] gnu: hwloc-1: Update to 1.11.13 and add upstream patch to fix a test
(name . Philippe SWARTVAGHER)(address . philippe.swartvagher@inria.fr)
8735ijgxwt.fsf@gnu.org
Hi,

Philippe SWARTVAGHER <philippe.swartvagher@inria.fr> skribis:

Toggle quote (6 lines)
> gnu/packages/mpi.scm (hwloc-1):
> * Update to 1.11.13
> * Add upstream patch not in the release to fix one test on BTRFS filesystems
> * Use the target of the redirection in the source URL, as advised by `guix lint`
> * Apply `guix style`

I ended up pushing a variant of this, minus the ‘guix style’ reindent,
also taking Maxime’s suggestions into account:

649556ea09 gnu: hwloc: Remove trailing #t.
ac2d36559f gnu: hwloc@1: Use 'target-arm32?' in conditional.
d81d8b1258 gnu: hwloc: Remove input labels.
37fa61364e gnu: hwloc@1: Update to 1.11.13.

Thanks,
Ludo’.
L
L
Ludovic Courtès wrote on 11 Apr 2022 22:36
control message for bug #54767
(address . control@debbugs.gnu.org)
871qy3gxw8.fsf@gnu.org
close 54767
quit
?
Your comment

This issue is archived.

To comment on this conversation send an email to 54767@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 54767
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch