Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 61542 - cl-asdf 1.84 attempts to cd into non-existant /usr/lib/common-lisp/bin
Summary: cl-asdf 1.84 attempts to cd into non-existant /usr/lib/common-lisp/bin
Status: RESOLVED TEST-REQUEST
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Gentoo Lisp Project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-08-24 10:53 UTC by derek glidden
Modified: 2004-11-04 05:44 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
dodir patch (cl-asdf-1.84.ebuild.patch,429 bytes, patch)
2004-09-23 14:06 UTC, Nick Dimiduk (RETIRED)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description derek glidden 2004-08-24 10:53:09 UTC
cl-asdf 1.84 ebuild does not check for existence of /usr/lib/common-lisp before trying to install files there, however even though the ebuild does not correctly install all files the first time around, it doesn't error/fail out indicating there was a problem.  Once a couple of lisp packages that use /usr/lib/common-lisp get installed, the directory gets created and further emerges will work correctly.

Reproducible: Always
Steps to Reproduce:
1. start with a clean system that doesn't have /usr/lib/common-lisp
2. emerge cl-asdf, which will not fully install, but also not fail indicating an error


Expected Results:  
check for existence of /usr/lib/common-lisp and mkdir it if necessary
Comment 1 derek glidden 2004-08-24 10:53:46 UTC
This also affects the ebuild for dev-lisp/cl-defsystem3-3.3i-r4
Comment 2 Nick Dimiduk (RETIRED) gentoo-dev 2004-09-23 14:06:42 UTC
Created attachment 40246 [details, diff]
dodir patch

This patch adds dodir statements before insinto statements to ensure the
directories are created.
Comment 3 Nick Dimiduk (RETIRED) gentoo-dev 2004-09-24 20:20:46 UTC
In CVS.  Thanks.
Comment 4 Nick Dimiduk (RETIRED) gentoo-dev 2004-09-29 04:38:03 UTC
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.
Comment 5 derek glidden 2004-09-29 08:20:14 UTC
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
Comment 6 Nick Dimiduk (RETIRED) gentoo-dev 2004-10-15 12:27:02 UTC
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 7 Mamoru KOMACHI (RETIRED) gentoo-dev 2004-10-15 22:11:22 UTC
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.
Comment 8 Matthew Kennedy (RETIRED) gentoo-dev 2004-11-04 05:44:18 UTC
This should now be fixed.  It was a dependency problem with cl-asdf, cl-defsystem3 and common-lisp-controller.