Work-around built-in ~/common-lisp/ in search path?
Here's my issue: 1. I have a bunch of lisp libraries that I use on everyday things installed in ~/common-lisp/. One of the systems in there is an older, modified version of fiveam that my company uses in many projects. 2. I have a project where we use libraries from quicklisp to make it easier to handle dependencies. For this project, I run a function that resets the ASDF source-registry, and uses a special copy of quicklisp (a copy that writes its systems in a different location). 3. I cannot build my system because the version of fiveam in ~/common-lisp/ shadows the version of fiveam from quicklisp, which I need. 4. I don't see any OBVIOUS way to tell ASDF to ignore my ~/common-lisp/ directory. I can do the following: (setf asdf:*default-source-registries* (remove 'asdf/source-registry::default-user-source-registry asdf:*default-source-registries*)) but that seems really hard-core. Would it be reasonable to make the defaults a little easier to override? Maybe something that's equivalent to --no-userinit and --no-sysinit when starting lisp -- something that will remove the user-specific entries or system-specific entries, respectively? I don't believe I can simply wipe the defaults, because then I might miss some SBCL libraries that come with the system default settings. Cheers, r
Does specifying a registry with :ignore-inherited-configuration not work? On 12:01 Wed 16 Nov , Robert Goldman wrote:
Here's my issue:
1. I have a bunch of lisp libraries that I use on everyday things installed in ~/common-lisp/. One of the systems in there is an older, modified version of fiveam that my company uses in many projects.
2. I have a project where we use libraries from quicklisp to make it easier to handle dependencies. For this project, I run a function that resets the ASDF source-registry, and uses a special copy of quicklisp (a copy that writes its systems in a different location).
3. I cannot build my system because the version of fiveam in ~/common-lisp/ shadows the version of fiveam from quicklisp, which I need.
4. I don't see any OBVIOUS way to tell ASDF to ignore my ~/common-lisp/ directory. I can do the following:
(setf asdf:*default-source-registries* (remove 'asdf/source-registry::default-user-source-registry asdf:*default-source-registries*))
but that seems really hard-core. Would it be reasonable to make the defaults a little easier to override?
Maybe something that's equivalent to --no-userinit and --no-sysinit when starting lisp -- something that will remove the user-specific entries or system-specific entries, respectively?
I don't believe I can simply wipe the defaults, because then I might miss some SBCL libraries that come with the system default settings.
Cheers, r
On 11/16/16 Nov 16 -12:44 PM, Jason Miller wrote:
Does specifying a registry with :ignore-inherited-configuration not work?
I could do that, but I that would also delete system-source-registry system-source-registry-directory and default-system-source-registry ... which I feared might cause me access to bundled SBCL libraries. That's why I was wondering if it would be helpful to have something like :ignore-user-default-directories and :ignore-system-default-directories Best, r
On 12:01 Wed 16 Nov , Robert Goldman wrote:
Here's my issue:
1. I have a bunch of lisp libraries that I use on everyday things installed in ~/common-lisp/. One of the systems in there is an older, modified version of fiveam that my company uses in many projects.
2. I have a project where we use libraries from quicklisp to make it easier to handle dependencies. For this project, I run a function that resets the ASDF source-registry, and uses a special copy of quicklisp (a copy that writes its systems in a different location).
3. I cannot build my system because the version of fiveam in ~/common-lisp/ shadows the version of fiveam from quicklisp, which I need.
4. I don't see any OBVIOUS way to tell ASDF to ignore my ~/common-lisp/ directory. I can do the following:
(setf asdf:*default-source-registries* (remove 'asdf/source-registry::default-user-source-registry asdf:*default-source-registries*))
but that seems really hard-core. Would it be reasonable to make the defaults a little easier to override?
Maybe something that's equivalent to --no-userinit and --no-sysinit when starting lisp -- something that will remove the user-specific entries or system-specific entries, respectively?
I don't believe I can simply wipe the defaults, because then I might miss some SBCL libraries that come with the system default settings.
Cheers, r
I could do that, but I that would also delete
system-source-registry system-source-registry-directory and default-system-source-registry
... which I feared might cause me access to bundled SBCL libraries.
i wanted to answer that you shouldn't be afraid, because it's implemented through an entry in asdf:*system-definition-search-functions*, but then i saw that it's not anymore, and i couldn't even find out in 5 minutes how ASDF finds SBCL contribs. nevertheless, i have this in my ~/.config/common-lisp/source-registry.conf: (:source-registry (:also-exclude "sbcl" "disabled-systems" "build") (:tree (:home "common-lisp/")) (:tree "/usr/local/share/common-lisp/source/") :ignore-inherited-configuration) and the SBCL contribs are found. -- • attila lendvai • PGP: 963F 5D5F 45C7 DFCD 0A39 -- “The greatest fear in the world is of the opinions of others. And the moment you are unafraid of the crowd you are no longer a sheep, you become a lion. A great roar arises in your heart, the roar of freedom.” — Osho (1931–1990)
On Wed, Nov 16, 2016 at 2:41 PM, Attila Lendvai <attila@lendvai.name> wrote:
I could do that, but I that would also delete
system-source-registry system-source-registry-directory and default-system-source-registry
... which I feared might cause me access to bundled SBCL libraries.
i wanted to answer that you shouldn't be afraid, because it's implemented through an entry in asdf:*system-definition-search-functions*, but then i saw that it's not anymore, and i couldn't even find out in 5 minutes how ASDF finds SBCL contribs.
It's currently implemented as a source-registry wrapper, and is resiliant to your using :ignore-inherited-configuration. See asdf/source-registry:wrapping-source-registry. You're right that a system-definition-search-function might have been nicer (or then again not). If anyone cares enough to think hard about it, explain why it's indeed better, and write a patch, we could probably simplify asdf a little bit (not THAT much either). —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Maybe violence is sometimes useful. But then it is certainly only so when successful, leading to victory, not when failed, leading to defeat.
Hi Robert, a side note: have you ever considered creating your company-internal quicklisp distribution? We are in the same situation of needing defined versions of dependencies indepent from what is in the current quicklisp dist. We solve this by having a repository with a file which contains a list of git repos where the master branches contain what we want to distribute in the dist. Using shirakumo-dist [1], a new release is created with: (asdf:load-system :m-creations-dist) (m-creations-dist::redist) You can then rsync the release/ subdir to a web server and your colleagues can use the release with (ql-dist:install-dist "http://quicklisp.sift.internal/dist1.txt") Nicolas Hafner pointed me to his shirakumo-dist [1] which in turn uses Quickdist [2] which I took as blueprint for ours [3]. HTH Kambiz [1] https://github.com/Shirakumo/dist [2] https://github.com/orivej/quickdist [3] https://github.com/m-creations/m-creations-dist On 2016-11-16 19:01 CET, Robert Goldman <rpgoldman@sift.net> wrote:
Here's my issue:
1. I have a bunch of lisp libraries that I use on everyday things installed in ~/common-lisp/. One of the systems in there is an older, modified version of fiveam that my company uses in many projects.
2. I have a project where we use libraries from quicklisp to make it easier to handle dependencies. For this project, I run a function that resets the ASDF source-registry, and uses a special copy of quicklisp (a copy that writes its systems in a different location).
3. I cannot build my system because the version of fiveam in ~/common-lisp/ shadows the version of fiveam from quicklisp, which I need.
4. I don't see any OBVIOUS way to tell ASDF to ignore my ~/common-lisp/ directory. I can do the following:
(setf asdf:*default-source-registries* (remove 'asdf/source-registry::default-user-source-registry asdf:*default-source-registries*))
but that seems really hard-core. Would it be reasonable to make the defaults a little easier to override?
Maybe something that's equivalent to --no-userinit and --no-sysinit when starting lisp -- something that will remove the user-specific entries or system-specific entries, respectively?
I don't believe I can simply wipe the defaults, because then I might miss some SBCL libraries that come with the system default settings.
Cheers, r
participants (5)
-
Attila Lendvai
-
Faré
-
Jason Miller
-
Kambiz Darabi
-
Robert Goldman