gnu: Add abcl.

* gnu/packages/java.scm (abcl): New variable.
* gnu/packages/patches/abcl-fix-build-xml.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Carlo Zancanaro 2019-09-17 22:01:01 +10:00 committed by Ludovic Courtès
parent 43f7fd8783
commit 717b6ba6aa
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 116 additions and 1 deletions

View File

@ -674,6 +674,7 @@ dist_patch_DATA = \
%D%/packages/patches/a2ps-CVE-2001-1593.patch \
%D%/packages/patches/a2ps-CVE-2014-0466.patch \
%D%/packages/patches/a2ps-CVE-2015-8107.patch \
%D%/packages/patches/abcl-fix-build-xml.patch \
%D%/packages/patches/abiword-explictly-cast-bools.patch \
%D%/packages/patches/abiword-black-drawing-with-gtk322.patch \
%D%/packages/patches/acl-fix-perl-regex.patch \

View File

@ -2,7 +2,7 @@
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017, 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017, 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
@ -11109,3 +11109,67 @@ network protocols, and core version control algorithms.")
`(("java-javaewah" ,java-javaewah)
("java-jsch" ,java-jsch)
("java-slf4j-api" ,java-slf4j-api)))))
(define-public abcl
(package
(name "abcl")
(version "1.5.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://abcl.org/releases/"
version "/abcl-src-" version ".tar.gz"))
(sha256
(base32
"1hhvcg050nfpjbdmskc1cv2j38qi6qfl77a61b5cxx576kbff3lj"))
(patches
(search-patches
"abcl-fix-build-xml.patch"))))
(build-system ant-build-system)
(native-inputs
`(("java-junit" ,java-junit)))
(arguments
`(#:build-target "abcl.jar"
#:test-target "abcl.test"
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((share (string-append (assoc-ref outputs "out")
"/share/java/"))
(bin (string-append (assoc-ref outputs "out")
"/bin/")))
(mkdir-p share)
(install-file "dist/abcl.jar" share)
(install-file "dist/abcl-contrib.jar" share)
(mkdir-p bin)
(with-output-to-file (string-append bin "abcl")
(lambda _
(let ((classpath (string-append
share "abcl.jar"
":"
share "abcl-contrib.jar")))
(display (string-append
"#!" (which "sh") "\n"
"if [[ -z $CLASSPATH ]]; then\n"
" cp=\"" classpath "\"\n"
"else\n"
" cp=\"" classpath ":$CLASSPATH\"\n"
"fi\n"
"exec " (which "java")
" -cp $cp org.armedbear.lisp.Main $@\n")))))
(chmod (string-append bin "abcl") #o755)
#t))))))
(home-page "https://abcl.org/")
(synopsis "Common Lisp Implementation on the JVM")
(description
"@dfn{Armed Bear Common Lisp} (ABCL) is a full implementation of the Common
Lisp language featuring both an interpreter and a compiler, running in the
JVM. It supports JSR-223 (Java scripting API): it can be a scripting engine
in any Java application. Additionally, it can be used to implement (parts of)
the application using Java to Lisp integration APIs.")
(license (list license:gpl2+
;; named-readtables is released under 3 clause BSD
license:bsd-3
;; jfli is released under CPL 1.0
license:cpl1.0))))

View File

@ -0,0 +1,50 @@
ABCL's build calls the hostname command, and needs the internet to download
JUnit. Neither of these are really required, though, so we can patch them out
to make it build.
We also remove the Implemetation-Build property that ends up in the manifest
file, because it stores information about the time of the build, which makes
it non-deterministic.
--- a/build.xml
+++ b/build.xml
@@ -327,7 +327,7 @@ from ${abcl.home.dir}
<property name="abcl.build.path"
value="${build.classes.dir}/org/armedbear/lisp/build"/>
<target name="abcl.stamp"
- depends="abcl.compile,abcl.stamp.version,abcl.stamp.hostname">
+ depends="abcl.compile,abcl.stamp.version">
<mkdir dir="${abcl.build.path}/.."/>
<loadfile property="abcl.version"
srcFile="${abcl.version.path}"/>
@@ -455,11 +455,6 @@ from ${abcl.home.dir}
value="${abcl.version}-${abcl.version.src}"/>
</target>
- <target name="abcl.stamp.hostname" if="unix">
- <exec executable="hostname" outputproperty="abcl.hostname"/>
- <echo>abcl.hostname: ${abcl.hostname}</echo>
- </target>
-
<target name="abcl.system.uptodate">
<condition property="abcl.system.needs-update.p">
<and>
@@ -500,8 +495,6 @@ from ${abcl.home.dir}
value="ABCL"/>
<attribute name="Implementation-Version"
value="${abcl.implementation.version}"/>
- <attribute name="Implementation-Build"
- value="${build}"/>
</section>
</manifest>
<metainf dir="${src.dir}/META-INF">
@@ -1019,8 +1012,7 @@ ${basedir}/../cl-bench
</unzip>
</target>
- <target name="abcl.test.compile"
- depends="abcl.test.pre-compile">
+ <target name="abcl.test.compile" >
<mkdir dir="${abcl.test.classes.dir}"/>
<javac destdir="${abcl.test.classes.dir}"
classpathref="abcl.test.compile.classpath"