From 3c8a4d64ffb9fe80ffbb32981bae72b0e690b0fa Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 14 Apr 2023 21:01:34 -0400 Subject: [PATCH] maint: Merge sanity-check-next.py into sanity-check.py. * gnu/packages/aux-files/python/sanity-check-next.py: Rename to... * gnu/packages/aux-files/python/sanity-check.py: ... this. * guix/build-system/pyproject.scm (sanity-check.py): Adjust file name. * Makefile.am (AUX_FILES): De-register sanity-check-next.py. --- Makefile.am | 1 - .../aux-files/python/sanity-check-next.py | 99 ------------------- gnu/packages/aux-files/python/sanity-check.py | 8 +- guix/build-system/pyproject.scm | 3 +- 4 files changed, 7 insertions(+), 104 deletions(-) delete mode 100644 gnu/packages/aux-files/python/sanity-check-next.py diff --git a/Makefile.am b/Makefile.am index b6f7b125c5..8c505d8cd3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -434,7 +434,6 @@ AUX_FILES = \ gnu/packages/aux-files/linux-libre/4.14-x86_64.conf \ gnu/packages/aux-files/pack-audit.c \ gnu/packages/aux-files/python/sanity-check.py \ - gnu/packages/aux-files/python/sanity-check-next.py \ gnu/packages/aux-files/python/sitecustomize.py \ gnu/packages/aux-files/renpy/renpy.in \ gnu/packages/aux-files/run-in-namespace.c diff --git a/gnu/packages/aux-files/python/sanity-check-next.py b/gnu/packages/aux-files/python/sanity-check-next.py deleted file mode 100644 index a206b51d0a..0000000000 --- a/gnu/packages/aux-files/python/sanity-check-next.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -# GNU Guix --- Functional package management for GNU -# Copyright © 2021, 2022 Lars-Dominik Braun -# -# 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 . - -# This version adds a small change to accommodate missing python-setuptools. -# TODO: Merge with sanity-check.py in the next core-updates cycle. - -from __future__ import print_function # Python 2 support. -import importlib -import sys -import traceback -try: - import pkg_resources -except ImportError: - print('Warning: Skipping, because python-setuptools are not available.') - sys.exit(0) - -try: - from importlib.machinery import PathFinder -except ImportError: - PathFinder = None - -ret = 0 - -# Only check site-packages installed by this package, but not dependencies -# (which pkg_resources.working_set would include). Path supplied via argv. -ws = pkg_resources.find_distributions(sys.argv[1]) - -for dist in ws: - print('validating', repr(dist.project_name), dist.location) - try: - print('...checking requirements: ', end='') - req = str(dist.as_requirement()) - # dist.activate() is not enough to actually check requirements, we - # have to .require() it. - pkg_resources.require(req) - print('OK') - except Exception as e: - print('ERROR:', req, repr(e)) - ret = 1 - continue - - # Try to load top level modules. This should not have any side-effects. - try: - metalines = dist.get_metadata_lines('top_level.txt') - except (KeyError, EnvironmentError): - # distutils (i.e. #:use-setuptools? #f) will not install any metadata. - # This file is also missing for packages built using a PEP 517 builder - # such as poetry. - print('WARNING: cannot determine top-level modules') - continue - for name in metalines: - # Only available on Python 3. - if PathFinder and PathFinder.find_spec(name) is None: - # Ignore unavailable modules, often C modules, which were not - # installed at the top-level. Cannot use ModuleNotFoundError, - # because it is raised by failed imports too. - continue - try: - print('...trying to load module', name, end=': ') - importlib.import_module(name) - print('OK') - except Exception: - print('ERROR:') - traceback.print_exc(file=sys.stdout) - ret = 1 - - # Try to load entry points of console scripts too, making sure they - # work. They should be removed if they don't. Other groups may not be - # safe, as they can depend on optional packages. - for group, v in dist.get_entry_map().items(): - if group not in {'console_scripts', 'gui_scripts'}: - continue - for name, ep in v.items(): - try: - print('...trying to load endpoint', group, name, end=': ') - ep.load() - print('OK') - except Exception: - print('ERROR:') - traceback.print_exc(file=sys.stdout) - ret = 1 - -sys.exit(ret) diff --git a/gnu/packages/aux-files/python/sanity-check.py b/gnu/packages/aux-files/python/sanity-check.py index 182133bb3d..9c39709e18 100644 --- a/gnu/packages/aux-files/python/sanity-check.py +++ b/gnu/packages/aux-files/python/sanity-check.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # GNU Guix --- Functional package management for GNU -# Copyright © 2021 Lars-Dominik Braun +# Copyright © 2021, 2022 Lars-Dominik Braun # # This file is part of GNU Guix. # @@ -19,9 +19,13 @@ from __future__ import print_function # Python 2 support. import importlib -import pkg_resources import sys import traceback +try: + import pkg_resources +except ImportError: + print('Warning: Skipping, because python-setuptools are not available.') + sys.exit(0) try: from importlib.machinery import PathFinder diff --git a/guix/build-system/pyproject.scm b/guix/build-system/pyproject.scm index 44d6650ba9..2a2c3af3f3 100644 --- a/guix/build-system/pyproject.scm +++ b/guix/build-system/pyproject.scm @@ -55,8 +55,7 @@ (define (default-python) (module-ref python 'python-toolchain))) (define sanity-check.py - ;; TODO: Merge with sanity-check.py in the next rebuild cycle. - (search-auxiliary-file "python/sanity-check-next.py")) + (search-auxiliary-file "python/sanity-check.py")) (define* (lower name #:key source inputs native-inputs outputs system target