source: trunk/abcl/README @ 14961

Last change on this file since 14961 was 14961, checked in by Mark Evenson, 8 years ago

docker: fix entrypoint reference to help actually running a REPL

docker run -it easye/abcl

Name path "/usr/local/bin/abcl" explicitly for invocation. Helps many
things.

  • Property svn:eol-style set to native
File size: 9.7 KB
Line 
1Armed Bear Common Lisp README
2=============================
3
4GENERAL INFORMATION
5-------------------
6
7Armed Bear Common Lisp is a conforming implementation of ANSI Common
8Lisp that runs in a Java virtual machine.  It compiles Lisp code
9directly to Java byte code.
10
11LICENSE
12=======
13
14Armed Bear Common Lisp is distributed under the GNU General Public
15License with a classpath exception (see "Classpath Exception" below).
16
17A copy of GNU General Public License (GPL) is included in this
18distribution, in the file COPYING.
19
20Linking this software statically or dynamically with other modules is
21making a combined work based on this software. Thus, the terms and
22conditions of the GNU General Public License cover the whole
23combination.
24
25** Classpath Exception
26
27As a special exception, the copyright holders of this software give
28you permission to link this software with independent modules to
29produce an executable, regardless of the license terms of these
30independent modules, and to copy and distribute the resulting
31executable under terms of your choice, provided that you also meet,
32for each linked independent module, the terms and conditions of the
33license of that module. An independent module is a module which is not
34derived from or based on this software. If you modify this software,
35you may extend this exception to your version of the software, but you
36are not obligated to do so. If you do not wish to do so, delete this
37exception statement from your version.
38
39RUNNING FROM DOCKER
40===================
41
42With [Docker Engine][] installed so that one may execute:
43
44    docker run -it easye/abcl
45
46to get
47
48    illin:~/work/abcl$ docker run -it easye/abcl
49    Armed Bear Common Lisp 1.5.0-dev
50    Java 1.8.0_111 Oracle Corporation
51    OpenJDK 64-Bit Server VM
52    Low-level initialization completed in 0.295 seconds.
53    Startup completed in 1.425 seconds.
54    Type ":help" for a list of available commands.
55    CL-USER(1): 23
56    23
57    23
58    CL-USER(2): (require :abcl-contrib)
59    (require :abcl-contrib)
60    Using probed value of abcl-contrib:
61    '/home/abcl/work/abcl/dist/abcl-contrib.jar'.
62    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/quicklisp/ to ASDF.
63    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/mvn/ to ASDF.
64    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/jss/ to ASDF.
65    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/jfli/ to ASDF.
66    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/asdf-jar/ to ASDF.
67    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/abcl-introspect/ to ASDF.
68    Added jar:file:/home/abcl/work/abcl/dist/abcl-contrib.jar!/abcl-asdf/ to ASDF.
69    ("uiop" "UIOP" "asdf" "ASDF" "ABCL-CONTRIB")
70
71
72[Docker Engine]: https://www.docker.com/products/docker-engine
73
74## Building Docker Container locally from modifications
75
76Get the source; use the Dockerfile to build.
77
78        docker pull easye/openjdk8
79        docker build -t easye/abcl .
80
81See <file:Dockerfile> for specifics on build instructions.
82
83RUNNING FROM DOCKER
84===================
85
86With [Docker Engine][] installed so that one may execute:
87
88        docker pull easye/openjdk8
89        docker run easye/abcl
90
91[Docker Engine]: https://www.docker.com/products/docker-engine
92
93## Building Docker Container locally from modifications
94
95        docker pull easye/openjdk8
96        docker build -t e/abcl .
97        docker run -it e/abcl
98
99See <file:Dockerfile> for build instructions.
100
101
102RUNNING FROM BINARY RELEASE
103===========================
104
105After you have downloaded a binary release from either
106[Maven][maven-abcl] or from [abcl.org][abcl.org-release] archive
107unpack it into its own directory. To run ABCL directly from this
108directory, make sure Java (version 1.5 or up) is in your shell's
109path.
110
111[maven-abcl]:         <mvn:abcl.org/abcl/>
112[maven-abcl-contrib]: <mvn:abcl.org/abcl/abcl-contrib>
113[abcl.org-release:    <http://abcl.org/releases/>
114
115Then issue the following command:
116
117    cmd$ java -jar abcl.jar
118
119which should result in output like the following
120
121    Armed Bear Common Lisp 1.4.0
122    Java 1.8.0_102 Oracle Corporation
123    Java HotSpot(TM) 64-Bit Server VM
124    Low-level initialization completed in 0.324 seconds.
125    Startup completed in 1.892 seconds.
126    Type ":help" for a list of available commands.
127    CL-USER(1):
128
129Yer now at the interactive ABCL "Read Eval Print Loop" (REPL):  hacks 'n glory await.
130
131
132BUILDING FROM SOURCE RELEASE
133============================
134
135There are three ways to build ABCL from the source release with the
136preferred (and most tested way) is to being to use the Ant build tool:
137
138* Use the Ant build tool for Java environments.
139
140* Use the NetBeans [678].x IDE to open ABCL as a project.
141
142* Bootstrap ABCL using a Common Lisp implementation. Supported
143  implementations for this process: SBCL, CMUCL, OpenMCL, Allegro
144  CL, LispWorks or CLISP.
145
146In all cases you need a Java 5 or later JDK (JDK 1.[5678] have been
147tested).  Just the JRE isn't enough, as you need the Java compiler
148('javac') to compile the Java source of the ABCL implementation.
149
150Note that when deploying ABCL having JDK isn't a requirement for the
151installation site, just the equivalent JRE, as ABCL compiles directly
152to byte code, avoiding the need for the 'javac' compiler in deployment
153environments.
154
155
156Using Ant
157---------
158
159Download a binary distribution [Ant version 1.7.1 or greater][1].
160Unpack the files somewhere convenient, ensuring that the 'ant' (or
161'ant.bat' under Windows) executable is in your path and executable.
162
163[1]: http://ant.apache.org/bindownload.cgi
164
165Then simply executing
166
167    unix$ ant
168
169or
170
171    dos> ant.bat
172
173from the directory containing this README file will create an
174executable wrapper ('abcl' under UNIX, 'abcl.bat' under Windows).  Use
175this wrapper to start ABCL.
176
177
178Using NetBeans
179--------------
180
181Obtain and install the [NetBeans IDE][2]. One should be able to open
182the ABCL directory as a project in the Netbeans application, whereupon
183the usual build, run, and debug targets as invoked in the GUI are
184available.  Use the 'slime' config with a suitably linked 'swank.asd'
185in '~/.asdf-install-dir/systems/' to connect a REPL to the NetBeans
186debug process.
187
188[2]: http://netbeans.org/downloads/
189
190
191Building from Lisp
192------------------
193
194Building from another Common Lisp implementation is the most venerable
195and least tested way of building ABCL.  It produces a "non-standard"
196version of the distribution that doesn't share build instructions with
197the previous two methods, but it still may be of interest to those who
198absolutely don't want to know anything about Java.  The other Common
199Lisp implementation does not actually perform any compliation, but is
200merely used to orchestrate the invocation of tools in the JDK.
201
202First, copy the file 'customizations.lisp.in' to 'customization.lisp',
203in the directory containing this README file, editing to suit your
204situation, paying attention to the comments in the file.  The critical
205step is to have Lisp special variable '*JDK*' point to the root of the
206Java Development Kit.  Underneath the directory referenced by the
207value of '*JDK*' there should be an executable Java compiler in
208'bin/javac' ('bin/javac.exe' under Windows).
209
210Then, one may either use the 'build-from-lisp.bash' shell script or load
211the necessary files into your Lisp image by hand.
212
213** Using the 'build-from-lisp.bash' script
214
215Under UNIX-like systems, one may simply invoke the
216'build-from-lisp.bash' script.  As noted above, one must first copy the
217'customizations.lisp.in' file to 'customizations.lisp', then edit it
218to reflect the local configuration most importantly the path to the
219Java Development Kit.
220
221After configuring 'customizations.lisp', the following would use SBCL
222as the compilation driver to build ABCL:
223
224    unix$ ./build-from-lisp.bash sbcl
225
226After a successful build, you may use 'abcl' ('abcl.bat' on Windows)
227to start ABCL.  Note that this wrappers contain absolute paths, so
228you'll need to edit them if you move things around after the build.
229
230If you're developing on ABCL, you may want to use
231
232    unix$ ./build-from-lisp.bash <implementation> --clean=nil
233
234to not do a full rebuild.
235
236In case of failure in the javac stage, you might try this:
237
238    unix$ ./build-from-lisp.bash <implementation> --full=t --clean=t --batch=nil
239
240This invokes javac separately for each .java file, which avoids running
241into limitations on command line length (but is a lot slower).
242
243** Building from another Lisp manually
244
245There is also an ASDF definition in 'abcl.asd' for the BUILD-ABCL
246which can be used to load the necessary Lisp definitions, after which
247
248    CL-USER> (build-abcl:build-abcl :clean t :full t)
249
250will build ABCL.  If ASDF isn't present, simply LOAD the
251'customizations.lisp' and 'build-abcl.lisp' files to achieve the same
252effect as loading the ASDF definition.
253
254
255BUGS
256====
257
258ABCL is a conforming ANSI Common Lisp implementation.  Any other
259behavior should be reported as a bug.
260
261ABCL now has a manual stating its conformance to the ANSI standard,
262providing a compliant and practical Common Lisp implementation.
263
264
265### Tests
266
267ABCL 1.4.0 now fails 47 out of 21708 total tests in the [revised and
268expanded ANSI CL test suite][ansi-test] (derived from the tests
269originally written for GCL).
270
271[ansi-test]: git+https://gitlab.common-lisp.net/ansi-test/ansi-test.git
272
273Maxima's test suite runs without failures.
274
275ABCL comes with a test suite, see the output of `ant help.test` for
276more information.
277
278### Deficiencies
279
280Many.  But patches are solicited.
281
282Patches to address any of the issues mentioned above will
283be gladly accepted.
284
285# Contact
286
287Please report problems to the development mailing list:
288
289    <armedbear-devel@common-lisp.net>
290
291Have fun!
292
293# Authors
294
295On behalf of all ABCL development team and contributors,
296
297    Mark Evenson
298    Erik Huelsmann
299    Rudolf Schlatte
300    Alessio Stalla
301    Ville Voutilainen
302
303    olof ferada
304    pipping
305    slyrus
306    vibhu
307    dmiles
308
309October 2016
310
311
Note: See TracBrowser for help on using the repository browser.