Package: guix-patches;
Reported by: Philippe SWARTVAGHER <philippe.swartvagher <at> inria.fr>
Date: Thu, 7 Apr 2022 15:32:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Philippe SWARTVAGHER <philippe.swartvagher <at> inria.fr> To: guix-patches <at> gnu.org Cc: Philippe SWARTVAGHER <philippe.swartvagher <at> inria.fr> Subject: [PATCH] gnu: hwloc-1: Update to 1.11.13 and add upstream patch to fix a test Date: Thu, 7 Apr 2022 17:30:02 +0200
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 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 <at> 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 <at> 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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.