Summary: | cl-asdf 1.84 attempts to cd into non-existant /usr/lib/common-lisp/bin | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | derek glidden <dglidden> |
Component: | New packages | Assignee: | Gentoo Lisp Project <lisp> |
Status: | RESOLVED TEST-REQUEST | ||
Severity: | normal | ||
Priority: | High | ||
Version: | unspecified | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: | dodir patch |
Description
derek glidden
2004-08-24 10:53:09 UTC
This also affects the ebuild for dev-lisp/cl-defsystem3-3.3i-r4 Created attachment 40246 [details, diff]
dodir patch
This patch adds dodir statements before insinto statements to ensure the
directories are created.
In CVS. Thanks. mkennedy has brought to my attention the fact that I may have added a redundency in this ebuild by adding the dodir statements to explicitly create the directories in question. This is because they should be created when insinto executes (install -d is called). This being the case, why was this bug filed? Were you seeing an error and thus filed the bug or did you simply notice that the ebuild omitted the any appearant directoty checking? I'm re-opening the bug until this hs nailed down. this package and cl-defsystem are both dependencies for the clisp package. when these are installed they attempt to execute a program in /usr/lib/common-lisp/bin (not sure what eventually gets installed there, but presumably it is for additional setup for other lisp packages) this dir is not created until a later dependency, so the ebuilds for this and cl-defsystem both generate errors to the effect of "/usr/lib/common-lisp does not exist" which to my mind is a bogus error, since I'd think it should simply silently make the dir and not do anything rather than emit a rather alarming error message during the install perhaps checking for the existence of the dir before trying to execute something in it would be a more appropriate solution than my original "make the dir" idea, although it seems like a later package just makes the empty dir anyway OK, looking deeper into this one. At postinstall, the ebuild calls reregister-all-common-lisp-implementations() from common-lisp-common. This function tries to run scripts in /usr/lib/common-lisp/bin ($clc_bin_dir) which, if this if your first install of any lisp implementation, will fail because it doesn't exist. Because no lisp is installed yet, there are no implementations with which to reregister. I suggest a patch to reregister() which only runs the reregister scripts if virtual/commonlisp has been provided. Of course, this would require that all of the lisp implementations provide virtual/commonlisp. A quick grep shows that the only ebuilds providing this virtual are the sbcl ebuilds. In light of all of this, the dodir statements I added are definitly not required. Comment #4 ndimiduk: insinto/doins creates necessary directory, so it's not needed. See 5 ebuild and insinto() in /usr/lib/portage/bin/ebuid.sh. This should now be fixed. It was a dependency problem with cl-asdf, cl-defsystem3 and common-lisp-controller. |