# -*- coding: utf-8 -*- # GNU Guix --- Functional package management for GNU # Copyright © 2021 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 . from __future__ import print_function # Python 2 support. import importlib import pkg_resources import sys import traceback 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) cc-objc-6, gcc-objc-7, gcc-objc-8, gcc-objc-9, gcc-objc-10, gcc-objc-11, gcc-objc-12, gcc-objc, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6, gcc-objc++-7, gcc-objc++-8, gcc-objc++-9, gcc-objc++-10, gcc-objc++-11, gcc-objc++-12, gcc-objc++, %objc-search-paths, %objc++-search-paths): Remove variables. * guix/search-paths.scm ($OBJC_INCLUDE_PATH, $OBJCPLUS_INCLUDE_PATH): New variables. (%gcc-search-paths): Include $OBJC_INCLUDE_PATH, $OBJCPLUS_INCLUDE_PATH. Change-Id: Ib4cd176eb88c733a82f2d31e8cc45b9c61720f8f Efraim Flashner 2024-08-31gnu: libxslt: Set search-paths for XML and SGML catalogs....According to xsltproc manpage it supports both XML_CATALOG_FILES and SGML_CATALOG_FILES for catalog lookup. Since the native-search-paths field is not thunked, doing (package-native-search-paths libxslt) can lead to module import cycles so we define a %libxslt-search-paths variable to avoid this kind of trouble. * guix/search-paths.scm (%libxslt-search-paths): New variable. * gnu/packages/xml.scm (libxslt)[native-search-paths]: Set to %libxslt-search-paths. * gnu/packages/perl.scm (perl-app-xml-docbook-builder)[native-search-paths]: Ditto. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Bruno Victal 2024-08-31search-paths: Add $XML_CATALOG_FILES and $SGML_CATALOG_FILES....These variables are used by some packages for XML/SGML catalog lookups. * guix/search-paths ($XML_CATALOG_FILES, $SGML_CATALOG_FILES): New variable, extracted from … * gnu/packages/xml.scm (libxml2, opensp)[native-search-paths]: … here. Refer to the variables from (guix search-paths) respectively. * gnu/packages/perl.scm (perl-app-xml-docbook-builder)[native-search-paths]: Use $XML_CATALOG_FILES. * doc/guix.texi (Search Paths): Update documentation to reflect changes. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Bruno Victal 2023-10-04search-paths: Add GCC search paths....* guix/search-paths.scm ($C_INCLUDE_PATH, $CPLUS_INCLUDE_PATH) ($LIBRARY_PATH, %gcc-search-paths): New variables. Maxim Cournoyer 2023-09-12search-paths: Add $TZDIR....* guix/search-paths.scm ($TZDIR): New search path. Maxim Cournoyer 2023-03-06gnu: perl-extutils-pkgconfig: Support cross-compilation....* guix/search-paths.scm ($PKG_CONFIG_PATH): New variable. * gnu/packages/pkg-config.scm (%pkg-config): Use it. * gnu/packages/perl.scm (perl-extutils-pkgconfig-for-target): New procedure. (perl-extutils-pkgconfig): Turn into a syntax that conditionally expands to... (cross-perl-extutils-pkgconfig): ... this when %current-target-system is set, or... (%perl-extutils-pkgconfig): ... this in a native compilation context. [arguments]: New field. [propagated-inputs]: Turn into... [native-inputs]: ... this. [native-search-paths]: New field. Maxim Cournoyer