Straight.el: org-plus-contrib should cover org dependency?

Created on 3 Feb 2019  Â·  3Comments  Â·  Source: raxod502/straight.el

I install org-plus-contrib the usual way you describe in the readme. However it seems that if another package depends on org straight will try to install that package. This crashes my emacs for some reason (at least the last thing I see is building org... in the minibuffer).

Can I convince straight that org-plus-contrib really is a superset of org dependency and thus should satisfy it?

bug dependencies nonstandard packaging org-mode recipe handling

Most helpful comment

I'm afraid I can't say much on the crash without more debugging information, like for example a minimal init-file which demonstrates the behavior :/ (you may want to open a separate issue for that, so it doesn't get lost in the org/org-plus-contrib discussion)

As for making sure org-plus-contrib satisfies org, unfortunately the reason that package.el doesn't encounter this problem is quite dirty: it simply fails to do any sort of dependency resolution at all on org since it considers Org to be "built-in".

So I think the correct solution is

(straight-use-package 'org-plus-contrib)
(straight-use-package '(org :local-repo nil))

Or:

(straight-use-package 'org-plus-contrib)
(straight-use-package '(org :type built-in))

But perhaps we should add some functionality so that the dependency information is preserved:

(straight-use-package 'org-plus-contrib)
(straight-use-package '(org :type provided :by org-plus-contrib))

Or perhaps alternately, and even better:

(straight-use-package
 '(org-plus-contrib
   :repo "https://code.orgmode.org/bzg/org-mode.git"
   :local-repo "org"
   :files (:defaults "contrib/lisp/*.el")
   :includes (org)))

See also #116 on making that last one prettier:

(straight-use-package '(org-plus-contrib :includes (org)))

All 3 comments

OK, so when I put this at the beginning of my init file it doesn't crash

So basically I'm building both as the first thing in my setup.

(my-with-elapsed-timer "setup org-plus-contrib"
  (require 'subr-x)
  (straight-use-package 'git)

  (defun org-git-version ()
    "The Git version of org-mode.
Inserted by installing org-mode or when a release is made."
    (require 'git)
    (let ((git-repo (expand-file-name
                     "straight/repos/org/" user-emacs-directory)))
      (string-trim
       (git-run "describe"
                "--match=release\*"
                "--abbrev=6"
                "HEAD"))))

  (defun org-release ()
    "The release version of org-mode.
Inserted by installing org-mode or when a release is made."
    (require 'git)
    (let ((git-repo (expand-file-name
                     "straight/repos/org/" user-emacs-directory)))
      (string-trim
       (string-remove-prefix
        "release_"
        (git-run "describe"
                 "--match=release\*"
                 "--abbrev=0"
                 "HEAD")))))

  (provide 'org-version)
  (straight-use-package 'org-plus-contrib)
  (straight-use-package 'org)
  )

I'm afraid I can't say much on the crash without more debugging information, like for example a minimal init-file which demonstrates the behavior :/ (you may want to open a separate issue for that, so it doesn't get lost in the org/org-plus-contrib discussion)

As for making sure org-plus-contrib satisfies org, unfortunately the reason that package.el doesn't encounter this problem is quite dirty: it simply fails to do any sort of dependency resolution at all on org since it considers Org to be "built-in".

So I think the correct solution is

(straight-use-package 'org-plus-contrib)
(straight-use-package '(org :local-repo nil))

Or:

(straight-use-package 'org-plus-contrib)
(straight-use-package '(org :type built-in))

But perhaps we should add some functionality so that the dependency information is preserved:

(straight-use-package 'org-plus-contrib)
(straight-use-package '(org :type provided :by org-plus-contrib))

Or perhaps alternately, and even better:

(straight-use-package
 '(org-plus-contrib
   :repo "https://code.orgmode.org/bzg/org-mode.git"
   :local-repo "org"
   :files (:defaults "contrib/lisp/*.el")
   :includes (org)))

See also #116 on making that last one prettier:

(straight-use-package '(org-plus-contrib :includes (org)))
(straight-use-package '(org-plus-contrib :includes (org)))

Should work as of #675

Was this page helpful?
0 / 5 - 0 ratings