asdf issueshttps://gitlab.common-lisp.net/groups/asdf/-/issues2024-02-29T18:24:25Zhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/154Metainformation in asdf.asd out of date2024-02-29T18:24:25ZMarkus KlinkMetainformation in asdf.asd out of dateThe metainformation in `asdf.asd` is out of date:
```
(defsystem "asdf/defsystem"
:licence "MIT"
:description "The defsystem part of ASDF"
:long-name "Another System Definition Facility"
:description "The portable defsystem for ...The metainformation in `asdf.asd` is out of date:
```
(defsystem "asdf/defsystem"
:licence "MIT"
:description "The defsystem part of ASDF"
:long-name "Another System Definition Facility"
:description "The portable defsystem for Common Lisp"
:long-description "ASDF/DEFSYSTEM is the de facto standard DEFSYSTEM facility for Common Lisp,
a successor to Dan Barlow's ASDF and Francois-Rene Rideau's ASDF2.
For bootstrap purposes, it comes bundled with UIOP in a single file, asdf.lisp."
:homepage "http://common-lisp.net/projects/asdf/"
:bug-tracker "https://launchpad.net/asdf/"
:mailto "asdf-devel@common-lisp.net"
:source-control (:git "git://common-lisp.net/projects/asdf/asdf.git")
:version (:read-file-form "version.lisp-expr")
:build-operation monolithic-concatenate-source-op
:build-pathname "build/asdf" ;; our target
:around-compile call-without-redefinition-warnings ;; we need be the same as uiop
:depends-on ("asdf/prelude" "asdf/driver")
:encoding :utf-8
:components
...
```
At least the homepage (now https://asdf.common-lisp.dev/), the bug-tracker (now https://gitlab.common-lisp.net/asdf/asdf/-/issues), the source-control (now git@common-lisp.net:asdf/asdf.git) are not reflecting the status quo.https://gitlab.common-lisp.net/asdf/asdf/-/issues/153Confusing behavior when using an empty string as a system name2024-01-29T16:04:25ZAlexander FedorovConfusing behavior when using an empty string as a system nameWhen quicklisp is loaded or `*central-registry*` is not empty, asdf can locate the system named `""`:
```lisp
;; if quicklisp is loaded
* (asdf:locate-system "")
T
NIL
#P"/home/user/quicklisp/quicklisp/"
NIL
NIL
```
```lisp
;; if quickl...When quicklisp is loaded or `*central-registry*` is not empty, asdf can locate the system named `""`:
```lisp
;; if quicklisp is loaded
* (asdf:locate-system "")
T
NIL
#P"/home/user/quicklisp/quicklisp/"
NIL
NIL
```
```lisp
;; if quicklisp is not loaded
;; $ sbcl --no-userinit
* (require :asdf)
("ASDF" "asdf" "UIOP" "uiop")
* (push #P"~/common-lisp/" asdf:*central-registry*)
(#P"~/common-lisp/")
* (asdf:locate-system "")
T
NIL
#P"/home/user/common-lisp/"
NIL
NIL
```
This leads to a confusing error message when a trying to load a system named `""`:
```lisp
* (asdf:load-system "")
debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR in thread #<THREAD tid=1802466 "main thread" RUNNING {1001460003}>: Error while trying to load definition for system from pathname /home/user/common-lisp/: Can't LOAD a directory: #P"/home/user/common-lisp/".
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [RETRY ] Retry #<DEFINE-OP > on #<UNDEFINED-SYSTEM "">.
1: [ACCEPT ] Continue, treating #<DEFINE-OP > on #<UNDEFINED-SYSTEM ""> as having been successful.
2: Retry ASDF operation.
3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
4: Retry ASDF operation.
5: Retry ASDF operation after resetting the configuration.
6: [ABORT ] Exit debugger, returning to top level.
((LAMBDA (CONDITION) :IN PERFORM) #<SB-INT:SIMPLE-FILE-ERROR "Can't LOAD a directory: ~s." {1004508A43}>)
source: (ERROR (QUOTE LOAD-SYSTEM-DEFINITION-ERROR) :NAME (COERCE-NAME S) :PATHNAME PATHNAME :CONDITION CONDITION)
0]
```
This also manifests when loading a system that has `:depends-on ("")`
```lisp
;; test.asd
(defsystem "test"
:depends-on (""))
```
```lisp
;; $ sbcl --no-userinit
* (require :asdf)
("ASDF" "asdf" "UIOP" "uiop")
* (push "~/common-lisp/" asdf:*central-registry*)
("~/common-lisp/")
* (asdf:load-asd (merge-pathnames "test.asd"))
#<ASDF/FIND-SYSTEM:DEFINE-OP >
#<ASDF/PLAN:SEQUENTIAL-PLAN {10014C0BD3}>
* (asdf:load-system :test)
debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR in thread #<THREAD tid=1802775 "main thread" RUNNING {1004840093}>: Error while trying to load definition for system from pathname /home/user/common-lisp/: Can't LOAD a directory: #P"/home/user/common-lisp/".
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [RETRY ] Retry #<DEFINE-OP > on #<UNDEFINED-SYSTEM "">.
1: [ACCEPT ] Continue, treating #<DEFINE-OP > on #<UNDEFINED-SYSTEM ""> as having been successful.
2: Retry ASDF operation.
3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
4: Retry ASDF operation.
5: Retry ASDF operation after resetting the configuration.
6: [ABORT ] Exit debugger, returning to top level.
((LAMBDA (CONDITION) :IN PERFORM) #<SB-INT:SIMPLE-FILE-ERROR "Can't LOAD a directory: ~s." {100188BC23}>)
source: (ERROR (QUOTE LOAD-SYSTEM-DEFINITION-ERROR) :NAME (COERCE-NAME S) :PATHNAME PATHNAME :CONDITION CONDITION)
0]
```https://gitlab.common-lisp.net/asdf/asdf/-/issues/152On Allegro 11 test-deferred-warnings fails2024-01-28T17:15:18ZRobert GoldmanOn Allegro 11 test-deferred-warnings failsIt looks like Allegro is writing something unreadable into the `.allegro-warnings` file or possibly it's encountering an error trying to write something into that file that cannot be printed readably.It looks like Allegro is writing something unreadable into the `.allegro-warnings` file or possibly it's encountering an error trying to write something into that file that cannot be printed readably.3.3.7Robert GoldmanRobert Goldmanhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/151How to declare arbitrary CLI tasks in an asdf configuration?2024-01-11T15:20:11ZAndrew PennebakerHow to declare arbitrary CLI tasks in an asdf configuration?Hi,
I would like to replace the old `make` UNIX tool in my Common Lisp projects with asdf. But I am having trouble finding documentation for how to declare arbitrary shell command tasks in an asdf configuration. Can you please provide a...Hi,
I would like to replace the old `make` UNIX tool in my Common Lisp projects with asdf. But I am having trouble finding documentation for how to declare arbitrary shell command tasks in an asdf configuration. Can you please provide a link to this documentation?
For example, in addition to building and testing my projects, I often declare a task hierarchy of linting steps.https://gitlab.common-lisp.net/asdf/asdf/-/issues/150On Allegro CL, UPGRADE-ASDF loads ASDF multiple times2024-01-04T23:00:44ZRobert GoldmanOn Allegro CL, UPGRADE-ASDF loads ASDF multiple times# Description
Initially loading ASDF with `(require :asdf)`, putting the ASDF source on `*central-registry*` and then invoking `(asdf:upgrade-asdf)` results in `asdf.fasl` being loaded multiple times, as shown here:
```
; Fast loading
...# Description
Initially loading ASDF with `(require :asdf)`, putting the ASDF source on `*central-registry*` and then invoking `(asdf:upgrade-asdf)` results in `asdf.fasl` being loaded multiple times, as shown here:
```
; Fast loading
; /Users/rpg/.cache/common-lisp/acl-11.0-macosx-64-bit_apple_silicon/Users/rpg/lisp/asdf/build/asdf.fasl
Warning: FIRST-FEATURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: IMPLEMENTATION-TYPE is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: *IMPLEMENTATION-TYPE* is defined more than once as `variable'
in file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: OPERATING-SYSTEM is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: ARCHITECTURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
; Upgrading ASDF from version 3.2.0 to version 3.3.6.2
; Loading /Users/rpg/lisp/asdf/asdf.asd
; Fast loading
; /Users/rpg/.cache/common-lisp/acl-11.0-macosx-64-bit_apple_silicon/Users/rpg/lisp/asdf/build/asdf.fasl
Warning: FIRST-FEATURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: IMPLEMENTATION-TYPE is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: *IMPLEMENTATION-TYPE* is defined more than once as `variable'
in file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: OPERATING-SYSTEM is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: ARCHITECTURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
; Loading /Users/rpg/lisp/asdf/asdf.asd
; Fast loading
; /Users/rpg/.cache/common-lisp/acl-11.0-macosx-64-bit_apple_silicon/Users/rpg/lisp/asdf/build/asdf.fasl
Warning: FIRST-FEATURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: IMPLEMENTATION-TYPE is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: *IMPLEMENTATION-TYPE* is defined more than once as `variable'
in file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: OPERATING-SYSTEM is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: ARCHITECTURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
; Loading /Users/rpg/lisp/asdf/asdf.asd
; Fast loading
; /Users/rpg/.cache/common-lisp/acl-11.0-macosx-64-bit_apple_silicon/Users/rpg/lisp/asdf/build/asdf.fasl
Warning: FIRST-FEATURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: IMPLEMENTATION-TYPE is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: *IMPLEMENTATION-TYPE* is defined more than once as `variable'
in file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: OPERATING-SYSTEM is defined more than once as `operator' in
file /Users/rpg/lisp/asdf/build/asdf.lisp.
Warning: ARCHITECTURE is defined more than once as `operator' in file
/Users/rpg/lisp/asdf/build/asdf.lisp.
; Loading /Users/rpg/lisp/asdf/asdf.asd
```
# Replication
I attach a shell script, [allegro-replication.sh](/uploads/a66c4ece77bf8193a6863f1a6698f216/allegro-replication.sh), that can be used to replicate the issue. To run it, assign the environment variables `ALISP` and `ASDF_DIR` appropriately, e.g.:
ALISP=/Applications/AllegroCL64.app/Contents/Resources/alisp ASDF_DIR=/Users/rpg/lisp/asdf/ source allegro-replication.sh
# Platforms
I have verified this on Allegro 10.1 and 11. I don't *believe* it's happening on other lisps. It seems to happen on the Express edition, as well, so is replicable by people who don't have a paid Allegro license.
/cc @frideauhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/149Add repaired version of UIOP:WITH-OPTIMIZATION-SETTINGS2023-12-12T17:05:28ZRobert GoldmanAdd repaired version of UIOP:WITH-OPTIMIZATION-SETTINGSFaré writes:
> it was originally meant to ensure that the optimization settingsused by ASDF should not be affected by those used outside of it, nor
affect them, so as to avoid weird side-effects wherein the behavior of a system depends ...Faré writes:
> it was originally meant to ensure that the optimization settingsused by ASDF should not be affected by those used outside of it, nor
affect them, so as to avoid weird side-effects wherein the behavior of a system depends on which other systems you did or did not build
before it, which was causing "interesting" effects at times.
I didn't have the ability to repair it (see #148), so am removing it from UIOP. But rewriting it, and then using it ASDF `compile-op` would be a worthy thing to do to avoid the above issues.https://gitlab.common-lisp.net/asdf/asdf/-/issues/148With-optimization-settings has wrong backquote/comma2024-01-28T17:19:10ZYehouda HarpazWith-optimization-settings has wrong backquote/commahttps://gitlab.common-lisp.net/asdf/asdf/-/blob/master/uiop/lisp-build.lisp#L114
This line has a backquote where it needs a quote (before **(optimize**) and a redundant comma (before **settings**). It should be:
```
,@(when settings `(...https://gitlab.common-lisp.net/asdf/asdf/-/blob/master/uiop/lisp-build.lisp#L114
This line has a backquote where it needs a quote (before **(optimize**) and a redundant comma (before **settings**). It should be:
```
,@(when settings `((proclaim '(optimize ,@settings))))
```
On LispWorks, without the fix:
```
CL-USER 3 > (pprint (macroexpand '(uiop/lisp-build:with-optimization-settings (((debug 2) (safety 1))) body)))
(LET ((COMPILER::*OPTIMIZATION-LEVEL* COMPILER::*OPTIMIZATION-LEVEL*)) (PROCLAIM `(OPTIMIZE ,@((DEBUG 2) (SAFETY 1)))) BODY)
```
with the fix:
```
CL-USER 24 > (pprint (macroexpand '(uiop/lisp-build:with-optimization-settings (((debug 2) (safety 1))) body)))
(LET ((COMPILER::*OPTIMIZATION-LEVEL* COMPILER::*OPTIMIZATION-LEVEL*)) (PROCLAIM '(OPTIMIZE (DEBUG 2) (SAFETY 1))) BODY)
```3.3.7https://gitlab.common-lisp.net/asdf/asdf/-/issues/147Parsing non-standard clauses for defpackage in package inferred systems2024-01-28T17:16:17ZAlexander FedorovParsing non-standard clauses for defpackage in package inferred systemsWhen using package inferred systems, if the `defpackage` form has a non-standard clause that is not one of `uiop:define-package` clauses, an error is signaled. This doesn't seems to be useful, especially since such extensions to defpacka...When using package inferred systems, if the `defpackage` form has a non-standard clause that is not one of `uiop:define-package` clauses, an error is signaled. This doesn't seems to be useful, especially since such extensions to defpackage seem to be explicitly allowed by the standard.
Example:
```lisp
;;; test.asd
(defsystem "test"
:class :package-inferred-system
:depends-on ("test/test"))
```
```lisp
;;; test.lisp
(defpackage #:test/test
#+sbcl (:lock t) ; this is sbcl specific extension
(:use #:cl))
```
Trying to load the system:
```
$ sbcl --noinform --load test.asd
* (asdf:test-system :test)
debugger invoked on a SB-KERNEL:CASE-FAILURE @53540A5D in thread
#<THREAD tid=2102596 "main thread" RUNNING {10047A0113}>:
:LOCK fell through ECASE expression.
Wanted one of (:USE :MIX :REEXPORT :USE-REEXPORT :MIX-REEXPORT :IMPORT-FROM
:SHADOWING-IMPORT-FROM :NICKNAMES :DOCUMENTATION :SHADOW
:EXPORT :INTERN ...).
;; behavior doesn't change when using ASDF:LOAD-ASD instead of LOAD
```3.3.7Phoebe GoldmanPhoebe Goldmanhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/146(SETF (UIOP:GETENV VAR) NIL) should unset environment variable VAR2023-10-30T15:21:20ZMichaël Le Barbier(SETF (UIOP:GETENV VAR) NIL) should unset environment variable VARWhen an environment variable is not set, then UIOP:GETENV returns NIL when trying to retrieve the value of that variable. However NIL is not a supported value for (SETF UIOP:GETENV) so that the following code does not work as expected:
...When an environment variable is not set, then UIOP:GETENV returns NIL when trying to retrieve the value of that variable. However NIL is not a supported value for (SETF UIOP:GETENV) so that the following code does not work as expected:
```common-lisp
(flet ((some-action (value)
(declare (ignore value)))
(ensure-environment-is-clean ()
(unless (eq nil (uiop:getenv "VAR"))
(error "The variable VAR should not be bound."))))
(let ((saved-value
(uiop:getenv "VAR")))
(ensure-environment-is-clean)
(setf (uiop:getenv "VAR") "alternative value")
(unwind-protect (some-action (uiop:getenv "VAR"))
(setf (uiop:getenv "VAR") saved-value))
(ensure-environment-is-clean)))
```
The expected behaviour is that the snippet of code above completes successfully but on SBCL it returns an error. I am not sure what is the behaviour of other implementations.https://gitlab.common-lisp.net/asdf/asdf/-/issues/145Documented way of upgrading ASDF using (require "asdf") doesn't work2024-01-02T17:38:11ZHraban LuyatDocumented way of upgrading ASDF using (require "asdf") doesn't workHi all,
With latest master checked out to ~/code/common-lisp/asdf, when I do this:
```
$ CL_SOURCE_REGISTRY=$HOME/code/common-lisp/asdf sbcl
This is SBCL 2.3.9.nixos, an implementation of ANSI Common Lisp.
More information about SBCL i...Hi all,
With latest master checked out to ~/code/common-lisp/asdf, when I do this:
```
$ CL_SOURCE_REGISTRY=$HOME/code/common-lisp/asdf sbcl
This is SBCL 2.3.9.nixos, 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.
* (require "asdf")
NIL
* asdf::*asdf-version*
"3.3.1"
* (asdf:load-system "asdf")
; compiling file "/Users/user/code/common-lisp/asdf/build/asdf.lisp" (written 17 OCT 2023 03:06:55 PM):
; wrote /Users/user/.cache/common-lisp/sbcl-2.3.9.nixos-macosx-arm64/Users/user/code/common-lisp/asdf/build/asdf-tmpAAURSO1.fasl
; compilation finished in 0:00:01.994
T
* asdf::*asdf-version*
"3.3.6.1"
*
```
It's good that it loads the new ASDF explicitly at least on `(asdf:load-system "asdf")`, but shouldn't it just load it straight away on the first `(require "asdf")`?
The documentation states:
> 3.3 Upgrading ASDF
>
> If your implementation already provides ASDF 3 or later (and it should), but you want a more recent ASDF version than your implementation provides, then you just need to ensure the more recent ASDF is installed in a configured path, like any other system. We recommend you download an official tarball or checkout a release from git into ~/common-lisp/asdf/. (see Configuring ASDF to find your systems).
>
> Once the source code for ASDF is installed, you don’t need any extra step to load it beyond the usual (require "asdf"): ASDF 3 will automatically look whether an updated version of itself is available amongst the regularly configured systems, before it compiles anything else.
>
> If your implementation fails to provide ASDF 3 or later, see Replacing your implementation’s ASDF.
- https://asdf.common-lisp.dev/asdf.html#Upgrading-ASDF
Should that be changed to instructing `(require "asdf") (asdf:load-system "asdf")`?https://gitlab.common-lisp.net/asdf/asdf/-/issues/144Kill ABCL 1.7.1 test2023-08-28T16:06:09ZRobert GoldmanKill ABCL 1.7.1 testThis version is so old we shouldn't have to bother with it any more.This version is so old we shouldn't have to bother with it any more.Robert GoldmanRobert Goldmanhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/143uiop: Remember single/multi-threaded in the implementation-identifier.2023-09-19T18:29:47ZPhilipp Marekuiop: Remember single/multi-threaded in the implementation-identifier.I'm comparing performance for single- and multi-threaded builds.
The FASL files for SBCL are dependent on ST/MT, though; so I can't just switch the SBCL binary and re-test, because the FASLs are incompatbile, get rejected, and need to b...I'm comparing performance for single- and multi-threaded builds.
The FASL files for SBCL are dependent on ST/MT, though; so I can't just switch the SBCL binary and re-test, because the FASLs are incompatbile, get rejected, and need to be recompiled every time.
I have a proof-of-concept patch at https://github.com/sbcl/sbcl/commit/1269dab756151b4d8c6347a0ca52e83b7926a68e that adds the ST/MT information to the implementation-identifier - then the FASLs land in different trees, and the binary just chooses the matching files.
I'm not sure whether the string `"singlethreaded"` is too long, as it gets added to the tree structure depth which is limited to 255 characters - but it's at least a starting point for discussion.https://gitlab.common-lisp.net/asdf/asdf/-/issues/142WITH-TEMPORARY-FILE gives warnings when pathname variable is not used2023-08-14T15:07:17ZRobert GoldmanWITH-TEMPORARY-FILE gives warnings when pathname variable is not usedI had some code with `with-temporary-file` that did not use its `pathname` variable in the block after `:close-stream`. Specifically, I had code in the block before that took the `namestring` of the pathname and used *that* in the suffi...I had some code with `with-temporary-file` that did not use its `pathname` variable in the block after `:close-stream`. Specifically, I had code in the block before that took the `namestring` of the pathname and used *that* in the suffix.
This caused an "unused variable" warning to be raised.
This can be fixed by declaring the pathname variable to be `ignorable` in the suffix (the "after function").Robert GoldmanRobert Goldmanhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/141uiop:dumplisp compiles with warning on Allegro 112024-01-28T17:18:23ZRobert Goldmanuiop:dumplisp compiles with warning on Allegro 11When it is loaded, ASDF defines a portable `dumplisp` with the following snippet of code for Allegro:
```
(progn
(sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000
(excl:dumplisp :name ...When it is loaded, ASDF defines a portable `dumplisp` with the following snippet of code for Allegro:
```
(progn
(sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000
(excl:dumplisp :name filename :suppress-allegro-cl-banner t))
```
On the current Allegro beta for version 11 this yields the following warning:
```
Warning: SYSTEM:RESIZE-AREAS: :OLD argument not given when expanding or packing heap. If minimal oldspace is desired add an explicit :OLD 0 argument pair. For minimal change to oldspace size, specify :NO-CHANGE as the value of :OLD.
Problem detected when processing
(SYS:RESIZE-AREAS :GLOBAL-GC T :PACK-HEAP T :SIFT-OLD-AREAS T :TENURE T)
inside <...>
inside (BLOCK DUMP-IMAGE ...)
inside (COMP::NAMED-FUNCTION-1 ...)
inside (EXCL:COMPILER-LET ...)
inside (THE EXCL::KNOWN-FUNCTION ...)
inside (EXCL:NAMED-ANNOTATED-FUNCTION ...)
inside (LET ...)
inside (LET* ((#:G188535 (LET (#) ...))) ...)
Warning: SYSTEM:RESIZE-AREAS: :OLD-CODE argument
```
This breaks test-clean-build.
For now, the solution seems to be to add `:old :no-change` to the arguments.3.3.7Robert GoldmanRobert Goldmanhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/140uiop:ensure-directory-pathname mangles pathname with wildcard2023-07-04T22:47:59ZSome Oneuiop:ensure-directory-pathname mangles pathname with wildcardHello, using UIOP 3.3.5 on SBCL 2.3.5, I'm getting the following results:
```
CL-USER> (uiop:ensure-pathname "*")
#P"\\*"
CL-USER> (uiop:ensure-directory-pathname *)
#P"\\\\\\*/"
```
which can't be used to address a directory named "*" a...Hello, using UIOP 3.3.5 on SBCL 2.3.5, I'm getting the following results:
```
CL-USER> (uiop:ensure-pathname "*")
#P"\\*"
CL-USER> (uiop:ensure-directory-pathname *)
#P"\\\\\\*/"
```
which can't be used to address a directory named "*" anymore. I suspect that replacing `file-namestring` with `pathname-name` at https://gitlab.common-lisp.net/asdf/asdf/-/blob/master/uiop/pathname.lisp#L333 would do the trick; at least for SBCL.Robert GoldmanRobert Goldmanhttps://gitlab.common-lisp.net/asdf/asdf/-/issues/139serial dependency spec and individual `:depends-on` can appear in the same sy...2023-06-02T01:55:06ZRobert Goldmanserial dependency spec and individual `:depends-on` can appear in the same system definitionI just found this in [cl-async.asd](https://github.com/orthecreedence/cl-async/blob/909c691ec7a3bfe98bbec536ab55d7eac8990a81/cl-async.asd#L29-L63).
It never occurred to me that this would be possible. I believe that this should be an er...I just found this in [cl-async.asd](https://github.com/orthecreedence/cl-async/blob/909c691ec7a3bfe98bbec536ab55d7eac8990a81/cl-async.asd#L29-L63).
It never occurred to me that this would be possible. I believe that this should be an error condition, since either the explicit `:depends-on` specs will be vacuous, or they will contradict the serial specification.
I haven't thoroughly checked, but I don't see that ASDF checks dependency graphs for consistency. If the dependencies don't make an _acyclic_ digraph, then ASDF should probably signal an error.https://gitlab.common-lisp.net/asdf/asdf/-/issues/138Feature enhancement: add OPERATION-FAILED-CONDITION2023-04-01T19:59:10ZRobert GoldmanFeature enhancement: add OPERATION-FAILED-CONDITIONParticularly for `test-op`, it would be helpful to have a special condition for operation failures.
Then in testing scripts we could add code that would watch for this handler, and exit with a non-zero exit status when it is observed. ...Particularly for `test-op`, it would be helpful to have a special condition for operation failures.
Then in testing scripts we could add code that would watch for this handler, and exit with a non-zero exit status when it is observed. Right now there's a lot of custom-scripting that must be done for this...https://gitlab.common-lisp.net/asdf/asdf/-/issues/137import-from behaves differently when imported symbol does not exist in the so...2023-03-03T16:58:55ZEmir Unerimport-from behaves differently when imported symbol does not exist in the source packageTried in SBCL:
```lisp
(uiop:define-package #:P0)
(uiop:define-package #:P1 (:import-from #:P0 #:sym0))
```
Executing above interns `SYM0` into `P0`.
```lisp
(defpackage #:P0)
(defpackage #:P1 (:import-from #:P0 #:sym0))
```
Executi...Tried in SBCL:
```lisp
(uiop:define-package #:P0)
(uiop:define-package #:P1 (:import-from #:P0 #:sym0))
```
Executing above interns `SYM0` into `P0`.
```lisp
(defpackage #:P0)
(defpackage #:P1 (:import-from #:P0 #:sym0))
```
Executing above raises an error with the option to intern. Shouldn't `uiop:define-package` behave same as `defpackage`?3.4.0https://gitlab.common-lisp.net/asdf/asdf/-/issues/136Sign ASDF releases and tags2022-11-18T23:36:21ZNikolaos ChatzikonstantinouSign ASDF releases and tagsASDF releases could be signed with gpg. I also recommend that annotated tags are used instead of lightweight git tags; the tags themselves can also be signed.
e.g. with contents in `.gitconfig` such as
```
[user]
name = <name>
email ...ASDF releases could be signed with gpg. I also recommend that annotated tags are used instead of lightweight git tags; the tags themselves can also be signed.
e.g. with contents in `.gitconfig` such as
```
[user]
name = <name>
email = <email>
signingKey = <fingerprint>
[commit]
gpgSign = true
[tag]
gpgSign = true
[push]
gpgSign = if-asked
```
The key could be listed in the common-lisp.net web page but also on the key servers such as https://keyserver.ubuntu.com/ and https://keys.openpgp.org/ and so on. I believe they propagate automatically so listing on one of them is enough, e.g. I find my key on https://pgp.mit.edu/ even though I never uploaded it.https://gitlab.common-lisp.net/asdf/asdf/-/issues/135Add WHEN-LET to UIOP2022-11-14T15:52:32ZRobert GoldmanAdd WHEN-LET to UIOPUIOP has the `if-let` macro, lifted from Alexandria, which is generally helpful. But it makes code hard to read when there is only an if-then and not an if-then-else. For the former case, I would like to add `when-let` and replace sing...UIOP has the `if-let` macro, lifted from Alexandria, which is generally helpful. But it makes code hard to read when there is only an if-then and not an if-then-else. For the former case, I would like to add `when-let` and replace single-sided uses of `if-let` with `when-let`.Robert GoldmanRobert Goldman