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:
- 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.
- 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).
- I cannot build my system because the version of fiveam in
~/common-lisp/ shadows the version of fiveam from quicklisp, which I need.
- 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:
- 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.
- 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).
- I cannot build my system because the version of fiveam in
~/common-lisp/ shadows the version of fiveam from quicklisp, which I need.
- 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.
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:
- 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.
- 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).
- I cannot build my system because the version of fiveam in
~/common-lisp/ shadows the version of fiveam from quicklisp, which I need.
- 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