summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/clojure/LICENSE.txt231
-rw-r--r--libre/clojure/PKGBUILD58
-rw-r--r--libre/clojure/clj.sh138
-rw-r--r--libre/clojure/clojure-replace_asm.patch186
-rw-r--r--libre/clojure/clojure.install5
-rw-r--r--libre/clojure/clojure.sh1
6 files changed, 619 insertions, 0 deletions
diff --git a/libre/clojure/LICENSE.txt b/libre/clojure/LICENSE.txt
new file mode 100644
index 000000000..6d2f00695
--- /dev/null
+++ b/libre/clojure/LICENSE.txt
@@ -0,0 +1,231 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial code and
+ documentation distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's
+behalf. Contributions do not include additions to the Program which:
+(i) are separate modules of software distributed in conjunction with
+the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, distribute and sublicense the
+ Contribution of such Contributor, if any, and such derivative
+ works, in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such
+ Contributor, if any, in source code and object code form. This
+ patent license shall apply to the combination of the Contribution
+ and the Program if, at the time the Contribution is added by the
+ Contributor, such addition of the Contribution causes such
+ combination to be covered by the Licensed Patents. The patent
+ license shall not apply to any other combinations which include
+ the Contribution. No hardware per se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe
+ the patent or other intellectual property rights of any other
+ entity. Each Contributor disclaims any liability to Recipient for
+ claims brought by any other entity based on infringement of
+ intellectual property rights or otherwise. As a condition to
+ exercising the rights and licenses granted hereunder, each
+ Recipient hereby assumes sole responsibility to secure any other
+ intellectual property rights needed, if any. For example, if a
+ third party patent license is required to allow Recipient to
+ distribute the Program, it is Recipient's responsibility to
+ acquire that license before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to grant
+ the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all
+ warranties and conditions, express and implied, including
+ warranties or conditions of title and non-infringement, and
+ implied warranties or conditions of merchantability and fitness
+ for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all
+ liability for damages, including direct, indirect, special,
+ incidental and consequential damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement
+ are offered by that Contributor alone and not by any other
+ party; and
+
+ iv) states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a
+ reasonable manner on or through a medium customarily used for
+ software exchange.
+
+When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for other Contributors. Therefore, if a
+Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising
+from claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must: a)
+promptly notify the Commercial Contributor in writing of such claim,
+and b) allow the Commercial Contributor to control, and cooperate with
+the Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+the Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of
+the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably
+practicable. However, Recipient's obligations under this Agreement and
+any licenses granted by Recipient relating to the Program shall
+continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign
+the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions)
+may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives
+no rights or licenses to the intellectual property of any Contributor
+under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this Agreement
+more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.
diff --git a/libre/clojure/PKGBUILD b/libre/clojure/PKGBUILD
new file mode 100644
index 000000000..203c6792e
--- /dev/null
+++ b/libre/clojure/PKGBUILD
@@ -0,0 +1,58 @@
+# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
+
+pkgname=clojure
+pkgver=1.7.0
+pkgrel=1.parabola1
+pkgdesc='LISP for the JVM'
+url='http://clojure.org/'
+arch=('any')
+license=('EPL')
+depends=('java-environment' 'bash')
+makedepends=('apache-ant' 'classpath' 'git' 'java-asm' 'jh')
+optdepends=('rlwrap: friendlier shell with readline support')
+install='clojure.install'
+source=("$pkgname::git://github.com/clojure/clojure.git#tag=$pkgname-$pkgver"
+ 'clojure-replace_asm.patch'
+ 'LICENSE.txt'
+ 'clj.sh' "$pkgname.sh")
+sha256sums=('SKIP'
+ 'b04cd1381bc78e40271fc18a1ec7d8e45f630a12fdafe571ace746c3426fb003'
+ '9bcd4c6eac491d1c9bbade5b35182a778fc7e08021de30edc387ac2adce75035'
+ '2194819fd417174351172d94e3ccff050479401ca883b57d325a349072200bee'
+ 'b3fa6257dad10fb39851e87563269b80b2473623126595d9c279bbd90e97f052')
+
+prepare() {
+ cd "$pkgname"
+ rm -rv "src/jvm/clojure/asm"
+ patch -Np1 -i ../clojure-replace_asm.patch
+}
+
+build() {
+ cd "$pkgname"
+
+ ant jar javadoc
+}
+
+package() {
+ cd "$pkgname"
+ # Install license file
+ install -Dm644 "${srcdir}/LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.txt"
+
+ # Install documentation
+ install -d "${pkgdir}/usr/share/doc/${pkgname}"
+ cp -r "target/javadoc" "${pkgdir}/usr/share/doc/${pkgname}"
+
+ # Install Maven artifacts
+ export DESTDIR=${pkgdir}
+ jh mvn-install "org.${pkgname}" ${pkgname} ${pkgver} \
+ "pom.xml" \
+ "${pkgname}-${pkgver}.jar" \
+ "${pkgname}.jar"
+
+ ln -s "/usr/share/java/${pkgname}.jar" \
+ "${pkgdir}/usr/share/java/${pkgname}-${pkgver}.jar"
+
+ install -Dm755 "${srcdir}/clj.sh" "$pkgdir/usr/bin/clj"
+ install -Dm755 "${srcdir}/clj.sh" "$pkgdir/usr/bin/clojure"
+ install -Dm755 "${srcdir}/$pkgname.sh" "$pkgdir/etc/profile.d/$pkgname.sh"
+}
diff --git a/libre/clojure/clj.sh b/libre/clojure/clj.sh
new file mode 100644
index 000000000..9c43acf93
--- /dev/null
+++ b/libre/clojure/clj.sh
@@ -0,0 +1,138 @@
+#!/bin/bash
+#
+# Launcher script for Clojure programs. These environment variables can be
+# used to configure the script:
+#
+# CLOJURE_HOME
+# The root directory where Clojure is installed.
+# CLOJURE_JAVA
+# The name of the java executable used to run Clojure.
+# CLOJURE_JAVA_OPTS
+# Additional options to be passed to the java executable.
+# CLOJURE_CLASSPATH
+# A path to be added to Clojure's classpath.
+# CLOJURE_LIBRARY_PATH
+# A path to be searched for native code such as DLL's or JNI
+# libraries. This gets added to the Java options as
+# "-Djava.library.path=$CLOJURE_LIBRARY_PATH".
+# CLOJURE_LIB
+# This directory, and any jars inside it, will be automatically
+# added to Clojure's classpath.
+#
+# CLOJURE_JLINE
+# This should be the path to Jline jar.
+# TODO:
+# make CLOJURE_LIB a path instead of a single directory
+# allow for adding to CLOJURE_LIB from the command line
+
+usage="\
+usage: clojure [options] [file1 [file2] ...]
+
+Options:
+ --help, -h show this message
+ --java-cmd, -J the Java executable to use
+ --java-opts, -j add options to be passed on to the JVM
+ --classpath, -cp add to Clojure's classpath
+ --library-path, -L add to the path to search for native libraries
+ --verbose, -v print initialization information
+"
+## read ~/.clojurerc for home configuration
+[ -e ~/.clojurerc ] && . ~/.clojurerc
+
+## read ./.clojurerc for project specific configuration
+[ -e ./.clojurerc ] && . ./.clojurerc
+
+if [ ! "$CLOJURE_HOME" ]; then
+ # Find the real path to Clojure's home directory if $0 is a symlink
+ #program="$0"
+ #while [ -h "$program" ]; do
+ # ls=`ls -ld "$program"`
+ # link=`expr "$ls" : '.*-> \(.*\)$'`
+ # if expr "$link" : '.*/.*' >/dev/null; then
+ # program="$link"
+ # else
+ # program="`dirname $program`/$link"
+ # fi
+ #done
+ #script_dir=`dirname "$program"`
+ #relative_clojure_home=`dirname "$script_dir"`
+ #CLOJURE_HOME=`cd "$relative_clojure_home" && pwd`
+ . /etc/profile.d/clojure.sh
+fi
+
+if [ ! "$CLOJURE_JAVA" ]; then
+ CLOJURE_JAVA="java";
+fi
+
+if [ ! "$CLOJURE_JAVA_OPTS" ]; then
+ CLOJURE_JAVA_OPTS="-Dpid=$$"; # set the pid for SLIME
+fi
+
+if [ ! "$CLOJURE_CLASSPATH" ]; then
+ CLOJURE_CLASSPATH="."
+fi
+
+## Add Clojure home jars.
+for jar in "$CLOJURE_HOME"/*.jar; do
+ CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$jar"
+done
+
+if [ -d "$CLOJURE_LIB" ]; then
+ CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$CLOJURE_LIB"
+ for jar in "$CLOJURE_LIB"/*.jar; do
+ CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$jar"
+ done
+fi
+
+# this is now the same for both the repl and for scripts
+main="clojure.main"
+repl=0
+verbose=0
+
+while true; do
+ case $1 in
+ -h|--help)
+ echo "$usage"; exit 1;;
+ -J|--java-cmd)
+ CLOJURE_JAVA="$2"; shift; shift;;
+ -j|--java-opts)
+ CLOJURE_JAVA_OPTS="$CLOJURE_JAVA_OPTS $2"; shift; shift;;
+ -cp|--classpath)
+ CLOJURE_CLASSPATH="$CLOJURE_CLASSPATH:$2"; shift; shift;;
+ -L|--library-path)
+ if [ "$CLOJURE_LIBRARY_PATH" ]; then
+ CLOJURE_LIBRARY_PATH="$CLOJURE_LIBRARY_PATH:$2";
+ else
+ CLOJURE_LIBRARY_PATH="$2";
+ fi
+ shift; shift;;
+ -v|--verbose)
+ verbose=1; shift;;
+ *) break;;
+ esac
+done
+
+[ $verbose -eq 1 ] && echo "$CLOJURE_CLASSPATH"
+
+# If we didn't get any files to load on the commandline, we want to run the
+# repl, with command line editing if available.
+[ $# -eq 0 ] && repl=1
+
+# If the classpath contains the JLine jar, use the JLine console runner
+if expr "$CLOJURE_CLASSPATH" : ".*jline.*\.jar" >/dev/null; then
+ [ $repl -eq 1 ] && jline="jline.ConsoleRunner"
+fi
+
+# Enable rlwrap if present
+if [ $repl -eq 1 ] && [ -z $jline ]; then
+ rlwrap=`type -p rlwrap`
+fi
+
+## Add CLOJURE_LIBRARY_PATH to the Java options if necessary
+if [ -n "$CLOJURE_LIBRARY_PATH" ]; then
+ CLOJURE_JAVA_OPTS="$CLOJURE_JAVA_OPTS -Djava.library.path=$CLOJURE_LIBRARY_PATH"
+fi
+
+cmd=`echo $rlwrap "$CLOJURE_JAVA" "$CLOJURE_JAVA_OPTS" -cp "$CLOJURE_CLASSPATH" $jline $main`
+[ $verbose -eq 1 ] && echo "$cmd" "$@"
+exec `echo $cmd` "$@"
diff --git a/libre/clojure/clojure-replace_asm.patch b/libre/clojure/clojure-replace_asm.patch
new file mode 100644
index 000000000..0c41a37e9
--- /dev/null
+++ b/libre/clojure/clojure-replace_asm.patch
@@ -0,0 +1,186 @@
+--- clojure-1.7.0.orig/build.xml 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/build.xml 2015-12-09 17:37:31.497314803 -0500
+@@ -38,6 +38,7 @@
+ <target name="compile-java" depends="init"
+ description="Compile Java sources.">
+ <javac srcdir="${jsrc}" destdir="${build}" includeJavaRuntime="yes"
++ classpath="/usr/share/java/asm-4.jar:/usr/share/java/asm-commons-4.jar"
+ includeAntRuntime="false"
+ debug="true" source="1.6" target="1.6"/>
+ </target>
+@@ -45,7 +46,7 @@
+ <target name="compile-clojure"
+ description="Compile Clojure sources.">
+ <java classname="clojure.lang.Compile"
+- classpath="${maven.compile.classpath}:${build}:${cljsrc}"
++ classpath="/usr/share/java/asm-4.jar:/usr/share/java/asm-commons-4.jar:${maven.compile.classpath}:${build}:${cljsrc}"
+ failonerror="true"
+ fork="true">
+ <sysproperty key="clojure.compile.path" value="${build}"/>
+@@ -87,7 +88,7 @@
+ <javac srcdir="${jtestsrc}" destdir="${test-classes}" includeJavaRuntime="yes"
+ debug="true" source="1.6" target="1.6" includeantruntime="no"/>
+ <java classname="clojure.lang.Compile"
+- classpath="${test-classes}:${test}:${build}:${cljsrc}"
++ classpath="/usr/share/java/asm-4.jar:/usr/share/java/asm-commons-4.jar:${test-classes}:${test}:${build}:${cljsrc}"
+ failonerror="true"
+ fork="true">
+ <sysproperty key="clojure.compile.path" value="${test-classes}"/>
+@@ -106,6 +107,8 @@
+ <java classname="clojure.main" failonerror="true" fork="true">
+ <classpath>
+ <pathelement path="${maven.test.classpath}"/>
++ <path location="/usr/share/java/asm-4.jar"/>
++ <path location="/usr/share/java/asm-commons-4.jar"/>
+ <path location="${test-classes}"/>
+ <path location="${test}"/>
+ <path location="${build}"/>
+@@ -122,6 +125,8 @@
+ <java classname="clojure.main" failonerror="true" fork="true">
+ <classpath>
+ <pathelement path="${maven.test.classpath}"/>
++ <path location="/usr/share/java/asm-4.jar"/>
++ <path location="/usr/share/java/asm-commons-4.jar"/>
+ <path location="${test-classes}"/>
+ <path location="${test}"/>
+ <path location="${build}"/>
+--- clojure-1.7.0.orig/src/clj/clojure/core.clj 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/src/clj/clojure/core.clj 2015-12-09 17:45:49.203841272 -0500
+@@ -5222,10 +5222,10 @@
+ (.getAnnotation c java.lang.annotation.Retention)]
+ (= (.value r) java.lang.annotation.RetentionPolicy/RUNTIME)))))
+
+-(defn- descriptor [^Class c] (clojure.asm.Type/getDescriptor c))
++(defn- descriptor [^Class c] (org.objectweb.asm.Type/getDescriptor c))
+
+ (declare process-annotation)
+-(defn- add-annotation [^clojure.asm.AnnotationVisitor av name v]
++(defn- add-annotation [^org.objectweb.asm.AnnotationVisitor av name v]
+ (cond
+ (vector? v) (let [avec (.visitArray av name)]
+ (doseq [vval v]
+@@ -5235,7 +5235,7 @@
+ (cond
+ (instance? java.lang.Enum ev)
+ (.visitEnum av name (descriptor (class ev)) (str ev))
+- (class? ev) (.visit av name (clojure.asm.Type/getType ev))
++ (class? ev) (.visit av name (org.objectweb.asm.Type/getType ev))
+ :else (throw (IllegalArgumentException.
+ (str "Unsupported annotation value: " v " of class " (class ev))))))
+ (seq? v) (let [[nested nv] v
+--- clojure-1.7.0.orig/src/clj/clojure/core_proxy.clj 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/src/clj/clojure/core_proxy.clj 2015-12-09 17:47:21.556152289 -0500
+@@ -11,9 +11,9 @@
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;; proxy ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ (import
+- '(clojure.asm ClassWriter ClassVisitor Opcodes Type)
++ '(org.objectweb.asm ClassWriter ClassVisitor Opcodes Type)
+ '(java.lang.reflect Modifier Constructor)
+- '(clojure.asm.commons Method GeneratorAdapter)
++ '(org.objectweb.asm.commons Method GeneratorAdapter)
+ '(clojure.lang IProxy Reflector DynamicClassLoader IPersistentMap PersistentHashMap RT))
+
+ (defn method-sig [^java.lang.reflect.Method meth]
+--- clojure-1.7.0.orig/src/clj/clojure/genclass.clj 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/src/clj/clojure/genclass.clj 2015-12-09 17:48:30.376239833 -0500
+@@ -9,8 +9,8 @@
+ (in-ns 'clojure.core)
+
+ (import '(java.lang.reflect Modifier Constructor)
+- '(clojure.asm ClassWriter ClassVisitor Opcodes Type)
+- '(clojure.asm.commons Method GeneratorAdapter)
++ '(org.objectweb.asm ClassWriter ClassVisitor Opcodes Type)
++ '(org.objectweb.asm.commons Method GeneratorAdapter)
+ '(clojure.lang IPersistentMap))
+
+ ;(defn method-sig [^java.lang.reflect.Method meth]
+--- clojure-1.7.0.orig/src/jvm/clojure/lang/Compiler.java 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/src/jvm/clojure/lang/Compiler.java 2015-12-09 17:56:08.474634356 -0500
+@@ -12,11 +12,12 @@
+
+ package clojure.lang;
+
+-//*
++/*
+
+-import clojure.asm.*;
+-import clojure.asm.commons.GeneratorAdapter;
+-import clojure.asm.commons.Method;
++import org.objectweb.asm.*;
++import org.objectweb.asm.commons.GeneratorAdapter;
++import org.objectweb.asm.commons.Method;
++*/
+
+ import java.io.*;
+ import java.lang.reflect.Constructor;
+@@ -26,14 +27,15 @@
+ import java.util.regex.Matcher;
+
+ //*/
+-/*
++///*
+
+ import org.objectweb.asm.*;
+ import org.objectweb.asm.commons.Method;
+ import org.objectweb.asm.commons.GeneratorAdapter;
++/*
+ import org.objectweb.asm.util.TraceClassVisitor;
+ import org.objectweb.asm.util.CheckClassAdapter;
+-//*/
++*/
+
+ public class Compiler implements Opcodes{
+
+--- clojure-1.7.0.orig/src/jvm/clojure/lang/Intrinsics.java 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/src/jvm/clojure/lang/Intrinsics.java 2015-12-09 17:58:29.934629288 -0500
+@@ -12,7 +12,7 @@
+
+ package clojure.lang;
+
+-import clojure.asm.Opcodes;
++import org.objectweb.asm.Opcodes;
+
+ public class Intrinsics implements Opcodes{
+ private static Object[] oa(Object... arr){
+--- clojure-1.7.0.orig/src/clj/clojure/reflect/java.clj 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/src/clj/clojure/reflect/java.clj 2015-12-09 18:02:15.637317716 -0500
+@@ -11,7 +11,7 @@
+
+ (require '[clojure.set :as set]
+ '[clojure.string :as str])
+-(import '[clojure.asm ClassReader ClassVisitor Type Opcodes]
++(import '[org.objectweb.asm ClassReader ClassVisitor Type Opcodes]
+ '[java.lang.reflect Modifier]
+ java.io.InputStream)
+
+--- clojure-1.7.0.orig/test/clojure/test_clojure/reflect.clj 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/test/clojure/test_clojure/reflect.clj 2015-12-09 18:04:43.783663964 -0500
+@@ -25,7 +25,7 @@
+
+ (deftest field-descriptor->class-symbol-test
+ (are [s d] (= s (@#'reflect/field-descriptor->class-symbol d))
+- 'clojure.asm.Type<><> "[[Lclojure/asm/Type;"
++ 'org.objectweb.asm.Type<><> "[[Lclojure/asm/Type;"
+ 'int "I"
+ 'java.lang.Object "Ljava.lang.Object;"))
+
+--- clojure-1.7.0.orig/pom.xml 2015-06-30 09:23:20.000000000 -0500
++++ clojure-1.7.0/pom.xml 2015-12-09 18:12:28.005103036 -0500
+@@ -69,6 +69,16 @@
+ </exclusion>
+ </exclusions>
+ </dependency>
++ <dependency>
++ <groupId>org.ow2.asm</groupId>
++ <artifactId>asm</artifactId>
++ <version>5.0.3</version>
++ </dependency>
++ <dependency>
++ <groupId>org.ow2.asm</groupId>
++ <artifactId>asm-commons</artifactId>
++ <version>5.0.3</version>
++ </dependency>
+ </dependencies>
+
+ <build>
diff --git a/libre/clojure/clojure.install b/libre/clojure/clojure.install
new file mode 100644
index 000000000..7102ef726
--- /dev/null
+++ b/libre/clojure/clojure.install
@@ -0,0 +1,5 @@
+post_install() {
+ echo 'Relogin or source /etc/profile.d/clojure.sh'
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/libre/clojure/clojure.sh b/libre/clojure/clojure.sh
new file mode 100644
index 000000000..5fd8395dc
--- /dev/null
+++ b/libre/clojure/clojure.sh
@@ -0,0 +1 @@
+export CLOJURE_HOME=/usr/share/clojure