* A new wip-emacs branch @ 2021-04-01 8:00 Leo Prikler 2021-04-01 12:21 ` pinoaffe ` (2 more replies) 0 siblings, 3 replies; 15+ messages in thread From: Leo Prikler @ 2021-04-01 8:00 UTC (permalink / raw) To: guix-devel Hello Guix, as at least some of you are hopefully aware, the way Emacs interacts with Guix packaging is unsatisfactory in a few key ways. In particular, each major version upgrade completely breaks Emacs both running and not yet running until environment variables are updated [1]. Also, there are instances of packages breaking each other by installing to common subdirectories [2]. I have opened up a new wip-emacs branch to address these issues. It consists of the patches I wrote in the past few days, that are still awaiting review. (As it is now April 1st, people who only consume the mailing lists by the archives will soon have forgotten about them otherwise). While alternative patches exist, particular the ones written up by Maxim, I believe mine to be the "correct" ones, as they only cause rebuilds to Emacs and its dependants, thereby making them applicable to staging rather than core-updates. (In the past we also had Emacs patches pushed directly to master, since Emacs packages are fairly cheap to build; I want to avoid this here until we can be certain up to some level of reasonable doubt, that they do not cause any issues in the affected packages.) I have so far tested the patches by running my own Emacs manifest in a pure environment, which has not yet led to me declaring .emacs bankruptcy. I would strongly encourage other users of Emacs, particularly those, that have large numbers of Emacs packages in their profiles, to try out the wip-emacs branch and report to me any issues with it/directly push patches to wip-emacs if they're trivial. I don't plan to keep this branch alive for too lang. In one or two weeks time, depending on activity, I will submit its frozen version to review once more. In this frozen version, I will also sign off any commits from others, that I've already reviewed myself. Regards, Leo [1] http://issues.guix.gnu.org/47458 [2] http://issues.guix.gnu.org/45316 ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-01 8:00 A new wip-emacs branch Leo Prikler @ 2021-04-01 12:21 ` pinoaffe 2021-04-03 11:37 ` Xinglu Chen 2021-04-06 9:06 ` Leo Prikler 2 siblings, 0 replies; 15+ messages in thread From: pinoaffe @ 2021-04-01 12:21 UTC (permalink / raw) To: Leo Prikler; +Cc: guix-devel Hi Leo, great that you're improving the emacs-on-guix experience! I'm not sure whether this is related, but a while ago, after an update of emacs, I had an issue where emacs would not start in graphical mode (it segfaulted) until I ran `fc-cache -rv`. Kind regards, pinoaffe ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-01 8:00 A new wip-emacs branch Leo Prikler 2021-04-01 12:21 ` pinoaffe @ 2021-04-03 11:37 ` Xinglu Chen 2021-04-03 11:57 ` Xinglu Chen 2021-04-06 9:06 ` Leo Prikler 2 siblings, 1 reply; 15+ messages in thread From: Xinglu Chen @ 2021-04-03 11:37 UTC (permalink / raw) To: Leo Prikler, guix-devel On Thu, Apr 01 2021, Leo Prikler wrote: Hi, I tried the 'wip-emacs' branch (commit b18d605fcb51bcce56a1114f82645658db9f5b14), and I noticed that 'emacs-emacsql' was failing to install. The 'make-autoloads' phase fails with: --8<---------------cut here---------------start------------->8--- starting phase `make-autoloads' Opening directory: No such file or directory, /gnu/store/1bylpqrx1da96z3zc7s81sx78c89xccs-emacs-emacsql-3.0.0/share/emacs/site-lisp/emacsql-3.0.0 command "/gnu/store/70n63hq48ycj7sch0b6wmr6928hw10ig-emacs-minimal-27.2/bin/emacs" "--quick" "--batch" "--eval=(eval '(let ((backup-inhibited t) (generated-autoload-file \"/gnu/store/1bylpqrx1da96z3zc7s81sx78c89xccs-emacs-emacsql-3.0.0/share/emacs/site-lisp/emacsql-3.0.0/emacsql-autoloads.el\")) (update-directory-autoloads \"/gnu/store/1bylpqrx1da96z3zc7s81sx78c89xccs-emacs-emacsql-3.0.0/share/emacs/site-lisp/emacsql-3.0.0\")) nil)" failed with status 255 builder for `/gnu/store/wfrm2qwyl0kj3ip0rfplbgx6f8nc39vs-emacs-emacsql-3.0.0.drv' failed with exit code 1 build of /gnu/store/wfrm2qwyl0kj3ip0rfplbgx6f8nc39vs-emacs-emacsql-3.0.0.drv failed View build log at '/var/log/guix/drvs/wf/rm2qwyl0kj3ip0rfplbgx6f8nc39vs-emacs-emacsql-3.0.0.drv.bz2'. guix build: error: build of `/gnu/store/wfrm2qwyl0kj3ip0rfplbgx6f8nc39vs-emacs-emacsql-3.0.0.drv' failed --8<---------------cut here---------------end--------------->8--- I can only find '/gnu/store/1bylpqrx1da96z3zc7s81sx78c89xccs-emacs-emacsql-3.0.0/share/emacs/site-lisp/emacs', there is no 'emacsql-3.0.0' directory. Any ideas? ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-03 11:37 ` Xinglu Chen @ 2021-04-03 11:57 ` Xinglu Chen 2021-04-03 15:30 ` Leo Prikler 0 siblings, 1 reply; 15+ messages in thread From: Xinglu Chen @ 2021-04-03 11:57 UTC (permalink / raw) To: Leo Prikler, guix-devel [-- Attachment #1: Type: text/plain, Size: 280 bytes --] On Sat, Apr 03 2021, Xinglu Chen wrote: > I tried the 'wip-emacs' branch (commit > b18d605fcb51bcce56a1114f82645658db9f5b14), and I noticed that > 'emacs-emacsql' was failing to install. The 'make-autoloads' phase > fails with: I was able to fix this with the attached patch. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: wip-emacs-fix-emacsql --] [-- Type: text/x-patch, Size: 1360 bytes --] From 59e3acc0bebe97e33c5ea557f40eddf6467cfff7 Mon Sep 17 00:00:00 2001 Message-Id: <59e3acc0bebe97e33c5ea557f40eddf6467cfff7.1617450934.git.public@yoctocell.xyz> From: Xinglu Chen <public@yoctocell.xyz> Date: Sat, 3 Apr 2021 13:52:05 +0200 Subject: [PATCH wip-emacs] gnu: emacs-emacsql: Adjust to changes in emacs-build-system. * gnu/packages/emacs-xyz.scm (emacs-emacsql)[#:phases]: Update install directory for bytecompiled Emacs Lisp files. --- gnu/packages/emacs-xyz.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 0bd7fe8f27..cd0138663f 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -15529,7 +15529,9 @@ object has been freed.") (install-file "sqlite/emacsql-sqlite" (string-append out "/bin")) (for-each (cut install-file <> - (string-append out "/share/emacs/site-lisp")) + (string-append out + "/share/emacs/site-lisp/emacsql-" + ,(package-version this-package))) (find-files "." "\\.elc*$"))) #t))))) (inputs base-commit: b18d605fcb51bcce56a1114f82645658db9f5b14 -- 2.31.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-03 11:57 ` Xinglu Chen @ 2021-04-03 15:30 ` Leo Prikler 2021-04-04 9:32 ` Xinglu Chen 0 siblings, 1 reply; 15+ messages in thread From: Leo Prikler @ 2021-04-03 15:30 UTC (permalink / raw) To: Xinglu Chen, guix-devel Am Samstag, den 03.04.2021, 13:57 +0200 schrieb Xinglu Chen: > On Sat, Apr 03 2021, Xinglu Chen wrote: > > > I tried the 'wip-emacs' branch (commit > > b18d605fcb51bcce56a1114f82645658db9f5b14), and I noticed that > > 'emacs-emacsql' was failing to install. The 'make-autoloads' phase > > fails with: > > I was able to fix this with the attached patch. Your patch LGTM in a vaccum (except that package-version this-package could be abbreviated to just "version" IIUC), but I went for a different fix, since emacsql tried to avoid redundancies by putting in other redundancies. I ran a small test with emacs-emacsql-sqlite on 2be3daa19d2fd47933c622995d2f2dde714075e6, but please try it for yourself and check whether everything works as you expect it to. Regards, Leo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-03 15:30 ` Leo Prikler @ 2021-04-04 9:32 ` Xinglu Chen 2021-04-04 10:53 ` Leo Prikler 0 siblings, 1 reply; 15+ messages in thread From: Xinglu Chen @ 2021-04-04 9:32 UTC (permalink / raw) To: Leo Prikler, guix-devel [-- Attachment #1: Type: text/plain, Size: 1975 bytes --] On Sat, Apr 03 2021, Leo Prikler wrote: > Your patch LGTM in a vaccum (except that package-version this-package > could be abbreviated to just "version" IIUC), but I went for a > different fix, since emacsql tried to avoid redundancies by putting in > other redundancies. > > I ran a small test with emacs-emacsql-sqlite on > 2be3daa19d2fd47933c622995d2f2dde714075e6, but please try it for > yourself and check whether everything works as you expect it to. Thanks for fixing the problem, but now I noticed that 'emacs-pdf-tools' doesn't build. --8<---------------cut here---------------start------------->8--- starting phase `emacs-add-source-to-load-path' Backtrace: 7 (primitive-load "/gnu/store/g7vcnpqrs3p76qm9xrnm1sz65ss…") In ice-9/eval.scm: 191:35 6 (_ _) In guix/build/gnu-build-system.scm: 838:2 5 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #) In ice-9/boot-9.scm: 1736:10 4 (with-exception-handler _ _ #:unwind? _ # _) In srfi/srfi-1.scm: 857:16 3 (every1 #<procedure 7ffff2b447c0 at guix/build/gnu-bui…> …) In guix/build/gnu-build-system.scm: 847:30 2 (_ _) 847:30 1 (_ _) In ice-9/boot-9.scm: 1669:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1669:16: In procedure raise-exception: Wrong type to apply: #f note: keeping build directory `/tmp/guix-build-emacs-pdf-tools-0.90-1.c510442.drv-0' builder for `/gnu/store/d992q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf-tools-0.90-1.c510442.drv' failed with exit code 1 build of /gnu/store/d992q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf-tools-0.90-1.c510442.drv failed View build log at '/var/log/guix/drvs/d9/92q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf-tools-0.90-1.c510442.drv.bz2'. guix build: error: build of `/gnu/store/d992q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf-tools-0.90-1.c510442.drv' failed --8<---------------cut here---------------end--------------->8--- The attached patch fixed the problem for me. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: wip-emacs-fix-emacs-pdf-tools --] [-- Type: text/x-patch, Size: 1361 bytes --] From b49dd5be93bb5ba9630dca8d5bb142f258cb0781 Mon Sep 17 00:00:00 2001 Message-Id: <b49dd5be93bb5ba9630dca8d5bb142f258cb0781.1617528618.git.public@yoctocell.xyz> From: Xinglu Chen <public@yoctocell.xyz> Date: Sun, 4 Apr 2021 11:28:04 +0200 Subject: [PATCH wip-emacs] gnu: emacs-pdf-tools: Adjust to changes in emacs-build-system. * gnu/packages/emacs-xyz.scm (emacs-pdf-tools)[#:phases]: Rename 'add-source-to-load-path' to 'expand-load-path'. --- gnu/packages/emacs-xyz.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 0382cfdd17..9dbfce6f37 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2920,7 +2920,7 @@ during idle time, while Emacs is doing nothing else.") (emacs-substitute-variables "pdf-tools.el" ("pdf-tools-handle-upgrades" '())))) (add-after 'emacs-patch-variables 'emacs-add-source-to-load-path - (assoc-ref emacs:%standard-phases 'add-source-to-load-path)) + (assoc-ref emacs:%standard-phases 'expand-load-path)) (add-after 'emacs-add-source-to-load-path 'emacs-install (assoc-ref emacs:%standard-phases 'install)) (add-after 'emacs-install 'emacs-build base-commit: 2be3daa19d2fd47933c622995d2f2dde714075e6 -- 2.31.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-04 9:32 ` Xinglu Chen @ 2021-04-04 10:53 ` Leo Prikler 0 siblings, 0 replies; 15+ messages in thread From: Leo Prikler @ 2021-04-04 10:53 UTC (permalink / raw) To: Xinglu Chen, guix-devel Am Sonntag, den 04.04.2021, 11:32 +0200 schrieb Xinglu Chen: > On Sat, Apr 03 2021, Leo Prikler wrote: > > > Your patch LGTM in a vaccum (except that package-version this- > > package > > could be abbreviated to just "version" IIUC), but I went for a > > different fix, since emacsql tried to avoid redundancies by putting > > in > > other redundancies. > > > > I ran a small test with emacs-emacsql-sqlite on > > 2be3daa19d2fd47933c622995d2f2dde714075e6, but please try it for > > yourself and check whether everything works as you expect it to. > > Thanks for fixing the problem, but now I noticed that 'emacs-pdf- > tools' > doesn't build. > > --8<---------------cut here---------------start------------->8--- > starting phase `emacs-add-source-to-load-path' > Backtrace: > 7 (primitive-load > "/gnu/store/g7vcnpqrs3p76qm9xrnm1sz65ss…") > In ice-9/eval.scm: > 191:35 6 (_ _) > In guix/build/gnu-build-system.scm: > 838:2 5 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . > #) > In ice-9/boot-9.scm: > 1736:10 4 (with-exception-handler _ _ #:unwind? _ # _) > In srfi/srfi-1.scm: > 857:16 3 (every1 #<procedure 7ffff2b447c0 at guix/build/gnu-bui…> > …) > In guix/build/gnu-build-system.scm: > 847:30 2 (_ _) > 847:30 1 (_ _) > In ice-9/boot-9.scm: > 1669:16 0 (raise-exception _ #:continuable? _) > > ice-9/boot-9.scm:1669:16: In procedure raise-exception: > Wrong type to apply: #f > note: keeping build directory `/tmp/guix-build-emacs-pdf-tools-0.90- > 1.c510442.drv-0' > builder for `/gnu/store/d992q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf- > tools-0.90-1.c510442.drv' failed with exit code 1 > build of /gnu/store/d992q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf-tools- > 0.90-1.c510442.drv failed > View build log at > '/var/log/guix/drvs/d9/92q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf- > tools-0.90-1.c510442.drv.bz2'. > guix build: error: build of > `/gnu/store/d992q7cfb1wlfffg15g7bgsa32qjanrm-emacs-pdf-tools-0.90- > 1.c510442.drv' failed > --8<---------------cut here---------------end--------------->8--- > > The attached patch fixed the problem for me. > I pushed your patch with some slight cosmetic changes. Thanks! ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-01 8:00 A new wip-emacs branch Leo Prikler 2021-04-01 12:21 ` pinoaffe 2021-04-03 11:37 ` Xinglu Chen @ 2021-04-06 9:06 ` Leo Prikler 2021-04-06 18:21 ` Xinglu Chen ` (2 more replies) 2 siblings, 3 replies; 15+ messages in thread From: Leo Prikler @ 2021-04-06 9:06 UTC (permalink / raw) To: guix-devel [-- Attachment #1: Type: text/plain, Size: 1334 bytes --] Hello Guix, this is a small progress report on wip-emacs. Emacs now gets its core lisp path from the wrapper rather than the search path and there's a new profile hook adding all top-level subdirectories to a subdirs.el, that gets loaded at startup. Emacs' build system has been rewritten to use ELPA-style subdirectories. Packages, that cause build failures in themselves or others by not adhering to this practice, have been adjusted. I have attached a manifest, that builds all packages from emacs-xyz known not to fail on master. If some Emacs-related package is not covered by this manifest, but still breaks, please do report it while those patches still live on wip-emacs, so that they can be fixed in time. There are still some packages, that use the old convention, e.g. emacs- geiser. While those can be fixed as well, it is a low priority. In terms of UX it would also be nice to tackle the issue of coreutils and gzip being required to have core functionality. I'm not sure, whether patching Elisp files is the correct solution here, since Emacs could (via tramp) connect to other machines, where those store paths don't exist and it's not clear (to me) on which machine those commands are executed. Extending PATH in the same wrapper as EMACSLOADPATH seems to be a fairly cheap option, however. Regards, Leo [-- Attachment #2: emacs-all.scm --] [-- Type: text/x-scheme, Size: 513 bytes --] (use-modules (gnu)) (use-package-modules emacs) (packages->manifest (cons emacs (filter identity (hash-map->list (lambda (k v) (and (not (member k ;; blacklist packages, that don't build on master '(emacs-el-patch emacs-org-generate emacs-md4rd emacs-picpocket))) (variable-ref v))) (module-obarray (resolve-interface '(gnu packages emacs-xyz))))))) ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-06 9:06 ` Leo Prikler @ 2021-04-06 18:21 ` Xinglu Chen 2021-04-06 21:32 ` Leo Prikler 2021-04-07 17:54 ` Leo Prikler 2021-04-08 3:17 ` Carlo Zancanaro 2 siblings, 1 reply; 15+ messages in thread From: Xinglu Chen @ 2021-04-06 18:21 UTC (permalink / raw) To: Leo Prikler, guix-devel On Tue, Apr 06 2021, Leo Prikler wrote: > There are still some packages, that use the old convention, e.g. emacs- > geiser. FYI Geiser has recently been slit up into multiple packages with one core Geiser package[1]. Should the Geiser package be updated in wip-emacs or directly on master? [1]: https://github.com/melpa/melpa/pull/7514 ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-06 18:21 ` Xinglu Chen @ 2021-04-06 21:32 ` Leo Prikler 2021-04-07 10:07 ` Xinglu Chen 0 siblings, 1 reply; 15+ messages in thread From: Leo Prikler @ 2021-04-06 21:32 UTC (permalink / raw) To: Xinglu Chen, guix-devel Am Dienstag, den 06.04.2021, 20:21 +0200 schrieb Xinglu Chen: > On Tue, Apr 06 2021, Leo Prikler wrote: > > > There are still some packages, that use the old convention, e.g. > > emacs- > > geiser. > > FYI Geiser has recently been slit up into multiple packages with one > core Geiser package[1]. Should the Geiser package be updated in > wip-emacs or directly on master? > > [1]: https://github.com/melpa/melpa/pull/7514 That depends. If geiser now uses an unaltered emacs-build-system it can go either way, but if it still has some special needs to take care of, updating it on wip-emacs will mean less work overall. Regards, Leo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-06 21:32 ` Leo Prikler @ 2021-04-07 10:07 ` Xinglu Chen 0 siblings, 0 replies; 15+ messages in thread From: Xinglu Chen @ 2021-04-07 10:07 UTC (permalink / raw) To: Leo Prikler, guix-devel On Tue, Apr 06 2021, Leo Prikler wrote: >> FYI Geiser has recently been slit up into multiple packages with one >> core Geiser package[1]. Should the Geiser package be updated in >> wip-emacs or directly on master? >> >> [1]: https://github.com/melpa/melpa/pull/7514 > That depends. If geiser now uses an unaltered emacs-build-system it > can go either way, but if it still has some special needs to take care > of, updating it on wip-emacs will mean less work overall. Looks like someone already sent a patch to update it[1]. :) [1]: https://yhetil.org/guix-patches/BYAPR05MB4023349403C379CA3DB8AB7DC5769@BYAPR05MB4023.namprd05.prod.outlook.com ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-06 9:06 ` Leo Prikler 2021-04-06 18:21 ` Xinglu Chen @ 2021-04-07 17:54 ` Leo Prikler 2021-04-08 3:17 ` Carlo Zancanaro 2 siblings, 0 replies; 15+ messages in thread From: Leo Prikler @ 2021-04-07 17:54 UTC (permalink / raw) To: guix-devel Am Dienstag, den 06.04.2021, 11:06 +0200 schrieb Leo Prikler: > Hello Guix, > > this is a small progress report on wip-emacs. Emacs now gets its > core > lisp path from the wrapper rather than the search path and there's a > new profile hook adding all top-level subdirectories to a subdirs.el, > that gets loaded at startup. Emacs' build system has been rewritten > to > use ELPA-style subdirectories. Packages, that cause build failures > in > themselves or others by not adhering to this practice, have been > adjusted. Small progress report part II, here's the packages, that still contain plain files: /gnu/store/0nrhnq7csbbgh79scc68yy3y1l621hy0-emacs-dvc-0.0.0-1.591/ /gnu/store/cyga8wwz77280xcwk6nma6gsh49k954h-emacs-subdirs/ /gnu/store/gwkma1hhyp7cmfdlp6g00zzg18sk2ql2-emacs-guix-0.5.2-4.8ce6d21/ /gnu/store/gyjz18k9gh0bsv3j122abbcbi2qzgz4z-emacs-shroud-1.105/ /gnu/store/kz1lhfyzb38n0q1jqw3fvnjyylk67z57-emacs-w3m-2018-11-11/ /gnu/store/m6ws0xhs0svb7zcbk733n1ddlcpqd5ip-emacs-rime-1.0.4/ /gnu/store/mw7lghj1vsgcd6gp0vqx8sczgbmynym6-emacs-ddskk-17.1/ /gnu/store/n2zi43s18y4i0z002yj88n2ipr1ms7dv-emacs-julia-snail-1.0.0rc4/ /gnu/store/p71rm7qvscxs8kf68n4vacaf23xwz14q-emacs-haskell-mode-17.2/ /gnu/store/qi7kmb9hh9m11m5vrjasf26ydpjcbb5c-emacs-geiser-gauche-0.0.2/ /gnu/store/xdlhj4r2bw76sdkqbnsg5p0kvczfmjia-emacs-27.2/ /gnu/store/z88282qbjx5nnj9syddid5v3dw3qsvva-emacs-wget-0.5.0/ /gnu/store/zqapdihhi09cdls7zwv1bcannh7xqrjs-mu-1.4.15/ Obviously emacs-27.2 and emacs-subdirs deserve special treatment here, so they don't count. In total, that's 11 packages, which don't (yet) follow the ELPA subdirectory style. Regards, Leo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-06 9:06 ` Leo Prikler 2021-04-06 18:21 ` Xinglu Chen 2021-04-07 17:54 ` Leo Prikler @ 2021-04-08 3:17 ` Carlo Zancanaro 2021-04-08 7:49 ` Leo Prikler 2 siblings, 1 reply; 15+ messages in thread From: Carlo Zancanaro @ 2021-04-08 3:17 UTC (permalink / raw) To: Leo Prikler; +Cc: guix-devel Hi Leo! Thanks so much for working to improve Emacs packaging in Guix! I have a question and a comment about your approach on the wip-emacs branch. On Tue, Apr 06 2021, Leo Prikler wrote: > Emacs now gets its core lisp path from the wrapper rather than > the search path and there's a new profile hook adding all > top-level subdirectories to a subdirs.el, that gets loaded at > startup. This sounds great in terms of Emacs starting in an already established profile, but one key use case for me is to be able to install new packages without restarting Emacs. Usually I can do this in eshell by running $ guix install emacs-magit # shell command ... $ guix-emacs-autoload-packages # emacs command ... I just tried this in a fresh profile with a Guix built from wip-emacs, but it didn't seem to work. It's possible that I've done something wrong (I'm doing it with time-machine, which adds its own complexities), but are you expecting this to work? It looks like guix-emacs wasn't loaded, and it wasn't on the load path, but I haven't had a chance to investigate further than that. > Extending PATH in the same wrapper as EMACSLOADPATH seems to be > a fairly cheap option, however. I'm not supportive of this, because extending PATH would also change the binaries that are available through Emacs' shells, which I use a lot. This would mean that either (a) the Emacs packages can shadow what I've explicitly installed in my profile, potentially leading to me running unexpected versions of programs, or (b) installing something else in my profile might break something in Emacs because the version has changed. This isn't likely to be a major problem for coreutils and gzip, assuming they're stable enough, but it is a problem in general. In my view either patching the Emacs libraries (to avoid the conflict) or propagating inputs (to expose the potential conflict while building the profile) are better options. Thanks again! Carlo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-08 3:17 ` Carlo Zancanaro @ 2021-04-08 7:49 ` Leo Prikler 2021-04-08 14:05 ` Carlo Zancanaro 0 siblings, 1 reply; 15+ messages in thread From: Leo Prikler @ 2021-04-08 7:49 UTC (permalink / raw) To: Carlo Zancanaro; +Cc: guix-devel Hi Carlo, Am Donnerstag, den 08.04.2021, 13:17 +1000 schrieb Carlo Zancanaro: > Hi Leo! > > Thanks so much for working to improve Emacs packaging in Guix! I > have a question and a comment about your approach on the wip-emacs > branch. > > On Tue, Apr 06 2021, Leo Prikler wrote: > > Emacs now gets its core lisp path from the wrapper rather than > > the search path and there's a new profile hook adding all > > top-level subdirectories to a subdirs.el, that gets loaded at > > startup. > > This sounds great in terms of Emacs starting in an already > established profile, but one key use case for me is to be able to > install new packages without restarting Emacs. Usually I can do > this in eshell by running > > $ guix install emacs-magit # shell command > ... > $ guix-emacs-autoload-packages # emacs command > ... > > I just tried this in a fresh profile with a Guix built from > wip-emacs, but it didn't seem to work. It's possible that I've > done something wrong (I'm doing it with time-machine, which adds > its own complexities), but are you expecting this to work? It > looks like guix-emacs wasn't loaded, and it wasn't on the load > path, but I haven't had a chance to investigate further than that. guix-emacs should still be loaded by site-start.el, which also initially loads your autoloads. What changes for "Guix in Emacs modifying Emacs", is that you'll probably have to reload the subdirs.el file before autoloading the packages. The following snippet in (normal-top-level) seems to be responsible for setting up the load-path during init: ;; Look in each dir in load-path for a subdirs.el file. If we ;; find one, load it, which will add the appropriate subdirs of ;; that dir into load-path. This needs to be done before setting ;; the locale environment, because the latter might need to load ;; some support files. ;; Look for a leim-list.el file too. Loading it will register ;; available input methods. (let ((tail load-path) (lispdir (expand-file-name "../lisp" data-directory)) dir) (while tail (setq dir (car tail)) (let ((default-directory dir)) (load (expand-file-name "subdirs.el") t t t)) ;; Do not scan standard directories that won't contain a leim- list.el. ;; https://lists.gnu.org/r/emacs-devel/2009-10/msg00502.html ;; (Except the preloaded one in lisp/leim.) (or (string-prefix-p lispdir dir) (let ((default-directory dir)) (load (expand-file-name "leim-list.el") t t t))) ;; We don't use a dolist loop and we put this "setq-cdr" command at ;; the end, because the subdirs.el files may add elements to the end ;; of load-path and we want to take it into account. (setq tail (cdr tail)))) Perhaps we should extract it as a whole/some bits of it into a guix- emacs procedure, that is normally not called? > > Extending PATH in the same wrapper as EMACSLOADPATH seems to be > > a fairly cheap option, however. > > I'm not supportive of this, because extending PATH would also > change the binaries that are available through Emacs' shells, > which I use a lot. This would mean that either (a) the Emacs > packages can shadow what I've explicitly installed in my profile, > potentially leading to me running unexpected versions of programs, > or (b) installing something else in my profile might break > something in Emacs because the version has changed. This isn't > likely to be a major problem for coreutils and gzip, assuming > they're stable enough, but it is a problem in general. In my view > either patching the Emacs libraries (to avoid the conflict) or > propagating inputs (to expose the potential conflict while > building the profile) are better options. I don't think I agree with you here. For one, I'd suffix PATH like EMACSLOADPATH, so (a) will not happen. Recall, that in (b) you're describing the status quo. Yes, you will be able to bork Emacs by installing a malicious version of coreutils into your PATH, but that'd also happen if you did so currently. The only difference, is that you currently also bork it, if you don't have any coreutils at all, which is typically only the case in pure environments or containers. As for Emacs libraries written in Elisp, I'm kinda split. I'm not even sure if they should have a fallback when your environment is borked tbh. Consider Geiser for example. To correctly set up Geiser+Guile, you would not only Guile to be installed, but also GUILE_LOAD_PATH to be set to a meaningful value. This can be done with Guix environments by adding Guile, but doing so without Guile and its search paths from elisp is somewhat difficult. I also enjoy being able to hack with Geiser in Guile 3, even though the package builds against Guile 2.2, without needing to install a different one. Obviously, there are exceptions to this, that we can argue on a case by case basis, but to summarize, I don't think hardcoding paths throughout Emacs is a good idea. Regards, Leo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: A new wip-emacs branch 2021-04-08 7:49 ` Leo Prikler @ 2021-04-08 14:05 ` Carlo Zancanaro 0 siblings, 0 replies; 15+ messages in thread From: Carlo Zancanaro @ 2021-04-08 14:05 UTC (permalink / raw) To: Leo Prikler; +Cc: guix-devel Hi Leo! On Thu, Apr 08 2021, Leo Prikler wrote: > guix-emacs should still be loaded by site-start.el, which also > initially loads your autoloads. Now that I've had more of a chance to play with it, you're right about this. I'm not sure what I did earlier, but it loaded properly just now. > What changes for "Guix in Emacs modifying Emacs", is that you'll > probably have to reload the subdirs.el file before autoloading > the packages. Ah, okay. I just played around with this, and it seems like the sequence I now need is: $ guix install emacs-magit # shell command ... $ load subdirs # emacs command t $ guix-emacs-autoload-packages # emacs command (... list of autoload files ...) It also sees like I'm able to require the packages in Emacs after the "load subdirs" step, as well, so in practice it's still only two commands to make new Emacs packages loadable, it's just that the second command has changed. 👍 > Obviously, there are exceptions to this, that we can argue on a > case by case basis, but to summarize, I don't think hardcoding > paths throughout Emacs is a good idea. I think there are two different cases which are more clear-cut, with a significant middle ground that's fuzzy, and using PATH just ignores this distinction entirely. There are program uses that are an implementation detail (e.g. the fact that dired uses ls), and there are programs that a user is directly interacting with (e.g. anything that I run in a shell). My thinking is that ideally the former should use hard-coded paths, and the latter should come from PATH. The tricky ones are things like geiser, or magit, where the Emacs package is a wrapper around a program's functionality. These feel like it's reasonable to go either way, but they are also the types of packages that provide ways to easily change which program they run (i.e. geiser-guile-binary and magit-git-executable for these specific examples), so they could default to a hard-coded store path because a user can easily change them if they want to use a different version. Although, as you mentioned in a previous email, TRAMP may make even those "clear-cut" cases a bit trickier. I'll admit I haven't considered TRAMP much in my thinking. As a more general comment, I feel like Guix's wrappers are often treated as "cheaper" than they are. It makes me sad that using awesome as a window manager means that I have to have LD_LIBRARY_PATH= GI_TYPELIB_PATH= before calls to external programs to stop things from crashing (and working out that I needed that was a pain in itself). I'll admit that this case with Emacs and PATH seems less dangerous than the awesome wrapper, but I'm wary of the unexpected problems that it might cause. Carlo ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2021-04-08 14:08 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-04-01 8:00 A new wip-emacs branch Leo Prikler 2021-04-01 12:21 ` pinoaffe 2021-04-03 11:37 ` Xinglu Chen 2021-04-03 11:57 ` Xinglu Chen 2021-04-03 15:30 ` Leo Prikler 2021-04-04 9:32 ` Xinglu Chen 2021-04-04 10:53 ` Leo Prikler 2021-04-06 9:06 ` Leo Prikler 2021-04-06 18:21 ` Xinglu Chen 2021-04-06 21:32 ` Leo Prikler 2021-04-07 10:07 ` Xinglu Chen 2021-04-07 17:54 ` Leo Prikler 2021-04-08 3:17 ` Carlo Zancanaro 2021-04-08 7:49 ` Leo Prikler 2021-04-08 14:05 ` Carlo Zancanaro
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).