Giter Club home page Giter Club logo

lisp-dev-tools's Introduction

Lisp Development Tools (lisp-dev-tools).
(REAME in russian, see the README_ru)

     Linux shell scripts to automate the downloading, compilation
and configuring Common Lisp development tools (Emacs, Slime, SBCL and
other lisps ...). 

Features: 
  - Fast and convenient update versions of lisp-systems.
  - Full automation of downloading, configuring and building lisp-systems.
  - General interface for using many open source lisp-systems.
  - Automatic tests (recommended before serious, production using).
  - Automation configuring and installing (into lisp-dev-tools) Quicklisp and Slime.
  - Portable: for use on another host with the same
    OS/Architecture - just copy the directory to another host!

Now supported: 
 - Ubuntu 11.04/x86-64 
 - Ubuntu Server 12.04/x86-64
 - Ubuntu Server 10.10/x86-64
 - Debian 6.0.4/x86-64 (into Debian 6.0.3/x86-64 also working must be)
 - Gentoo (from livedvd-amd64-multilib-2012)

Dependencies:
For building CMUCL lisp: libc6-dev-i386 package.
(into "Ubuntu 11.04/x86-64" and "Debian 6.0.4/x86-64").

Required packages for compilation lisps and tools/libs 
(into "Debian 6.0.4/x86-64"): make, g++

Providing 10(!) open source lisps:

(modern lisp-systems)
SBCL - Steel Bank Common Lisp	(http://www.sbcl.org/)
CCL - Clozure Common Lisp	(http://ccl.clozure.com/)
ECL - Embedded Common Lisp 	(http://ecls.sourceforge.net/)
ABCL - Armed Bear Common Lisp 	(http://common-lisp.net/project/armedbear/)
CLISP        	      		(http://www.clisp.org/)

(young lisp-systems)
XCL 	    	   		(http://armedbear.org/)
MKCL - ManKai Common Lisp 	(http://common-lisp.net/project/mkcl/)

(obsolete lisp-systems)
CMUCL(x86 only)-CMU Common Lisp (http://www.cons.org/cmucl/)
GCL(CLTL1 only)-GNU Common Lisp (http://www.gnu.org/s/gcl/)
WCL    	     	  	 	(http://pgc.com/commonlisp/)

---------------------------------------------
See EXAMPLES after Recommendation and Notes.

Recomendations:
    - Install wget and emacs packages, if they do not, then lisp-dev-tools 
system will build their own (extract its wget archive, building and installing
it into lisp-dev-tools, also downloading emacs, building and install it also 
into lisp-dev-tools).

Notes: 
      1) CMUCL building only for x86 architecture, so required supported 
x86 on x86-64 architectures - for succesful building in Ubuntu 11.04 
required libc6-dev-i386 package (therefore this package also required for
using command: ./provide-all-lisps with parameters --include-obsolete or 
--include-all). To install run command: 
$ sudo apt-get -y install libc6-dev-i386
      ... instead "apt-get" preferable to use the "aptitude".
Into Ubuntu Server 12.04/x86-64 CMUCL not building.
      
      2) If executed ./run-lisp with command line contained <'> (apostrophe) and
using GET_CMD_P=yes, then return strange syntax into command line (but valid
for copied, pasted into shell and executed). To avoid this - using (quote some) 
instead 'some.

      3) GCL building only in CLTL1 compliance mode (not builded 
with configure option --enable-ansi - bug in GCL)

      4) SBCL by default no building - provided precompiled binaries. For
 building from sources to run: ./rebuild-lisp

      5) ./rebuild-lisp not working into Gentoo.

      6) For Ubuntu Server 10.10/x86-64 required gcc package (not installed by default).

      7) For Gentoo (from livedvd-amd64-multilib-2012) not comping elisp sources (for 
compiling Slime) if 256 or 512 MB RAM, but if 768MB - all ok.

      8) If Emacs not found into OS (not found /usr/bin/emacs), then it building, and 
required g++ (for building need library - "ncurses").

---------------------------------------------
Using (simple examples):
	1) Go to the directory:

$ cd <path-to>/lisp-dev-tools

	2) Preparation for use Emacs/Slime, SBCL (by default pre-builded binaries), and Quicklisp (if Emacs not found in /usr/bin/emacs then automation downloading it's fresh sources, configuring, building, and installing (into lisp-dev-tools):

$ ./provide-slime	

  	3) Running Slime (appropriate running: SBCL (by default), Emacs, and loading Quicklisp):

$ ./run-slime

------------------------------------------
Using (advanced examples):
	1) Testing - preferable before serious "production" using, if used distribution is not included in officially supported distributions or if it included, but its settings is very different from the default distribution settings (below we`ll describe the options of test run in details):

$ ./tests/run-tests

	2) Downloading (by default pre-builded binaries SBCL), configuring, building, and install into lisp-dev-tools (for portability):

$ ./provide-lisp

	3) Running lisp (by default binaries SBCL):

$ ./run-lisp 

  	4) Providing and running other lisp (example CCL):

$ LISP=ccl ./provide-lisp && LISP=ccl ./run-lisp

  	5) Get current lisp:

$ ./get-lisp
sbcl

	6) Change current lisp:

$ ./change-lisp ccl
Current lisp: ccl

	7) Get current lisp version: 

$ ./get-version
1.0.53

	8) Change current lisp version (attention: url includes the new version should be valid):

$ ./change-version 1.0.52
Current lisp version: 1.0.52

	9) Provide and run the lisp different version:

$ VERSION=1.0.51 ./provide-lisp
$ VERSION=1.0.51 ./run-lisp

  	10) For rebuilding current lisp to run:

$ ./rebuild-lisp

	11) Providing fresh Emacs (if Emacs not found in /usr/bin/emacs):

./provide-emacs

	12) Running Emacs without Slime (for running Slime into running Emacs to run M-x slime):

$ ./run-emacs	

  	13) Getting command line for calling lisp system without executed it:

$ GET_CMD_P=yes ./run-lisp --eval "(print 999)" --eval "(quit)"
XDG_CONFIG_DIRS='/media/COMMON_LISP/lisp-dev-tools/conf:/etc/xdg/xdg-gnome:/etc/xdg' /media/COMMON_LISP/lisp-dev-tools/lisp/sbcl/sbcl-1.0.53/bin/sbcl --core /media/COMMON_LISP/lisp-dev-tools/lisp/sbcl/sbcl-1.0.53/lib/sbcl/sbcl.core '--eval' '(print 999)' '--eval' '(quit)' '--load' '/media/COMMON_LISP/lisp-dev-tools/lisp-libs/quicklisp/setup.lisp'

            ... this output may be copied, pasted into the shell and executed successfully.
--------------------------------------------------------------
Else examples:

	1) Getting all modern lisps:

$ ./get-all-lisps
SBCL
CCL
ECL
ABCL
CLISP

	2) Getting all supported lisps:

$ ./get-all-lisps --include-all
SBCL
CMUCL
XCL
ECL
CLISP
MKCL
ABCL
WCL
GCL
CCL

	3) Getting command for building or installing or running current lisp:

$ ./get-providing-cmd <build | install | run>

  	4) Removing current lisp or Emacs or Slime:

./remove-emacs
./remove-lisp
./remove-slime

	5) Providing all modern lisps:

./provide-all-lisps

	6) Providing all supported lisps:

./provide-all-lisps --include-all

--------------------------------------------------------------
Reset all changes:

      	  1) Remove all changes relating to the current lisp:

$ ./clean/clean-lisp.sh

      	  2) Remove all changes (all archives, binaries, sources, and etc.):

$ ./clean/clean-all.sh

--------------------------------------------------------------
Testing:
	1) Run all tests:

$ ./tests/run-tests.sh

	2) Run almost all tests, but exclude some:

$ ./tests/run-tests.sh --exclude="SBCL WGET"

  ... into --exclude="..." besides lisp-systems, maybe these keywords naming appropriate tests: WGET EMACS SLIME REBUILD

        3) Run only concreate tests:

$ ./tests/run-tests.sh --exclude="CCL EMACS SLIME"

  ... into --only="..." besides keywords naming lisp-systems, maybe these keywords naming appropriate tests: WGET EMACS SLIME REBUILD

Keywors denoting the tests:
WGET - test providing wget tool, if necessary to test building (and removal) of this utility.
EMACS - test command ./provide-emacs, if Emacs building and installing, then will be tested ./remove-emacs command.
SLIME - test command ./provide-slime, if Slime building and installing, then will be tested ./remove-slime command.
REBUILD - test command ./rebuild-lisp, restoring the old contents of the directories associated with the compilation.
--------------------------------------------------------------

lisp-dev-tools's People

Contributors

linkfly avatar

Stargazers

Konstantine avatar  avatar Angus H. avatar Loty Gero avatar Alexander Artemenko avatar  avatar Alexander Karpich avatar Eugene L. avatar Michael Filonenko avatar  avatar Dmitry Ignatiev avatar  avatar Andrii Hryhoriev avatar

Watchers

Petr Saganov avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.