clpm issueshttps://gitlab.common-lisp.net/clpm/clpm/-/issues2021-08-30T01:01:08Zhttps://gitlab.common-lisp.net/clpm/clpm/-/issues/38Add an FAQ section to website2021-08-30T01:01:08ZEric TimmonsAdd an FAQ section to websiteA good starting point would be to address issues #17 and #21.A good starting point would be to address issues #17 and #21.v0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/22Add a generic `:git` directive for bundles2021-09-04T01:35:58ZEric TimmonsAdd a generic `:git` directive for bundlesv0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/21`package-inferred-system` from Quicklisp doesn't include its dependencies if ...2021-10-27T14:12:06ZNathan Tran`package-inferred-system` from Quicklisp doesn't include its dependencies if required by a local .asd fileLet's say we have a `clpmfile` requiring `foo.asd`:
```lisp
;;; -*- Mode: common-lisp; -*-
(:api-version "0.3")
(:source "quicklisp" :url "https://beta.quicklisp.org/dist/quicklisp.txt" :type :quicklisp)
(:asd "foo.asd")
```
And `foo...Let's say we have a `clpmfile` requiring `foo.asd`:
```lisp
;;; -*- Mode: common-lisp; -*-
(:api-version "0.3")
(:source "quicklisp" :url "https://beta.quicklisp.org/dist/quicklisp.txt" :type :quicklisp)
(:asd "foo.asd")
```
And `foo.asd` depends on [`cmd`](https://github.com/ruricolist/cmd), which uses `package-inferred-system`:
```lisp
(defsystem "foo"
:version "0.1.0"
:depends-on (cmd)
:pathname "src/"
:components ((:file "foo")))
```
Then running `clpm bundle install` gives:
```
Project Old Version -> New Version Old Source -> New Source
cmd 2021-06-30 quicklisp
```
Which is missing `cmd`'s dependencies such as `serapeum` and `cl-shlex`.
When we have this in `clpmfile`:
```lisp
(:github "cmd"
:path "ruricolist/cmd"
:branch "master")
```
Then `clpm bundle install` returns all the dependencies correctly:
```
Project Old Version -> New Version Old Source -> New Source
asdf-flv 2016-04-21 quicklisp
cl-shlex 2021-04-11 quicklisp
closer-mop 2021-06-30 quicklisp
cmd (COMMIT 8c8adcfa8f5dc811c784861ecb7bcdee925b6280) IMPLICIT-VCS
fare-quasiquote 2020-09-25 quicklisp
fare-utils 2017-01-24 quicklisp
fiveam 2020-09-25 quicklisp
global-vars 2014-11-06 quicklisp
introspect-environment 2020-07-15 quicklisp
iterate 2021-05-31 quicklisp
lisp-namespace 2017-11-30 quicklisp
named-readtables 2021-05-31 quicklisp
parse-declarations 2010-10-07 quicklisp
parse-number 2018-02-28 quicklisp
serapeum 2021-06-30 quicklisp
string-case 2018-07-11 quicklisp
trivia 2021-06-30 quicklisp
trivial-cltl2 2020-03-25 quicklisp
trivial-file-size 2020-04-27 quicklisp
trivial-macroexpand-all 2017-10-23 quicklisp
type-i 2019-12-27 quicklisp
```
Is this intended behaviour?
By the way, thank you for all your hard work on this amazing package manager! It made picking up CL more approachable for me coming from other languages.v0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/20Any plans for the M1 Mac now that sbcl support it?2021-09-05T15:40:04ZJason LeglerAny plans for the M1 Mac now that sbcl support it?I can do a build if that would help.I can do a build if that would help.v0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/11Add and document more build options2021-02-22T16:56:48ZEric TimmonsAdd and document more build optionsRight now, CLPM builds using Shinmera's Deploy library and bundles its external dependencies as shared objects which are opened on CLPM start. This way was chosen to make it easier to install CLPM on an arbitrary machine without worrying...Right now, CLPM builds using Shinmera's Deploy library and bundles its external dependencies as shared objects which are opened on CLPM start. This way was chosen to make it easier to install CLPM on an arbitrary machine without worrying about having the correct versions of libraries installed. We should add at least two more build options as well:
+ Static executable. While it's relatively easy to statically link most libraries into the SBCL runtime, creating a static executable is not as easy. But @etimmons has patches to SBCL that allow this (last submitted to sbcl-devel [in June](https://sourceforge.net/p/sbcl/mailman/sbcl-devel/thread/CAOrNaswzf%3DugEwfaEMmrNi3rKC4sNdFdH%2B1kFkYBN3fpp54e9w%40mail.gmail.com/#msg37060632)). Make this the default build for releases as we'd no longer need to distinguish between glibc and musl and there would be fewer files needed to run the executable.
+ Dynamic executable without bundled libs. This would be particularly useful when included CLPM in an OS package manager as the package manager would handle making sure all deps are installed and they are the correct versions.v0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/9Use vendored paths on Windows instead of straight XDG2021-03-17T02:36:18ZEric TimmonsUse vendored paths on Windows instead of straight XDG`uiop:xdg-{cache,config}-home` return paths such as `%LOCALAPPDATA%\cache` on Windows. This is not the standard practice on Windows, so consider moving our cache and config under the `%LOCALAPPDATA%\clpm` folder instead.`uiop:xdg-{cache,config}-home` return paths such as `%LOCALAPPDATA%\cache` on Windows. This is not the standard practice on Windows, so consider moving our cache and config under the `%LOCALAPPDATA%\clpm` folder instead.v0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/3Develop a test suite2021-09-14T22:42:26ZEric TimmonsDevelop a test suiteThe behavior of CLPM has gotten complex enough that it is no longer suitable to just test it through use. The refactoring of the client and CLI code in v0.3.0 should make the development of a test suite much less painful than it would ha...The behavior of CLPM has gotten complex enough that it is no longer suitable to just test it through use. The refactoring of the client and CLI code in v0.3.0 should make the development of a test suite much less painful than it would have been before.v0.4https://gitlab.common-lisp.net/clpm/clpm/-/issues/49Activating a context after cache has been wiped should "just work"2021-10-20T18:36:19ZEric TimmonsActivating a context after cache has been wiped should "just work"Replicate by creating a bundle with a git repo. Clear the cache. Activate the context and see the error.
Fix will probably involve the equivalent of `install --no-resolve` during activation. Additionally, the separation of git repo as s...Replicate by creating a bundle with a git repo. Clear the cache. Activate the context and see the error.
Fix will probably involve the equivalent of `install --no-resolve` during activation. Additionally, the separation of git repo as source instead of a requirement (#40) might make this easier as well.v0.5https://gitlab.common-lisp.net/clpm/clpm/-/issues/59The CLPI mirror of Quicklisp is outdated2024-03-15T02:47:14Zbb010gThe CLPI mirror of Quicklisp is outdatedPackages from <https://clpi.ultralisp.org/ultralisp/> are at least a year out of date. For example, `usocket` is still at v0.8.3, whereas it's at v0.8.6 in Quicklisp. #58 makes this more of a problem—trying to use Quicklisp directly cras...Packages from <https://clpi.ultralisp.org/ultralisp/> are at least a year out of date. For example, `usocket` is still at v0.8.3, whereas it's at v0.8.6 in Quicklisp. #58 makes this more of a problem—trying to use Quicklisp directly crashes CLPM. You're stuck with old packages unless you vendor or set up your own mirror.https://gitlab.common-lisp.net/clpm/clpm/-/issues/58SBCL's dynamic space size can't be set2024-03-15T02:47:15Zbb010gSBCL's dynamic space size can't be setWhen trying to sync <https://dist.ultralisp.org/ultralisp.txt> on Windows, CLPM crashes with `Heap exhausted during garbage collection`. I'd like to be able to pass `--dynamic-space-size <MiB>` to `clpm`, like I can with `sbcl`. (`--cont...When trying to sync <https://dist.ultralisp.org/ultralisp.txt> on Windows, CLPM crashes with `Heap exhausted during garbage collection`. I'd like to be able to pass `--dynamic-space-size <MiB>` to `clpm`, like I can with `sbcl`. (`--control-stack-size <MiB>` should probably also be supported.)https://gitlab.common-lisp.net/clpm/clpm/-/issues/57Windows build crashes when using Quicklisp2023-07-03T17:55:54ZAndrew KravchukWindows build crashes when using QuicklispHey. There's a problem with Windows build of CLPM, it fails with heap exhausted when using Quicklisp source of `:type :quicklisp`, even though the memory usage is modest (below 1Gb of RSS).
Steps to reproduce:
1. Have a Windows environme...Hey. There's a problem with Windows build of CLPM, it fails with heap exhausted when using Quicklisp source of `:type :quicklisp`, even though the memory usage is modest (below 1Gb of RSS).
Steps to reproduce:
1. Have a Windows environment (I've confirmed the problem on both WINE 8.0.1 and Windows 11 Enterprise Evaluation version).
2. Install CLPM with MSI from [here](https://www.clpm.dev/#installing).
3. Create the following `clpmfile`:
```lisp
(:api-version "0.4")
(:source "quicklisp"
:url "https://beta.quicklisp.org/dist/quicklisp.txt"
:type :quicklisp)
```
4. Run `clpm bundle install` in directory where `clpmfile` resides.
This results in something like
```
Heap exhausted during garbage collection: 112 bytes available, 304 requested.
Gen Boxed Code Raw LgBox LgCode LgRaw Pin Alloc Waste Trig WP GCs Mem-age
2 2459 1 5502 0 0 0 29 516205600 5592032 2000000 7962 0 0.8832
3 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
4 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
5 0 0 0 0 0 0 0 0 0 2000000 0 0 0.0000
6 689 327 437 62 0 10 0 96999424 2942976 2000000 1525 0 0.0000
7 2026 1 4869 0 0 0 0 446515568 5420688 2000000 6896 0 0.0000
Total bytes allocated = 1059720592
Dynamic-space-size bytes = 1073741824
GC control variables:
*GC-INHIBIT* = true
*GC-PENDING* = true
*STOP-FOR-GC-PENDING* = false
fatal error encountered in SBCL pid 260264:
Heap exhausted, game over.
```
Perhaps specifying `dynamic-space-size` when building Windows binary would help?https://gitlab.common-lisp.net/clpm/clpm/-/issues/56Don't know how to handle response 4162023-06-15T15:48:20ZAndrew KravchukDon't know how to handle response 416Hey!
I'm trying to use CLPM, but keep getting errors when it actually tries to download some Quicklisp packages.
For example, following steps in "_Demo: using bundles from the repl_" tutorial, after adding `fiveam` as github project to...Hey!
I'm trying to use CLPM, but keep getting errors when it actually tries to download some Quicklisp packages.
For example, following steps in "_Demo: using bundles from the repl_" tutorial, after adding `fiveam` as github project to the `clpmfile` and executing `(clpm-client:install :context #p"/tmp/clpm-demo/clpmfile")`, I'm getting
```
Error interacting with CLPM! Error output:
<skipped backtrace>
Above backtrace due to this condition:
Don't know how to handle response 416 for https://quicklisp.common-lisp-project-index.org/clpi/v0.4/projects/trivial-backtrace/releases-0
Original condition:
end of file on #<SB-SYS:FD-STREAM for "descriptor 19" {1009C2C703}>
[Condition of type CLPM-CLIENT:CLPM-ERROR]
```
...and the `RETRY` restart won't help.
Interestingly enough, this works fine for e.g. alexandria on previous tutorial step.
What can I do to fix this?https://gitlab.common-lisp.net/clpm/clpm/-/issues/55broken pipe error2023-12-17T17:11:06ZCameron Pittmanbroken pipe errorI'm reporting this issue from a thread [here](https://gist.github.com/MuhammedZakir/1a51da09dfa0e0578f0f056abf740d7c). The following is from another CLPM user, Muhammed Zakir, which I've copied and formatted a little bit. He is apparentl...I'm reporting this issue from a thread [here](https://gist.github.com/MuhammedZakir/1a51da09dfa0e0578f0f056abf740d7c). The following is from another CLPM user, Muhammed Zakir, which I've copied and formatted a little bit. He is apparently having trouble signing up for an account on this GitLab instance (which is probably something else worth reporting but I don't know to whom it should go).
---
* CLPM version: `0.4.2-rc.2`, `0.4.2-rc.1`, `0.4.1`
* SBCL version: `2.2.5`
* OS: Manjaro
CLPM installed from [AUR](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=clpm) and manually.
### Expected Behavior
CLPM downloads dependencies and returns `0`
### Observed Behavior
CLPM returns a broken pipe error. (See the bottom of this issue)
### Actions Taken
Yesterday, when I first ran `clpm bundle install --verbose`, it didn't give any output. After sometime, seeing that no output was shown even though I passed `--verbose` flag, and thinking that I might have misconfigured something, I killed it using `ctrl-c`. This error started happening *after that*. I suspect this may has something to do with what I've done, but I also tried deleting `~/.cache/clpm`, and this still happens, so I am not sure.
I am getting [the error] even for [clpm-demo](https://gitlab.common-lisp.net/clpm/clpm-demo) repo.
After rebooting my machine, I just tried this using CLPM `v0.4.1` and got the same error:
```
git clone --depth 1 https://gitlab.common-lisp.net/clpm/clpm-demo
cd clpm-demo
clpm bundle init -a clpm-demo.asd -a clpm-demo-test.asd
# created `clpmfile` successfully.
clpm bundle install
```
This is the `clpmfile` generated by `clpm bundle init`:
```
;;; -*- Mode: common-lisp; -*-
(:api-version "0.4")
(:source "ultralisp" :url "https://clpi.ultralisp.org/" :type :clpi)
(:source "quicklisp" :url "https://quicklisp.common-lisp-project-index.org/" :type :ql-clpi)
(:asd "clpm-demo-test.asd")
(:asd "clpm-demo.asd")
```
The actual error:
```
Warning: --shell feature has been deprecated
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1000BE0103}>
0: ((LAMBDA NIL :IN UIOP/IMAGE:PRINT-BACKTRACE))
1: ((FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX))
2: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<FUNCTION (FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX) {7F3B8C90F1DB}>)
3: (UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX #<FUNCTION (LAMBDA NIL :IN UIOP/IMAGE:PRINT-BACKTRACE) {100676AE9B}> :PACKAGE :CL)
4: (UIOP/IMAGE:PRINT-CONDITION-BACKTRACE #<SB-INT:BROKEN-PIPE "~@<~?~@[: ~2I~_~A~]~:>" {100676ADF3}> :STREAM NIL :COUNT NIL)
5: ((FLET "H2" :IN CLPM-CLI/ENTRY:MAIN) #<SB-INT:BROKEN-PIPE "~@<~?~@[: ~2I~_~A~]~:>" {100676ADF3}>)
6: (SB-KERNEL::%SIGNAL #<SB-INT:BROKEN-PIPE "~@<~?~@[: ~2I~_~A~]~:>" {100676ADF3}>)
7: (ERROR SB-INT:BROKEN-PIPE :STREAM #<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}> :FORMAT-CONTROL "~@<~?~@[: ~2I~_~A~]~:>" :FORMAT-ARGUMENTS ("Couldn't write to ~S" (#<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}>) "Broken pipe"))
8: (SB-IMPL::FLUSH-OUTPUT-BUFFER #<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}>)
9: (SB-IMPL::OUTPUT-BYTES/UTF-8 #<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}> #<(SIMPLE-ARRAY CHARACTER (8177)) ;;;; ASDF System Groveler Helper
;;;;
;;;; This software is part of asdf-system-grovler. See README.org for more
;;;; information. See LICENSE for license information.
;;;;
;;;; This file is written i... {100171800F}> NIL 0 8177)
10: (SB-IMPL::FD-SOUT #<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}> #<(SIMPLE-ARRAY CHARACTER (8177)) ;;;; ASDF System Groveler Helper
;;;;
;;;; This software is part of asdf-system-grovler. See README.org for more
;;;; information. See LICENSE for license information.
;;;;
;;;; This file is written i... {100171800F}> 0 8177)
11: (SB-IMPL::%WRITE-STRING #<(SIMPLE-ARRAY CHARACTER (8177)) ;;;; ASDF System Groveler Helper
;;;;
;;;; This software is part of asdf-system-grovler. See README.org for more
;;;; information. See LICENSE for license information.
;;;;
;;;; This file is written i... {100171800F}> #<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}> 0 NIL)
12: ((LAMBDA NIL :IN ASDF-SYSTEM-GROVELER/GROVELER::GROVELER-INIT))
13: ((FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX))
14: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<FUNCTION (FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX) {7F3B8C90F56B}>)
15: (UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX #<FUNCTION (LAMBDA NIL :IN ASDF-SYSTEM-GROVELER/GROVELER::GROVELER-INIT) {10067695BB}> :PACKAGE :CL)
16: ((:METHOD ASDF-SYSTEM-GROVELER/GROVELER::GROVELER-INIT (ASDF-SYSTEM-GROVELER/GROVELER::GROVELER)) #<ASDF-SYSTEM-GROVELER/GROVELER::GROVELER {1006768743}>) [fast-method]
17: (ASDF-SYSTEM-GROVELER/GROVELER:MAKE-GROVELER :SBCL :ASDF-PATHNAME NIL :ASDF-PRESERVE-CONFIGURATION NIL :ASDF-ALLOW-SELF-UPGRADE NIL :ASDF-FASL-CACHE-DIR #P"/tmp/clpmNPfnKP/" :KEEP-ASDF-FASL-CACHE-DIR NIL :LAUNCH-PROGRAM-ARGS NIL :LISP-PATH NIL :LISP-ARGS NIL :REWRITE-ARGUMENTS-CALLBACK #<FUNCTION (FLET CLPM/GROVELER::REWRITE :IN CLPM/GROVELER:MAKE-GROVELER) {10062892CB}>)
18: (CLPM/GROVELER:MAKE-GROVELER)
19: ((LAMBDA NIL :IN CLPM/RESOLVE:RESOLVE-REQUIREMENTS))
20: (CLPM/SOURCE::CALL-WITH-SOURCES (#<CLPM/SOURCES/FS:FS-SOURCE {1005C475F3}> #<CLPM/SOURCES/CLPI:CLPI-DUAL-SOURCE {1005156693}> #<CLPM/SOURCES/QL-CLPI:QL-CLPI-DUAL-SOURCE {1005ADFF63}>) #<FUNCTION (LAMBDA NIL :IN CLPM/RESOLVE:RESOLVE-REQUIREMENTS) {100628545B}>)
21: ((LAMBDA (CLPM/INSTALL::NEW-CONTEXT) :IN CLPM/INSTALL:INSTALL-REQUIREMENTS) #<unavailable argument>)
22: (CLPM/CONTEXT::CALL-WITH-CONTEXT #<FUNCTION (LAMBDA (CLPM/INSTALL::NEW-CONTEXT) :IN CLPM/INSTALL:INSTALL-REQUIREMENTS) {10061725AB}> #<CLPM/CONTEXT:CONTEXT {1006284443}>)
23: (CLPM/CONTEXT::CALL-WITH-CONTEXT #<FUNCTION (LAMBDA (CLPM/INSTALL::ORIG-CONTEXT) :IN CLPM/INSTALL:INSTALL-REQUIREMENTS) {10061715CB}> #<CLPM/CONTEXT:CONTEXT {1004E27ED3}>)
24: ((LAMBDA (CLPM/BUNDLE::LOCKFILE) :IN CLPM/BUNDLE:BUNDLE-INSTALL) #<unavailable argument>)
25: (CLPM/CONFIG::CALL-WITH-CONFIG-SOURCE #<FUNCTION (LAMBDA NIL :IN CLPM/CONTEXT::CALL-WITH-CONTEXT) {1004CFBADB}> :CONFIG-SOURCE NIL :PATHNAME #P"/tmp/on-lisp/.clpm/bundle.conf" :OPTIONS-HT NIL)
26: (CLPM/CONTEXT::CALL-WITH-CONTEXT #<FUNCTION (LAMBDA (CLPM/BUNDLE::LOCKFILE) :IN CLPM/BUNDLE:BUNDLE-INSTALL) {1004CF550B}> #P"/tmp/on-lisp/clpmfile")
27: ((LAMBDA ()))
28: (CLPM/SESSION::CALL-WITH-CLPM-SESSION #<FUNCTION (LAMBDA NIL) {53D44FAB}> :OVERRIDE NIL :KEY NIL)
29: (SB-INT:SIMPLE-EVAL-IN-LEXENV (CLPM/SESSION:WITH-CLPM-SESSION NIL (CLPM/BUNDLE:BUNDLE-INSTALL :CLPMFILE #1=#P"/tmp/on-lisp/clpmfile" :VALIDATE (LAMBDA (CLPM/CLPM::DIFF) (PRINT (CLPM/CONTEXT-DIFF:CONTEXT-DIFF-TO-PLIST CLPM/CLPM::DIFF)) (TERPRI) (FINISH-OUTPUT) (READ)) :NO-RESOLVE NIL) (LIST (CLPM/CONTEXT-QUERIES:SOURCE-REGISTRY :CONTEXT #1# :IGNORE-INHERITED-SOURCE-REGISTRY T) (CLPM/CONTEXT-QUERIES:INSTALLED-PRIMARY-SYSTEM-NAMES :CONTEXT #1#) (CLPM/CONTEXT-QUERIES:VISIBLE-PRIMARY-SYSTEM-NAMES :CONTEXT #1#) (CLPM/CONTEXT-QUERIES:EDITABLE-PRIMARY-SYSTEM-NAMES :CONTEXT #1#))) #<NULL-LEXENV>)
30: (EVAL (CLPM/SESSION:WITH-CLPM-SESSION NIL (CLPM/BUNDLE:BUNDLE-INSTALL :CLPMFILE #1=#P"/tmp/on-lisp/clpmfile" :VALIDATE (LAMBDA (CLPM/CLPM::DIFF) (PRINT (CLPM/CONTEXT-DIFF:CONTEXT-DIFF-TO-PLIST CLPM/CLPM::DIFF)) (TERPRI) (FINISH-OUTPUT) (READ)) :NO-RESOLVE NIL) (LIST (CLPM/CONTEXT-QUERIES:SOURCE-REGISTRY :CONTEXT #1# :IGNORE-INHERITED-SOURCE-REGISTRY T) (CLPM/CONTEXT-QUERIES:INSTALLED-PRIMARY-SYSTEM-NAMES :CONTEXT #1#) (CLPM/CONTEXT-QUERIES:VISIBLE-PRIMARY-SYSTEM-NAMES :CONTEXT #1#) (CLPM/CONTEXT-QUERIES:EDITABLE-PRIMARY-SYSTEM-NAMES :CONTEXT #1#))))
31: ((FLET "THUNK" :IN CLPM-CLI/COMMANDS/CLIENT/REPL::CLI/CLIENT/REPL))
32: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<FUNCTION (FLET "THUNK" :IN CLPM-CLI/COMMANDS/CLIENT/REPL::CLI/CLIENT/REPL) {52FAA82B}>)
33: (CLPM-CLI/COMMANDS/CLIENT/REPL::CLI/CLIENT/REPL #<unused argument> #<unused argument>)
34: ((LAMBDA NIL :IN "/builds/clpm/clpm/cli/entry.lisp"))
35: (CLPM/CONFIG::CALL-WITH-CONFIG-SOURCE #<FUNCTION (LAMBDA NIL :IN "/builds/clpm/clpm/cli/entry.lisp") {10046DAABB}> :CONFIG-SOURCE NIL :PATHNAME NIL :OPTIONS-HT #<HASH-TABLE :TEST EQL :COUNT 0 {10046DA853}>)
36: (CLPM-CLI/ENTRY:MAIN)
37: ((LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE))
38: (UIOP/IMAGE:CALL-WITH-FATAL-CONDITION-HANDLER #<FUNCTION (LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE) {10005A573B}>)
39: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
40: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-IMPL::START-LISP))
41: (SB-IMPL::START-LISP)
Above backtrace due to this condition:
Couldn't write to #<SB-SYS:FD-STREAM for "descriptor 5" {1006578483}>: Broken pipe
```https://gitlab.common-lisp.net/clpm/clpm/-/issues/54Installing dependencies local to the source tree and loading them without req...2022-05-03T13:06:47ZDiego MundoInstalling dependencies local to the source tree and loading them without requiring CLPMI really like the ideas and design of CLPM. One thing that would be really convenient is to be able to do the same thing as Quicklisp bundles:
> Quicklisp library bundles are self-contained sets of systems that are exported from Quickli...I really like the ideas and design of CLPM. One thing that would be really convenient is to be able to do the same thing as Quicklisp bundles:
> Quicklisp library bundles are self-contained sets of systems that are exported from Quicklisp and loadable without involving Quicklisp. A library bundle has a directory structure that includes software archives, an index file, and a Lisp file that can be loaded to configure ASDF to understand how to load systems from the bundle.
I think making a project not depend on "the outside world" can be desirable for a number of reasons. In my case, I just want an easy way for me to manage and update deps without the rest of my team needing to worry about it. (We include them in the source tree now, but are as of now unmaanged)https://gitlab.common-lisp.net/clpm/clpm/-/issues/53CLPM fails with contexts that start with `~`2022-06-27T20:57:57ZCameron PittmanCLPM fails with contexts that start with `~`The problem is either that CLPM fails to warn users when it cannot find the clpmfile given as context, or that it fails to properly handle contexts that use `~` instead of a full path to the home directory.
Steps to reproduce:
1. Go to...The problem is either that CLPM fails to warn users when it cannot find the clpmfile given as context, or that it fails to properly handle contexts that use `~` instead of a full path to the home directory.
Steps to reproduce:
1. Go to a repo. Change dependencies in an .asd file
2. `(clpm-client:activate-context #p"~/foo/bar/clpmfile")`
3. `(clpm-client:install)`
4. Observe that CLPM wants to remove dependencies
5. In a terminal in the same repo, run `clpm bundle install`. Note that it will not prompt to uninstall dependencies
Re-running step 2 with the full path (no `~`) will result in expected behavior.https://gitlab.common-lisp.net/clpm/clpm/-/issues/52End of file error on client sync2022-01-26T15:24:43ZColin OkayEnd of file error on client syncI am trying clpm for the first time by stepping through the quickstart on the project's landing page.
When I get the to `(clpm-client:sync :sources "quicklisp")` step, an end of file condition is encountered. The only restart available...I am trying clpm for the first time by stepping through the quickstart on the project's landing page.
When I get the to `(clpm-client:sync :sources "quicklisp")` step, an end of file condition is encountered. The only restart available is to abort.
I'm not sure where I made a misstep
```
$ cat .config/clpm/sources.lisp
("quicklisp"
:type :quicklisp
:url "https://beta.quicklisp.org/dist/quicklisp.txt")
$ cat .config/common-lisp/source-registry.conf.d/20-clpm-client.conf
;; -*- mode: common-lisp; -*-
;; Auto generated by CLPM version 0.4.1
(:directory #P"/usr/local/share/clpm/client/")
$ cat .sbclrc
;;; Use CLPM with default configuration.
;;;
;;; Generated by CLPM 0.4.1
(require "asdf")
#-clpm-client
(when (asdf:find-system "clpm-client" nil)
;; Load the CLPM client if we can find it.
(asdf:load-system "clpm-client")
(when (uiop:symbol-call :clpm-client '#:active-context)
;; If started inside a context (i.e., with `clpm exec` or `clpm bundle exec`),
;; activate ASDF integration
(uiop:symbol-call :clpm-client '#:activate-asdf-integration)))
$ rlwrap sbcl
This is SBCL 2.1.1.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
(clpm-client:activate-context "default" :activate-asdf-integration t)
T
(clpm-client:sync :sources "quicklisp")
debugger invoked on a CLPM-CLIENT:CLPM-ERROR in thread
#<THREAD "main thread" RUNNING {1004DF0173}>:
Error interacting with CLPM! Error output:
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1000BE0103}>
0: ((LAMBDA NIL :IN UIOP/IMAGE:PRINT-BACKTRACE))
1: ((FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX))
2: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<FUNCTION (FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX) {7F3F6D0CF6EB}>)
3: (UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX #<FUNCTION (LAMBDA NIL :IN UIOP/IMAGE:PRINT-BACKTRACE) {1004BEB9AB}> :PACKAGE :CL)
4: (UIOP/IMAGE:PRINT-CONDITION-BACKTRACE #<SIMPLE-ERROR "Unable to find source named ~S" {1004BEB913}> :STREAM NIL :COUNT NIL)
5: ((FLET "H2" :IN CLPM-CLI/ENTRY:MAIN) #<SIMPLE-ERROR "Unable to find source named ~S" {1004BEB913}>)
6: (SB-KERNEL::%SIGNAL #<SIMPLE-ERROR "Unable to find source named ~S" {1004BEB913}>)
7: (ERROR "Unable to find source named ~S" "quicklisp")
8: (CLPM/SOURCE:GET-SOURCE "quicklisp" T)
9: ((LAMBDA NIL :IN CLPM/SYNC:SYNC))
10: (CLPM/SESSION::CALL-WITH-CLPM-SESSION #<FUNCTION (LAMBDA NIL :IN CLPM/SYNC:SYNC) {1004BD070B}> :OVERRIDE NIL :KEY NIL)
11: (SB-INT:SIMPLE-EVAL-IN-LEXENV (CLPM/SYNC:SYNC :SOURCES (QUOTE ("quicklisp"))) #<NULL-LEXENV>)
12: (SB-IMPL::SIMPLE-EVAL-PROGN-BODY ((CLPM/SYNC:SYNC :SOURCES (QUOTE ("quicklisp"))) T) #<NULL-LEXENV>)
13: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN (CLPM/SYNC:SYNC :SOURCES (QUOTE ("quicklisp"))) T) #<NULL-LEXENV>)
14: (EVAL (PROGN (CLPM/SYNC:SYNC :SOURCES (QUOTE ("quicklisp"))) T))
15: ((FLET "THUNK" :IN CLPM-CLI/COMMANDS/CLIENT/REPL::CLI/CLIENT/REPL))
16: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<FUNCTION (FLET "THUNK" :IN CLPM-CLI/COMMANDS/CLIENT/REPL::CLI/CLIENT/REPL) {52FAA82B}>)
17: (CLPM-CLI/COMMANDS/CLIENT/REPL::CLI/CLIENT/REPL #<unused argument> #<unused argument>)
18: ((LAMBDA NIL :IN "/builds/clpm/clpm/cli/entry.lisp"))
19: (CLPM/CONFIG::CALL-WITH-CONFIG-SOURCE #<FUNCTION (LAMBDA NIL :IN "/builds/clpm/clpm/cli/entry.lisp") {10046DB90B}> :CONFIG-SOURCE NIL :PATHNAME NIL :OPTIONS-HT #<HASH-TABLE :TEST EQL :COUNT 0 {10046DB6A3}>)
20: (CLPM-CLI/ENTRY:MAIN)
21: ((LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE))
22: (UIOP/IMAGE:CALL-WITH-FATAL-CONDITION-HANDLER #<FUNCTION (LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE) {10005A573B}>)
23: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
24: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-IMPL::START-LISP))
25: (SB-IMPL::START-LISP)
Above backtrace due to this condition:
Unable to find source named "quicklisp"
Original condition:
end of file on #<SB-SYS:FD-STREAM for "descriptor 16" {10023FEB63}>
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(CLPM-CLIENT::CALL-WITH-CLPM-PROC #<FUNCTION (LAMBDA (CLPM-CLIENT::PROC) :IN CLPM-CLIENT:SYNC) {10023FDB9B}>)
source: (ERROR 'CLPM-ERROR :WRAPPED-CONDITION C :ERROR-OUTPUT
(UIOP/STREAM:READ-FILE-STRING
(CLPM-PROC-ERROR-PATHNAME PROC)))
0]
```https://gitlab.common-lisp.net/clpm/clpm/-/issues/51Esrap submodule commit in clpm repo doesn't compile after new sbcl update2021-12-24T21:53:35ZOscar BellettiEsrap submodule commit in clpm repo doesn't compile after new sbcl updateWhen I attempt to run clpm from source I get the error "_* is not permitted as an argument to the FUNCTION type specifier_" related to esrap.
I found the same error reported [here](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=99962...When I attempt to run clpm from source I get the error "_* is not permitted as an argument to the FUNCTION type specifier_" related to esrap.
I found the same error reported [here](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=999625):
> This failure is caused by the new version of sbcl being more strict
regarding syntax conformance.
In a newer commit esrap [fixed this](https://github.com/scymtym/esrap/commit/c99c33a33ff58ca85e8ba73912eba45d458eaa72), however it also [introduced a dependency](https://github.com/scymtym/esrap/commit/4034df872c2b1b8e91adbccab491645c8138253b) on trivial-with-current-source-formhttps://gitlab.common-lisp.net/clpm/clpm/-/issues/50Support for quicklisp style sources with no "-versions" file2021-12-07T11:59:07ZOscar BellettiSupport for quicklisp style sources with no "-versions" fileI've noticed that some quicklisp distributions don't have a "-versions" file as required by clpm. I suppose that ideally the maintainers of those distributions should be encouraged to provide one. However, what are your thoughts on addin...I've noticed that some quicklisp distributions don't have a "-versions" file as required by clpm. I suppose that ideally the maintainers of those distributions should be encouraged to provide one. However, what are your thoughts on adding the ability to work with those distributions to clpm for the sake of compatibility (and to make clpm closer to a drop-in replacement to quicklisp)?
Some examples of such distributions are:
- https://github.com/borodust/trivial-gamekit
- https://shirakumo.github.io/radiance/https://gitlab.common-lisp.net/clpm/clpm/-/issues/48CLPM install as Lisp library?2021-10-20T18:57:54ZLuke GorrieCLPM install as Lisp library?The official documentation describes how to install CLPM as a command-line program and configure it via files in $HOME. Is it also possible to install CLPM as a Lisp library and to access it using a Lisp API with all directories specifie...The official documentation describes how to install CLPM as a command-line program and configure it via files in $HOME. Is it also possible to install CLPM as a Lisp library and to access it using a Lisp API with all directories specified explicitly?
This could make it easier to build further packaging infrastructure on top of CLPM such as a Nix package generator (#47).https://gitlab.common-lisp.net/clpm/clpm/-/issues/47clpm2nix?2021-10-21T07:30:11ZLuke Gorrieclpm2nix?Musing: Is CLPM the Right Thing for generating Lisp library package descriptions for the Nix package manager?
I think that it is. Nix wants a data structure describing a complete Lisp package ecosystem: the packages, their versions, the...Musing: Is CLPM the Right Thing for generating Lisp library package descriptions for the Nix package manager?
I think that it is. Nix wants a data structure describing a complete Lisp package ecosystem: the packages, their versions, the exact source locations, the Lisp systems that each package provides, and the dependency graph between the systems. CLPM seems to be capable of producing exactly this, if I understand correctly?
The process of creating or updating a Lisp library ecosystem for Nix would then be:
1. Run CLPM to generate a complete snapshot of library metadata in files (e.g. S-expressions.)
2. Compile this snapshot into the Nix expression format e.g. using a custom Lisp program.
3. Build and install the libraries using standard Nix tooling (without involving CLPM.)
The practical steps to make this happen might be:
- [ ] Package CLPM for Nix. Ideally as a Lisp library rather than a command-line program.
- [ ] Write Lisp client code to make CLPM produce the metadata snapshot.
- [ ] Write Lisp code to translate the database into Nix expressions.
- [ ] Build the packages using the existing `development/lisp-modules` tooling in Nix.
EDIT: Let me add some snippets and links to the concrete implementation in the upstream Nix package repository.
- [lisp-packages.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/lisp-modules/lisp-packages.nix) contains hand-written descriptions of certain Lisp packages e.g. that are not included in Quicklisp.
- [quicklisp-to-nix-output/](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/lisp-modules/quicklisp-to-nix-output) contains automatically generated package descriptions, each one an individual file specifying the package name, version, source location, and systems provided. These are the "nodes" of the package graph.
- [quicklisp-to-nix.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/lisp-modules/quicklisp-to-nix.nix) contains automatically generated dependency information between packages. These are the "edges" of the package graph.
- [quicklisp-to-nix-overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/lisp-modules/quicklisp-to-nix-overrides.nix) contains manual tweaks to be applied to the automatically generated packages e.g. patches required to make them work in the Nix environment and information about dependencies on external programs and shared libraries (which typically have already been manually packaged for Nix by someone else.) This mechanism is also available to end-users e.g. if their project depends on patches being applied to a dependency.
- [quicklisp-to-nix](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/lisp-modules/quicklisp-to-nix) is the Lisp application that grovels Quicklisp to create the auto-generated files mentioned above.
So what's the role for CLPM in all of this? The potential I see is a replacement for `quicklisp-to-nix` built on the CLPM API. This could potentially be more flexible (able to address curated CLPM package collections), and more efficient (running the groveller seems to take about one hour for me), and more maintainable (reuse the groveller from CLPM instead of maintaining a separate one.) This seems worth considering to me.
I should also note that there's a similar project called [ql2nix](https://github.com/SquircleSpace/ql2nix) that is an out-of-tree solution. I have been using that for the past year or so and it works well too, only takes a couple of minutes to bootstrap from Quicklisp for me. However since people seem to be actively working on the Lisp package collection in upstream nixpkgs that seems worth engaging with now.