# -*- coding: utf-8 -*- # GNU Guix --- Functional package management for GNU # Copyright © 2021 Maxim Cournoyer # # 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 . import os import site import sys # Commentary: # # Site-specific customization for Guix. # # The program below honors the GUIX_PYTHONPATH environment variable to # discover Python packages. File names appearing in this variable that match # a predefined versioned installation prefix are added to the sys.path. To be # considered, a Python package must be installed under the # 'lib/pythonX.Y/site-packages' directory, where X and Y are the major and # minor version numbers of the Python interpreter. # # Code: major_minor = '{}.{}'.format(*sys.version_info) site_packages_prefix = os.path.join( 'lib', 'python' + major_minor, 'site-packages') python_site = os.path.normpath(os.path.join(sys.prefix, site_packages_prefix)) try: all_sites_raw = os.environ['GUIX_PYTHONPATH'].split(os.path.pathsep) except KeyError: all_sites_raw = [] # Normalize paths, otherwise a trailing slash would cause it to not match. all_sites_norm = [os.path.normpath(p) for p in all_sites_raw] matching_sites = [p for p in all_sites_norm if p.endswith(site_packages_prefix)] if matching_sites: # Deduplicate the entries, append them to sys.path, and handle any # .pth files they contain. for s in matching_sites: site.addsitedir(s) # Move the entries that were appended to sys.path in front of # Python's own site-packages directory. This enables Guix # packages to override Python's bundled packages, such as 'pip'. python_site_index = sys.path.index(python_site) new_site_start_index = sys.path.index(matching_sites[0]) if python_site_index < new_site_start_index: sys.path = (sys.path[:python_site_index] + sys.path[new_site_start_index:] + sys.path[python_site_index:new_site_start_index]) Commit message (Collapse)Author 2020-04-04tests: Adjust '--with-commit' test for tags.Ludovic Courtès This is a followup to efa578ecaece67366b4b0e2266de7c2faaa4ae54. * tests/guix-build-branch.sh: Adjust '--with-commit=guile-gcrypt=v0.1.0' test to expect the tag ID rather than the commit ID. 2019-09-04tests: Adjust '--with-commit' test.Ludovic Courtès This is a followup to 4d04bc50d2df32be326e0f48f378dc581f873989. * tests/guix-build-branch.sh: Expect "v0.1.0" to lead to "guile-gcrypt-0.1.0". 2019-07-26git: 'switch-to-ref' resolves tag targets.Ludovic Courtès * guix/git.scm (switch-to-ref): In the 'tag' case, resolve the target of the tag. * tests/guix-build-branch.sh: Adjust test accordingly. 2019-07-26git: <git-checkout> allows tags in its 'commit' field.Ludovic Courtès Fixes <https://bugs.gnu.org/36371>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * guix/git.scm (git-checkout-compiler): Pass 'tag-or-commit' to 'latest-repository-commit*'. * doc/guix.texi (Package Transformation Options): Update '--with-commit' documentation accordingly. * tests/guix-build-branch.sh: Add test. 2018-11-30git: Nicely report '--with-commit' errors.Ludovic Courtès * guix/git.scm (latest-repository-commit*): Rewrite to catch 'git-error'. * po/guix/POTFILES.in: Add guix/git.scm. * tests/guix-build-branch.sh: Test --with-commit errors. 2018-11-30guix build: Add '--with-commit'.Ludovic Courtès * guix/git.scm (<git-checkout>)[commit]: New field. (git-checkout-compiler): Honor it. * guix/scripts/build.scm (evaluate-git-replacement-specs): Add 'proc' parameter and honor it. (transform-package-source-branch)[replace]: New procedure. Adjust 'evaluate-git-replacement-specs' accordingly. (transform-package-source-commit): New procedure. (%transformations, %transformation-options) (show-transformation-options-help): Add 'with-commit'. * tests/guix-build-branch.sh: Add test. * doc/guix.texi (Package Transformation Options): Document it. 2018-11-30guix build: Add '--with-branch' transformation option.Ludovic Courtès * guix/scripts/build.scm (evaluate-git-replacement-specs) (transform-package-source-branch): New procedures. (%transformations, %transformation-options): Add 'with-branch'. (show-transformation-options-help): Likewise. * tests/guix-build-branch.sh: New file. * Makefile.am (SH_TESTS): Add it. * doc/guix.texi (Package Transformation Options): Document it.