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

Connections for dependencies are not loaded #3

Closed
digikar99 opened this issue Feb 14, 2024 · 8 comments
Closed

Connections for dependencies are not loaded #3

digikar99 opened this issue Feb 14, 2024 · 8 comments

Comments

@digikar99
Copy link

Suppose I have systems defined as follows:

test-system-a.asd:

(defsystem "test-system-a"
  :components ((:file "test-system-a"))
  :defsystem-depends-on ("asdf-system-connections"))

(defsystem-connection "test-system-a/b"
  :requires ("test-system-a" "test-system-b")
  :components ((:file "test-system-ab")))

test-system-b.asd:

(defsystem "test-system-b"
  :components ((:file "test-system-b")))

test-system-c.asd:

(defsystem "test-system-c"
  :depends-on ("test-system-a"
               "test-system-b")
  :components ((:file "test-system-c")))

Then, loading system test-system-c loads test-system-a and test-system-b but not their connection test-system-a/b. It would be great if the connections for dependencies (and their dependencies in turn) are loaded too.

The files are attached with this issue: test-systems.tar.gz

@digikar99
Copy link
Author

The issue does not occur if asdf-system-connections is loaded prior to loading system test-system-c above, or equivalently, modifying the test-system-c.asd to:

(defsystem "test-system-c"
  :depends-on ("test-system-a"
               "test-system-b")
  :defsystem-depends-on ("asdf-system-connections")
  :components ((:file "test-system-c")))

This atleast works as a temporary fix, but this means that every user of a system using asdf-system-connections must be aware of asdf-system-connections. In a way, I find it a good practice to notice the dependencies of your dependencies. That way. one can see if they want to cut something down to make dependencies more minimal, and thus, make the project more maintainable in the long run.

@gwkkwg
Copy link
Collaborator

gwkkwg commented Feb 15, 2024 via email

@digikar99
Copy link
Author

Thanks for getting back! In that case, you can transfer the repository ownership to lisp-maintainers - me and a few other lispers maintain over there. That way, even if I become passive in lisp some day, someone else can maintain it.

@gwkkwg
Copy link
Collaborator

gwkkwg commented Feb 16, 2024 via email

@digikar99
Copy link
Author

I have sent you an invitation - accepting it should let you create new repositories at lisp-maintainers.

@gwkkwg
Copy link
Collaborator

gwkkwg commented Feb 18, 2024 via email

@digikar99
Copy link
Author

Thanks a lot to you for this project :)!

@digikar99
Copy link
Author

I have been trying things in the load-systems-driven branch and the linked PR. Unfortunately, this way of fixing this issue (and perhaps any other way too!) can break other systems.

The current design lets users implicitly assume a certain load order. Fixing this issue requires changing the load order. However, if this load order changes, there's no telling if the 332 quicklisp systems that directly or indirectly depend on asdf-system-connections continue to load. And perhaps, there will be other systems not in quicklisp too. Some of these systems might as well be unmaintained.

I'll instead fix this issue in a fork of this repository and only issue non-breaking fixes to this repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants