From unknown Sat Aug 16 16:54:01 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#56119] [PATCH] gnu: Add phoronix-test-suite. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 21 Jun 2022 05:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 56119 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 56119@debbugs.gnu.org Cc: Maxim Cournoyer X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.165578882225304 (code B ref -1); Tue, 21 Jun 2022 05:21:02 +0000 Received: (at submit) by debbugs.gnu.org; 21 Jun 2022 05:20:22 +0000 Received: from localhost ([127.0.0.1]:58928 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3WJC-0006Zv-Vf for submit@debbugs.gnu.org; Tue, 21 Jun 2022 01:20:22 -0400 Received: from lists.gnu.org ([209.51.188.17]:46532) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3WJ9-0006Zj-C1 for submit@debbugs.gnu.org; Tue, 21 Jun 2022 01:20:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45840) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o3WJ8-0003Rb-8K for guix-patches@gnu.org; Tue, 21 Jun 2022 01:20:11 -0400 Received: from mail-qv1-xf2e.google.com ([2607:f8b0:4864:20::f2e]:38707) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o3WJ5-0000IJ-G0 for guix-patches@gnu.org; Tue, 21 Jun 2022 01:20:10 -0400 Received: by mail-qv1-xf2e.google.com with SMTP id p31so18825149qvp.5 for ; Mon, 20 Jun 2022 22:20:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=HzSogctKVwhUeelN29UnlvpcANSx3ZWqaXwyHuUrVLA=; b=Gr2MHytQAdkp48ZeAeIuHqid7mpS7LcaR+EICTXSeQvcHi4vIhoqfnd2T3Ahd3KxAD sxEunuH7sxOR69PhrH1zb6cFqfA75CCnwt3QKbXnO+Fiv65mMasEKykOI8kM2y5O5zKp RaokKpa1+l9uwLi0E1TcSatmNHXJCuBqK5smzBAk/98UFxzv/9BeZNwc56MsSCbhBGXJ iNfT4oiWDNj4jJHQ5FrEy1C4gnLoB/lqHtuO2yEvuSASxj/pzuveGbtyrhaYlFolfxqr qdhyGrJzC5q4eJBAg8wLmTS1W3/EtoMpEf3LteP9wM5PTmgwyUDGI4kJ/vmaN50Bfdki hdrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=HzSogctKVwhUeelN29UnlvpcANSx3ZWqaXwyHuUrVLA=; b=NvTobTnsmvJ5XDjrkzRGsfs9lrbwHDj5diMhAcVev4XpO5HcpHPKP2u8PsYivc21PV AiAIYlt0U5KOnOHXWrXnp/HxavQFZRjtbn160A82h/OlPztVXZvuZLUZft78eWY31xLn +n7Xc0V5+S/H8yYUD+pIaeM4brlRG1+xfr49aYHOOCvfaFl4/AqYq0I3fjFDB1d/Zc3U 4+7jU8r/5ZcJ3wz+4HbwyK4RXABPORhn+Na/XM8aXo71k/poj2y1NY52XvSDJLbdrHzT TrRMWUGcIWsgBm3D7WUXu/C9aLi5H2S6+K7rRDCYuBh4DMOKajT4SaAkQqYaA9DbPF+8 eQEg== X-Gm-Message-State: AJIora+JTHoqLN3iQi0qV8zX26bxakcvYzlq0urvsErApQQzdBukjrps dxcwikx8X4RXzl+YL1ALxeaL/+ex7LYL+w== X-Google-Smtp-Source: AGRyM1uDf81DrwID+k+77oPosreFWDnvSmvBay5G6rx25+TrfiunpVMhiWiqt9Sg6niXov3AuR7DOA== X-Received: by 2002:a05:622a:14c9:b0:306:723a:2766 with SMTP id u9-20020a05622a14c900b00306723a2766mr22619999qtx.147.1655788805640; Mon, 20 Jun 2022 22:20:05 -0700 (PDT) Received: from localhost.localdomain (dsl-10-131-230.b2b2c.ca. [72.10.131.230]) by smtp.gmail.com with ESMTPSA id r14-20020a05620a298e00b006a6d60a39d0sm14961525qkp.5.2022.06.20.22.20.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 22:20:05 -0700 (PDT) From: Maxim Cournoyer Date: Tue, 21 Jun 2022 01:20:00 -0400 Message-Id: <20220621052000.1163-1-maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::f2e; envelope-from=maxim.cournoyer@gmail.com; helo=mail-qv1-xf2e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) * gnu/packages/patches/phoronix-test-suite-fsdg.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/benchmark.scm (phoronix-test-suite): New variable. (gcc-toolchain*): Likewise. --- gnu/local.mk | 1 + gnu/packages/benchmark.scm | 73 +++- .../patches/phoronix-test-suite-fsdg.patch | 311 ++++++++++++++++++ 3 files changed, 384 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/phoronix-test-suite-fsdg.patch diff --git a/gnu/local.mk b/gnu/local.mk index 197c8679eb..8b545b58f8 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1624,6 +1624,7 @@ dist_patch_DATA = \ %D%/packages/patches/perl-reproducible-build-date.patch \ %D%/packages/patches/perl-www-curl-fix-struct-void.patch \ %D%/packages/patches/perl-www-curl-remove-symbol.patch \ + %D%/packages/patches/phoronix-test-suite-fsdg.patch \ %D%/packages/patches/php-bug-74093-test.patch \ %D%/packages/patches/php-openssl_x509_checkpurpose_basic.patch \ %D%/packages/patches/picard-fix-id3-rename-test.patch \ diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index b167c6de6e..26e7a1867d 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -39,18 +39,20 @@ (define-module (gnu packages benchmark) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages c) #:use-module (gnu packages check) #:use-module (gnu packages compression) - #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages databases) #:use-module (gnu packages docbook) + #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages maths) #:use-module (gnu packages mpi) #:use-module (gnu packages opencl) #:use-module (gnu packages perl) + #:use-module (gnu packages php) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-science) @@ -60,6 +62,11 @@ (define-module (gnu packages benchmark) #:use-module (gnu packages xml) #:use-module (ice-9 match)) +;; Lazily resolve the gcc-toolchain to avoid a circular dependency. +(define gcc-toolchain* + (delay (module-ref (resolve-interface '(gnu packages commencement)) + 'gcc-toolchain))) + (define-public fio (package (name "fio") @@ -263,6 +270,70 @@ (define-public bonnie++ file metadata operations that can be performed per second.") (license license:gpl2))) ;GPL 2 only, see copyright.txt +(define-public phoronix-test-suite + (package + (name "phoronix-test-suite") + (version "10.8.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://phoronix-test-suite.com/releases/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "105shk78jy46nwj6vnlmgp3y3lv9klar3dmcgasy4bslm4l2wx2b")) + (patches (search-patches "phoronix-test-suite-fsdg.patch")))) + (arguments + (list + #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda _ + (invoke "./install-sh" #$output "--free-software-only"))) + (add-after 'install 'wrap-binary + (lambda _ + (let ((pts (string-append #$output "/bin/phoronix-test-suite"))) + (wrap-program pts + (list "PATH" 'prefix + (list (string-append #$(this-package-input "bash") + "/bin") + (string-append #$(this-package-input "coreutils") + "/bin") + (string-append #$(this-package-input "gzip") + "/bin") + (string-append #$(this-package-input "make") + "/bin") + (string-append #$(this-package-input "php") + "/bin") + (string-append #$(this-package-input "sed") + "/bin") + (string-append #$(this-package-input "tar") + "/bin") + (string-append #$(this-package-input "which") + "/bin")))))))))) + (build-system gnu-build-system) + (native-inputs (list python which)) + ;; Wrap the most basic build tools needed by Phoronix Test Suite to build + ;; simple tests such as 'fio'. + (inputs (list bash coreutils gnu-make gzip php sed tar which)) + ;; Phoronix Test Suite builds and caches the benchmarking tools itself; + ;; the user is required to manually install extra libraries depending on + ;; the selected test; but at least a working C/C++ toolchain is assumed to + ;; be available. + (propagated-inputs (list (force gcc-toolchain*))) + (home-page "https://www.phoronix-test-suite.com/") + (synopsis "Automated testing/benchmarking software") + (description + "The Phoronix Test Suite is a comprehensive testing and benchmarking platform +that provides an extensible framework for which new tests can be easily added. +It can carry out both qualitative and quantitative benchmarks in a clean, +reproducible, and easy-to-use manner, making it easy to compare one particular +setup against another one.") + (license license:gpl3+))) + (define-public python-locust (package (name "python-locust") diff --git a/gnu/packages/patches/phoronix-test-suite-fsdg.patch b/gnu/packages/patches/phoronix-test-suite-fsdg.patch new file mode 100644 index 0000000000..a06a6bcdc8 --- /dev/null +++ b/gnu/packages/patches/phoronix-test-suite-fsdg.patch @@ -0,0 +1,311 @@ +Submitted upstream at https://github.com/phoronix-test-suite/phoronix-test-suite/pull/642. + +diff --git a/delete-nonfree-metadata b/delete-nonfree-metadata +new file mode 100755 +index 000000000..5e98f0ab2 +--- /dev/null ++++ b/delete-nonfree-metadata +@@ -0,0 +1,198 @@ ++#!/usr/bin/env python3 ++ ++# Copyright (C) 2022, Maxim Cournoyer ++ ++# This program 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. ++ ++# This program 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 this program. If not, see . ++ ++# Commentary: ++# ++# This script prunes the 'ob-cache' test metadata cache from any ++# nonfree test. This is useful for users who concerned with running ++# only free software or distributions complying with the Free Software ++# Distribution Guidelines (GNU FSDG, ++# https://www.gnu.org/distros/free-system-distribution-guidelines.html). ++import argparse ++import json ++import logging ++import pathlib ++import pprint ++import re ++import shutil ++import xml.etree.ElementTree as ET ++ ++ ++logger = logging.getLogger(__name__) ++logging.basicConfig(level='INFO', format='%(levelname)s: %(message)s') ++ ++ ++DEFAULT_ROOT_DIR = pathlib.Path(__file__).parent.resolve() ++# Global cache used to keep the test/suite definition licenses, keyed ++# by their test name key (e.g., 'caffe'). ++TEST_DEFINITION_LICENSES = {} ++ ++ ++def get_test_definitions(root_dir=DEFAULT_ROOT_DIR): ++ """Return the list of all test definition XML files.""" ++ return sorted(pathlib.Path(root_dir).glob('**/test-definition.xml')) ++ ++ ++def get_suite_definitions(root_dir=DEFAULT_ROOT_DIR): ++ return sorted(pathlib.Path(root_dir).glob('**/suite-definition.xml')) ++ ++ ++def get_index_files(root_dir=DEFAULT_ROOT_DIR): ++ return sorted(pathlib.Path(root_dir).glob('**/*.index')) ++ ++ ++def sanitize_index_files(index_files, nonfree_test_names): ++ """Remove non free test entries from `index_files`.""" ++ for index_file in index_files: ++ with index_file.open() as f: ++ index = json.load(f) ++ filtered_tests = {k: v for k, v in index['tests'].items() ++ if k not in nonfree_test_names} ++ index['tests'] = filtered_tests ++ if index['suites']: ++ filtered_suites = {k: v for k, v in index['suites'].items() ++ if k not in nonfree_test_names} ++ index['suites'] = filtered_suites ++ ++ # Set the cached date to a distant time in the future so that it ++ index['main']['generated'] = 2**31 - 1 # 2038 Epochalypse on 32 bit ++ ++ with index_file.open('w') as f: ++ json.dump(index, f) ++ ++ ++def get_test_definition_license(test_definition_file, ++ root_dir=DEFAULT_ROOT_DIR): ++ """Return the licenses from `test_definition_file`, or None.""" ++ name = get_name_from_definition_file(test_definition_file) ++ if name in TEST_DEFINITION_LICENSES: ++ return TEST_DEFINITION_LICENSES[name] ++ ++ root = ET.parse(test_definition_file) ++ try: ++ license = next(root.iter('License')).text ++ except StopIteration: ++ # No license field; check if it extends another test. ++ try: ++ extended_test = next(root.iter('Extends')).text # e.g. 'pts/caffe' ++ extended_name = extended_test.split('/')[-1] ++ if extended_name in TEST_DEFINITION_LICENSES: ++ license = TEST_DEFINITION_LICENSES[extended_name] ++ else: ++ extended_definition_file = sorted( ++ pathlib.Path(root_dir).glob( ++ '**/test-profiles/' + extended_test ++ + '-*/test-definition.xml'))[-1] ++ license = get_test_definition_license(extended_definition_file, ++ root_dir) ++ except StopIteration: ++ logger.warning('could not find license for %s', ++ test_definition_file) ++ return None ++ ++ TEST_DEFINITION_LICENSES[name] = license ++ return license ++ ++ ++def is_test_definition_free(test_definition_file): ++ """True if `test_definition_file` has its license tag set to 'Free'.""" ++ license = get_test_definition_license(test_definition_file) ++ return license == 'Free' ++ ++ ++def is_suite_definition_free(suite_definition_file, nonfree_test_names): ++ """True if `suite_definition_file` is free. ++ ++ The suite definition is considered free when it doesn't reference ++ any test part of `nonfree_test_names`. ++ """ ++ root = ET.parse(suite_definition_file) ++ for test in root.iter('Test'): ++ test_name = test.text ++ name = test_name.split('/')[-1] # strip any prefix ++ if name in nonfree_test_names: ++ return False ++ ++ return True ++ ++ ++def get_name_from_definition_file(definition_file): ++ """Return the parent directory name of a definition file. ++ ++ The version information in stripped from the name.""" ++ parent_dir_name = pathlib.Path(definition_file).parent.name ++ # Strip the version from the name. ++ return re.search(r'^(.*)-', parent_dir_name).group(1) ++ ++ ++def get_default_user_config_file(root_dir): ++ return next(pathlib.Path(root_dir).glob('**/user-config-defaults.xml')) ++ ++ ++def disallow_refreshing_repositories(user_config_file): ++ """Set the 'AllowRefreshingRepositoryLists' option to FALSE.""" ++ config = ET.parse(user_config_file) ++ for option in config.iter('AllowRefreshingRepositoryLists'): ++ option.text = 'FALSE' ++ config.write(user_config_file) ++ ++ ++def main(root_dir): ++ # Gather data. ++ test_definitions = get_test_definitions(root_dir) ++ suite_definitions = get_suite_definitions(root_dir) ++ nonfree_test_definitions = [d for d in test_definitions ++ if not is_test_definition_free(d)] ++ nonfree_test_names = [get_name_from_definition_file(t) ++ for t in nonfree_test_definitions] ++ nonfree_suite_definitions = [ ++ s for s in suite_definitions ++ if not is_suite_definition_free(s, nonfree_test_names)] ++ nonfree_suite_names = [get_name_from_definition_file(s) ++ for s in nonfree_suite_definitions] ++ nonfree_definitions = nonfree_test_definitions + nonfree_suite_definitions ++ nonfree_definition_names = sorted(set(nonfree_test_names ++ + nonfree_suite_names)) ++ ++ # Delete nonfree definitions. ++ for nonfree_definition in nonfree_definitions: ++ shutil.rmtree(nonfree_definition.parent) ++ ++ # Delete nonfree entries in index files. ++ indexes = get_index_files(root_dir) ++ sanitize_index_files(indexes, nonfree_definition_names) ++ ++ logger.info('The following nonfree test suites were deleted:\n%s', ++ pprint.pformat([str(d) for d in nonfree_definitions])) ++ ++ # This is necessary to avoid downloading the ++ # OpenBenchmarking-provided tests metadata which includes all the ++ # tests, including teh proprietary ones. ++ user_config_file = get_default_user_config_file(root_dir) ++ disallow_refreshing_repositories(user_config_file) ++ logger.info('Disabled test metadata updates in default user config') ++ ++ ++if __name__ == '__main__': ++ parser = argparse.ArgumentParser( ++ description='Remove nonfree cached metadata') ++ parser.add_argument('--root-dir', type=str, ++ help='the Phoronix Test Suite root directory', ++ default=DEFAULT_ROOT_DIR) ++ args = parser.parse_args() ++ ++ main(args.root_dir) +diff --git a/documentation/phoronix-test-suite.md b/documentation/phoronix-test-suite.md +index c2e04ae4e..0c71ecf37 100644 +--- a/documentation/phoronix-test-suite.md ++++ b/documentation/phoronix-test-suite.md +@@ -817,7 +817,18 @@ The Phoronix Test Suite can be simply extracted from the downloaded *.tar.gz* or + + + ### Generic Installation +-Running *install-sh* from the root directory of the Phoronix Test Suite will install the software for system-wide access. By default the *phoronix-test-suite* executable is in */usr/bin/* , the Phoronix Test Suite files in */usr/share/phoronix-test-suite/* , and the documentation in / *usr/share/doc/phoronix-test-suite/* . Root access is required. The default installation prefix is /usr/ but can be adjusted as the first argument (example: *install-sh /home/user/* to install the Phoronix Test Suite in your home directory). ++Running *install-sh* from the root directory of the Phoronix Test ++Suite will install the software for system-wide access. By default the ++*phoronix-test-suite* executable is in */usr/bin/* , the Phoronix Test ++Suite files in */usr/share/phoronix-test-suite/* , and the ++documentation in / *usr/share/doc/phoronix-test-suite/* . Root access ++is required. The default installation prefix is /usr/ but can be ++adjusted as the first argument (example: *install-sh /home/user/* to ++install the Phoronix Test Suite in your home directory). Use the ++`--free-software-only` option of the `install-sh` script if you'd like ++to be offered only test profiles and suites relying on free software ++only. Note that this option disables the automatic fetching of new ++tests definitions from OpenBenchmarking.org. + + + ### Debian/Ubuntu Installation +@@ -937,6 +948,11 @@ If this option is set to *TRUE* , the system logs (i.e. dmesg, lspci, lsusb, Xor + #### AllowResultUploadsToOpenBenchmarking + This option defines whether to allow/support result uploads to OpenBenchmarking.org. If set to *FALSE* , the user will not be prompted to allow uploading of test results to the public site. + ++#### AllowRefreshingRepositoryLists ++This option defines whether to allow refreshing the test profiles ++(metadata) content from OpenBenchmarking.org. If set to *FALSE* , ++only the locally available test profiles will be used, and no updates ++will made to it. + + ## General Options + #### DefaultBrowser +diff --git a/install-sh b/install-sh +index f6228cde9..ff9bf9bd7 100755 +--- a/install-sh ++++ b/install-sh +@@ -1,4 +1,5 @@ + #!/bin/sh ++set -e + + # Phoronix Test Suite + # URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/ +@@ -28,6 +29,13 @@ else + INSTALL_PREFIX="$1" + fi + ++# XXX: Perhaps this should be the default? ++for arg in "$@"; do ++ if [ "$arg" = "--free-software-only" ]; then ++ FREE_SOFTWARE_ONLY=yes ++ fi ++done ++ + # Ensure the user is in the correct directory + if [ ! -f pts-core/phoronix-test-suite.php ] + then +@@ -114,6 +122,11 @@ else + + fi + ++# Post-installation process. ++if [ -n FREE_SOFTWARE_ONLY ]; then ++ ./delete-nonfree-metadata --root-dir="$DESTDIR$INSTALL_PREFIX/share/phoronix-test-suite/" ++fi ++ + echo -e "\nPhoronix Test Suite Installation Completed\n + Executable File: $INSTALL_PREFIX/bin/phoronix-test-suite + Documentation: $INSTALL_PREFIX/share/doc/phoronix-test-suite/ +@@ -124,4 +137,3 @@ then + echo "Installed to chroot: $DESTDIR" + echo "Please update your desktop and mime-database manually" + fi +- +diff --git a/pts-core/objects/pts_openbenchmarking.php b/pts-core/objects/pts_openbenchmarking.php +index 081f55c31..e9396ea36 100644 +--- a/pts-core/objects/pts_openbenchmarking.php ++++ b/pts-core/objects/pts_openbenchmarking.php +@@ -330,6 +330,11 @@ class pts_openbenchmarking + } + public static function refresh_repository_lists($repos = null, $force_refresh = false) + { ++ if(!pts_config::read_bool_config('PhoronixTestSuite/Options/OpenBenchmarking/AllowRefreshingRepositoryLists', true)) ++ { ++ return true; ++ } ++ + if($repos == null) + { + if($force_refresh == false) +diff --git a/pts-core/static/user-config-defaults.xml b/pts-core/static/user-config-defaults.xml +index 878c5137f..c9a67df5f 100644 +--- a/pts-core/static/user-config-defaults.xml ++++ b/pts-core/static/user-config-defaults.xml +@@ -6,6 +6,7 @@ + 3 + FALSE + TRUE ++ TRUE + + + -- 2.36.1 From unknown Sat Aug 16 16:54:01 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#56119] [PATCH] gnu: Add phoronix-test-suite. Resent-From: Maxime Devos Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 21 Jun 2022 09:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 56119 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Maxim Cournoyer , 56119@debbugs.gnu.org Received: via spool by 56119-submit@debbugs.gnu.org id=B56119.165580509719009 (code B ref 56119); Tue, 21 Jun 2022 09:52:02 +0000 Received: (at 56119) by debbugs.gnu.org; 21 Jun 2022 09:51:37 +0000 Received: from localhost ([127.0.0.1]:59140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3aXp-0004wX-Dp for submit@debbugs.gnu.org; Tue, 21 Jun 2022 05:51:37 -0400 Received: from baptiste.telenet-ops.be ([195.130.132.51]:52418) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3aXo-0004wO-1u for 56119@debbugs.gnu.org; Tue, 21 Jun 2022 05:51:36 -0400 Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a]) by baptiste.telenet-ops.be with bizsmtp id llra270034UW6Th01lraqv; Tue, 21 Jun 2022 11:51:34 +0200 Message-ID: From: Maxime Devos Date: Tue, 21 Jun 2022 11:51:28 +0200 In-Reply-To: <20220621052000.1163-1-maxim.cournoyer@gmail.com> References: <20220621052000.1163-1-maxim.cournoyer@gmail.com> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-FZJzLJNIdSnQOVMQNBt/" User-Agent: Evolution 3.38.3-1 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22; t=1655805094; bh=on3Y7xMevF5RNs3piz990kaiggIG0aB7LuEeoJ+h1AQ=; h=Subject:From:To:Date:In-Reply-To:References; b=YoFLii9e5ZYiQn1SZb4TxYmTaiAAvtVn8KdjbqyvQNjqv8UCMGgSh+5Ef5FxZuAGF t4zbBosCErY8vL02XQsgwGtdUDIeA4OW+c7TNf36yqDh62wmvQwgTYqOZRVwmtlb5z IV1kiXCoEUds0uCl79sX+twqB8NC+D4cr5ZreaqckUXgLiep6qWxIoql72fBIPIIAG JDMe5Hr72RMRZ2p4uwBQGGLR1YPLkfp5BKEUIfcHQowv0gVBfeVqYqPV/ZEhmiYoMT +FgAbmnnxhCS3k/krRFajkV4n9ZMjuA/jDkq6WxsRUlRy6EX72EI8+R2vEaUDrWPcO BbdsrOdo6EU4A== X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-FZJzLJNIdSnQOVMQNBt/ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 TWF4aW0gQ291cm5veWVyIHNjaHJlZWYgb3AgZGkgMjEtMDYtMjAyMiBvbSAwMToyMCBbLTA0MDBd Ogo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHdyYXAtcHJvZ3JhbSBwdHMKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobGlzdCAiUEFUSCIgJ3ByZWZpeAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsaXN0IChz dHJpbmctYXBwZW5kICMkKHRoaXMtcGFja2FnZS1pbnB1dCAiYmFzaCIpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9iaW4iKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJpbmctYXBwZW5kICMkKHRoaXMt cGFja2FnZS1pbnB1dCAiY29yZXV0aWxzIikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiL2JpbiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJn emlwIikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiL2JpbiIpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0 cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJtYWtlIikKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAiL2JpbiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1w YWNrYWdlLWlucHV0ICJwaHAiKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIv YmluIikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoc3RyaW5nLWFwcGVuZCAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgInNlZCIpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9iaW4iKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJpbmctYXBw ZW5kICMkKHRoaXMtcGFja2FnZS1pbnB1dCAidGFyIikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiL2JpbiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlu cHV0ICJ3aGljaCIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9iaW4iKSkp KSkpKSkpKQoKQ2FuIGJlIHNpbXBsaWZpZWQgYW5kIGRlbGFiZWxpZmllZCAodW50ZXN0ZWQpOgoK KGxpc3QgIlBBVEgiICdwcmVmaXgKICAgICAgKG1hcCAobGFtYmRhIChiaW5hcnkpCiAgICAgICAg ICAgICAoc2VhcmNoLWlucHV0LWZpbGUgaW5wdXRzIChzdHJpbmctYXBwZW5kICJiaW4vIiBiaW5h cnkpKSkKICAgICAgICAgICAnKCJiYXNoIiAidGFyIiAid2hpY2giICJjYXQiICJnemlwIiBbLi4u XSkpKQoKKE9ubHkgbG9va2VkIGF0IHRoZSBwaGFzZXMpCgpHcmVldGluZ3MsCk1heGltZS4K --=-FZJzLJNIdSnQOVMQNBt/ Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYrGUoBccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7nwSAQCqpLa862htqyVJ0Ucu9wRn6/AQ eeoVYV8gZLJYR7/aLwD/awQVJyzs6qA/ZMzSRohVt142Bw5VlEz4AHpyBGPqNws= =EJi8 -----END PGP SIGNATURE----- --=-FZJzLJNIdSnQOVMQNBt/-- From unknown Sat Aug 16 16:54:01 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Maxim Cournoyer Subject: bug#56119: closed (Re: [bug#56119] [PATCH] gnu: Add phoronix-test-suite.) Message-ID: References: <87leto69j4.fsf@gmail.com> <20220621052000.1163-1-maxim.cournoyer@gmail.com> X-Gnu-PR-Message: they-closed 56119 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 56119@debbugs.gnu.org Date: Wed, 22 Jun 2022 14:47:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1655909223-12315-1" This is a multi-part message in MIME format... ------------=_1655909223-12315-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #56119: [PATCH] gnu: Add phoronix-test-suite. which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 56119@debbugs.gnu.org. --=20 56119: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D56119 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1655909223-12315-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 56119-done) by debbugs.gnu.org; 22 Jun 2022 14:46:33 +0000 Received: from localhost ([127.0.0.1]:36274 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o41cm-0003BI-Is for submit@debbugs.gnu.org; Wed, 22 Jun 2022 10:46:32 -0400 Received: from mail-qk1-f180.google.com ([209.85.222.180]:40688) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o41cl-0003B5-EN for 56119-done@debbugs.gnu.org; Wed, 22 Jun 2022 10:46:32 -0400 Received: by mail-qk1-f180.google.com with SMTP id p21so718246qki.7 for <56119-done@debbugs.gnu.org>; Wed, 22 Jun 2022 07:46:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=PtxOWwmjyLozNUQeOJv/6zQT5hiG/MMhG1/BQPxHfXI=; b=SE85c07HEo4/f2iq4TbAvRTi2bs9V92ZzcQADUbAaISmVYLkT9ToWS5GE48eLZgIK5 YndzMZwvbkJGKaruVm4B9JxTcrHHiy6Q5mJbELToutlaHL2IL6na0B2t/Z02AznEIVoM OWQrCRgW1Z+W/Oq3RVm9c6tWIEqu7IlFB0QjlXRArVWbm7A8Vsni1rJEHXlsMA5oleCs 2nM4M00PBTLXsjNPmigmsTtexPsx7BsyWwyqi4/8HLQ6OaVlDl7aSyJSo5ziPZld+3h5 bviSgsoTy/6KQhjCM6y4qOG384ymmCD08tem02nfaK5BIbzX2hZpcsrg+wj/L95VvelO Uw/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=PtxOWwmjyLozNUQeOJv/6zQT5hiG/MMhG1/BQPxHfXI=; b=Fc8ewoxUBc0NusBrH6wnXGarLl9lYDAClyow6qQOnfBmcFcjopW54eeFGkp4piqQdt ItxjzjuEY5XAHKeBTzHBjw9+VuQuVlQVvRh2Wvoa2Fx0WD6pi/hhOQDjleb/oU9srlBh H41Vzdtdgva7jX9oIupM2zh2eKy4mgQb7V2Aq8ie8RgBJzLBJKqrhiCpH5ubKCLmBQ6/ VlmUzbt3lsPEF0IpyHuHnBSixo8jQa1X0nG0hgEll6f/87ty+C3vc6Gnoi+t8oDIwM6m 5lLigJotfXk9IB57CTC8KlOIIO1mh6Ki6YPC9I9gYMpKw0zFVr7VwtH1McqreTkjzMyi AizA== X-Gm-Message-State: AJIora9hMZXibBrkjwEmHxIJlhgK6qawx25K+XvVA6lN/6OLqkWCb9N6 JiGxgDtqdJ/vP6NP8wFqLF7Scjyi8EzRAw== X-Google-Smtp-Source: AGRyM1v5j1hyJ3Vd8c+efhSnSkN5eB8Cgca4I6lsqXW1BSU2Ak0maxfK695brhC60VyACMpxhOI9PQ== X-Received: by 2002:a05:620a:4154:b0:6a6:ca1e:d899 with SMTP id k20-20020a05620a415400b006a6ca1ed899mr2589239qko.334.1655909185438; Wed, 22 Jun 2022 07:46:25 -0700 (PDT) Received: from hurd (dsl-10-141-244.b2b2c.ca. [72.10.141.244]) by smtp.gmail.com with ESMTPSA id y16-20020a05620a25d000b006aedb35d8a1sm1610066qko.74.2022.06.22.07.46.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jun 2022 07:46:25 -0700 (PDT) From: Maxim Cournoyer To: Maxime Devos Subject: Re: [bug#56119] [PATCH] gnu: Add phoronix-test-suite. References: <20220621052000.1163-1-maxim.cournoyer@gmail.com> Date: Wed, 22 Jun 2022 10:46:23 -0400 In-Reply-To: (Maxime Devos's message of "Tue, 21 Jun 2022 11:51:28 +0200") Message-ID: <87leto69j4.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 56119-done Cc: 56119-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) SGkgTWF4aW1lLg0KDQpNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+IHdyaXRl czoNCg0KPiBNYXhpbSBDb3Vybm95ZXIgc2NocmVlZiBvcCBkaSAyMS0wNi0yMDIyIG9tIDAxOjIw IFstMDQwMF06DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh3cmFwLXByb2dy YW0gcHRzDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobGlzdCAiUEFU SCIgJ3ByZWZpeA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKGxpc3QgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJiYXNoIikN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIvYmluIikNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJp bmctYXBwZW5kICMkKHRoaXMtcGFja2FnZS1pbnB1dCAiY29yZXV0aWxzIikNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIvYmluIikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJpbmctYXBwZW5kICMk KHRoaXMtcGFja2FnZS1pbnB1dCAiZ3ppcCIpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAiL2JpbiIpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3RyaW5nLWFwcGVuZCAjJCh0aGlzLXBhY2thZ2UtaW5w dXQgIm1ha2UiKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9iaW4iKQ0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJwaHAiKQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9iaW4iKQ0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy1hcHBl bmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJzZWQiKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIi9iaW4iKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdl LWlucHV0ICJ0YXIiKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9iaW4i KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJ3aGljaCIpDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiL2JpbiIpKSkpKSkpKSkpDQo+DQo+ IENhbiBiZSBzaW1wbGlmaWVkIGFuZCBkZWxhYmVsaWZpZWQgKHVudGVzdGVkKToNCj4NCj4gKGxp c3QgIlBBVEgiICdwcmVmaXgNCj4gICAgICAgKG1hcCAobGFtYmRhIChiaW5hcnkpDQo+ICAgICAg ICAgICAgICAoc2VhcmNoLWlucHV0LWZpbGUgaW5wdXRzIChzdHJpbmctYXBwZW5kICJiaW4vIiBi aW5hcnkpKSkNCj4gICAgICAgICAgICAnKCJiYXNoIiAidGFyIiAid2hpY2giICJjYXQiICJnemlw IiBbLi4uXSkpKQ0KPg0KPiAoT25seSBsb29rZWQgYXQgdGhlIHBoYXNlcykNCg0KVGhhbmtzLiAg VGhhdCdzIGluZGVlZCBiZXR0ZXIuICBJIGFkZGVkIHRoZSAnZGlybmFtZScgY2FsbCB0byBnZXQg dGhlDQpiaW4gZGlyZWN0b3J5IGFuZCBub3QgdGhlIGJpbmFyaWVzIHRoZW1zZWx2ZXMsIGFzIHRo aXMgaXMgZm9yIFBBVEg6DQoNCi0tODwtLS0tLS0tLS0tLS0tLS1jdXQgaGVyZS0tLS0tLS0tLS0t LS0tLXN0YXJ0LS0tLS0tLS0tLS0tLT44LS0tDQptb2RpZmllZCAgIGdudS9wYWNrYWdlcy9iZW5j aG1hcmsuc2NtDQpAQCAtMjk0LDI2ICsyOTQsMTUgQEAgKGRlZmluZS1wdWJsaWMgcGhvcm9uaXgt dGVzdC1zdWl0ZQ0KICAgICAgICAgICAgIChsYW1iZGEgXw0KICAgICAgICAgICAgICAgKGludm9r ZSAiLi9pbnN0YWxsLXNoIiAjJG91dHB1dCAiLS1mcmVlLXNvZnR3YXJlLW9ubHkiKSkpDQogICAg ICAgICAgIChhZGQtYWZ0ZXIgJ2luc3RhbGwgJ3dyYXAtYmluYXJ5DQotICAgICAgICAgICAgKGxh bWJkYSBfDQorICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVy LWtleXMpDQogICAgICAgICAgICAgICAobGV0ICgocHRzIChzdHJpbmctYXBwZW5kICMkb3V0cHV0 ICIvYmluL3Bob3Jvbml4LXRlc3Qtc3VpdGUiKSkpDQogICAgICAgICAgICAgICAgICh3cmFwLXBy b2dyYW0gcHRzDQogICAgICAgICAgICAgICAgICAgKGxpc3QgIlBBVEgiICdwcmVmaXgNCi0gICAg ICAgICAgICAgICAgICAgICAgICAobGlzdCAoc3RyaW5nLWFwcGVuZCAjJCh0aGlzLXBhY2thZ2Ut aW5wdXQgImJhc2giKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIvYmluIikNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVu ZCAjJCh0aGlzLXBhY2thZ2UtaW5wdXQgImNvcmV1dGlscyIpDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9iaW4iKQ0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctYXBwZW5kICMkKHRoaXMtcGFja2FnZS1pbnB1dCAiZ3ppcCIpDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9iaW4iKQ0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICMkKHRoaXMtcGFja2Fn ZS1pbnB1dCAibWFrZSIpDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIi9iaW4iKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kICMkKHRoaXMtcGFja2FnZS1pbnB1dCAicGhwIikNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiL2JpbiIpDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy1hcHBlbmQgIyQodGhpcy1wYWNrYWdlLWlucHV0ICJzZWQiKQ0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvYmluIikNCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAjJCh0aGlzLXBhY2thZ2UtaW5w dXQgInRhciIpDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ii9iaW4iKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICMk KHRoaXMtcGFja2FnZS1pbnB1dCAid2hpY2giKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIvYmluIikpKSkpKSkpKSkNCisgICAgICAgICAgICAgICAgICAg ICAgICAobWFwIChsYW1iZGEgKGJpbmFyeSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGRpcm5hbWUgKHNlYXJjaC1pbnB1dC1maWxlDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnB1dHMgKHN0cmluZy1hcHBlbmQgImJpbi8iIGJpbmFyeSkpKSkN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoImJhc2giICJjYXQiIDtjb3JldXRpbHMN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd6aXAiICJtYWtlIiAicGhwIiAic2Vk IiAidGFyIiAid2hpY2giKSkpKSkpKSkpKQ0KICAgICAoYnVpbGQtc3lzdGVtIGdudS1idWlsZC1z eXN0ZW0pDQogICAgIChuYXRpdmUtaW5wdXRzIChsaXN0IHB5dGhvbiB3aGljaCkpDQogICAgIDs7 IFdyYXAgdGhlIG1vc3QgYmFzaWMgYnVpbGQgdG9vbHMgbmVlZGVkIGJ5IFBob3Jvbml4IFRlc3Qg U3VpdGUgdG8NCiAgICAgYnVpbGQNCi0tODwtLS0tLS0tLS0tLS0tLS1jdXQgaGVyZS0tLS0tLS0t LS0tLS0tLWVuZC0tLS0tLS0tLS0tLS0tLT44LS0tDQoNCkkndmUgbm93IGdvbmUgYWhlYWQgYW5k IHB1c2hlZCBpdCB3aXRoIHRoZSBhYm92ZSBjaGFuZ2UuICBXaXRoIG1vcmUNCnVzYWdlLCBJIGV4 cGVjdCB3ZSdsbCBwcm9iYWJseSB3YW50IHRvIGNhcHR1cmUgYSBmZXcgbW9yZSB0b29scyBpbiB0 aGUNCndyYXAgcGhhc2UsIHN1Y2ggYXMgZGUtY29tcHJlc3NvcnM7IHdlJ2xsIHNlZS4NCg0KVGhh bmtzIGZvciB0aGUgY29tbWVudHMhDQoNCk1heGltDQo= ------------=_1655909223-12315-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 21 Jun 2022 05:20:22 +0000 Received: from localhost ([127.0.0.1]:58928 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3WJC-0006Zv-Vf for submit@debbugs.gnu.org; Tue, 21 Jun 2022 01:20:22 -0400 Received: from lists.gnu.org ([209.51.188.17]:46532) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3WJ9-0006Zj-C1 for submit@debbugs.gnu.org; Tue, 21 Jun 2022 01:20:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45840) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o3WJ8-0003Rb-8K for guix-patches@gnu.org; Tue, 21 Jun 2022 01:20:11 -0400 Received: from mail-qv1-xf2e.google.com ([2607:f8b0:4864:20::f2e]:38707) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o3WJ5-0000IJ-G0 for guix-patches@gnu.org; Tue, 21 Jun 2022 01:20:10 -0400 Received: by mail-qv1-xf2e.google.com with SMTP id p31so18825149qvp.5 for ; Mon, 20 Jun 2022 22:20:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=HzSogctKVwhUeelN29UnlvpcANSx3ZWqaXwyHuUrVLA=; b=Gr2MHytQAdkp48ZeAeIuHqid7mpS7LcaR+EICTXSeQvcHi4vIhoqfnd2T3Ahd3KxAD sxEunuH7sxOR69PhrH1zb6cFqfA75CCnwt3QKbXnO+Fiv65mMasEKykOI8kM2y5O5zKp RaokKpa1+l9uwLi0E1TcSatmNHXJCuBqK5smzBAk/98UFxzv/9BeZNwc56MsSCbhBGXJ iNfT4oiWDNj4jJHQ5FrEy1C4gnLoB/lqHtuO2yEvuSASxj/pzuveGbtyrhaYlFolfxqr qdhyGrJzC5q4eJBAg8wLmTS1W3/EtoMpEf3LteP9wM5PTmgwyUDGI4kJ/vmaN50Bfdki hdrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=HzSogctKVwhUeelN29UnlvpcANSx3ZWqaXwyHuUrVLA=; b=NvTobTnsmvJ5XDjrkzRGsfs9lrbwHDj5diMhAcVev4XpO5HcpHPKP2u8PsYivc21PV AiAIYlt0U5KOnOHXWrXnp/HxavQFZRjtbn160A82h/OlPztVXZvuZLUZft78eWY31xLn +n7Xc0V5+S/H8yYUD+pIaeM4brlRG1+xfr49aYHOOCvfaFl4/AqYq0I3fjFDB1d/Zc3U 4+7jU8r/5ZcJ3wz+4HbwyK4RXABPORhn+Na/XM8aXo71k/poj2y1NY52XvSDJLbdrHzT TrRMWUGcIWsgBm3D7WUXu/C9aLi5H2S6+K7rRDCYuBh4DMOKajT4SaAkQqYaA9DbPF+8 eQEg== X-Gm-Message-State: AJIora+JTHoqLN3iQi0qV8zX26bxakcvYzlq0urvsErApQQzdBukjrps dxcwikx8X4RXzl+YL1ALxeaL/+ex7LYL+w== X-Google-Smtp-Source: AGRyM1uDf81DrwID+k+77oPosreFWDnvSmvBay5G6rx25+TrfiunpVMhiWiqt9Sg6niXov3AuR7DOA== X-Received: by 2002:a05:622a:14c9:b0:306:723a:2766 with SMTP id u9-20020a05622a14c900b00306723a2766mr22619999qtx.147.1655788805640; Mon, 20 Jun 2022 22:20:05 -0700 (PDT) Received: from localhost.localdomain (dsl-10-131-230.b2b2c.ca. [72.10.131.230]) by smtp.gmail.com with ESMTPSA id r14-20020a05620a298e00b006a6d60a39d0sm14961525qkp.5.2022.06.20.22.20.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 22:20:05 -0700 (PDT) From: Maxim Cournoyer To: guix-patches@gnu.org Subject: [PATCH] gnu: Add phoronix-test-suite. Date: Tue, 21 Jun 2022 01:20:00 -0400 Message-Id: <20220621052000.1163-1-maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::f2e; envelope-from=maxim.cournoyer@gmail.com; helo=mail-qv1-xf2e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit Cc: Maxim Cournoyer X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) * gnu/packages/patches/phoronix-test-suite-fsdg.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/benchmark.scm (phoronix-test-suite): New variable. (gcc-toolchain*): Likewise. --- gnu/local.mk | 1 + gnu/packages/benchmark.scm | 73 +++- .../patches/phoronix-test-suite-fsdg.patch | 311 ++++++++++++++++++ 3 files changed, 384 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/phoronix-test-suite-fsdg.patch diff --git a/gnu/local.mk b/gnu/local.mk index 197c8679eb..8b545b58f8 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1624,6 +1624,7 @@ dist_patch_DATA = \ %D%/packages/patches/perl-reproducible-build-date.patch \ %D%/packages/patches/perl-www-curl-fix-struct-void.patch \ %D%/packages/patches/perl-www-curl-remove-symbol.patch \ + %D%/packages/patches/phoronix-test-suite-fsdg.patch \ %D%/packages/patches/php-bug-74093-test.patch \ %D%/packages/patches/php-openssl_x509_checkpurpose_basic.patch \ %D%/packages/patches/picard-fix-id3-rename-test.patch \ diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index b167c6de6e..26e7a1867d 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -39,18 +39,20 @@ (define-module (gnu packages benchmark) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages c) #:use-module (gnu packages check) #:use-module (gnu packages compression) - #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages databases) #:use-module (gnu packages docbook) + #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages maths) #:use-module (gnu packages mpi) #:use-module (gnu packages opencl) #:use-module (gnu packages perl) + #:use-module (gnu packages php) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-science) @@ -60,6 +62,11 @@ (define-module (gnu packages benchmark) #:use-module (gnu packages xml) #:use-module (ice-9 match)) +;; Lazily resolve the gcc-toolchain to avoid a circular dependency. +(define gcc-toolchain* + (delay (module-ref (resolve-interface '(gnu packages commencement)) + 'gcc-toolchain))) + (define-public fio (package (name "fio") @@ -263,6 +270,70 @@ (define-public bonnie++ file metadata operations that can be performed per second.") (license license:gpl2))) ;GPL 2 only, see copyright.txt +(define-public phoronix-test-suite + (package + (name "phoronix-test-suite") + (version "10.8.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://phoronix-test-suite.com/releases/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "105shk78jy46nwj6vnlmgp3y3lv9klar3dmcgasy4bslm4l2wx2b")) + (patches (search-patches "phoronix-test-suite-fsdg.patch")))) + (arguments + (list + #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda _ + (invoke "./install-sh" #$output "--free-software-only"))) + (add-after 'install 'wrap-binary + (lambda _ + (let ((pts (string-append #$output "/bin/phoronix-test-suite"))) + (wrap-program pts + (list "PATH" 'prefix + (list (string-append #$(this-package-input "bash") + "/bin") + (string-append #$(this-package-input "coreutils") + "/bin") + (string-append #$(this-package-input "gzip") + "/bin") + (string-append #$(this-package-input "make") + "/bin") + (string-append #$(this-package-input "php") + "/bin") + (string-append #$(this-package-input "sed") + "/bin") + (string-append #$(this-package-input "tar") + "/bin") + (string-append #$(this-package-input "which") + "/bin")))))))))) + (build-system gnu-build-system) + (native-inputs (list python which)) + ;; Wrap the most basic build tools needed by Phoronix Test Suite to build + ;; simple tests such as 'fio'. + (inputs (list bash coreutils gnu-make gzip php sed tar which)) + ;; Phoronix Test Suite builds and caches the benchmarking tools itself; + ;; the user is required to manually install extra libraries depending on + ;; the selected test; but at least a working C/C++ toolchain is assumed to + ;; be available. + (propagated-inputs (list (force gcc-toolchain*))) + (home-page "https://www.phoronix-test-suite.com/") + (synopsis "Automated testing/benchmarking software") + (description + "The Phoronix Test Suite is a comprehensive testing and benchmarking platform +that provides an extensible framework for which new tests can be easily added. +It can carry out both qualitative and quantitative benchmarks in a clean, +reproducible, and easy-to-use manner, making it easy to compare one particular +setup against another one.") + (license license:gpl3+))) + (define-public python-locust (package (name "python-locust") diff --git a/gnu/packages/patches/phoronix-test-suite-fsdg.patch b/gnu/packages/patches/phoronix-test-suite-fsdg.patch new file mode 100644 index 0000000000..a06a6bcdc8 --- /dev/null +++ b/gnu/packages/patches/phoronix-test-suite-fsdg.patch @@ -0,0 +1,311 @@ +Submitted upstream at https://github.com/phoronix-test-suite/phoronix-test-suite/pull/642. + +diff --git a/delete-nonfree-metadata b/delete-nonfree-metadata +new file mode 100755 +index 000000000..5e98f0ab2 +--- /dev/null ++++ b/delete-nonfree-metadata +@@ -0,0 +1,198 @@ ++#!/usr/bin/env python3 ++ ++# Copyright (C) 2022, Maxim Cournoyer ++ ++# This program 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. ++ ++# This program 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 this program. If not, see . ++ ++# Commentary: ++# ++# This script prunes the 'ob-cache' test metadata cache from any ++# nonfree test. This is useful for users who concerned with running ++# only free software or distributions complying with the Free Software ++# Distribution Guidelines (GNU FSDG, ++# https://www.gnu.org/distros/free-system-distribution-guidelines.html). ++import argparse ++import json ++import logging ++import pathlib ++import pprint ++import re ++import shutil ++import xml.etree.ElementTree as ET ++ ++ ++logger = logging.getLogger(__name__) ++logging.basicConfig(level='INFO', format='%(levelname)s: %(message)s') ++ ++ ++DEFAULT_ROOT_DIR = pathlib.Path(__file__).parent.resolve() ++# Global cache used to keep the test/suite definition licenses, keyed ++# by their test name key (e.g., 'caffe'). ++TEST_DEFINITION_LICENSES = {} ++ ++ ++def get_test_definitions(root_dir=DEFAULT_ROOT_DIR): ++ """Return the list of all test definition XML files.""" ++ return sorted(pathlib.Path(root_dir).glob('**/test-definition.xml')) ++ ++ ++def get_suite_definitions(root_dir=DEFAULT_ROOT_DIR): ++ return sorted(pathlib.Path(root_dir).glob('**/suite-definition.xml')) ++ ++ ++def get_index_files(root_dir=DEFAULT_ROOT_DIR): ++ return sorted(pathlib.Path(root_dir).glob('**/*.index')) ++ ++ ++def sanitize_index_files(index_files, nonfree_test_names): ++ """Remove non free test entries from `index_files`.""" ++ for index_file in index_files: ++ with index_file.open() as f: ++ index = json.load(f) ++ filtered_tests = {k: v for k, v in index['tests'].items() ++ if k not in nonfree_test_names} ++ index['tests'] = filtered_tests ++ if index['suites']: ++ filtered_suites = {k: v for k, v in index['suites'].items() ++ if k not in nonfree_test_names} ++ index['suites'] = filtered_suites ++ ++ # Set the cached date to a distant time in the future so that it ++ index['main']['generated'] = 2**31 - 1 # 2038 Epochalypse on 32 bit ++ ++ with index_file.open('w') as f: ++ json.dump(index, f) ++ ++ ++def get_test_definition_license(test_definition_file, ++ root_dir=DEFAULT_ROOT_DIR): ++ """Return the licenses from `test_definition_file`, or None.""" ++ name = get_name_from_definition_file(test_definition_file) ++ if name in TEST_DEFINITION_LICENSES: ++ return TEST_DEFINITION_LICENSES[name] ++ ++ root = ET.parse(test_definition_file) ++ try: ++ license = next(root.iter('License')).text ++ except StopIteration: ++ # No license field; check if it extends another test. ++ try: ++ extended_test = next(root.iter('Extends')).text # e.g. 'pts/caffe' ++ extended_name = extended_test.split('/')[-1] ++ if extended_name in TEST_DEFINITION_LICENSES: ++ license = TEST_DEFINITION_LICENSES[extended_name] ++ else: ++ extended_definition_file = sorted( ++ pathlib.Path(root_dir).glob( ++ '**/test-profiles/' + extended_test ++ + '-*/test-definition.xml'))[-1] ++ license = get_test_definition_license(extended_definition_file, ++ root_dir) ++ except StopIteration: ++ logger.warning('could not find license for %s', ++ test_definition_file) ++ return None ++ ++ TEST_DEFINITION_LICENSES[name] = license ++ return license ++ ++ ++def is_test_definition_free(test_definition_file): ++ """True if `test_definition_file` has its license tag set to 'Free'.""" ++ license = get_test_definition_license(test_definition_file) ++ return license == 'Free' ++ ++ ++def is_suite_definition_free(suite_definition_file, nonfree_test_names): ++ """True if `suite_definition_file` is free. ++ ++ The suite definition is considered free when it doesn't reference ++ any test part of `nonfree_test_names`. ++ """ ++ root = ET.parse(suite_definition_file) ++ for test in root.iter('Test'): ++ test_name = test.text ++ name = test_name.split('/')[-1] # strip any prefix ++ if name in nonfree_test_names: ++ return False ++ ++ return True ++ ++ ++def get_name_from_definition_file(definition_file): ++ """Return the parent directory name of a definition file. ++ ++ The version information in stripped from the name.""" ++ parent_dir_name = pathlib.Path(definition_file).parent.name ++ # Strip the version from the name. ++ return re.search(r'^(.*)-', parent_dir_name).group(1) ++ ++ ++def get_default_user_config_file(root_dir): ++ return next(pathlib.Path(root_dir).glob('**/user-config-defaults.xml')) ++ ++ ++def disallow_refreshing_repositories(user_config_file): ++ """Set the 'AllowRefreshingRepositoryLists' option to FALSE.""" ++ config = ET.parse(user_config_file) ++ for option in config.iter('AllowRefreshingRepositoryLists'): ++ option.text = 'FALSE' ++ config.write(user_config_file) ++ ++ ++def main(root_dir): ++ # Gather data. ++ test_definitions = get_test_definitions(root_dir) ++ suite_definitions = get_suite_definitions(root_dir) ++ nonfree_test_definitions = [d for d in test_definitions ++ if not is_test_definition_free(d)] ++ nonfree_test_names = [get_name_from_definition_file(t) ++ for t in nonfree_test_definitions] ++ nonfree_suite_definitions = [ ++ s for s in suite_definitions ++ if not is_suite_definition_free(s, nonfree_test_names)] ++ nonfree_suite_names = [get_name_from_definition_file(s) ++ for s in nonfree_suite_definitions] ++ nonfree_definitions = nonfree_test_definitions + nonfree_suite_definitions ++ nonfree_definition_names = sorted(set(nonfree_test_names ++ + nonfree_suite_names)) ++ ++ # Delete nonfree definitions. ++ for nonfree_definition in nonfree_definitions: ++ shutil.rmtree(nonfree_definition.parent) ++ ++ # Delete nonfree entries in index files. ++ indexes = get_index_files(root_dir) ++ sanitize_index_files(indexes, nonfree_definition_names) ++ ++ logger.info('The following nonfree test suites were deleted:\n%s', ++ pprint.pformat([str(d) for d in nonfree_definitions])) ++ ++ # This is necessary to avoid downloading the ++ # OpenBenchmarking-provided tests metadata which includes all the ++ # tests, including teh proprietary ones. ++ user_config_file = get_default_user_config_file(root_dir) ++ disallow_refreshing_repositories(user_config_file) ++ logger.info('Disabled test metadata updates in default user config') ++ ++ ++if __name__ == '__main__': ++ parser = argparse.ArgumentParser( ++ description='Remove nonfree cached metadata') ++ parser.add_argument('--root-dir', type=str, ++ help='the Phoronix Test Suite root directory', ++ default=DEFAULT_ROOT_DIR) ++ args = parser.parse_args() ++ ++ main(args.root_dir) +diff --git a/documentation/phoronix-test-suite.md b/documentation/phoronix-test-suite.md +index c2e04ae4e..0c71ecf37 100644 +--- a/documentation/phoronix-test-suite.md ++++ b/documentation/phoronix-test-suite.md +@@ -817,7 +817,18 @@ The Phoronix Test Suite can be simply extracted from the downloaded *.tar.gz* or + + + ### Generic Installation +-Running *install-sh* from the root directory of the Phoronix Test Suite will install the software for system-wide access. By default the *phoronix-test-suite* executable is in */usr/bin/* , the Phoronix Test Suite files in */usr/share/phoronix-test-suite/* , and the documentation in / *usr/share/doc/phoronix-test-suite/* . Root access is required. The default installation prefix is /usr/ but can be adjusted as the first argument (example: *install-sh /home/user/* to install the Phoronix Test Suite in your home directory). ++Running *install-sh* from the root directory of the Phoronix Test ++Suite will install the software for system-wide access. By default the ++*phoronix-test-suite* executable is in */usr/bin/* , the Phoronix Test ++Suite files in */usr/share/phoronix-test-suite/* , and the ++documentation in / *usr/share/doc/phoronix-test-suite/* . Root access ++is required. The default installation prefix is /usr/ but can be ++adjusted as the first argument (example: *install-sh /home/user/* to ++install the Phoronix Test Suite in your home directory). Use the ++`--free-software-only` option of the `install-sh` script if you'd like ++to be offered only test profiles and suites relying on free software ++only. Note that this option disables the automatic fetching of new ++tests definitions from OpenBenchmarking.org. + + + ### Debian/Ubuntu Installation +@@ -937,6 +948,11 @@ If this option is set to *TRUE* , the system logs (i.e. dmesg, lspci, lsusb, Xor + #### AllowResultUploadsToOpenBenchmarking + This option defines whether to allow/support result uploads to OpenBenchmarking.org. If set to *FALSE* , the user will not be prompted to allow uploading of test results to the public site. + ++#### AllowRefreshingRepositoryLists ++This option defines whether to allow refreshing the test profiles ++(metadata) content from OpenBenchmarking.org. If set to *FALSE* , ++only the locally available test profiles will be used, and no updates ++will made to it. + + ## General Options + #### DefaultBrowser +diff --git a/install-sh b/install-sh +index f6228cde9..ff9bf9bd7 100755 +--- a/install-sh ++++ b/install-sh +@@ -1,4 +1,5 @@ + #!/bin/sh ++set -e + + # Phoronix Test Suite + # URLs: http://www.phoronix.com, http://www.phoronix-test-suite.com/ +@@ -28,6 +29,13 @@ else + INSTALL_PREFIX="$1" + fi + ++# XXX: Perhaps this should be the default? ++for arg in "$@"; do ++ if [ "$arg" = "--free-software-only" ]; then ++ FREE_SOFTWARE_ONLY=yes ++ fi ++done ++ + # Ensure the user is in the correct directory + if [ ! -f pts-core/phoronix-test-suite.php ] + then +@@ -114,6 +122,11 @@ else + + fi + ++# Post-installation process. ++if [ -n FREE_SOFTWARE_ONLY ]; then ++ ./delete-nonfree-metadata --root-dir="$DESTDIR$INSTALL_PREFIX/share/phoronix-test-suite/" ++fi ++ + echo -e "\nPhoronix Test Suite Installation Completed\n + Executable File: $INSTALL_PREFIX/bin/phoronix-test-suite + Documentation: $INSTALL_PREFIX/share/doc/phoronix-test-suite/ +@@ -124,4 +137,3 @@ then + echo "Installed to chroot: $DESTDIR" + echo "Please update your desktop and mime-database manually" + fi +- +diff --git a/pts-core/objects/pts_openbenchmarking.php b/pts-core/objects/pts_openbenchmarking.php +index 081f55c31..e9396ea36 100644 +--- a/pts-core/objects/pts_openbenchmarking.php ++++ b/pts-core/objects/pts_openbenchmarking.php +@@ -330,6 +330,11 @@ class pts_openbenchmarking + } + public static function refresh_repository_lists($repos = null, $force_refresh = false) + { ++ if(!pts_config::read_bool_config('PhoronixTestSuite/Options/OpenBenchmarking/AllowRefreshingRepositoryLists', true)) ++ { ++ return true; ++ } ++ + if($repos == null) + { + if($force_refresh == false) +diff --git a/pts-core/static/user-config-defaults.xml b/pts-core/static/user-config-defaults.xml +index 878c5137f..c9a67df5f 100644 +--- a/pts-core/static/user-config-defaults.xml ++++ b/pts-core/static/user-config-defaults.xml +@@ -6,6 +6,7 @@ + 3 + FALSE + TRUE ++ TRUE + + + -- 2.36.1 ------------=_1655909223-12315-1--