On Tue, Oct 16, 2007 at 01:04:28PM +0200, Marijn Schouten (hkBst) wrote:
>Stelian Ionescu wrote:
>> On Mon, Oct 15, 2007 at 10:45:32AM +0200, Christian Faulhammer wrote:
>> [snip]
>>> Just a cosmetic...stay with one system. The local variables for Emacs
>>> are unncessary, or do you have problems with app-emacs/gentoo-syntax?
>>
>> ok, here's the last version of the eclass; sorry for the delay
>
>Comments by me within <-- these are my comments -->
>
># Copyright 1999-2007 Gentoo Foundation
># Distributed under the terms of the GNU General Public License v2
># $Header: $
>#
># Author Matthew Kennedy <mkennedy@g.o>
>#
># This eclass supports the installation of Common Lisp libraries
>
><-- Where are the usage comments? Which are the public functions? -->
>
>inherit eutils
>
>CLSOURCEROOT="${ROOT}"/usr/share/common-lisp/source/
>CLSYSTEMROOT="${ROOT}"/usr/share/common-lisp/systems/
><-- Before I really meant to ask about these two variables. I don't understand
>what the point is as CLSOURCEROOT will contain symlinks to within
>CLSYSTEMROOT. Can you explain this please. -->
it's the contrary: CLSOURCEROOT contains the source code, and
CLSYSTEMROOT contains symlinks to within CLSOURCEROOT. the reason is
that this is the way that ASDF works: it expects to find the .asd files
in a list of predefined directories(in fact the variable is called
asdf:*central-registry*), that's why we symlink .asd files into
CLSYSTEMROOT and configure ASDF to look only there.
there are workarounds for this, but they all imply either writing custom
code which would be used only in gentoo, or maintaining some sort of
site-gentoo.cl(much like for emacs) - but I'm strongly against either
solutions since I think that doing what all other distros are doing is
good policy because, for example, it allows users coming from other
distros to be able to use their extant setup unchanged, not being forced
to learn a new way to configure packaging
><-- Where is the comment about how to override these variables? -->
>CLPACKAGE="${PN}"
>CLSYSTEMS="${PN}"
ok, comments added
>
>DEPEND="virtual/commonlisp"
>
>EXPORT_FUNCTIONS src_install
>
>path-absolute-p() {
> if [ $# -ne 1 ]; then
> die "path-absolute-p must receive exactly one argument"
> fi
> local path="${1}"
> [ "${path:0:1}" == / ]
>}
>
>}
>
>or even
>
>path-absolute-p() {
> assert_arg_num 1 # is bash powerful enough to define and use such a
> function?
AFAIK, no
> [ "${1:0:1}" == / ]
>
>and its name should be absolute-path-p.
done
>}
>
>or have it return true only if all its arguments start with '/'.
>-->
done
>common-lisp-install() {
> if [ $# -eq 0 ]; then
> die "common-lisp-install must receive at least one argument"
> fi
> local _oldclpackage="${CLPACKAGE}"
> [ "${1}" == "-p" ] && { CLPACKAGE="${2}" ; shift ; shift ; }
> for thing in "$@"; do
> if path-absolute-p "${thing}" ; then
> common-lisp-install-relatively "${thing}"
> else
> common-lisp-install-relatively "${thing}" "$(dirname "${thing}")"
> fi <-- indentation is screwed up here (and a lot of other places)
>because of a combination of spaces and tabs. -->
fixed
>common-lisp-system-symlink() {
> dodir "${CLSYSTEMROOT}"
> # if no arguments received, default to
> # the contents of ${CLSYSTEMS}
> if [ $# -eq 0 ]; then
> for package in ${CLSYSTEMS} ; do
> common-lisp-install-single-system "${package}"
> done
> else
> local _oldclpackage="${CLPACKAGE}"
> [ "${1}" == "-p" ] && { CLPACKAGE="${2}" ; shift ; shift ; }
><-- what's the point of setting CLPACKAGE here? I'm not sure I like
>influencing common-lisp-install-single-system in that way. -->
> [ $# -eq 0 ] && die "common-lisp-system-symlink needs more arguments"
> for package in "$@" ; do
> common-lisp-install-single-system "${package}"
> done
> CLPACKAGE="${_oldclpackage}"
> fi
>}
setting CLPACKAGE that way is the equivalent of this:
(defun common-lisp-system-symlink (system &key (package *clpackage*))
(let ((*clpackage* package)) ...))
I'm faking default arguments: when $1 is "-p" CLPACKAGE gets set
temporarily to $2, then restored to its initial value. I've seen this
idiom elsewhere in sh code
anyway, I've removed this since it's unnecessary
>common-lisp-2_src_install() {
> common-lisp-install *.{lisp,asd}
> common-lisp-system-symlink
> dodoc LICENCE* LICENSE* COPYING* COPYRIGHT README HEADER TODO \
> CHANGELOG ChangeLog BUGS CONTRIBUTORS *NEWS 2> /dev/null
><-- licenses should not be installed separately, /usr/portage/licenses/
>contains them already -->
done
>}
>
># Many of our Common Lisp ebuilds are either inspired by, or actually
># use packages and files from the Debian project's archives.
>
><-- please remove this stuff. It is misleading and non-functional. -->
done
># Local Variables: ***
># mode: shell-script ***
># tab-width: 4 ***
># End: ***
><-- were these not redundant? -->
I don't know if they were added for emacs or for vim. anyway, I've
removed them
--
Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.
|