From 0e35319f9df5e91bc6fb07224122109508a85244 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Tue, 17 Sep 2019 22:01:01 +1000
Subject: [PATCH] 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.
---
gnu/local.mk | 1 +
gnu/packages/java.scm | 66 ++++++++++++++++++-
gnu/packages/patches/abcl-fix-build-xml.patch | 50 ++++++++++++++
3 files changed, 116 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/abcl-fix-build-xml.patch
@@ -669,6 +669,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 \
@@ -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))))
new file mode 100644
@@ -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"
--
2.23.0
On Tue, Sep 17 2019, Carlo Zancanaro wrote: > Here's another patch! ... Soon after sending the patch I realised that I hadn't run it with --check. It turns out it wasn't reproducible, so I've attached an updated patch that fixes that, and the long line warning from 'guix lint'. Carlo