* package-vc support for :files keyword @ 2023-06-10 10:53 Daniel Fleischer 2023-06-10 13:23 ` Philip Kaludercic 0 siblings, 1 reply; 30+ messages in thread From: Daniel Fleischer @ 2023-06-10 10:53 UTC (permalink / raw) To: emacs-devel Hi, I've been testing package-vc support in Emacs 29. It's clear that this feature is inspired by 3rd party packages that help users install packages from external forges. Also, it makes sense that the Melpa recipe specification compatibility is not a goal. However, I do think the `:files' keyword is very useful to have, and was wondering whether it's planned, maybe in master? Thanks, -- Daniel Fleischer ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-06-10 10:53 package-vc support for :files keyword Daniel Fleischer @ 2023-06-10 13:23 ` Philip Kaludercic 2023-06-10 14:20 ` Daniel Fleischer 2023-09-18 7:25 ` Tony Zorman 0 siblings, 2 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-06-10 13:23 UTC (permalink / raw) To: Daniel Fleischer; +Cc: emacs-devel Daniel Fleischer <danflscr@gmail.com> writes: > Hi, I've been testing package-vc support in Emacs 29. It's clear that > this feature is inspired by 3rd party packages that help users install > packages from external forges. I have never used any of the other packages managers, primarily because they seem to peruse different goals. The primary motivation for package-vc is to make it easy to hack on packages that are already available on an ELPA and contribute these changes upstream via commands like `package-vc-prepare-patch'. The fact that it can be used as the primary method for package.el to fetch sources is an "unintended" consequence. > Also, it makes sense that the Melpa > recipe specification compatibility is not a goal. Right, as the primary technical inspiration for package-vc has been elpa-admin, and therefore we (re-)use GNU ELPA-style package specifications. > However, I do think > the `:files' keyword is very useful to have, and was wondering whether > it's planned, maybe in master? No, just like `:ignored-files' I do not see a sensible way to implement it without compromising on the primary goal mentioned above. Generally speaking, this is a style of package development that {GNU,NonGNU} ELPA would like to advise against perusing, in favour of a one-repo-per-package approach. Do you have a specific reason why you think that something like `:{ignored-,}files' are useful in general (i.e. not just because of the contingent fact that MELPA has popularised this form of development). But just like :make and :shell-command, or use-package support was not intended in the beginning, I don't insist on anything as long as a good compromise can be found. I just have my doubts, since supporting this would probably run against a number of basic assumptions that package-vc was written around. > Thanks, ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-06-10 13:23 ` Philip Kaludercic @ 2023-06-10 14:20 ` Daniel Fleischer 2023-06-11 8:55 ` Philip Kaludercic 2023-09-18 7:25 ` Tony Zorman 1 sibling, 1 reply; 30+ messages in thread From: Daniel Fleischer @ 2023-06-10 14:20 UTC (permalink / raw) To: emacs-devel Philip Kaludercic <philipk@posteo.net> writes: > Right, as the primary technical inspiration for package-vc has been > elpa-admin, and therefore we (re-)use GNU ELPA-style package > specifications. Hi, I wasn't aware there's a style guide for ELPA packages. > No, just like `:ignored-files' I do not see a sensible way to implement > it without compromising on the primary goal mentioned above. I don't understand this part: `:ignored-files' is part of the ELPA documentation and you are saying it's still not supported? > Generally speaking, this is a style of package development that > {GNU,NonGNU} ELPA would like to advise against perusing, in favour of > a one-repo-per-package approach. Do you have a specific reason why you > think that something like `:{ignored-,}files' are useful in general > (i.e. not just because of the contingent fact that MELPA has > popularised this form of development). One example is tests; having test files either in the root folder or in a folder called "tests", how do you prevent them from being evaluated? They could have additional dev dependencies that you might not want to have. What is the ELPA guideline about that? ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-06-10 14:20 ` Daniel Fleischer @ 2023-06-11 8:55 ` Philip Kaludercic 2023-06-11 9:30 ` Daniel Fleischer 0 siblings, 1 reply; 30+ messages in thread From: Philip Kaludercic @ 2023-06-11 8:55 UTC (permalink / raw) To: Daniel Fleischer; +Cc: emacs-devel (If possible, try to use a wide reply when responding to these messages, so that I (and anyone else who would want to participate but it not subscribed) get notified directly). Daniel Fleischer <danflscr@gmail.com> writes: > Philip Kaludercic <philipk@posteo.net> writes: > >> Right, as the primary technical inspiration for package-vc has been >> elpa-admin, and therefore we (re-)use GNU ELPA-style package >> specifications. > > Hi, I wasn't aware there's a style guide for ELPA packages. This is not really a style-guide (which is something I would interpret as concerning the contents of a package), but just a matter of how it would be best for packages and the package archive to interact. >> No, just like `:ignored-files' I do not see a sensible way to implement >> it without compromising on the primary goal mentioned above. > > I don't understand this part: `:ignored-files' is part of the ELPA > documentation and you are saying it's still not supported? It is not supported by package-vc. If you check (emacs) Fetching Package Sources, then you'll see the supported keywords listed under the "Specifying Package Sources" section. Generally speaking, package-vc is a subset of the keywords defined by elpa-admin. >> Generally speaking, this is a style of package development that >> {GNU,NonGNU} ELPA would like to advise against perusing, in favour of >> a one-repo-per-package approach. Do you have a specific reason why you >> think that something like `:{ignored-,}files' are useful in general >> (i.e. not just because of the contingent fact that MELPA has >> popularised this form of development). > > One example is tests; having test files either in the root folder or in > a folder called "tests", how do you prevent them from being evaluated? > They could have additional dev dependencies that you might not want to > have. What is the ELPA guideline about that? Test files are not evaluated/loaded, unless the user does so explicitly or if the package developer were to force it via autoloads. In the former case, I would say that it is probably intended behaviour, in the latter case this is a mistake made by the maintainer. If the file is located under a tests/ directory (or any other name), then it will not be added to the `load-path' to begin with. The point here is, that if a user wants to contribute to a package with tests, the tests shouldn't be hidden or even removed. That is why I'd even say it would be better to add the tests to the main lisp directory, so that it is even easier to load them. -- Philip Kaludercic ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-06-11 8:55 ` Philip Kaludercic @ 2023-06-11 9:30 ` Daniel Fleischer 2023-06-11 10:24 ` Philip Kaludercic 0 siblings, 1 reply; 30+ messages in thread From: Daniel Fleischer @ 2023-06-11 9:30 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel Philip Kaludercic <philipk@posteo.net> writes: > (If possible, try to use a wide reply when responding to these messages, > so that I (and anyone else who would want to participate but it not > subscribed) get notified directly). Will do. I need to learn more about this topic; I learned about `.elpaignore' which could be what I need. So I won't discuss specific features at this point. I will leave one point for thought: trying to gap the difference between ELPA packages and the "others" (melpa) could benefit everyone; it can lower the technical bar for external packages to join ELPA or non-GNU ELPA; packages will still be reviewed upon submission but things would work more smoothly as there will be only one recipe style. Thanks, -- Daniel Fleischer ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-06-11 9:30 ` Daniel Fleischer @ 2023-06-11 10:24 ` Philip Kaludercic 0 siblings, 0 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-06-11 10:24 UTC (permalink / raw) To: Daniel Fleischer; +Cc: emacs-devel Daniel Fleischer <danflscr@gmail.com> writes: > Philip Kaludercic <philipk@posteo.net> writes: > >> (If possible, try to use a wide reply when responding to these messages, >> so that I (and anyone else who would want to participate but it not >> subscribed) get notified directly). > > Will do. Thanks. > > I need to learn more about this topic; I learned about `.elpaignore' > which could be what I need. Right, package.el parses .elpaignore files to exclude files from byte compilation, and nothing else. > So I won't discuss specific features at this > point. I am happy to help if there is anything else I can clarify. > I will leave one point for thought: trying to gap the difference between > ELPA packages and the "others" (melpa) could benefit everyone; it can > lower the technical bar for external packages to join ELPA or non-GNU > ELPA; packages will still be reviewed upon submission but things would > work more smoothly as there will be only one recipe style. The thing is, most of the time all a package needs to be added to GNU or NonGNU ELPA is just a URL. That is why package-vc-install can frequently handle installing a package by just proving a URL to a repository. Just check the elpa-packages files for the two archives: https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages https://git.savannah.gnu.org/cgit/emacs/nongnu.git/tree/elpa-packages I don't think will be possible for ELPA-style package specifications and MELPA-style package recipes to be merged, nor do I see a urgent need for that to happen. The two archives don't only differ in superficial points like here, in the way packages are represented and listed, but in other fine technical details and philosophical matters. > Thanks, -- Philip Kaludercic ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-06-10 13:23 ` Philip Kaludercic 2023-06-10 14:20 ` Daniel Fleischer @ 2023-09-18 7:25 ` Tony Zorman 2023-09-18 9:10 ` Philip Kaludercic 1 sibling, 1 reply; 30+ messages in thread From: Tony Zorman @ 2023-09-18 7:25 UTC (permalink / raw) To: philipk; +Cc: emacs-devel Hi, Philip Kaludercic <philipk@posteo.net> writes: > But just like :make and :shell-command, or use-package support was not > intended in the beginning, I don't insist on anything as long as a > good compromise can be found. I just have my doubts, since supporting > this would probably run against a number of basic assumptions that > package-vc was written around. here's an idea: why not create e.g. a variable to decide when :shell-command is executed? Moving the execution to right after cloning the repository, instead of before building documentation, would enable one to easily emulate :files directives, as well as other keywords that need to be executed before things actually get built. Alternatively one could have a second :shell-command like keyword. Tony -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 7:25 ` Tony Zorman @ 2023-09-18 9:10 ` Philip Kaludercic 2023-09-18 14:43 ` Tony Zorman 0 siblings, 1 reply; 30+ messages in thread From: Philip Kaludercic @ 2023-09-18 9:10 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel Tony Zorman <tonyzorman@mailbox.org> writes: > Hi, > > Philip Kaludercic <philipk@posteo.net> writes: >> But just like :make and :shell-command, or use-package support was not >> intended in the beginning, I don't insist on anything as long as a >> good compromise can be found. I just have my doubts, since supporting >> this would probably run against a number of basic assumptions that >> package-vc was written around. > > here's an idea: why not create e.g. a variable to decide when > :shell-command is executed? Moving the execution to right after cloning > the repository, instead of before building documentation, would enable > one to easily emulate :files directives, as well as other keywords that > need to be executed before things actually get built. > > Alternatively one could have a second :shell-command like keyword. My issue with the first idea would be that this would create a greater discrepancy between what elpa-admin and package-vc do. So if anything, I think only the second option, e.g. :early-shell-command, would be viable. In both cases, what would you imagine that the command would do? If it just calls "rm foo.el bar.el ...", then we have an issue when upgrading, because there would at least be a merge conflict any time the other files are modified upstream. Upgrading isn't easy the way it is, but raising the necessity for manual intervention every time is something I'd like to avoid. Also, what would a :early-shell-command be used for on the ELPA build server? > Tony -- Philip Kaludercic ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 9:10 ` Philip Kaludercic @ 2023-09-18 14:43 ` Tony Zorman 2023-09-18 15:52 ` Philip Kaludercic 0 siblings, 1 reply; 30+ messages in thread From: Tony Zorman @ 2023-09-18 14:43 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel On Mon, Sep 18 2023 09:10, Philip Kaludercic wrote: > Tony Zorman <tonyzorman@mailbox.org> writes: >> here's an idea: why not create e.g. a variable to decide when >> :shell-command is executed? Moving the execution to right after cloning >> the repository, instead of before building documentation, would enable >> one to easily emulate :files directives, as well as other keywords that >> need to be executed before things actually get built. >> >> Alternatively one could have a second :shell-command like keyword. > > My issue with the first idea would be that this would create a greater > discrepancy between what elpa-admin and package-vc do. So if anything, > I think only the second option, e.g. :early-shell-command, would be > viable. Fair enough. > In both cases, what would you imagine that the command would do? If it > just calls "rm foo.el bar.el ...", then we have an issue when upgrading, > because there would at least be a merge conflict any time the other > files are modified upstream. Upgrading isn't easy the way it is, but > raising the necessity for manual intervention every time is something > I'd like to avoid. I think that $ rm foo.el $ git update-index --assume-unchanged foo.el should work. It should merge cleanly (I've tried this out just now, and it worked, but I may have overlooked something). If it's part of the package description, then updating should work out of the box, since package-vc-upgrade also calls package-vc--unpack-1, which would execute the respective :early-shell-command again. > Also, what would a :early-shell-command be used for > on the ELPA build server? That I don't know, I've never consciously looked at the ELPA build server. -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 14:43 ` Tony Zorman @ 2023-09-18 15:52 ` Philip Kaludercic 2023-09-18 18:54 ` Adam Porter 2023-09-18 19:40 ` Tony Zorman 0 siblings, 2 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-09-18 15:52 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel Tony Zorman <tonyzorman@mailbox.org> writes: > On Mon, Sep 18 2023 09:10, Philip Kaludercic wrote: >> Tony Zorman <tonyzorman@mailbox.org> writes: >>> here's an idea: why not create e.g. a variable to decide when >>> :shell-command is executed? Moving the execution to right after cloning >>> the repository, instead of before building documentation, would enable >>> one to easily emulate :files directives, as well as other keywords that >>> need to be executed before things actually get built. >>> >>> Alternatively one could have a second :shell-command like keyword. >> >> My issue with the first idea would be that this would create a greater >> discrepancy between what elpa-admin and package-vc do. So if anything, >> I think only the second option, e.g. :early-shell-command, would be >> viable. > > Fair enough. > >> In both cases, what would you imagine that the command would do? If it >> just calls "rm foo.el bar.el ...", then we have an issue when upgrading, >> because there would at least be a merge conflict any time the other >> files are modified upstream. Upgrading isn't easy the way it is, but >> raising the necessity for manual intervention every time is something >> I'd like to avoid. > > I think that > > $ rm foo.el > $ git update-index --assume-unchanged foo.el > > should work. It should merge cleanly (I've tried this out just now, and > it worked, but I may have overlooked something). If it's part of the > package description, then updating should work out of the box, since > package-vc-upgrade also calls package-vc--unpack-1, which would execute > the respective :early-shell-command again. Being a git-specific command, this shouldn't be added to package-vc directly. If there is a VCS agnostic/generalisable way of doing this, then it could be added to VC. But for now, if I understand you correctly, you are suggesting that users give package specifications like this: (foo :url "https://some.vcs/repository" ;; ... :early-shell-command "rm [all the files]; git update-index --assume-unchanged [all the files]") where [all the files] might change between updates. At this point I continue to question the utility of emulating MELPA-style :files attributes, unless there are concrete usability issues. For the record, these are all the repositories in {Non,}GNU ELPA that develop multiple packages in a single repository: GNU ELPA: http://www.dr-qubit.org/git/predictive.git https://github.com/oantolin/embark https://github.com/abo-abo/swiper https://github.com/abo-abo/hydra https://github.com/alphapapa/taxy.el.git NonGNU ELPA: https://github.com/lewang/flx https://github.com/emacs-helm/helm https://github.com/magit/magit https://github.com/brianc/jade-mode From what I understand, there is no technical necessity for this mode of development? I wonder how difficult it would be to push for a one-package-one-repo approach. >> Also, what would a :early-shell-command be used for >> on the ELPA build server? > > That I don't know, I've never consciously looked at the ELPA build > server. -- Philip Kaludercic ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 15:52 ` Philip Kaludercic @ 2023-09-18 18:54 ` Adam Porter 2023-09-19 8:37 ` Philip Kaludercic 2023-09-18 19:40 ` Tony Zorman 1 sibling, 1 reply; 30+ messages in thread From: Adam Porter @ 2023-09-18 18:54 UTC (permalink / raw) To: philipk; +Cc: emacs-devel, tonyzorman Hi Philip, et al, > For the record, these are all the repositories in {Non,}GNU ELPA that > develop multiple packages in a single repository: > > GNU ELPA: > http://www.dr-qubit.org/git/predictive.git > https://github.com/oantolin/embark > https://github.com/abo-abo/swiper > https://github.com/abo-abo/hydra > https://github.com/alphapapa/taxy.el.git > > From what I understand, there is no technical necessity for this mode of > development? I wonder how difficult it would be to push for a > one-package-one-repo approach. Please note out that while `taxy' and `taxy-magit-section' are both developed in "taxy.el.git", they are in separate branches, so there is no need to build the two packages from a single set of files by excluding some files and then the others. I've chosen to keep these packages in the same repo because they are so closely related. I'd like to be able to keep this arrangement. Having said that, while I wouldn't personally object to dropping support for building multiple packages from a single branch (since I don't do it myself), I wouldn't favor doing so, because existing packages do, and it would create more work for the authors to have to split them up. Maybe it would be reasonable to make a new policy against building multiple packages from a single branch, while "grandfathering" in the existing packages that do so, if it would solve a problem for ELPA. Thanks for your work, Adam ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 18:54 ` Adam Porter @ 2023-09-19 8:37 ` Philip Kaludercic 2023-09-19 12:23 ` Adam Porter 0 siblings, 1 reply; 30+ messages in thread From: Philip Kaludercic @ 2023-09-19 8:37 UTC (permalink / raw) To: Adam Porter; +Cc: emacs-devel, tonyzorman Adam Porter <adam@alphapapa.net> writes: > Hi Philip, et al, > >> For the record, these are all the repositories in {Non,}GNU ELPA that >> develop multiple packages in a single repository: >> GNU ELPA: >> http://www.dr-qubit.org/git/predictive.git >> https://github.com/oantolin/embark >> https://github.com/abo-abo/swiper >> https://github.com/abo-abo/hydra >> https://github.com/alphapapa/taxy.el.git >> From what I understand, there is no technical necessity for this >> mode of >> development? I wonder how difficult it would be to push for a >> one-package-one-repo approach. > > Please note out that while `taxy' and `taxy-magit-section' are both > developed in "taxy.el.git", they are in separate branches, so there is > no need to build the two packages from a single set of files by > excluding some files and then the others. Oops, I just wrote a quick script that compared URLs but did not check what :branch they are developed on. > I've chosen to keep these packages in the same repo because they are > so closely related. I'd like to be able to keep this arrangement. That is totally fine, would you mind sharing your setup, in case someone else is interested in this approach as well? > Having said that, while I wouldn't personally object to dropping > support for building multiple packages from a single branch (since I > don't do it myself), I wouldn't favor doing so, because existing > packages do, and it would create more work for the authors to have to > split them up. That is the issue, and I certainly don't want to be the one to blame for breakage, be it for package developers let alone users. > Maybe it would be reasonable to make a new policy against building > multiple packages from a single branch, while "grandfathering" in the > existing packages that do so, if it would solve a problem for ELPA. What do you mean by "grandfathering"? > Thanks for your work, > Adam ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 8:37 ` Philip Kaludercic @ 2023-09-19 12:23 ` Adam Porter 2023-09-19 13:56 ` Philip Kaludercic 0 siblings, 1 reply; 30+ messages in thread From: Adam Porter @ 2023-09-19 12:23 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel, tonyzorman Hi Philip, On 9/19/23 03:37, Philip Kaludercic wrote: >> Please note out that while `taxy' and `taxy-magit-section' are both >> developed in "taxy.el.git", they are in separate branches, so there is >> no need to build the two packages from a single set of files by >> excluding some files and then the others. > > Oops, I just wrote a quick script that compared URLs but did not check > what :branch they are developed on. > >> I've chosen to keep these packages in the same repo because they are >> so closely related. I'd like to be able to keep this arrangement. > > That is totally fine, would you mind sharing your setup, in case someone > else is interested in this approach as well? I'm not sure what you're asking for, but I'll be glad to share. All I did was create an orphan branch in the same repository and add the "taxy-magit-section.el" and associated files there, as if it were a separate repo. >> Having said that, while I wouldn't personally object to dropping >> support for building multiple packages from a single branch (since I >> don't do it myself), I wouldn't favor doing so, because existing >> packages do, and it would create more work for the authors to have to >> split them up. > > That is the issue, and I certainly don't want to be the one to blame for > breakage, be it for package developers let alone users. > >> Maybe it would be reasonable to make a new policy against building >> multiple packages from a single branch, while "grandfathering" in the >> existing packages that do so, if it would solve a problem for ELPA. > > What do you mean by "grandfathering"? It's an expression; in this context, it would mean to allow the packages that already work this way to continue doing so, while requiring newly submitted packages to only build one package per branch (or repo, depending on the policy). ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 12:23 ` Adam Porter @ 2023-09-19 13:56 ` Philip Kaludercic 2023-09-19 14:14 ` Adam Porter 0 siblings, 1 reply; 30+ messages in thread From: Philip Kaludercic @ 2023-09-19 13:56 UTC (permalink / raw) To: Adam Porter; +Cc: emacs-devel, tonyzorman Adam Porter <adam@alphapapa.net> writes: > Hi Philip, > > On 9/19/23 03:37, Philip Kaludercic wrote: > >>> Please note out that while `taxy' and `taxy-magit-section' are both >>> developed in "taxy.el.git", they are in separate branches, so there is >>> no need to build the two packages from a single set of files by >>> excluding some files and then the others. >> Oops, I just wrote a quick script that compared URLs but did not >> check >> what :branch they are developed on. >> >>> I've chosen to keep these packages in the same repo because they are >>> so closely related. I'd like to be able to keep this arrangement. >> That is totally fine, would you mind sharing your setup, in case >> someone >> else is interested in this approach as well? > > I'm not sure what you're asking for, but I'll be glad to share. All I > did was create an orphan branch in the same repository and add the > "taxy-magit-section.el" and associated files there, as if it were a > separate repo. What I meant was if you just had multiple, separate checkouts of the same repository or were using something more fancy like git worktrees. >>> Having said that, while I wouldn't personally object to dropping >>> support for building multiple packages from a single branch (since I >>> don't do it myself), I wouldn't favor doing so, because existing >>> packages do, and it would create more work for the authors to have to >>> split them up. >> That is the issue, and I certainly don't want to be the one to blame >> for >> breakage, be it for package developers let alone users. >> >>> Maybe it would be reasonable to make a new policy against building >>> multiple packages from a single branch, while "grandfathering" in the >>> existing packages that do so, if it would solve a problem for ELPA. >> What do you mean by "grandfathering"? > > It's an expression; in this context, it would mean to allow the > packages that already work this way to continue doing so, while > requiring newly submitted packages to only build one package per > branch (or repo, depending on the policy). FWIW I have been bringing this up whenever a package like this was proposed, but usually they refer to existing users on MELPA and then I don't want to bother them any further. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 13:56 ` Philip Kaludercic @ 2023-09-19 14:14 ` Adam Porter 0 siblings, 0 replies; 30+ messages in thread From: Adam Porter @ 2023-09-19 14:14 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel, tonyzorman On 9/19/23 08:56, Philip Kaludercic wrote: >> I'm not sure what you're asking for, but I'll be glad to share. All I >> did was create an orphan branch in the same repository and add the >> "taxy-magit-section.el" and associated files there, as if it were a >> separate repo. > > What I meant was if you just had multiple, separate checkouts of the > same repository or were using something more fancy like git worktrees. Yes, sometimes I use worktrees. I don't have a canonical "workflow," as it's evolved over time and continues to. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 15:52 ` Philip Kaludercic 2023-09-18 18:54 ` Adam Porter @ 2023-09-18 19:40 ` Tony Zorman 2023-09-19 8:47 ` Philip Kaludercic 2023-09-19 22:51 ` Jonas Bernoulli 1 sibling, 2 replies; 30+ messages in thread From: Tony Zorman @ 2023-09-18 19:40 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel On Mon, Sep 18 2023 15:52, Philip Kaludercic wrote: >> I think that >> >> $ rm foo.el >> $ git update-index --assume-unchanged foo.el >> >> should work. It should merge cleanly (I've tried this out just now, and >> it worked, but I may have overlooked something). If it's part of the >> package description, then updating should work out of the box, since >> package-vc-upgrade also calls package-vc--unpack-1, which would execute >> the respective :early-shell-command again. > > Being a git-specific command, this shouldn't be added to package-vc > directly. If there is a VCS agnostic/generalisable way of doing this, > then it could be added to VC. Ah, sometimes I forget that there are VCs other than Git—sorry :) > But for now, if I understand you correctly, you are suggesting that > users give package specifications like this: > > (foo :url "https://some.vcs/repository" > ;; ... > :early-shell-command "rm [all the files]; git update-index --assume-unchanged [all the files]") > > where [all the files] might change between updates. Yes, exactly. > At this point I continue to question the utility of emulating > MELPA-style :files attributes, unless there are concrete usability > issues. > > For the record, these are all the repositories in {Non,}GNU ELPA that > develop multiple packages in a single repository: > > [… 12 lines elided …] > > From what I understand, there is no technical necessity for this mode of > development? I wonder how difficult it would be to push for a > one-package-one-repo approach. This is not just for multiple packages in a single repository—at least one has to somewhat broaden what "multiple packages" means. Some packages include small shims for bigger projects, and inadvertently require them as dependencies. The original issue[1] on the vc-use-package repo mentions org-ql[2], more specifically its helm integration in the form of helm-org-ql.el. Some people might not want to pull down helm as a dependency just for one file that they are not going to use anyways. I'm not sure how common of a situation this actually is, but at least for the big completion frameworks—helm and ivy—it's not totally unheard of. [1]: https://github.com/slotThe/vc-use-package/issues/12 [2]: https://github.com/alphapapa/org-ql/ -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 19:40 ` Tony Zorman @ 2023-09-19 8:47 ` Philip Kaludercic 2023-09-19 13:48 ` Adam Porter 2023-09-19 14:17 ` Tony Zorman 2023-09-19 22:51 ` Jonas Bernoulli 1 sibling, 2 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-09-19 8:47 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel Tony Zorman <tonyzorman@mailbox.org> writes: > On Mon, Sep 18 2023 15:52, Philip Kaludercic wrote: >>> I think that >>> >>> $ rm foo.el >>> $ git update-index --assume-unchanged foo.el >>> >>> should work. It should merge cleanly (I've tried this out just now, and >>> it worked, but I may have overlooked something). If it's part of the >>> package description, then updating should work out of the box, since >>> package-vc-upgrade also calls package-vc--unpack-1, which would execute >>> the respective :early-shell-command again. >> >> Being a git-specific command, this shouldn't be added to package-vc >> directly. If there is a VCS agnostic/generalisable way of doing this, >> then it could be added to VC. > > Ah, sometimes I forget that there are VCs other than Git—sorry :) > >> But for now, if I understand you correctly, you are suggesting that >> users give package specifications like this: >> >> (foo :url "https://some.vcs/repository" >> ;; ... >> :early-shell-command "rm [all the files]; git update-index --assume-unchanged [all the files]") >> >> where [all the files] might change between updates. > > Yes, exactly. > >> At this point I continue to question the utility of emulating >> MELPA-style :files attributes, unless there are concrete usability >> issues. >> >> For the record, these are all the repositories in {Non,}GNU ELPA that >> develop multiple packages in a single repository: >> >> [… 12 lines elided …] >> >> From what I understand, there is no technical necessity for this mode of >> development? I wonder how difficult it would be to push for a >> one-package-one-repo approach. > > This is not just for multiple packages in a single repository—at least > one has to somewhat broaden what "multiple packages" means. Some > packages include small shims for bigger projects, and inadvertently > require them as dependencies. The original issue[1] on the > vc-use-package repo mentions org-ql[2], more specifically its helm > integration in the form of helm-org-ql.el. Some people might not want to > pull down helm as a dependency just for one file that they are not going > to use anyways. > > I'm not sure how common of a situation this actually is, but at least > for the big completion frameworks—helm and ivy—it's not totally unheard > of. Hmm, this is interesting example that I was not familiar with. As an alternative idea, do you think that using `:ignored-files' like elpa-admin.el could be useful? You could exclude all the files with "soft-dependencies", that wouldn't be scraped in `package-vc--unpack-1' when looking for dependency files. Alternatively, since I am still not convinced that having :early-shell-command built-in to package-vc is a good idea, one could scatter a number of hooks around the code that could be used to extend installation procedure with additional functionality, like a :early-shell-command. > [1]: https://github.com/slotThe/vc-use-package/issues/12 > [2]: https://github.com/alphapapa/org-ql/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 8:47 ` Philip Kaludercic @ 2023-09-19 13:48 ` Adam Porter 2023-09-19 14:00 ` Philip Kaludercic 2023-09-19 14:17 ` Tony Zorman 1 sibling, 1 reply; 30+ messages in thread From: Adam Porter @ 2023-09-19 13:48 UTC (permalink / raw) To: philipk; +Cc: emacs-devel, tonyzorman FWIW, it seems like a bit of an anti-pattern for shell commands to be part of Elisp packages' recipes. I can see how it may be necessary for certain ones that support external software that may need to build a module, etc, but it seems like that sort of thing should be kept to a minimum due to, e.g. potential security issues with executing code at install time. Or am I missing something? :) --Adam ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 13:48 ` Adam Porter @ 2023-09-19 14:00 ` Philip Kaludercic 0 siblings, 0 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-09-19 14:00 UTC (permalink / raw) To: Adam Porter; +Cc: emacs-devel, tonyzorman Adam Porter <adam@alphapapa.net> writes: > FWIW, it seems like a bit of an anti-pattern for shell commands to be > part of Elisp packages' recipes. I can see how it may be necessary > for certain ones that support external software that may need to build > a module, etc, but it seems like that sort of thing should be kept to > a minimum due to, e.g. potential security issues with executing code > at install time. Or am I missing something? :) It usually is a hack, and it isn't enabled by default either. Emacs 30 has a special user option to regulate it. I certainly don't recommend using it, and am not that enthusiastic about promoting it. > --Adam ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 8:47 ` Philip Kaludercic 2023-09-19 13:48 ` Adam Porter @ 2023-09-19 14:17 ` Tony Zorman 2023-09-20 7:32 ` Philip Kaludercic 1 sibling, 1 reply; 30+ messages in thread From: Tony Zorman @ 2023-09-19 14:17 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel On Tue, Sep 19 2023 08:47, Philip Kaludercic wrote: > Tony Zorman <tonyzorman@mailbox.org> writes: > > [… 42 lines elided …] > >> This is not just for multiple packages in a single repository—at least >> one has to somewhat broaden what "multiple packages" means. Some >> packages include small shims for bigger projects, and inadvertently >> require them as dependencies. The original issue[1] on the >> vc-use-package repo mentions org-ql[2], more specifically its helm >> integration in the form of helm-org-ql.el. Some people might not want to >> pull down helm as a dependency just for one file that they are not going >> to use anyways. >> >> I'm not sure how common of a situation this actually is, but at least >> for the big completion frameworks—helm and ivy—it's not totally unheard >> of. > > Hmm, this is interesting example that I was not familiar with. As an > alternative idea, do you think that using `:ignored-files' like > elpa-admin.el could be useful? You could exclude all the files with > "soft-dependencies", that wouldn't be scraped in `package-vc--unpack-1' > when looking for dependency files. Overall, I think this would be the better (even best) approach, yes. (I also consider executing external shell commands during build-time an anti pattern, I just got the feeling that making package-vc support `:ignored-files' wasn't on the table—glad to realise that I was wrong!) -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 14:17 ` Tony Zorman @ 2023-09-20 7:32 ` Philip Kaludercic 2023-09-21 13:28 ` Tony Zorman [not found] ` <87jzsgm82h.fsf@hyperspace> 0 siblings, 2 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-09-20 7:32 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1392 bytes --] Tony Zorman <tonyzorman@mailbox.org> writes: > On Tue, Sep 19 2023 08:47, Philip Kaludercic wrote: >> Tony Zorman <tonyzorman@mailbox.org> writes: >> >> [… 42 lines elided …] >> >>> This is not just for multiple packages in a single repository—at least >>> one has to somewhat broaden what "multiple packages" means. Some >>> packages include small shims for bigger projects, and inadvertently >>> require them as dependencies. The original issue[1] on the >>> vc-use-package repo mentions org-ql[2], more specifically its helm >>> integration in the form of helm-org-ql.el. Some people might not want to >>> pull down helm as a dependency just for one file that they are not going >>> to use anyways. >>> >>> I'm not sure how common of a situation this actually is, but at least >>> for the big completion frameworks—helm and ivy—it's not totally unheard >>> of. >> >> Hmm, this is interesting example that I was not familiar with. As an >> alternative idea, do you think that using `:ignored-files' like >> elpa-admin.el could be useful? You could exclude all the files with >> "soft-dependencies", that wouldn't be scraped in `package-vc--unpack-1' >> when looking for dependency files. > > Overall, I think this would be the better (even best) approach, yes. Here is a sketch of how that could look like. Can you test it to see if it works: [-- Attachment #2: Type: text/plain, Size: 3169 bytes --] diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index a8393cb7e75..07e660d9f33 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -213,7 +213,7 @@ package-vc--desc->spec name for PKG-DESC." (alist-get (setq name (or name (package-desc-name pkg-desc))) - (if (and (package-desc-archive pkg-desc) + (if (and pkg-desc (package-desc-archive pkg-desc) (not (alist-get name package-vc-selected-packages nil nil #'string=))) (alist-get (intern (package-desc-archive pkg-desc)) @@ -501,7 +501,8 @@ package-vc--unpack-1 autoloads, generating a package description file (used to identify a package as a VC package later on), building documentation and marking the package as installed." - (let (missing) + (let ((pkg-spec (package-vc--desc->spec pkg-desc)) + missing) ;; Remove any previous instance of PKG-DESC from `package-alist' (let ((pkgs (assq (package-desc-name pkg-desc) package-alist))) (when pkgs @@ -510,17 +511,27 @@ package-vc--unpack-1 ;; In case the package was installed directly from source, the ;; dependency list wasn't know beforehand, and they might have ;; to be installed explicitly. - (let ((deps '())) + (let ((ignored-files + (mapconcat + (lambda (ignore) + (wildcard-to-regexp + (if (string-match-p "\\`/" ignore) + (concat pkg-dir ignore) + (concat "*/" ignore)))) + (plist-get pkg-spec :ignored-files) + "\\|")) + (deps '())) (dolist (file (directory-files pkg-dir t "\\.el\\'" t)) - (with-temp-buffer - (insert-file-contents file) - (when-let* ((require-lines (lm-header-multiline "package-requires"))) - (thread-last - (mapconcat #'identity require-lines " ") - package-read-from-string - package--prepare-dependencies - (nconc deps) - (setq deps))))) + (unless (string-match-p ignored-files file) + (with-temp-buffer + (insert-file-contents file) + (when-let* ((require-lines (lm-header-multiline "package-requires"))) + (thread-last + (mapconcat #'identity require-lines " ") + package-read-from-string + package--prepare-dependencies + (nconc deps) + (setq deps)))))) (dolist (dep deps) (cl-callf version-to-list (cadr dep))) (setf missing (package-vc-install-dependencies (delete-dups deps))) @@ -529,8 +540,7 @@ package-vc--unpack-1 missing))) (let ((default-directory (file-name-as-directory pkg-dir)) - (pkg-file (expand-file-name (package--description-file pkg-dir) pkg-dir)) - (pkg-spec (package-vc--desc->spec pkg-desc))) + (pkg-file (expand-file-name (package--description-file pkg-dir) pkg-dir))) ;; Generate autoloads (let* ((name (package-desc-name pkg-desc)) (auto-name (format "%s-autoloads.el" name)) [-- Attachment #3: Type: text/plain, Size: 250 bytes --] > (I also consider executing external shell commands during build-time an > anti pattern, I just got the feeling that making package-vc support > `:ignored-files' wasn't on the table—glad to realise that I was wrong!) Why did you think so? ^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-20 7:32 ` Philip Kaludercic @ 2023-09-21 13:28 ` Tony Zorman 2023-09-21 16:32 ` Philip Kaludercic [not found] ` <87jzsgm82h.fsf@hyperspace> 1 sibling, 1 reply; 30+ messages in thread From: Tony Zorman @ 2023-09-21 13:28 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel On Wed, Sep 20 2023 07:32, Philip Kaludercic wrote: > Here is a sketch of how that could look like. Can you test it to see if > it works: > > [… 71 lines elided …] Yup, works beautifully; thanks! >> (I also consider executing external shell commands during build-time an >> anti pattern, I just got the feeling that making package-vc support >> `:ignored-files' wasn't on the table—glad to realise that I was wrong!) > > Why did you think so? I perhaps read your first email[1] more negatively than you intended it to be. [1]: https://lists.gnu.org/archive/html/emacs-devel/2023-06/msg00247.html -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-21 13:28 ` Tony Zorman @ 2023-09-21 16:32 ` Philip Kaludercic 0 siblings, 0 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-09-21 16:32 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel Tony Zorman <tonyzorman@mailbox.org> writes: > On Wed, Sep 20 2023 07:32, Philip Kaludercic wrote: >> Here is a sketch of how that could look like. Can you test it to see if >> it works: >> >> [… 71 lines elided …] > > Yup, works beautifully; thanks! OK, I'll convert this into a proper patch and update the documentation. >>> (I also consider executing external shell commands during build-time an >>> anti pattern, I just got the feeling that making package-vc support >>> `:ignored-files' wasn't on the table—glad to realise that I was wrong!) >> >> Why did you think so? > > I perhaps read your first email[1] more negatively than you intended it > to be. My point there was that using :ignored-files as a ":files" substitute won't work, but I understand how my statement there could be misread. Sorry about that. > [1]: https://lists.gnu.org/archive/html/emacs-devel/2023-06/msg00247.html ^ permalink raw reply [flat|nested] 30+ messages in thread
[parent not found: <87jzsgm82h.fsf@hyperspace>]
* Re: package-vc support for :files keyword [not found] ` <87jzsgm82h.fsf@hyperspace> @ 2023-09-24 14:31 ` Philip Kaludercic 2023-09-25 13:32 ` Tony Zorman 0 siblings, 1 reply; 30+ messages in thread From: Philip Kaludercic @ 2023-09-24 14:31 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel Tony Zorman <tonyzorman@mailbox.org> writes: > On Wed, Sep 20 2023 07:32, Philip Kaludercic wrote: >> + (unless (string-match-p ignored-files file) > > One thing that did jump out to me just now, which I hadn't considered > before: when ignored-files is the empty string, this will always match > any file—not what we want :) Do you mean because the empty glob expression doesn't match everything, but the empty regular expression does? The easiest solution seems to be to just check if the empty string is listed and handle that separately (whatever the correct behaviour is in that case), but on the other hand, why should a user list an empty string in the list of ignored files? -- Philip Kaludercic ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-24 14:31 ` Philip Kaludercic @ 2023-09-25 13:32 ` Tony Zorman 2023-09-27 14:03 ` Philip Kaludercic 0 siblings, 1 reply; 30+ messages in thread From: Tony Zorman @ 2023-09-25 13:32 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel On Sun, Sep 24 2023 16:31, Philip Kaludercic wrote: > Tony Zorman <tonyzorman@mailbox.org> writes: > >> On Wed, Sep 20 2023 07:32, Philip Kaludercic wrote: >>> + (unless (string-match-p ignored-files file) >> >> One thing that did jump out to me just now, which I hadn't considered >> before: when ignored-files is the empty string, this will always match >> any file—not what we want :) > > Do you mean because the empty glob expression doesn't match everything, > but the empty regular expression does? > > The easiest solution seems to be to just check if the empty string is > listed and handle that separately (whatever the correct behaviour is in > that case), but on the other hand, why should a user list an empty > string in the list of ignored files? The point I was making was that `(mapconcat (λ…) nil) ≡ ""`, since mapconcat always returns a string. Even if there were no :ignored-files listed, the ignored-files variable would then be the empty string, matching each and every file. -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-25 13:32 ` Tony Zorman @ 2023-09-27 14:03 ` Philip Kaludercic 2023-10-04 6:44 ` Tony Zorman 0 siblings, 1 reply; 30+ messages in thread From: Philip Kaludercic @ 2023-09-27 14:03 UTC (permalink / raw) To: Tony Zorman; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1167 bytes --] Tony Zorman <tonyzorman@mailbox.org> writes: > On Sun, Sep 24 2023 16:31, Philip Kaludercic wrote: >> Tony Zorman <tonyzorman@mailbox.org> writes: >> >>> On Wed, Sep 20 2023 07:32, Philip Kaludercic wrote: >>>> + (unless (string-match-p ignored-files file) >>> >>> One thing that did jump out to me just now, which I hadn't considered >>> before: when ignored-files is the empty string, this will always match >>> any file—not what we want :) >> >> Do you mean because the empty glob expression doesn't match everything, >> but the empty regular expression does? >> >> The easiest solution seems to be to just check if the empty string is >> listed and handle that separately (whatever the correct behaviour is in >> that case), but on the other hand, why should a user list an empty >> string in the list of ignored files? > > The point I was making was that `(mapconcat (λ…) nil) ≡ ""`, since > mapconcat always returns a string. Even if there were no :ignored-files > listed, the ignored-files variable would then be the empty string, > matching each and every file. Oops, right, in that case this should be preferable: [-- Attachment #2: Type: text/plain, Size: 3287 bytes --] diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index a8393cb7e75..d100e0bcb58 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -213,7 +213,7 @@ package-vc--desc->spec name for PKG-DESC." (alist-get (setq name (or name (package-desc-name pkg-desc))) - (if (and (package-desc-archive pkg-desc) + (if (and pkg-desc (package-desc-archive pkg-desc) (not (alist-get name package-vc-selected-packages nil nil #'string=))) (alist-get (intern (package-desc-archive pkg-desc)) @@ -501,7 +501,8 @@ package-vc--unpack-1 autoloads, generating a package description file (used to identify a package as a VC package later on), building documentation and marking the package as installed." - (let (missing) + (let ((pkg-spec (package-vc--desc->spec pkg-desc)) + missing) ;; Remove any previous instance of PKG-DESC from `package-alist' (let ((pkgs (assq (package-desc-name pkg-desc) package-alist))) (when pkgs @@ -510,17 +511,29 @@ package-vc--unpack-1 ;; In case the package was installed directly from source, the ;; dependency list wasn't know beforehand, and they might have ;; to be installed explicitly. - (let ((deps '())) + (let ((ignored-files + (if (plist-get pkg-spec :ignored-files) + (mapconcat + (lambda (ignore) + (wildcard-to-regexp + (if (string-match-p "\\`/" ignore) + (concat pkg-dir ignore) + (concat "*/" ignore)))) + (plist-get pkg-spec :ignored-files) + "\\|") + regexp-unmatchable)) + (deps '())) (dolist (file (directory-files pkg-dir t "\\.el\\'" t)) - (with-temp-buffer - (insert-file-contents file) - (when-let* ((require-lines (lm-header-multiline "package-requires"))) - (thread-last - (mapconcat #'identity require-lines " ") - package-read-from-string - package--prepare-dependencies - (nconc deps) - (setq deps))))) + (unless (string-match-p ignored-files file) + (with-temp-buffer + (insert-file-contents file) + (when-let* ((require-lines (lm-header-multiline "package-requires"))) + (thread-last + (mapconcat #'identity require-lines " ") + package-read-from-string + package--prepare-dependencies + (nconc deps) + (setq deps)))))) (dolist (dep deps) (cl-callf version-to-list (cadr dep))) (setf missing (package-vc-install-dependencies (delete-dups deps))) @@ -529,8 +542,7 @@ package-vc--unpack-1 missing))) (let ((default-directory (file-name-as-directory pkg-dir)) - (pkg-file (expand-file-name (package--description-file pkg-dir) pkg-dir)) - (pkg-spec (package-vc--desc->spec pkg-desc))) + (pkg-file (expand-file-name (package--description-file pkg-dir) pkg-dir))) ;; Generate autoloads (let* ((name (package-desc-name pkg-desc)) (auto-name (format "%s-autoloads.el" name)) ^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-27 14:03 ` Philip Kaludercic @ 2023-10-04 6:44 ` Tony Zorman 0 siblings, 0 replies; 30+ messages in thread From: Tony Zorman @ 2023-10-04 6:44 UTC (permalink / raw) To: Philip Kaludercic; +Cc: emacs-devel On Wed, Sep 27 2023 14:03, Philip Kaludercic wrote: > Oops, right, in that case this should be preferable: > > [… 73 lines elided …] Works great, thanks! -- Tony Zorman | https://tony-zorman.com/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-18 19:40 ` Tony Zorman 2023-09-19 8:47 ` Philip Kaludercic @ 2023-09-19 22:51 ` Jonas Bernoulli 2023-09-22 12:38 ` Stefan Kangas 1 sibling, 1 reply; 30+ messages in thread From: Jonas Bernoulli @ 2023-09-19 22:51 UTC (permalink / raw) To: Tony Zorman, Philip Kaludercic; +Cc: emacs-devel Tony Zorman <tonyzorman@mailbox.org> writes: >> From what I understand, there is no technical necessity for this mode of >> development? I wonder how difficult it would be to push for a >> one-package-one-repo approach. > > This is not just for multiple packages in a single repository—at least > one has to somewhat broaden what "multiple packages" means. Some > packages include small shims for bigger projects, and inadvertently > require them as dependencies. The original issue[1] on the > vc-use-package repo mentions org-ql[2], more specifically its helm > integration in the form of helm-org-ql.el. Some people might not want to > pull down helm as a dependency just for one file that they are not going > to use anyways. > > I'm not sure how common of a situation this actually is, but at least > for the big completion frameworks—helm and ivy—it's not totally unheard > of. Here's a complete list for all of these packages that are available on Melpa. Obviously not all of these pairings fall into the "foo and helm-foo share a repository" category, but you can get an idea of what other reasons exist for splitting a repository into multiple packages, based on the names of the packages/libraries. I have included links to the repositories, so you can quickly jump there, when only looking at the names is not enough. | Primary package (141) | Secondary package | Repository | |-------------------------+---------------------------------+----------------------------------------------------------------| | 750words | ox-750words | https://github.com/zzamboni/750words-client | | ac-php | ac-php-core | https://github.com/xcwen/ac-php | | ac-php | company-php | https://github.com/xcwen/ac-php | | agda2-mode | annotation | https://github.com/agda/agda | | agda2-mode | eri | https://github.com/agda/agda | | ameba | flycheck-ameba | https://github.com/crystal-ameba/ameba.el | | axiom-environment | company-axiom | https://bitbucket.org/pdo/axiom-environment | | axiom-environment | ob-axiom | https://bitbucket.org/pdo/axiom-environment | | biblio | biblio-core | https://github.com/cpitclaudel/biblio.el | | bibtex-completion | helm-bibtex | https://github.com/tmalsburg/helm-bibtex | | bibtex-completion | ivy-bibtex | https://github.com/tmalsburg/helm-bibtex | | boa-ide | boa-mode | https://github.com/boalang/syntax-highlight | | bufler | helm-bufler | https://github.com/alphapapa/bufler.el | | button-lock | wiki-nav | https://github.com/rolandwalker/button-lock | | calfw | calfw-cal | https://github.com/kiwanami/emacs-calfw | | calfw | calfw-howm | https://github.com/kiwanami/emacs-calfw | | calfw | calfw-ical | https://github.com/kiwanami/emacs-calfw | | calfw | calfw-org | https://github.com/kiwanami/emacs-calfw | | cardano-tx | bech32 | https://github.com/Titan-C/cardano.el | | cardano-tx | cardano-wallet | https://github.com/Titan-C/cardano.el | | cardano-tx | cbor | https://github.com/Titan-C/cardano.el | | cardano-tx | ouroboros | https://github.com/Titan-C/cardano.el | | cardano-tx | readable-numbers | https://github.com/Titan-C/cardano.el | | cfn-mode | flycheck-cfn | https://gitlab.com/worr/cfn-mode | | chatgpt-shell | dall-e-shell | https://github.com/xenodium/chatgpt-shell | | chatgpt-shell | ob-chatgpt-shell | https://github.com/xenodium/chatgpt-shell | | chatgpt-shell | ob-dall-e-shell | https://github.com/xenodium/chatgpt-shell | | chatgpt-shell | shell-maker | https://github.com/xenodium/chatgpt-shell | | chronometrist | chronometrist-key-values | https://codeberg.org/contrapunctus/chronometrist | | chronometrist | chronometrist-spark | https://codeberg.org/contrapunctus/chronometrist | | circe | tracking | https://github.com/emacs-circe/circe | | citar | citar-embark | https://github.com/emacs-citar/citar | | clojure-essential-ref | clojure-essential-ref-nov | https://github.com/p3r7/clojure-essential-ref | | clojure-mode | clojure-mode-extra-font-locking | https://github.com/clojure-emacs/clojure-mode | | codesearch | projectile-codesearch | https://github.com/abingham/emacs-codesearch | | colorless-themes | lavenderless-theme | https://git.sr.ht/~lthms/colorless-themes.el | | colorless-themes | nordless-theme | https://git.sr.ht/~lthms/colorless-themes.el | | compile-multi | compile-multi-all-the-icons | https://github.com/mohkale/compile-multi | | compile-multi | compile-multi-embark | https://github.com/mohkale/compile-multi | | compile-multi | consult-compile-multi | https://github.com/mohkale/compile-multi | | copyit | copyit-pandoc | https://github.com/zonuexe/emacs-copyit | | crystal-mode | flycheck-crystal | https://github.com/crystal-lang-tools/emacs-crystal-mode | | ctl-mode | gs-mode | https://github.com/yyr/emacs-grads | | dash | dash-functional | https://github.com/magnars/dash.el | | datetime-format | timecop | https://github.com/emacs-php/emacs-datetime | | ddskk | ccc | https://github.com/skk-dev/ddskk | | ddskk | cdb | https://github.com/skk-dev/ddskk | | deferred | concurrent | https://github.com/kiwanami/emacs-deferred | | dired-hacks | dired-avfs | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-collapse | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-filter | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-hacks-utils | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-list | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-narrow | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-open | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-rainbow | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-ranger | https://github.com/Fuco1/dired-hacks | | dired-hacks | dired-subtree | https://github.com/Fuco1/dired-hacks | | dired-rsync | dired-rsync-transient | https://github.com/stsquad/dired-rsync | | distel-completion-lib | auto-complete-distel | https://github.com/sebastiw/distel-completion | | distel-completion-lib | company-distel | https://github.com/sebastiw/distel-completion | | dix | dix-evil | https://github.com/unhammer/dix | | dogears | helm-dogears | https://github.com/alphapapa/dogears.el | | dylan | dime | https://github.com/dylan-lang/dylan-emacs-support | | eclim | ac-emacs-eclim | https://github.com/emacs-eclim/emacs-eclim | | eclim | company-emacs-eclim | https://github.com/emacs-eclim/emacs-eclim | | el-secretario | el-secretario-elfeed | https://git.sr.ht/~zetagon/el-secretario | | el-secretario | el-secretario-mu4e | https://git.sr.ht/~zetagon/el-secretario | | el-secretario | el-secretario-notmuch | https://git.sr.ht/~zetagon/el-secretario | | el-secretario | el-secretario-org | https://git.sr.ht/~zetagon/el-secretario | | elfeed | elfeed-web | https://github.com/skeeto/elfeed | | elfeed-tube | elfeed-tube-mpv | https://github.com/karthink/elfeed-tube | | emacsql | emacsql-mysql | https://github.com/magit/emacsql | | emacsql | emacsql-pg | https://github.com/magit/emacsql | | emacsql | emacsql-psql | https://github.com/magit/emacsql | | emacsql | emacsql-sqlite | https://github.com/magit/emacsql | | emacsql | emacsql-sqlite-builtin | https://github.com/magit/emacsql | | emacsql | emacsql-sqlite-module | https://github.com/magit/emacsql | | embark | avy-embark-collect | https://github.com/oantolin/embark | | embark | embark-consult | https://github.com/oantolin/embark | | espotify | consult-spotify | https://codeberg.org/jao/espotify | | espotify | ivy-spotify | https://codeberg.org/jao/espotify | | esqlite | esqlite-helm | https://github.com/mhayashi1120/Emacs-esqlite | | evil | evil-test-helpers | https://github.com/emacs-evil/evil | | ewal | ewal-doom-themes | https://github.com/cyruseuros/ewal | | ewal | ewal-evil-cursors | https://github.com/cyruseuros/ewal | | ewal | ewal-spacemacs-themes | https://github.com/cyruseuros/ewal | | flutter | flutter-l10n-flycheck | https://github.com/amake/flutter.el | | flx | flx-ido | https://github.com/lewang/flx | | flycheck-aspell | flymake-aspell | https://github.com/leotaku/flycheck-aspell | | flyspell-correct | flyspell-correct-avy-menu | https://github.com/d12frosted/flyspell-correct | | flyspell-correct | flyspell-correct-helm | https://github.com/d12frosted/flyspell-correct | | flyspell-correct | flyspell-correct-ivy | https://github.com/d12frosted/flyspell-correct | | flyspell-correct | flyspell-correct-popup | https://github.com/d12frosted/flyspell-correct | | friendly-shell | friendly-remote-shell | https://github.com/p3r7/friendly-shell | | friendly-shell | friendly-shell-command | https://github.com/p3r7/friendly-shell | | frimacs | ob-fricas | https://github.com/pdo/frimacs | | fsharp-mode | eglot-fsharp | https://github.com/fsharp/emacs-fsharp-mode | | fuz | helm-fuz | https://github.com/rustify-emacs/fuz.el | | git-emacs | git-blamed | https://github.com/tsgates/git-emacs | | gitlab | helm-gitlab | https://github.com/nlamirault/emacs-gitlab | | gitlab | ivy-gitlab | https://github.com/nlamirault/emacs-gitlab | | go-mode | go-guru | https://github.com/dominikh/go-mode.el | | go-mode | go-rename | https://github.com/dominikh/go-mode.el | | groovy-mode | grails-mode | https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes | | haskell-emacs | haskell-emacs-base | https://github.com/knupfer/haskell-emacs | | haskell-emacs | haskell-emacs-text | https://github.com/knupfer/haskell-emacs | | helm | helm-core | https://github.com/emacs-helm/helm | | historian | ivy-historian | https://github.com/PythonNut/historian.el | | hydra | lv | https://github.com/abo-abo/hydra | | indent-lint | flycheck-indent | https://github.com/conao3/indent-lint.el | | islisp-mode | inferior-islisp | https://gitlab.com/sasanidas/islisp-mode | | ivy | counsel | https://github.com/abo-abo/swiper | | ivy | ivy-avy | https://github.com/abo-abo/swiper | | ivy | ivy-hydra | https://github.com/abo-abo/swiper | | ivy | swiper | https://github.com/abo-abo/swiper | | jade-mode | stylus-mode | https://github.com/brianc/jade-mode | | jade-mode | sws-mode | https://github.com/brianc/jade-mode | | jedi | jedi-core | https://github.com/tkf/emacs-jedi | | jump | inflections | https://github.com/eschulte/jump.el | | kaesar | kaesar-file | https://github.com/mhayashi1120/Emacs-kaesar | | kaesar | kaesar-mode | https://github.com/mhayashi1120/Emacs-kaesar | | kaesar | kaesar-pbkdf2 | https://github.com/mhayashi1120/Emacs-kaesar | | kaleidoscope | kaleidoscope-evil-state-flash | https://git.madhouse-project.org/algernon/kaleidoscope.el | | keg | flycheck-keg | https://github.com/conao3/keg.el | | keg | keg-mode | https://github.com/conao3/keg.el | | kubel | kubel-evil | https://github.com/abrochard/kubel | | kubernetes | kubernetes-evil | https://github.com/kubernetes-el/kubernetes-el | | langtool | langtool-popup | https://github.com/mhayashi1120/Emacs-langtool | | lean-mode | company-lean | https://github.com/leanprover/lean-mode | | lean-mode | helm-lean | https://github.com/leanprover/lean-mode | | load-theme-buffer-local | color-theme-buffer-local | https://github.com/vic/color-theme-buffer-local | | loopy | loopy-dash | https://github.com/okamsn/loopy | | mac-pseudo-daemon | osx-pseudo-daemon | https://github.com/DarwinAwardWinner/mac-pseudo-daemon | | magit | git-commit | https://github.com/magit/magit | | magit | magit-section | https://github.com/magit/magit | | major-mode-hydra | pretty-hydra | https://github.com/jerrypnz/major-mode-hydra.el | | maxima | company-maxima | https://gitlab.com/sasanidas/maxima | | media-progress | media-progress-dired | https://github.com/jumper047/media-progress | | media-progress | media-progress-dirvish | https://github.com/jumper047/media-progress | | merlin | merlin-ac | https://github.com/ocaml/merlin | | merlin | merlin-company | https://github.com/ocaml/merlin | | merlin | merlin-iedit | https://github.com/ocaml/merlin | | metal-archives | metal-archives-shopping-list | https://github.com/seblemaguer/metal-archives.el | | monorepo-cadadr | bibliothek | https://github.com/cadadr/elisp | | monorepo-cadadr | forecast | https://github.com/cadadr/elisp | | monorepo-cadadr | org-variable-pitch | https://github.com/cadadr/elisp | | monorepo-cadadr | paper-theme | https://github.com/cadadr/elisp | | monorepo-zenitani | smart-compile | https://github.com/zenitani/elisp | | musicbrainz | listenbrainz | https://github.com/zzkt/metabrainz | | nameframe | nameframe-perspective | https://github.com/john2x/nameframe | | nameframe | nameframe-project | https://github.com/john2x/nameframe | | nameframe | nameframe-projectile | https://github.com/john2x/nameframe | | nand2tetris | company-nand2tetris | https://github.com/CestDiego/nand2tetris.el | | nand2tetris | nand2tetris-assembler | https://github.com/CestDiego/nand2tetris.el | | native-complete | company-native-complete | https://github.com/CeleritasCelery/emacs-native-shell-complete | | nixos-options | company-nixos-options | https://github.com/travisbhartwell/nix-emacs | | nixos-options | helm-nixos-options | https://github.com/travisbhartwell/nix-emacs | | nixos-options | nix-sandbox | https://github.com/travisbhartwell/nix-emacs | | opener | evil-opener | https://github.com/0robustus1/opener.el | | org-multi-wiki | helm-org-multi-wiki | https://github.com/akirak/org-multi-wiki | | org-pdftools | org-noter-pdftools | https://github.com/fuxialexander/org-pdftools | | org-project-capture | org-category-capture | https://github.com/colonelpanic8/org-project-capture | | org-project-capture | org-projectile | https://github.com/colonelpanic8/org-project-capture | | org-project-capture | org-projectile-helm | https://github.com/colonelpanic8/org-project-capture | | org-ql | helm-org-ql | https://github.com/alphapapa/org-ql | | org-recent-headings | helm-org-recent-headings | https://github.com/alphapapa/org-recent-headings | | org-roam-ql | org-roam-ql-ql | https://github.com/ahmed-shariff/org-roam-ql | | org-starter | org-starter-swiper | https://github.com/akirak/org-starter | | org2blog | metaweblog | https://github.com/org2blog/org2blog | | ox-twiki | ox-tiddly | https://github.com/dfeich/org8-wikiexporters | | package-lint | package-lint-flymake | https://github.com/purcell/package-lint | | pest-mode | flycheck-pest | https://github.com/ksqsf/pest-mode | | pest-mode | flymake-pest | https://github.com/ksqsf/pest-mode | | phpactor | company-phpactor | https://github.com/emacs-php/phpactor.el | | phpstan | flycheck-phpstan | https://github.com/emacs-php/phpstan.el | | phpstan | flymake-phpstan | https://github.com/emacs-php/phpstan.el | | pig-mode | pig-snippets | https://github.com/motus/pig-mode | | pollen-mode | company-pollen | https://github.com/lijunsong/pollen-mode | | prescient | company-prescient | https://github.com/radian-software/prescient.el | | prescient | corfu-prescient | https://github.com/radian-software/prescient.el | | prescient | ivy-prescient | https://github.com/radian-software/prescient.el | | prescient | selectrum-prescient | https://github.com/radian-software/prescient.el | | prescient | vertico-prescient | https://github.com/radian-software/prescient.el | | processing-mode | processing-snippets | https://github.com/ptrv/processing2-emacs | | projection | projection-multi | https://github.com/mohkale/projection | | prosjekt | dirtree-prosjekt | https://github.com/abingham/prosjekt | | prosjekt | helm-prosjekt | https://github.com/abingham/prosjekt | | psalm | flycheck-psalm | https://github.com/emacs-php/psalm.el | | request | request-deferred | https://github.com/tkf/emacs-request | | restclient | restclient-helm | https://github.com/pashky/restclient.el | | restclient | restclient-jq | https://github.com/pashky/restclient.el | | rinari | ruby-compilation | https://github.com/eschulte/rinari | | ripgrep | projectile-ripgrep | https://github.com/nlamirault/ripgrep.el | | rtags | ac-rtags | https://github.com/Andersbakken/rtags | | rtags | company-rtags | https://github.com/Andersbakken/rtags | | rtags | flycheck-rtags | https://github.com/Andersbakken/rtags | | rtags | helm-rtags | https://github.com/Andersbakken/rtags | | rtags | ivy-rtags | https://github.com/Andersbakken/rtags | | rtags | rtags-xref | https://github.com/Andersbakken/rtags | | semaphore | semaphore-promise | https://github.com/webnf/semaphore.el | | sift | projectile-sift | https://github.com/nlamirault/sift.el | | smart-mode-line | smart-mode-line-powerline-theme | https://github.com/Malabarba/smart-mode-line | | solidity-mode | company-solidity | https://github.com/ethereum/emacs-solidity | | solidity-mode | solidity-flycheck | https://github.com/ethereum/emacs-solidity | | sourcekit | company-sourcekit | https://github.com/nathankot/company-sourcekit | | speechd | speechd-el | https://github.com/brailcom/speechd-el | | springboard | ido-springboard | https://github.com/jwiegley/springboard | | stan-mode | company-stan | https://github.com/stan-dev/stan-mode | | stan-mode | eldoc-stan | https://github.com/stan-dev/stan-mode | | stan-mode | flycheck-stan | https://github.com/stan-dev/stan-mode | | stan-mode | stan-snippets | https://github.com/stan-dev/stan-mode | | term-manager | term-project | https://github.com/colonelpanic8/term-manager | | term-manager | term-projectile | https://github.com/colonelpanic8/term-manager | | tern | tern-auto-complete | https://github.com/ternjs/tern | | tmsu | ol-tmsu | https://github.com/vifon/tmsu.el | | transient-extras | transient-extras-a2ps | https://github.com/haji-ali/transient-extras | | transient-extras | transient-extras-lp | https://github.com/haji-ali/transient-extras | | tree-edit | evil-tree-edit | https://github.com/ethan-leba/tree-edit | | tree-sitter | tsc | https://github.com/emacs-tree-sitter/elisp-tree-sitter | | treemacs | treemacs-all-the-icons | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-evil | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-icons-dired | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-magit | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-persp | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-perspective | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-projectile | https://github.com/Alexander-Miller/treemacs | | treemacs | treemacs-tab-bar | https://github.com/Alexander-Miller/treemacs | | vdm-mode | flycheck-vdm | https://github.com/peterwvj/vdm-mode | | vdm-mode | vdm-comint | https://github.com/peterwvj/vdm-mode | | vdm-mode | vdm-snippets | https://github.com/peterwvj/vdm-mode | | w3m | shimbun | https://github.com/emacs-w3m/emacs-w3m | | wgrep | wgrep-ack | https://github.com/mhayashi1120/Emacs-wgrep | | wgrep | wgrep-ag | https://github.com/mhayashi1120/Emacs-wgrep | | wgrep | wgrep-deadgrep | https://github.com/mhayashi1120/Emacs-wgrep | | wgrep | wgrep-helm | https://github.com/mhayashi1120/Emacs-wgrep | | wgrep | wgrep-pt | https://github.com/mhayashi1120/Emacs-wgrep | | wildcharm-theme | wildcharm-light-theme | https://github.com/habamax/wildcharm-theme | | window-jump | spaces | https://github.com/chumpage/chumpy-windows | | window-jump | splitter | https://github.com/chumpage/chumpy-windows | | xwwp | xwwp-follow-link-helm | https://github.com/canatella/xwwp | | xwwp | xwwp-follow-link-ivy | https://github.com/canatella/xwwp | | ycm | company-ycm | https://github.com/neuromage/ycm.el | | ycmd | company-ycmd | https://github.com/abingham/emacs-ycmd | | ycmd | flycheck-ycmd | https://github.com/abingham/emacs-ycmd | | zetteldesk | zetteldesk-info | https://github.com/Vidianos-Giannitsis/zetteldesk.el | | zetteldesk | zetteldesk-kb | https://github.com/Vidianos-Giannitsis/zetteldesk.el | | zetteldesk | zetteldesk-ref | https://github.com/Vidianos-Giannitsis/zetteldesk.el | | zetteldesk | zetteldesk-remark | https://github.com/Vidianos-Giannitsis/zetteldesk.el | | zk | zk-desktop | https://github.com/localauthor/zk | | zk | zk-index | https://github.com/localauthor/zk | ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-19 22:51 ` Jonas Bernoulli @ 2023-09-22 12:38 ` Stefan Kangas 2023-09-22 13:26 ` Philip Kaludercic 0 siblings, 1 reply; 30+ messages in thread From: Stefan Kangas @ 2023-09-22 12:38 UTC (permalink / raw) To: Jonas Bernoulli, Tony Zorman, Philip Kaludercic; +Cc: emacs-devel Jonas Bernoulli <jonas@bernoul.li> writes: > Tony Zorman <tonyzorman@mailbox.org> writes: > >> This is not just for multiple packages in a single repository—at least >> one has to somewhat broaden what "multiple packages" means. Some >> packages include small shims for bigger projects, and inadvertently >> require them as dependencies. The original issue[1] on the >> vc-use-package repo mentions org-ql[2], more specifically its helm >> integration in the form of helm-org-ql.el. Some people might not want to >> pull down helm as a dependency just for one file that they are not going >> to use anyways. >> >> I'm not sure how common of a situation this actually is, but at least >> for the big completion frameworks—helm and ivy—it's not totally unheard >> of. If a user uses foo, and also bar, then foo may support bar optionally, or the other way around. We have ways of dealing with that without an explicit dependency, including e.g. autoloads and `eval-after-load'. The user will simply install both foo and bar, and things should ideally work as expected, including their integration. See for example use-package-ensure-system-package.el. Is there any reason why that can't work? A separate but related issue is that we should really teach package.el to deal with optional dependencies. I personally like Debian's model with "Recommends" and "Suggests" sections. > Here's a complete list for all of these packages that are available on > Melpa. Obviously not all of these pairings fall into the "foo and > helm-foo share a repository" category, but you can get an idea of what > other reasons exist for splitting a repository into multiple packages, > based on the names of the packages/libraries. I have included links to > the repositories, so you can quickly jump there, when only looking at > the names is not enough. Having reviewed this list, my conclusion remains that there is usually no need for splitting up packages like this. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: package-vc support for :files keyword 2023-09-22 12:38 ` Stefan Kangas @ 2023-09-22 13:26 ` Philip Kaludercic 0 siblings, 0 replies; 30+ messages in thread From: Philip Kaludercic @ 2023-09-22 13:26 UTC (permalink / raw) To: Stefan Kangas; +Cc: Jonas Bernoulli, Tony Zorman, emacs-devel Stefan Kangas <stefankangas@gmail.com> writes: > Jonas Bernoulli <jonas@bernoul.li> writes: > >> Tony Zorman <tonyzorman@mailbox.org> writes: >> >>> This is not just for multiple packages in a single repository—at least >>> one has to somewhat broaden what "multiple packages" means. Some >>> packages include small shims for bigger projects, and inadvertently >>> require them as dependencies. The original issue[1] on the >>> vc-use-package repo mentions org-ql[2], more specifically its helm >>> integration in the form of helm-org-ql.el. Some people might not want to >>> pull down helm as a dependency just for one file that they are not going >>> to use anyways. >>> >>> I'm not sure how common of a situation this actually is, but at least >>> for the big completion frameworks—helm and ivy—it's not totally unheard >>> of. > > If a user uses foo, and also bar, then foo may support bar optionally, > or the other way around. We have ways of dealing with that without an > explicit dependency, including e.g. autoloads and `eval-after-load'. > The user will simply install both foo and bar, and things should ideally > work as expected, including their integration. See for example > use-package-ensure-system-package.el. > > Is there any reason why that can't work? > > A separate but related issue is that we should really teach package.el > to deal with optional dependencies. I personally like Debian's model > with "Recommends" and "Suggests" sections. What is the difference between the two? >> Here's a complete list for all of these packages that are available on >> Melpa. Obviously not all of these pairings fall into the "foo and >> helm-foo share a repository" category, but you can get an idea of what >> other reasons exist for splitting a repository into multiple packages, >> based on the names of the packages/libraries. I have included links to >> the repositories, so you can quickly jump there, when only looking at >> the names is not enough. > > Having reviewed this list, my conclusion remains that there is usually > no need for splitting up packages like this. I might be mistaken, but I believe that MELPA and specifically package-lint advise against using {with,}eval-after-load, encouraging splitting up packages like these. ^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2023-10-04 6:44 UTC | newest] Thread overview: 30+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-10 10:53 package-vc support for :files keyword Daniel Fleischer 2023-06-10 13:23 ` Philip Kaludercic 2023-06-10 14:20 ` Daniel Fleischer 2023-06-11 8:55 ` Philip Kaludercic 2023-06-11 9:30 ` Daniel Fleischer 2023-06-11 10:24 ` Philip Kaludercic 2023-09-18 7:25 ` Tony Zorman 2023-09-18 9:10 ` Philip Kaludercic 2023-09-18 14:43 ` Tony Zorman 2023-09-18 15:52 ` Philip Kaludercic 2023-09-18 18:54 ` Adam Porter 2023-09-19 8:37 ` Philip Kaludercic 2023-09-19 12:23 ` Adam Porter 2023-09-19 13:56 ` Philip Kaludercic 2023-09-19 14:14 ` Adam Porter 2023-09-18 19:40 ` Tony Zorman 2023-09-19 8:47 ` Philip Kaludercic 2023-09-19 13:48 ` Adam Porter 2023-09-19 14:00 ` Philip Kaludercic 2023-09-19 14:17 ` Tony Zorman 2023-09-20 7:32 ` Philip Kaludercic 2023-09-21 13:28 ` Tony Zorman 2023-09-21 16:32 ` Philip Kaludercic [not found] ` <87jzsgm82h.fsf@hyperspace> 2023-09-24 14:31 ` Philip Kaludercic 2023-09-25 13:32 ` Tony Zorman 2023-09-27 14:03 ` Philip Kaludercic 2023-10-04 6:44 ` Tony Zorman 2023-09-19 22:51 ` Jonas Bernoulli 2023-09-22 12:38 ` Stefan Kangas 2023-09-22 13:26 ` Philip Kaludercic
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.