[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#45017: asdf-build-system packages have priority over user ones
From: |
Guillaume Le Vaillant |
Subject: |
bug#45017: asdf-build-system packages have priority over user ones |
Date: |
Thu, 03 Dec 2020 13:04:25 +0100 |
User-agent: |
mu4e 1.4.13; emacs 27.1 |
Pierre Neidhardt <mail@ambrevar.xyz> skribis:
> Since staging was merged a few days ago, I've noticed an undesirable
> side-effect of our revamped asdf-build-system: the systems packages have
> priority over the user-local ones.
>
> Here is the default list of registries:
>
> --8<---------------cut here---------------start------------->8---
> (defparameter* *default-source-registries*
> '(environment-source-registry
> user-source-registry
> user-source-registry-directory
> default-user-source-registry
> system-source-registry
> system-source-registry-directory
> default-system-source-registry)
> "List of default source registries" "3.1.0.102")
> --8<---------------cut here---------------end--------------->8---
>
> `user-source-registry' points to what is read in
> ~/.config/common-lisp/source-registry.conf(.d/)?, so nothing by default.
>
> user-source-registry-directory reads what's in XDG_CONFIG_DIRS, and it
> finds the Guix packages there.
>
> The default-user-source-registry expands to
>
> --8<---------------cut here---------------start------------->8---
> (:SOURCE-REGISTRY (:TREE (:HOME "common-lisp/"))
> (:DIRECTORY (:HOME ".sbcl/systems/"))
> (:DIRECTORY
> #P"/home/ambrevar/.local/share/common-lisp/systems/")
> (:TREE #P"/home/ambrevar/.local/share/common-lisp/source/")
> :INHERIT-CONFIGURATION)
> --8<---------------cut here---------------end--------------->8---
>
> which is where I would drop my user-local packages.
>
> Finally, default-system-source-registry reads what's in XDG_DATA_DIRS,
> and it finds the packages there again, but it does not read the
> Guix-generated conf which collects the dependencies of each package.
>
>
>
> I believe the issue is that `user-source-registry-directory' should read
> from XDG_CONFIG_HOME, and not XDG_CONFIG_DIRS (which would make it
> redundant with `user-source-registry'). This would make it an upstream
> issue, but I wanted to double-check I properly understood the problem
> with the Guix community first.
>
> Guillaume, thoughts on this?
Our cl-asdf package definition has little patches for
'user-source-registry-directory' and
'user-output-translations-directory-pathname' to make ASDF read
configuration files in all the directories listed in 'XDG_CONFIG_DIRS'
(IIRC regular ASDF was only reading from the first valid one in
'XDG_CONFIG_HOME' or 'XDG_CONFIG_DIRS'):
--8<---------------cut here---------------start------------->8---
(substitute* dst-asdf
(("\\(xdg-config-pathname \\*source-registry-directory\\* direction\\)")
"`(:source-registry
,@(loop
for dir in (xdg-config-dirs
\"common-lisp/source-registry.conf.d/\")
collect `(:include ,dir))
:inherit-configuration)")
(("\\(xdg-config-pathname \\*output-translations-directory\\* direction\\)")
"`(:output-translations
,@(loop
for dir in (xdg-config-dirs
\"common-lisp/asdf-output-translations.conf.d/\")
collect `(:include ,dir))
:inherit-configuration)")))
--8<---------------cut here---------------end--------------->8---
I guess 'XDG_CONFIG_HOME' is missing here and we could add it in the
list before the 'XDG_CONFIG_DIRS' directories. Something like:
--8<---------------cut here---------------start------------->8---
(substitute* dst-asdf
(("\\(xdg-config-pathname \\*source-registry-directory\\* direction\\)")
"`(:source-registry
(:include (xdg-config-home \"common-lisp/source-registry.conf.d/\"))
,@(loop
for dir in (xdg-config-dirs
\"common-lisp/source-registry.conf.d/\")
collect `(:include ,dir))
:inherit-configuration)")
(("\\(xdg-config-pathname \\*output-translations-directory\\* direction\\)")
"`(:output-translations
(:include (xdg-config-home
\"common-lisp/asdf-output-translations.conf.d/\"))
,@(loop
for dir in (xdg-config-dirs
\"common-lisp/asdf-output-translations.conf.d/\")
collect `(:include ,dir))
:inherit-configuration)")))
--8<---------------cut here---------------end--------------->8---
Or maybe we could make a better patch not changing
'user-source-registry-directory', but adding a new
'guix-source-registry' between 'default-user-source-registry' and
'system-source-registry' in the list of registries (and likewise for
output-translations).
I think this way the systems in '$HOME/.config/...', '$HOME/.local/...'
or '$HOME/common-lisp/...' will have priority on the ones in Guix
profiles.
What do you think?
signature.asc
Description: PGP signature
- bug#45017: asdf-build-system packages have priority over user ones, Pierre Neidhardt, 2020/12/03
- bug#45017: asdf-build-system packages have priority over user ones,
Guillaume Le Vaillant <=
- bug#45017: asdf-build-system packages have priority over user ones, Pierre Neidhardt, 2020/12/03
- bug#45017: asdf-build-system packages have priority over user ones, Guillaume Le Vaillant, 2020/12/03
- bug#45017: asdf-build-system packages have priority over user ones, Pierre Neidhardt, 2020/12/04
- bug#45017: asdf-build-system packages have priority over user ones, Guillaume Le Vaillant, 2020/12/04
- bug#45017: asdf-build-system packages have priority over user ones, Pierre Neidhardt, 2020/12/04
- bug#45017: asdf-build-system packages have priority over user ones, Guillaume Le Vaillant, 2020/12/04
- bug#45017: asdf-build-system packages have priority over user ones, Guillaume Le Vaillant, 2020/12/04
- bug#45017: asdf-build-system packages have priority over user ones, Pierre Neidhardt, 2020/12/05
- bug#45017: asdf-build-system packages have priority over user ones, Guillaume Le Vaillant, 2020/12/05
- bug#45017: asdf-build-system packages have priority over user ones, Pierre Neidhardt, 2020/12/05