diff options
author | Patrice Clement <monsieurp@gentoo.org> | 2015-11-01 21:32:31 +0000 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2015-11-01 21:32:31 +0000 |
commit | 52d0cdff64091542e27b945de4f1be716b09a02f (patch) | |
tree | 23742c26bff362aac7ce939c7c93770e9f4784d7 /dev-java | |
parent | x11-libs/cairo: Version bump (diff) | |
download | gentoo-52d0cdff64091542e27b945de4f1be716b09a02f.tar.gz gentoo-52d0cdff64091542e27b945de4f1be716b09a02f.tar.bz2 gentoo-52d0cdff64091542e27b945de4f1be716b09a02f.zip |
dev-java/groovy: Version bump. Fixes security bug 555470.
Package-Manager: portage-2.2.20.1
Signed-off-by: Patrice Clement <monsieurp@gentoo.org>
Diffstat (limited to 'dev-java')
-rw-r--r-- | dev-java/groovy/Manifest | 1 | ||||
-rw-r--r-- | dev-java/groovy/files/groovy-2.4.5-utils.gradle.patch | 116 | ||||
-rw-r--r-- | dev-java/groovy/groovy-2.4.5.ebuild | 133 |
3 files changed, 250 insertions, 0 deletions
diff --git a/dev-java/groovy/Manifest b/dev-java/groovy/Manifest index df6264077a63..d14223eb4f6b 100644 --- a/dev-java/groovy/Manifest +++ b/dev-java/groovy/Manifest @@ -1,2 +1,3 @@ +DIST groovy-2.4.5.zip 10214173 SHA256 6fbbe2c1e16bd1c56b889cbcadff04d055a96568883f885ed904265e4e9d8780 SHA512 055b664d2bc9966f9dd5933ec89f22c28c18323b57db66eeec524c88bdc6ea1090f6f1dd866433d7232d837ca31ca83164d8894c0db1d69e72c7d41f20a8382d WHIRLPOOL c05dcb4afddc9ad217bb99d6cc9618e6a67e7f13f52b99ecc155a9b8e97079dcd8f83402cad61acdbcca4141018965320b8194a84dbf6036f2daf699a2111149 DIST groovy-src-1.7.5.zip 12875363 SHA256 9864b36d681ecc4e4a8f86c8b958203f8e2c01c150a3f992f5f63df552979067 SHA512 fa0f617d1894e6fd7b30216b69dc3060154a31d28a3831e7135b18377c5bc368d193d914d2b77a7daf28498562fb96c04794c874101b23dafb4421e3a1d59404 WHIRLPOOL 478346b89661f6b57cc5740df038e8bf3ced62a84a4de1dea3da94a9519cae6eba43cf583c4a81b2f459f6409a7387c2079098b12495b9f1b669260af4efaccb DIST groovy-src-1.8.5.zip 13131836 SHA256 82f1e45e5886278a4c86ed15dfd90a84b7e43848c72537a235835c7557e8f8cd SHA512 23cddae38b6d0b1b83dae7cf7ebc3fe68f7e8ddb33cd6fa421c0c3c76ca8bf5a8b3fe72cabe915901305f513a2b3269baf205a7a0dd6b1c6f751496d51e0557a WHIRLPOOL 9db6d1da9304e8000de9954faf91d26d76c15e628a25a09c1291afc2ca8b33bbe24d44d891599548df6931db632ae6cd801e83cb05fb6abf33f3282f463a4482 diff --git a/dev-java/groovy/files/groovy-2.4.5-utils.gradle.patch b/dev-java/groovy/files/groovy-2.4.5-utils.gradle.patch new file mode 100644 index 000000000000..6f4638a1bf1d --- /dev/null +++ b/dev-java/groovy/files/groovy-2.4.5-utils.gradle.patch @@ -0,0 +1,116 @@ +--- gradle/utils.gradle.orig 2015-11-01 21:06:26.246486000 +0000 ++++ gradle/utils.gradle 2015-11-01 21:06:57.719486000 +0000 +@@ -16,57 +16,47 @@ + * specific language governing permissions and limitations + * under the License. + */ +-import org.codehaus.groovy.classgen.AnnotationVisitor +-import org.objectweb.asm.ClassWriter +-import org.objectweb.asm.FieldVisitor +-import org.objectweb.asm.Label +-import org.objectweb.asm.MethodVisitor +- +-import static org.objectweb.asm.Opcodes.* +- +-buildscript { +- repositories { +- mavenCentral() +- } +- dependencies { +- classpath "org.ow2.asm:asm:$asmVersion" +- } +-} ++import static org.objectweb.asm.Opcodes.ACC_PUBLIC; ++import static org.objectweb.asm.Opcodes.ACC_STATIC; ++import static org.objectweb.asm.Opcodes.ACC_SUPER; ++import static org.objectweb.asm.Opcodes.ALOAD; ++import static org.objectweb.asm.Opcodes.ATHROW; ++import static org.objectweb.asm.Opcodes.INVOKESPECIAL; ++import static org.objectweb.asm.Opcodes.RETURN; ++import static org.objectweb.asm.Opcodes.V1_5; ++ ++import java.io.File; ++import java.io.FileOutputStream; ++ ++import org.objectweb.asm.ClassWriter; ++import org.objectweb.asm.Label; ++import org.objectweb.asm.MethodVisitor; + +-/** +- * This tasks generates an utility class which allows sneaky throwing. +- */ +-task exceptionUtils { +- ext.classFiles = [ +- "${buildDir}/generated-classes/org/codehaus/groovy/runtime/ExceptionUtils.class", +- "${compileJava.destinationDir}/org/codehaus/groovy/runtime/ExceptionUtils.class"] +- outputs.files classFiles ++public class ExceptionUtils { ++ private final static String gentooClassDestination = "target/classes/org/codehaus/groovy/runtime/ExceptionUtils.class"; + +- doLast { ++ public static void main(String[] args) { + ClassWriter cw = new ClassWriter(0); +- FieldVisitor fv; + MethodVisitor mv; +- AnnotationVisitor av0; +- +- cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, 'org/codehaus/groovy/runtime/ExceptionUtils', null, 'java/lang/Object', null); + +- cw.visitSource('ExceptionUtils.java', null); ++ cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "org/codehaus/groovy/runtime/ExceptionUtils", null, "java/lang/Object", null); ++ cw.visitSource("ExceptionUtils.java", null); + +- mv = cw.visitMethod(ACC_PUBLIC, '<init>', '()V', null, null); ++ mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); + mv.visitCode(); + Label l0 = new Label(); + mv.visitLabel(l0); + mv.visitLineNumber(18, l0); + mv.visitVarInsn(ALOAD, 0); +- mv.visitMethodInsn(INVOKESPECIAL, 'java/lang/Object', '<init>', '()V', false); ++ mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); + mv.visitInsn(RETURN); + Label l1 = new Label(); + mv.visitLabel(l1); +- mv.visitLocalVariable('this', 'Lorg/codehaus/groovy/runtime/ExceptionUtils;', null, l0, l1, 0); ++ mv.visitLocalVariable("this", "Lorg/codehaus/groovy/runtime/ExceptionUtils;", null, l0, l1, 0); + mv.visitMaxs(1, 1); + mv.visitEnd(); + +- mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, 'sneakyThrow', '(Ljava/lang/Throwable;)V', null, null); ++ mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "sneakyThrow", "(Ljava/lang/Throwable;)V", null, null); + mv.visitCode(); + Label l2 = new Label(); + mv.visitLabel(l2); +@@ -75,19 +65,21 @@ + mv.visitInsn(ATHROW); + Label l3 = new Label(); + mv.visitLabel(l3); +- mv.visitLocalVariable('e', 'Ljava/lang/Throwable;', null, l2, l3, 0); ++ mv.visitLocalVariable("e", "Ljava/lang/Throwable;", null, l2, l3, 0); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + cw.visitEnd(); ++ FileOutputStream fos = null; + +- logger.lifecycle('Generating ExceptionUtils') +- classFiles.each { classFile -> +- def output = file(classFile) +- output.parentFile.mkdirs() +- output.withOutputStream { +- it << cw.toByteArray() +- } +- } +- } ++ File f = new File(gentooClassDestination); ++ f.getParentFile().mkdirs(); ++ try { ++ fos = new FileOutputStream(f); ++ fos.write(cw.toByteArray()); ++ fos.close(); ++ } catch (Exception e) { ++ e.printStackTrace(); ++ } ++ } + } diff --git a/dev-java/groovy/groovy-2.4.5.ebuild b/dev-java/groovy/groovy-2.4.5.ebuild new file mode 100644 index 000000000000..62183ff87c6d --- /dev/null +++ b/dev-java/groovy/groovy-2.4.5.ebuild @@ -0,0 +1,133 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +JAVA_PKG_IUSE="doc source" + +inherit java-pkg-2 java-pkg-simple versionator + +MY_PN="${PN^^}" +MY_PV="$(replace_all_version_separators _ ${PV})" +MY_P="${MY_PN}_${MY_PV}" + +DESCRIPTION="A multi-faceted language for the Java platform" +HOMEPAGE="http://www.groovy-lang.org/" +SRC_URI="https://github.com/apache/incubator-${PN}/archive/${MY_P}.zip -> ${P}.zip" +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +IUSE="" + +CDEPEND=" + dev-java/jansi:0 + dev-java/xstream:0 + dev-java/commons-cli:1 + >=dev-java/asm-5.0.3:4 + >=dev-java/antlr-2.7.7-r7:0 +" + +RDEPEND=" + ${CDEPEND} + >=virtual/jre-1.6" +DEPEND=" + ${CDEPEND} + >=virtual/jdk-1.6 + app-arch/unzip" + +JAVA_GENTOO_CLASSPATH=" + asm-4 + antlr + jansi + xstream + commons-cli-1 +" + +S="${WORKDIR}/incubator-${PN}-${MY_P}" + +# ExceptionUtil filename. +EU="ExceptionUtils.java" + +# List of antlr grammar files. +ANTLR_GRAMMAR_FILES=( + org/codehaus/groovy/antlr/groovy.g + org/codehaus/groovy/antlr/java/java.g +) + +# Patches utils.gradle. It basically rewrites ExceptionUtils. +PATCHES=( + "${FILESDIR}"/"${P}-utils.gradle.patch" +) + +# Add target/classes to the CP as we're generating an extra class there. +JAVA_GENTOO_CLASSPATH_EXTRA="target/classes" + +# This function cleans up the source directory. +# We're ONLY interested in the "src/main" directory content and nothing else. +# (for the time being). +groovy_cleanup_source_files() { + ebegin "Cleaning up useless files" + mv src/main "${T}" || die + mv gradle/utils.gradle "${T}" || die + rm -rf * || die + mv "${T}"/main/* . || die + rm -rf "${T}"/main || die + eend $? +} + +java_prepare() { + epatch "${PATCHES[@]}" + groovy_cleanup_source_files +} + +# This function generates the ANTLR grammar files. +generate_antlr_grammar() { + for grammar_file in "${@}"; do + local my_grammar_file=$(basename ${grammar_file}) + + einfo "Generating \"${my_grammar_file}\" grammar file" + local my_grammar_dir=$(dirname ${grammar_file}) + + cd "${S}/${my_grammar_dir}" || die + antlr ${my_grammar_file} || die + + cd "${S}" || die + done +} + +# This function generates ExceptionUtils.class. +# ExceptionUtils is a helper class needed when compiling Groovy 2.x. +# Normally, this class is generated via a Gradle task at compile time. Since we +# don't use Gradle here.. we've translated it into a plain Java file and have +# it generate the same data. +generate_exceptionutils() { + ebegin "Copying ${EU}" + mv "${T}/utils.gradle" "${EU}" || die + eend $? + + ejavac -classpath "$(java-pkg_getjar --build-only asm-4 asm.jar)" ${EU} + + ebegin "Running ${EU%.java}" + $(java-config -J) -classpath "$(java-pkg_getjar --build-only asm-4 asm.jar):." ${EU%.java} || die + eend $? +} + +src_compile() { + generate_antlr_grammar "${ANTLR_GRAMMAR_FILES[@]}" + generate_exceptionutils + java-pkg-simple_src_compile +} + +src_install() { + java-pkg_dolauncher "groovyc" --main org.codehaus.groovy.tools.FileSystemCompiler + java-pkg_dolauncher "groovy" --main groovy.ui.GroovyMain + java-pkg-simple_src_install + + # TODO: groovy console and groovy shell are parts of the "subprojects" + # directory. figure out a way to compile them. :\ + # java-pkg_dolauncher "groovysh" --main groovy.ui.InteractiveShell + # java-pkg_dolauncher "groovyConsole" --main groovy.ui.Console + + # TODO: grape is written in groovy and to compile it, you need .. groovy. + # java-pkg_dolauncher "grape" --main org.codehaus.groovy.tools.GrapeMain +} |