progfolio / elpaca

An elisp package manager
GNU General Public License v3.0
636 stars 31 forks source link

[Support]: Non-gnu Elpa / Savannah Issue & Workaround #369

Open jsperger opened 2 days ago

jsperger commented 2 days ago

Confirmation

Elpaca Version

Elpaca fcf7d4e grafted, HEAD -> master, origin/master, origin/HEAD installer: 0.7 emacs-version: GNU Emacs 30.0.50 (build 1, x86_64-suse-linux-gnu, GTK+ Version 3.24.43, cairo version 1.18.2) git --version: git version 2.46.1

Operating System

OpenSUSE Tumbleweed

Description

Non-gnu elpa packages could not be cloned and would timeout, failing with the error git.sv.gnu.org[1: 2001:470:142:6::78]: errno=Network is unreachable (see also this issue discussion on Doom's repository ). This is a Savannah issue, not an elpaca issue, but I wanted to ask for advice on the best way to protect against this type of issue. I'm using the following workaround on a per-package basis, but I'm sure there's a better solution.

(elpaca (queue
         :host github
         :repo "emacsmirror/queue"
         :inherit nil))

Additional log details

log:
  [2024-10-15 01:20:16] Package queued
  [2024-10-15 01:20:16] Continued by: elpaca--process
  [2024-10-15 01:20:16] Continued by: elpaca--configure-remotes
  [2024-10-15 01:20:16] Checking out externals/csv-mode
  [2024-10-15 01:20:16] $git -c advice.detachedHead=false switch -C externals/csv-mode origin/externals/csv-mode
  [2024-10-15 01:20:16]   fatal: invalid reference: origin/externals/csv-mode
  [2024-10-15 01:20:16] Subprocess error (see previous log entries)

Failing Test

Test Case [How to run this test?](https://github.com/progfolio/elpaca/wiki/Troubleshooting#the-elpaca-test-macro) ```emacs-lisp (elpaca-test :init (elpaca queue) (elpaca-wait) (princ (elpaca-log "#unique"))) ```
Host Env
elpacafcf7d4e grafted, HEAD -> master, origin/master, origin/HEAD
installer0.7
emacsGNU Emacs 30.0.50 (build 1, x86_64-suse-linux-gnu, GTK+ Version 3.24.43, cairo version 1.18.2)
gitgit version 2.46.1
Output ```emacs-lisp Elpaca menu item cache discarded due to version change. Warning (elpaca): Unable to determine elpaca-core-date INFO Scraping files for loaddefs... INFO Scraping files for loaddefs...done GEN ../elpaca-autoloads.el Cloning into '/tmp/elpaca.wFgtoc/elpaca/repos/elpaca'... Your branch is up to date with 'origin/master'. Checking /tmp/elpaca.wFgtoc/elpaca/repos/elpaca... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-info.el... Warning (elpaca): Unable to determine elp```
aca-core-date Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-log.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-manager.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-menu-elpa.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-menu-melpa.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-menu-org.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-process.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-test.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca-ui.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/elpaca.el... Checking /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/doc... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/doc/early-init.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/doc/init.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/doc/installer.el... Checking /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/extensions... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/extensions/elpaca-use-package.el... Checking /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/images... Checking /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/test... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/test/elpaca-test.el... Compiling /tmp/elpaca.wFgtoc/elpaca/repos/elpaca/test/elpaca-tests.el... Done (Total of 12 files compiled, 4 skipped in 4 directories) Downloading MELPA recipes... Downloading MELPA recipes...100% Downloading NonGNU-devel ELPA... Downloading GNU-devel ELPA... Downloading NonGNU ELPA... Downloading GNU ELPA... elpaca finished ✓ 1.372 secs 07.414823 queue failed git.sv.gnu.org[1: 2001:470:142:6::78]: errno=Network is unreachable 139.361549 ```

Workaround - Passing Test

Test Case [How to run this test?](https://github.com/progfolio/elpaca/wiki/Troubleshooting#the-elpaca-test-macro) ```emacs-lisp (elpaca-test :init (elpaca (queue :host github :repo "emacsmirror/queue" :inherit nil)) (elpaca-wait) (princ (elpaca-log "#unique"))) ```
Host Env
elpacafcf7d4e grafted, HEAD -> master, origin/master, origin/HEAD
installer0.7
emacsGNU Emacs 30.0.50 (build 1, x86_64-suse-linux-gnu, GTK+ Version 3.24.43, cairo version 1.18.2)
gitgit version 2.46.1
Output ```emacs-lisp Elpaca menu item cache discarded due to version change. Warning (elpaca): Unable to determine elpaca-core-date INFO Scraping files for loaddefs... INFO Scraping files for loaddefs...done GEN ../elpaca-autoloads.el Cloning into '/tmp/elpaca.noJQ8Z/elpaca/repos/elpaca'... Your branch is up to date with 'origin/master'. Checking /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-info.el... Warning (elpaca): Unable to determine elpaca-core-date Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-log.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-manager.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-menu-elpa.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-menu-melpa.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-menu-org.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-process.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-test.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca-ui.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/elpaca.el... Checking /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/doc... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/doc/early-init.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/doc/init.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/doc/installer.el... Checking /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/extensions... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/extensions/elpaca-use-package.el... Checking /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/images... Checking /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/test... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/test/elpaca-test.el... Compiling /tmp/elpaca.noJQ8Z/elpaca/repos/elpaca/test/elpaca-tests.el... Done (Total of 12 files compiled, 4 skipped in 4 directories) Downloading MELPA recipes... Downloading MELPA recipes...100% Downloading NonGNU-devel ELPA... Downloading GNU-devel ELPA... Downloading NonGNU ELPA... Downloading GNU ELPA... queue finished ✓ 0.937 secs 05.977946 elpaca finished ✓ 1.020 secs 06.060494 ```
progfolio commented 1 day ago

I'm using the following workaround on a per-package basis, but I'm sure there's a better solution.

What did you have in mind?

jsperger commented 2 hours ago

I meant that both as a warning that I don't really know what I'm doing so use my solution at your own risk, and I was thinking that there's probably a way to avoid adding it to each use-package declaration. Maybe a way to set a fallback repository, changing the default like how elpa uses a mirror (I think), or a separate menu function like melpulls. I'm not suggesting any of these as enhancements, just things I think would be more systematic than changing individual recipes but am not qualified to evaluate.

You can go ahead and close this issue because the support I was looking for was just a sanity check of the solution I used. I also created it to save future people running into the same problem some time and to let you know about the issues with Savannah that've been happening in case you weren't aware.