;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Mathieu Othacehe ;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu installer utils) #:use-module (guix utils) #:use-module (guix build utils) #:use-module (guix i18n) #:use-module (srfi srfi-34) #:use-module (ice-9 rdelim) #:use-module (ice-9 regex) #:use-module (ice-9 textual-ports) #:export (read-lines read-all nearest-exact-integer read-percentage run-shell-command)) (define* (read-lines #:optional (port (current-input-port))) "Read lines from PORT and return them as a list." (let loop ((line (read-line port)) (lines '())) (if (eof-object? line) (reverse lines) (loop (read-line port) (cons line lines))))) (define (read-all file) "Return the content of the given FILE as a string." (call-with-input-file file get-string-all)) (define (nearest-exact-integer x) "Given a real number X, return the nearest exact integer, with ties going to the nearest exact even integer." (inexact->exact (round x))) (define (read-percentage percentage) "Read PERCENTAGE string and return the corresponding percentage as a number. If no percentage is found, return #f" (let ((result (string-match "^([0-9]+)%$" percentage))) (and result (string->number (match:substring result 1))))) (define* (run-shell-command command #:key locale) "Run COMMAND, a string, with Bash, and in the given LOCALE. Return true if COMMAND exited successfully, #f otherwise." (define (pause) (format #t (G_ "Press Enter to continue.~%")) (read-line (current-input-port))) (call-with-temporary-output-file (lambda (file port) (when locale (let ((supported? (false-if-exception (setlocale LC_ALL locale)))) ;; If LOCALE is not supported, then set LANGUAGE, which might at ;; least give us translated messages. (if supported? (format port "export LC_ALL=\"~a\"~%" locale) (format port "export LANGUAGE=\"~a\"~%" (string-take locale (string-index locale #\_)))))) (format port "exec ~a~%" command) (close port) (guard (c ((invoke-error? c) (newline) (format (current-error-port) (G_ "Command failed with exit code ~a.~%") (invoke-error-exit-status c)) (pause) #f)) (invoke "bash" "--init-file" file) (newline) (pause) #t)))) abric-management.scm?id=d117c6b42217ee8b3c813578eb799800aa45bd10'>gnu: opensm: Update to 3.3.24....* gnu/packages/fabric-management.scm (opensm): Update to 3.3.24. Ludovic Courtès 2023-11-15gnu: opensm: Use gexps....* gnu/packages/fabric-management.scm (opensm)[arguments]: Use gexps. Ludovic Courtès 2023-11-15gnu: opensm: Use the right version string for the doc directory....Previously, when built with ‘--with-latest=opensm’, the package would install its documentation under a directory with the wrong version string. * gnu/packages/fabric-management.scm (opensm)[arguments]: Use the name and version of THIS-PACKAGE. Ludovic Courtès 2023-03-27gnu: ucx: Update to 1.14.0....* gnu/packages/fabric-management.scm (ucx): Update to 1.14.0. * gnu/packages/patches/ucx-tcp-iface-ioctl.patch: Adapt patch to new ucx version. Guillaume Le Vaillant 2023-02-23gnu: ibutils: Fix compilation....* gnu/packages/fabric-management.scm (ibutils)[arguments]: Add CFLAGS to #:configure-flags. Ludovic Courtès 2023-02-23gnu: ibutils: Use gexps....* gnu/packages/fabric-management.scm (ibutils)[arguments]: Use gexps. Ludovic Courtès 2023-02-23gnu: infiniband-diags: Use gexps....* gnu/packages/fabric-management.scm (infiniband-diags)[arguments]: Use gexps. Replace reference to '%outputs' with references to #:outputs. Ludovic Courtès 2023-02-23gnu: ucx: Use gexps....* gnu/packages/fabric-management.scm (ucx): Use gexps. Ludovic Courtès 2023-02-23gnu: ucx: Mark POWER9 as supported....* gnu/packages/fabric-management.scm (ucx)[supported-systems]: Add "powerpc64le-linux". Ludovic Courtès 2022-11-14gnu: infinibadn-diags: Don't use autogenerated tarball....* gnu/packages/fabric-management.scm (infiniband-diags)[source]: Download release tarball. [native-inputs]: Remove autoconf, automake, libtool. Efraim Flashner