-
Notifications
You must be signed in to change notification settings - Fork 9
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
taxy/taxy-magit-section split #3
Comments
I don't know. On one hand, yes, but on the other, they show how
The benefit for me is keeping the code in a single repository, which is helpful since the two libraries are tied together. I'd prefer to keep them in the same branch, but Stefan asked me to separate them for GNU ELPA's sake. Now you're asking me to separate them even further for Emacsmirror's sake. I don't want to create more work for either of you, but I don't understand why this is so hard. AFAICT, |
It leads to a circular dependency [when using the Because I cannot say the same for the approach taken by [non]GNU Elpa. The immediate problem here is that it maps a repository directly to a package (like for Its understandable that Stefan would like to avoid the duplicated branches/worktrees and one suggestion I made was that one of the worktrees could be replaced by a symlink. That wouldn't make the duplicated branch unnecessary but at least its a step in the right direction. Stefan found that suggestion interesting but of course it complicates the tooling because now something/someone has to decide whether to checkout or link. I would go one step further and add an additional package property for use in
I fully agree and my suggestion would be to revert the split (going as far as to rewind history even) and instead do what I did for I plan to write to Stefan/ |
Just a quick FYI; I've added |
I'm not sure what you mean.
Yes, e.g. in I didn't know that I think this is an example of why it would be beneficial for packages to declare their recipes in their own repos rather than in MELPA's repo. That has some potential downsides, of course, but the alternative is that other package managers end up having to clone MELPA's repo just to get the recipes, which seems a bit silly.
Yes, a 1:1 mapping between repo:package doesn't seem like the best solution.
That sounds like a good solution.
Sounds nice to me.
I tend to agree with you. While taxy and taxy-magit-section have settled a bit, I still consider them closely tied, and changes in one may require changes in the other. I'd much prefer for the two files to live side-by-side in the same repo, branch, and worktree. It would make my work easier, and in general, making the developer's work easier seems like it should be a higher priority than simplifying an automated build process. I'm a bit tired of having to argue these things, in general, so I'm hesitant to start another thread on emacs-devel about it. But the more I think about having taxy-magit-section.el in a separate branch, the less enthusiastic about it I feel. So maybe I will.
I don't mind too much being your guinea pig. :) I did find this explanation a bit hard to follow, but I think if you said the same things but organized differently, it would be easier. |
Okay, I started a thread and requested to move |
You can keep them in a single repository on your machine, while storing them in two different remote repositories. |
Do you mean to push the same repo and branch to two different remotes, identical but for URL? |
and then you have locally a single repository that contains |
Yes, I'm familiar with I really just want to keep these files in the same repo, branch, and worktree, and distribute them as separate packages on ELPA, as I do on MELPA for some other packages (like |
I was just pointing out that a separate repository (as Jonas suggested) wouldn't make things much worse to you compared to a separate branch. |
Not much worse, no. :) Is there some reason you would prefer that for ELPA's sake? |
[ I assume by "ELPA" you mean "GNU ELPA". ] |
FYI:
|
Welcome to the club. 😀 |
I didn't even know it was a club. |
FYI: Straight.el can't install `taxy-magit-section` right now, because it
cannot check out multiple branches of the same repository. It is possible
for users to work around this issue (e.g. by creating a mirror repository
with a different name), but it would be better to either create a separate
repository or put the two packages in the same branch.
It seems even better would be to let `straight.el` handle that case.
I can't think of a good reason why that should be difficult.
Stefan
|
@monnier I guess the author chose to keep it simple stupid. Mirror repositories are a good compromise that solves many problems (e.g. non-git sources), with an extra maintenance effort (though it can be automated). |
Indeed it is. You can even go one level deeper and build an Emacs package manager on top of the one true package manager (:rofl:), Nix: https://gitlab.com/chasecaleb/emacs.nix/-/tree/master/emacs/nix. Fortunately my package manager can handle two different branches of the same repo so this isn't a big deal to me 😄, but for what it's worth this was quite the WTF to figure out while tracking down dependencies for ement. It definitely violates "principle of least astonishment", but I get that all of the different tool concerns are complicated. Just curious, any plans on changing things vs keeping it the way they are? (I imagine the latter, since this is a year old issue.) P.S. Thanks for ement @alphapapa, I'm liking it so far now that I sorted out these dependencies 👍 |
@chasecaleb I know Nix and am using Nix. There are emacs-overlay and nix-emacs-ci (to which I have contributed trivial workarounds several times) where Nix is used to build Emacs. I use Nix to build Emacs Lisp packages but not to build Emacs executables for myself, because the two repositories are great. I personally don't think building with Nix is deeper, though. For me, it works like a shortcut. |
@akirak I've seen you around a few other repos beyond here (nixpkgs perhaps)... small world! Absolutely agree with your sentiment about Nix making life easier; I'm familiar with emacs-overlay and it's great (FYI for anyone else reading this: emacs-overlay also provides Emacs package builds to make life easy). I haven't seen your emacs-twist before though, I'll have to check that out on a rainy day. I reinvented the wheel with building Emacs packages in Nix because I'm overly opinionated and missed how easy Borg's workflow made it to contribute to packages and switch to forks, so my design was heavily influenced by Borg's workflow (thanks, @tarsius). Plus Emacs is so important to me (it's my window manager even) that I wanted direct control over package versions and builds. |
Interesting. Actually, Borg was one of my initial motivations for working on my project. I read several reddit threads on Emacs Lisp package security and thought it would be a good idea to build a collective repository with Nix. Unfortunately, I wasn't sure when the submodules support of Nix flakes was going to be shipped, so I ended up building the non-submodule solution.
Thanks, indeed, I see the same people in the community quite often. I am not a heavy contributor of Nixpkgs, so you may have seen me on reddit. |
I've started using Guix but for now I keep using Borg for Emacs packages. I do however plan to experiment with Guix and Elisp packaging eventually. I am vaguely aware of the emacs-overlay for Nix, but if you have any useful links that I could use for inspiration, that would be great! |
@tarsius emacs-overlay provides a fresh set of Emacs Lisp packages from Nixpkgs, which are originally defined here: Besides the standard one, there are some non-standard solutions for Emacs Lisp package management with Nix:
@positron-solutions works on some other projects related to Nix + Emacs. He seems to be focused on documenting requirements extensively but reuses existing solutions as much as possible. On the contrary, I am interested in prototyping a solution that precisely meet my needs. I don't intend to draw public attention more than I can handle (because it's not a funded project at present). I also don't want to depend on third-party frameworks, except for Nix libraries that I consider dependable. |
Recently, I consider treating native compilation errors of Emacs lisp packages more strictly in NixOS, which is of benefit to quality of Emacs lisp packages in general. Currently, there are errors about missing taxy-magit-section when compiling taxy examples. It is a bit tricky to handle because making taxy depend on taxy-magit-section generates a circular dependency. I propose two workarounds:
|
@jian-lin I'd probably suggest just excluding the example libraries from the package definition for now. They don't need to be included in the installed package files. |
Thanks, I will do that in NixOS. BTW, NixOS has this issue because we follow the package definition of GNU ELPA. |
Good, thanks.
Yes, I may do that in the future. |
Now that
taxy-magit-section
has been moved out of "taxy itself", shouldn't the examples that depend ontaxy-magit-section
be moved to the same place?Speaking of "that place", please consider not using a branch for that but a separate repository. Keeping it in a separate branch complicates things for users and for the Emacsmirror (I would have to temporary patch the import tool, which is doable but also indicates that yours is the only package that makes this necessary), while also having no benefit (that I could see).
The text was updated successfully, but these errors were encountered: