-
-
Notifications
You must be signed in to change notification settings - Fork 426
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
Delete nasdf
from Nyxt sources
#2981
Comments
Can you give more context? I don't understand the problem you are trying to solve. In my opinion, there is nothing to be done beside updating NASDF everywhere (which I'll do soon). While there are 2 PRs for NASDF, which issues are you talking about? |
In my understanding, the fact that the Guix package definition for Nyxt requires deleting (source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/atlas-engineer/nyxt")
(commit version)))
(sha256
(base32
"1jzlpi2iam15f0724nh6pb0zfs8d89mrf3zkvd87g99aq9w2h02a"))
(file-name (git-file-name "nyxt" version))
(modules '((guix build utils)))
(snippet
`(begin
(delete-file-recursively "libraries/nasdf")
#t)))) I'm just trying to understand if someone is already handling this transition, and offer my help if needed! I believe that the necessary steps include:
|
The thing is that NASDF handles the Git submodules, so we can't ship NASDF as a submodule. Thus we can't remove it from the Nyxt source, unless we find some other means to fetch it. Ideas welcome! |
I think the issue here is that if we'd be handling (snippet `(begin (delete-file-recursively "libraries/nasdf") #t)) Once #3003 is merged, I'll revisit this issue. |
What do you mean? |
We need to urgently fix the issue regarding NASDF. The situation as it stands is cumbersome. We need one single reference of truth and to avoid needing to update all packages that depends on NASDF manually. |
For the nix nyxt package I was using ntemplate's NASDF, but with the current 3.7.0 release it failed to build with ntemplate's NASDF, I needed to swap to nyxt's NASDF to make it work, I agree that having a single source of truth would be nice. |
@dariof4, yes I'm also mildly infuriated since in order to update the Nyxt package on Guix I need to make a NASDF release. I'll notify you when it's done. Ultimately, it's my fault too. If I make changes from Nyxt's NASDF, I should have propagated those to ntemplate's NASDF. But, in conclusion, this workflow is deeply flawed. |
This single reference of truth that was agreed on is
This sounds like a regular dependency update, like bumping
I remember us brainstorming it elsewhere only to conclude that this weird situation is the best option we have. More R&D about how to make it prettier certainly won't hurt, but that's likely to end up deep into the uncharted territories of ASDF. See https://asdf.common-lisp.dev/#extensions for (some of the) known ASDF extensions. These might have some insights on packaging. But, based on a cursory look I had over these, the process seems to be one of:
In either case, you cannot treat ASDF extension as a regular library, which effectively results in two layers of end-user library building/loading:
Given that NASDF is mostly Atlas Engineer-specific and is an exclusively ASDF-related library (compared to the end-user valuable Another ugly approach would be to inline it inside the .asd file. We used to do that, but such an approach warrants a much higher footgun concentration:
|
@dariof4 You can use the latest NASDF release. The diff below may help you on NixOS. (define-public sbcl-nasdf
- (let ((commit "dd9fb2df7174464b54561b2a2f3c3e00fdd5d4f7"))
+ (let ((commit "ab7a018f3a67a999c72710644b10b4545130c139"))
(package
(name "sbcl-nasdf")
- (version "0.1.7")
+ (version "0.1.8")
(source
(origin
(method git-fetch)
@@ -25838,7 +25837,7 @@ (define-public sbcl-nasdf
(commit commit)))
(file-name (git-file-name "cl-ntemplate" version))
(sha256
- (base32 "1q8ky8hz8xrr37h7yyc6ysvrcwlsp1i6r2x44c060drspgjbqj70"))))
+ (base32 "15j7kqxvn0blr0i2xgk0il0ia91p28clfqxdh00vlp423v9a2wbx"))))
(build-system asdf-build-system/sbcl) |
You're missing the fact that there's no single point of truth. For the platforms that rely on the git submodules to manage the CL dependencies, all they care about is Nyxt's NASDF version available at |
You're missing the fact that there's no single point of truth.
Ntemplate.
For the platforms that rely on the git submodules to manage the CL
dependencies, all they care about is Nyxt's NASDF version available at
libraries.
Note that Nyxt depends on other N-libraries that are also dependent on
NASDF. So if one packages Nyxt, one automatically has to deal with NASDF
sync issues if there are any (as it happened now with 3.7 and with NASDF
0.1.7 compilation tests a couple of months earlier.)
This is especially problematic when the libraries' version of NASDF is
newer than the one used by Nyxt (cf. 0.1.7 compilation tests), because
Nyxt's older NASDF can potentially break these libraries. It's less of a
problem when Nyxt's version is newer, but it still can tear off some
toes.
We have a single source of truth and we have to sync it with all the
dependent libraries. Which, procedural particularities aside, is still
valid dependency management.
In other words, NASDF (ntemplate) is not part of .gitmodules. On the
platforms that don't need the git submodules (such as Guix) we need to
delete NASDF from libraries.
I don't see the problematic point in this. Yes, we have to delete a
library that's used for a different installation process. If we were
pedantic enough we'd also delete Flatpak-specific files on Guix for the
sake of clarity.
Packaging is a mess, so it's okay to delete things that don't fit this
or that method of installation. And Nyxt is big enough for anyone to
pick their favorite library to delete :P
This suffices to show that the current situation is unmaintainable.
You've listed the current practice of dealing with NASDF. It did fit on
a single 80x24 screen with 80 characters fill column. It's not a perfect
practice, but it is verbally summarizeable and thus doable. And it's
much less work than is required to make a release (which, IIRC, requires
around an hour of manual work/interference.)
It's maintainable.
|
@aadcg Perfect, it works correctly with |
The idea of copying/pasting code between different projects doesn't sound like a solution to me. Sounds like a very error prone, and bad solution. We'll have to do some more thinking about this Artyom. I understand your perspective, but I simply disagree. |
We'll have to do some more thinking about this Artyom. I understand your perspective, but I simply disagree.
Happens 😄 That's why I linked to existing extensions: there might be something useful there.
|
I believe that the only sane solution is to have NASDF exclusively on Nyxt's codebase. All of our libraries that rely on it should drop this dependency. It makes little sense to handle a CL library's dependencies via git submodules. |
@Ambrevar could you provide a step-by-step plan for us to gracefully handle NASDF? I have the feeling that it takes more than simply:
I'm very confused about some PRs that seem somewhat related to it.
Also could you please clarify who is working on what, and who is responsible for what? Let's please make use of Github's facilities by assigning issues to people. Thanks.
The text was updated successfully, but these errors were encountered: