Skip to content

Differentiate between user systems and dependencies#131

Draft
dieggsy wants to merge 2 commits into
mainfrom
user-systems
Draft

Differentiate between user systems and dependencies#131
dieggsy wants to merge 2 commits into
mainfrom
user-systems

Conversation

@dieggsy

@dieggsy dieggsy commented Apr 17, 2025

Copy link
Copy Markdown
Contributor

This would be required for #122 and #119, which could be implemented in this same pull request.

  • ocicl executable sets top level systems directly installed via command line as user-installed
  • Lisp runtime sets systems whose sources are in an ocicl directory, that are directly depended on by a system NOT in an ocicl directory, as user installed
  • All other systems are set as dependency

One issue I have is that the way the ocicl-runtime achieves this is by defining an :around method for asdf's default load-op, which feels... pretty icky. In particular because, per the ASDF manual:

ASDF’s pre-defined operations are in no way “privileged”, but it is requested that developers never use the asdf package for operations they develop themselves. The rationale for this rule is that we don’t want to establish a “global asdf operation name registry”, but also want to avoid name clashes.

We can define custom operations, but they won't be called by default. We could define a subclass of asdf:system, but systems would have to specify our class in the system definition. So I'm not sure how else we'd do this in the runtime. I would welcome any ideas that don't involve comandeering load-op like this, though. Maybe it's okay if it's just well-documented?

dieggsy added 2 commits April 17, 2025 00:51
- Executable sets systems explicitly listed on the command line as
  user-installed
- Runtime hooks into ASDF's load operation and looks for systems in an
  ocicl directory that are depended on by a system outside an ocicl
  directory, setting those as user-installed
@dieggsy dieggsy marked this pull request as draft April 17, 2025 05:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants