From: Mario S. Mommer
Subject: Installing software and libraries
Date: 
Message-ID: <fz3cik8ocj.fsf@cupid.igpm.rwth-aachen.de>
Hi,

I'd like to find out how people install and use Common Lisp software,
and what has been found to be the optimally useful settings. I've
found ways of doing these things, of course, but I just wonder what
other people do:

 - Where (in what directories) do you put the software, the libraries
   etc. that you get from the net, like uffi, etc?

 - How do you configure it all so that your favorite system definition
   thing finds what you want?

 - How do you handle the existence of both asdf and defsystem?

 - How do you handle multiple implementations wrt fasl file
   generation and storage?

I know about common-lisp-controller, but it has the drawback that it
is only for debian. Are there other, similar tools out there?

Regards,
        Mario.

From: Wolfgang Mederle
Subject: Re: Installing software and libraries
Date: 
Message-ID: <26kcr-iq.ln1@teague.mederle.de>
Mario S. Mommer wrote:

> I know about common-lisp-controller, but it has the drawback that it
> is only for debian.

It's not too difficult to port it to any other Linux distribution. I did
it once for Slackware 8.1, took me about two hours altogether.

-- 
Wolfgang Mederle

$BONMOT
From: Rudi Schlatte
Subject: Re: Installing software and libraries
Date: 
Message-ID: <87brx85ldv.fsf@semmel.constantly.at>
Mario S. Mommer <········@yahoo.com> writes:

>
> I know about common-lisp-controller, but it has the drawback that it
> is only for debian. Are there other, similar tools out there?
>

Since you seem to be a German speaker, <·············@DS9.mederle.de>
could be interesting (usage of common-lisp-controller for non-Debian
Linux).

Rudi
-- 
whois DRS1020334-NICAT                    http://constantly.at/pubkey.gpg.asc
     Key fingerprint = C182 F738 6B9A 83AF 9C25  62D9 EFAE 45A6 9A69 0867
From: Pascal Bourguignon
Subject: Re: Installing software and libraries
Date: 
Message-ID: <87vfvgfc6p.fsf@thalassa.informatimago.com>
Mario S. Mommer <········@yahoo.com> writes:

> Hi,
> 
> I'd like to find out how people install and use Common Lisp software,
> and what has been found to be the optimally useful settings. I've
> found ways of doing these things, of course, but I just wonder what
> other people do:
> 
>  - Where (in what directories) do you put the software, the libraries
>    etc. that you get from the net, like uffi, etc?

In /local/share/lisp/.

/usr/local is a symlink to /local

I don't  know if you've noticed, but  most of the stuff  under /usr is
delivered  along with  the OS,  so I  keep only  /local in  a separate
partition and avoid problems by having it mounted on a directory under
/ rather than in /usr/local.


>  - How do you configure it all so that your favorite system definition
>    thing finds what you want?

I've got a ~/.common.lisp  file with pure Common-Lisp definitions that
is    loaded    by    the    various    ~/.clisprc.lisp,    ~/.sbclrc,
~/.cmucl-init.lisp, etc.

In that .common.lisp I define a set of logical hosts and their logical
pathname translations  for the various  packages (in /local/share/lisp
or in ~/src/common/lisp or elsewhere).

Notably, since packaging it's rather a mess, I have a "LOADER" logical
host name where I keep one  file per package that need complex loading
sequences. For now, I have:

/home/pascal/src/common/lisp/loaders/aima.lisp
/home/pascal/src/common/lisp/loaders/cclan.lisp
/home/pascal/src/common/lisp/loaders/clocc.lisp
/home/pascal/src/common/lisp/loaders/clx.lisp
/home/pascal/src/common/lisp/loaders/norvig-graph.lisp
/home/pascal/src/common/lisp/loaders/norvig.lisp
/home/pascal/src/common/lisp/loaders/portableaserve.lisp
/home/pascal/src/common/lisp/loaders/pseudo.lisp
/home/pascal/src/common/lisp/loaders/uffi.lisp

All these files are loaded with:

    (load "LOADER:AIMA")      ;; or
    (load "LOADER:CCLAN")     ;; etc
    



My    own     code    does    not    need    that.      I    have    a
COM.INFORMATIMAGO.COMMON-LISP.PACKAGE   package    which   defines   a
DECLARE-PACKAGE macro.  This macro  declares a package.  This includes
loading the  package depended  on, adding a  nickname to  the packages
used  under this  nickname, defining  the package,  and going  into it
(with  IN-PACKAGE). 

;;    Improvements over DEFPACKAGE include:
;; 
;;        - allow to specify packages refered to (used) while not
;;          importing ("inheriting") any of it symbols; (:USE package)
;;
;;        - allow to do it while renaming (nicknaming) the package;
;;          (:USE package :AS nickname)
;;
;;        - allow to specify that all symbols exported by a given package
;;          are to be imported. (:FROM package :IMPORT :ALL)
;;
;;    The first and second points help declare package dependencies without
;;    using the deprecated REQUIRE, PROVIDE and *MODULES*.  This is done
;;    by implementing a systematic way to load packages (from a PACKAGE:
;;    logical host with logical pathname translations).
;;
;;    The last point, along with the (:FROM package :IMPORT symbol...) form
;;    correct the naming of the :USE clause of DEFPACKAGE.


Therefore  when I  load  one of  my package,  for example with:

    (load "PACKAGE:COM;INFORMATIMAGO;COMMON-LISP;GEEK-DAY")

it loads  automatically all the  needed packages that are  not already
loaded (note that it does not use the deprecated REQUIRE and PROVIDE).

I can then call:

    (COM.INFORMATIMAGO.COMMON-LISP.GEEK-DAY:MAIN)

to run the program.


>  - How do you handle the existence of both asdf and defsystem?

Use one  or the other depending on  what the given package  asks me to
use.   I'm   not  using   them  for  my   own  code.   Thanks   to  my
DECLARE-PACKAGE  macro, I  can keep  a file/package  based development
process,  and compile  each package  separately, with  a  makefile and
dependencies  (documented in  the DECLARE-PACKAGE  macro as  (:USE) or
(:FROM :IMPORT)  clauses) built automatically from  the sources.  I've
got no  use for  separately noted dependencies  in a .asdf  or .system
file.

 
>  - How do you handle multiple implementations wrt fasl file
>    generation and storage?

For now, I avoid conflicting implementations.
I keep clisp and sbcl, and avoid cmucl.

I  could change  the rules  in my  ~/src/common/lisp/Makefile.rules to
generate object files  with names depending on the  compiler, and have
different logical pathname translations for my PACKAGE logical host to
map the object files.


> I know about common-lisp-controller, but it has the drawback that it
> is only for debian. Are there other, similar tools out there?
> 
> Regards,
>         Mario.


-- 
__Pascal_Bourguignon__                   http://www.informatimago.com/
----------------------------------------------------------------------
Do not adjust your mind, there is a fault in reality.