Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Installing software and libraries
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Pascal Bourguignon  
View profile  
 More options Jun 8 2003, 6:16 pm
Newsgroups: comp.lang.lisp
From: Pascal Bourguignon <s...@thalassa.informatimago.com>
Date: 09 Jun 2003 00:15:42 +0200
Local: Sun, Jun 8 2003 6:15 pm
Subject: Re: Installing software and libraries

Mario S. Mommer <m_mom...@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.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.