Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master currently broken on package issues #1090

Closed
phoe opened this issue Mar 2, 2020 · 0 comments · Fixed by #1091
Closed

Master currently broken on package issues #1090

phoe opened this issue Mar 2, 2020 · 0 comments · Fixed by #1091

Comments

@phoe
Copy link
Collaborator

phoe commented Mar 2, 2020

From #1036 via @gjvoosten: Executing make on the current master causes a package error.

...
[package pgloader.sources]
debugger invoked on a NAME-CONFLICT in thread
#<THREAD "main thread" RUNNING {10005184C3}>:
  EXPORT PGLOADER.SOURCES::GET-COLUMN-LIST causes name-conflicts in
  #<PACKAGE "PGLOADER.SOURCE.MSSQL"> between the following symbols:
    PGLOADER.SOURCES::GET-COLUMN-LIST, PGLOADER.SOURCE.MSSQL::GET-COLUMN-LIST
See also:
  The ANSI Standard, Section 11.1.1.2.5

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [KEEP-OLD                     ] Keep PGLOADER.SOURCE.MSSQL::GET-COLUMN-LIST accessible in PGLOADER.SOURCE.MSSQL (shadowing PGLOADER.SOURCES::GET-COLUMN-LIST).
  1: [TAKE-NEW                     ] Make PGLOADER.SOURCES::GET-COLUMN-LIST accessible in PGLOADER.SOURCE.MSSQL (uninterning PGLOADER.SOURCE.MSSQL::GET-COLUMN-LIST).
  2: [RESOLVE-CONFLICT             ] Resolve conflict.
  3: [RETRY                        ] Retry
                                     compiling #<CL-SOURCE-FILE "pgloader" "src" "package">.
  4: [ACCEPT                       ] Continue, treating
                                     compiling #<CL-SOURCE-FILE "pgloader" "src" "package">
                                     as having been successful.
  5:                                 Retry ASDF operation.
  6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
                                     configuration.
  7:                                 Retry ASDF operation.
  8:                                 Retry ASDF operation after resetting the
                                     configuration.
  9: [ABORT                        ] Give up on "pgloader"
 10: [CONTINUE                     ] Ignore runtime option --eval #<(SIMPLE-ARRAY
                                                                     CHARACTER
                                                                     (356)) (ros:run '((:load"/home/phoe/.roswell/init.lisp")(:load "build/quicklisp/setup.lisp")(:eval "(push :pgloader-image *features*)")(:eval "(setf *print-circle* t *print-pretty* t)")(:eval "(ql:quickload ... {100153042F}>.
 11:                                 Skip rest of --eval and --load options.
 12:                                 Skip to toplevel READ/EVAL/PRINT loop.
 13: [EXIT                         ] Exit SBCL (calling #'EXIT, killing the process).

(NAME-CONFLICT #<PACKAGE "PGLOADER.SOURCE.MSSQL"> EXPORT PGLOADER.SOURCES::GET-COLUMN-LIST PGLOADER.SOURCES::GET-COLUMN-LIST PGLOADER.SOURCE.MSSQL::GET-COLUMN-LIST)
0] BACKTRACE

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>
0: (NAME-CONFLICT #<PACKAGE "PGLOADER.SOURCE.MSSQL"> EXPORT PGLOADER.SOURCES::GET-COLUMN-LIST PGLOADER.SOURCES::GET-COLUMN-LIST PGLOADER.SOURCE.MSSQL::GET-COLUMN-LIST)
1: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN EXPORT))
2: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
3: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN EXPORT) {7F708184C2BB}> #<SB-THREAD:MUTEX "Package Graph Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>> T NIL)
4: (EXPORT (PGLOADER.SOURCES:COPY PGLOADER.SOURCES:MD-COPY PGLOADER.SOURCES:DB-COPY PGLOADER.SOURCES:MAP-ROWS PGLOADER.SOURCES:COPY-COLUMN-LIST PGLOADER.SOURCES:DATA-IS-PREFORMATTED-P PGLOADER.SOURCES:PREPROCESS-ROW PGLOADER.SOURCES:SOURCE-DB PGLOADER.SOURCES:TARGET-DB PGLOADER.SOURCES:SOURCE PGLOADER.SOURCES:TARGET PGLOADER.SOURCES:FIELDS ...) #<PACKAGE "PGLOADER.SOURCES">)
5: (SB-IMPL::UPDATE-PACKAGE #<PACKAGE "PGLOADER.SOURCES"> NIL #S(SB-C:DEFINITION-SOURCE-LOCATION :NAMESTRING "/home/phoe/Projects/Lisp/pgloader/src/package.lisp" :INDICES 524289) NIL NIL (#<PACKAGE "COMMON-LISP"> #<PACKAGE "PGLOADER.PARAMS"> #<PACKAGE "PGLOADER.UTILS"> #<PACKAGE "PGLOADER.CONNECTION">) (PGLOADER.TRANSFORMS:TYPEMOD-EXPR-TO-FUNCTION PGLOADER.TRANSFORMS:TYPEMOD-EXPR-MATCHES-P PGLOADER.TRANSFORMS:PARSE-COLUMN-TYPEMOD PGLOADER.TRANSFORMS:INTERN-SYMBOL PGLOADER.TRANSFORMS:SCALE PGLOADER.TRANSFORMS:PRECISION PGLOADER.PARSE-DATE:PARSE-DATE-FORMAT PGLOADER.PARSE-DATE:PARSE-DATE-STRING) NIL ("COPY" "MD-COPY" "DB-COPY" "MAP-ROWS" "COPY-COLUMN-LIST" "DATA-IS-PREFORMATTED-P" "PREPROCESS-ROW" "SOURCE-DB" "TARGET-DB" "SOURCE" "TARGET" "FIELDS" ...) ("PGLOADER.SOURCES") NIL NIL NIL)
6: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
7: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-IMPL::%DEFPACKAGE) {7F708184C55B}> #<SB-THREAD:MUTEX "Package Graph Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005184C3}>> T NIL)
8: (SB-IMPL::%DEFPACKAGE "PGLOADER.SOURCES" NIL NIL NIL NIL ("CL" "PGLOADER.PARAMS" "PGLOADER.UTILS" "PGLOADER.CONNECTION") (("PGLOADER.PARSE-DATE" "PARSE-DATE-STRING" "PARSE-DATE-FORMAT") ("PGLOADER.TRANSFORMS" "PRECISION" "SCALE" "INTERN-SYMBOL" "PARSE-COLUMN-TYPEMOD" "TYPEMOD-EXPR-MATCHES-P" "TYPEMOD-EXPR-TO-FUNCTION")) NIL ("COPY" "MD-COPY" "DB-COPY" "MAP-ROWS" "COPY-COLUMN-LIST" "DATA-IS-PREFORMATTED-P" "PREPROCESS-ROW" "SOURCE-DB" "TARGET-DB" "SOURCE" "TARGET" "FIELDS" ...) ("PGLOADER.SOURCES") NIL NIL #S(SB-C:DEFINITION-SOURCE-LOCATION :NAMESTRING "/home/phoe/Projects/Lisp/pgloader/src/package.lisp" :INDICES 524289) NIL)
...

The system loads normally when loaded a single time from ASDF in a Lisp image, BUT, it seems that the make build process attempts to load pgloader again after pgloader has already been loaded: This might also be a reasoning mistake on my part though.

...
[package pgloader.syslog].........................
[package pgloader.parser].........................
[package pgloader]................................
[package pgloader.user-symbols]...................
..................................................
..................................................
..................................................
..................................................
.................
To load "pgloader": ;; HERE
  Load 1 ASDF system:
    pgloader
; Loading "pgloader"
[package pgloader.params].........................
[package pgloader.transforms].....................
[package pgloader.logs]...........................
...

It seems that pgloader in general is not prepared for being reloaded into the image after it has been previously loaded. The export-inherited-symbols function in src/package.lisp is likely to be a culprit, as it seems to have been designed as a workaround for package issues.

(eval-when (:compile-toplevel :load-toplevel :execute)
  (defun cl-user::export-inherited-symbols (source target)
    (let ((pkg-source (find-package (string-upcase source)))
          (pkg-target (find-package (string-upcase target))))
      (do-external-symbols (s pkg-source)
        (export s pkg-target)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant