pathname option to DEFSYSTEM doesn't seem to establish a relative pathname

Bug #732317 reported by Robert P. Goldman
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ASDF
Fix Released
Medium
Faré

Bug Description

I would expect the following system definition to look for its components in the tests/ subdirectory of the .asd file's directory:

(defsystem test-plan-mods
  :depends-on (plan-mods nst)
  :pathname "tests/"
  :components ((:file "package")
               (:file "tests" :depends-on ("package"))))

However, when I try to load this system, ASDF looks for tests in the parent directory. This happens even though the ASDF system object "knows" about the pathname argument:

CL-USER> (describe (asdf:find-system :test-plan-mods)
                   )
#<ASDF:SYSTEM "test-plan-mods"> is an instance of
    #<STANDARD-CLASS ASDF:SYSTEM>:
 The following slots have :INSTANCE allocation:
  NAME "test-plan-mods"
  VERSION <unbound>
  LOAD-DEPENDENCIES (OBTW.PLAN-MODS-ASD::PLAN-MODS
                             OBTW.PLAN-MODS-ASD::NST)
  IN-ORDER-TO ((ASDF:LOAD-OP
                              (ASDF:LOAD-OP OBTW.PLAN-MODS-ASD::NST
                               OBTW.PLAN-MODS-ASD::PLAN-MODS))
                             (ASDF:COMPILE-OP
                              (ASDF:COMPILE-OP OBTW.PLAN-MODS-ASD::NST
                               OBTW.PLAN-MODS-ASD::PLAN-MODS)))
  DO-FIRST ((ASDF:COMPILE-OP
                              (ASDF:LOAD-OP
                               OBTW.PLAN-MODS-ASD::PLAN-MODS
                               OBTW.PLAN-MODS-ASD::NST)))
  INLINE-METHODS NIL
  PARENT NIL
  RELATIVE-PATHNAME #P"/Users/rpg/obtw/obtw-trunk/code/plan-mods/tests/"
  ABSOLUTE-PATHNAME #P"/Users/rpg/obtw/obtw-trunk/code/plan-mods/tests"
  OPERATION-TIMES #<EQL hash-table with 0 entries @
                              #x10012576e2>
  PROPERTIES NIL
  COMPONENTS (#<ASDF:CL-SOURCE-FILE
                               "test-plan-mods" "package">
                             #<ASDF:CL-SOURCE-FILE
                               "test-plan-mods" "tests">)
  COMPONENTS-BY-NAME #<EQUAL hash-table with 2 entries @
                              #x1003450ca2>
  IF-COMPONENT-DEP-FAILS :FAIL
  DEFAULT-COMPONENT-CLASS NIL
  DESCRIPTION <unbound>
  LONG-DESCRIPTION <unbound>
  AUTHOR <unbound>
  MAINTAINER <unbound>
  LICENCE <unbound>
  SOURCE-FILE #P"/Users/rpg/obtw/obtw-trunk/code/plan-mods/plan-mods.asd"
  DEFSYSTEM-DEPENDS-ON <unbound>
; No value

But the pathname doesn't get passed down to the subdirectory, probably because the value in the absolute pathname slot (unlike the relative-pathname slot) is not terminated with a "/"
CL-USER> (asdf:component-pathname (asdf:find-component (asdf:find-system :test-plan-mods) "tests"))
#P"/Users/rpg/obtw/obtw-trunk/code/plan-mods/tests.lisp"

This has only been tested on ACL 8.2, with ASDF "2.010.5"

Will see if it proves out on other versions.

Revision history for this message
Faré (fahree) wrote :

Can't reproduce on 2.012.6 on sbcl-1.0.44.29-linux-amd64

Does what I committed as 2.012.7 help?

Revision history for this message
Faré (fahree) wrote :

I believe this was fixed in 2.012.7 and released in 2.013.

Changed in asdf:
assignee: nobody → Faré (fahree)
importance: Undecided → Medium
milestone: none → version2.1
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.