# Conditionals to help breaking lombok <-> lombok.patcher dependency cycle %if 0%{?fedora} %bcond_with patcher %endif %global patcher_version 0.20 Name: lombok Version: 1.16.4 Release: 1%{?dist} Summary: Very spicy additions to the Java programming language License: MIT URL: http://projectlombok.org/ Source0: https://github.com/rzwitserloot/lombok/archive/v%{version}.tar.gz %if %{without patcher} Source1: https://github.com/rzwitserloot/lombok.patcher/archive/v%{patcher_version}.tar.gz %endif Source2: lombok.bnd Source3: lombok-utils.bnd Patch0: lombok-1.16.4-Java8c.patch BuildRequires: aqute-bnd BuildRequires: eclipse-platform BuildRequires: java-devel %if %{with patcher} BuildRequires: lombok-patcher %endif BuildRequires: maven-local # https://gil.fedorapeople.org/zwitserloot-cmdreader-1.5-1.fc20.src.rpm BuildRequires: mvn(com.zwitserloot:cmdreader) BuildRequires: mvn(net.java.dev.jna:jna) BuildRequires: mvn(org.eclipse.osgi:org.eclipse.osgi) # https://gil.fedorapeople.org/spi-0.2.7-0.1.SNAPSHOT.fc20.src.rpm BuildRequires: mvn(org.mangosdk.spi:spi) BuildRequires: mvn(org.ow2.asm:asm) BuildRequires: mvn(org.ow2.asm:asm-commons) BuildRequires: mvn(org.ow2.asm:asm-tree) BuildArch: noarch %description Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code. %package javadoc Summary: Javadoc for %{name} %description javadoc This package contains javadoc for %{name}. %prep %setup -q -n %{name}-%{version} find -name "*.class" -print -delete find -name "*.dll" -print -delete find -name "*.exe" -print -delete find -name "*.jar" -print -delete find -name "*.js" -print -delete %patch0 -p1 # package lombok.patcher does not exist %if %{without patcher} tar -xf %{SOURCE1} mv %{name}.patcher-%{patcher_version}/src/patcher . mv %{name}.patcher-%{patcher_version}/src/injector . %endif sed 's/@VERSION@/%{version}/' pom.xml sed 's/@VERSION@/%{version}/' utils-pom.xml sed 's/@VERSION@/%{version}/' <%{SOURCE2} >lombok.bnd sed 's/@VERSION@/%{version}/' <%{SOURCE3} >lombok-utils.bnd # Customize pom files %pom_add_dep org.mangosdk.spi:spi:0.2.7 %pom_add_dep com.zwitserloot:cmdreader:1.5 #%% pom_add_dep com.sun:tools:1.8.0 #%% pom_add_dep org.eclipse.jdt:core:3.8.0.v_C03 %pom_add_dep org.eclipse.osgi:org.eclipse.osgi:3.6.0.v20100517 %pom_add_dep org.ow2.asm:asm-tree:5.0.1 %pom_add_dep org.ow2.asm:asm-commons:5.0.1 %pom_add_dep org.ow2.asm:asm:5.0.1 %pom_add_dep net.java.dev.jna:jna:3.2.2 %pom_add_dep org.projectlombok:lombok-utils:%{version} %pom_add_dep org.eclipse.jdt:core:3.8.0.v_C03 utils-pom.xml %pom_add_dep com.sun:tools:1.8.0 utils-pom.xml native2ascii -encoding UTF8 src/core/lombok/package-info.java \ src/core/lombok/package-info.java # used by Javac{6.7}BaseFileObjectWrapper # These are stub versions of various bits of javac-internal API # (for various different versions of javac). Lombok is compiled against these. # src/javac-only-stubs # src/stubs # src/stubsstubs # src/stubs/com/sun/tools/javac/file/BaseFileObject.java # src/stubs/com/sun/tools/javac/util/BaseFileObject.java sed -i "s|return new Javac6BaseFileObjectWrapper(fileObject);|return null;|" \ src/core/lombok/javac/apt/LombokFileObjects.java sed -i "s|return new Javac7BaseFileObjectWrapper(fileObject);|return null;|" \ src/core/lombok/javac/apt/LombokFileObjects.java %build CLASSPATH=$CLASSPATH:$(build-classpath eclipse/jdt.core) export CLASSPATH=$CLASSPATH:$PWD/classes-utils:%{_jvmdir}/java-1.8.0/lib/tools.jar mkdir -p classes-utils UTILS_BUILD_SRC="$(find src/utils -type f \ ! -path 'src/utils/lombok/javac/java6/*' \ ! -path 'src/utils/lombok/javac/java7/*')" %{_jvmdir}/java-1.8.0/bin/javac -d classes-utils -classpath $CLASSPATH $UTILS_BUILD_SRC BUILD_SRC="$(find src/core -type f ! -name singulars.txt \ ! -name Main.java \ ! -name CreateLombokRuntimeApp.java \ ! -name PoolConstantsApp.java \ ! -name PostCompilerApp.java \ ! -name SneakyThrowsRemover.java \ ! -name PreventNullAnalysisRemover.java \ ! -name AsmUtil.java \ ! -name PublicApiCreatorApp.java \ ! -name Javac6BaseFileObjectWrapper.java \ ! -name Javac7BaseFileObjectWrapper.java) \ %if %{without patcher} injector/lombok/patcher/inject/LiveInjector.java \ patcher/lombok/patcher/ClassRootFinder.java \ patcher/lombok/patcher/Symbols.java \ %endif src/core/lombok/javac/apt/InterceptingJavaFileManager.java \ src/core/lombok/javac/apt/LombokFileObjects.java \ src/core/lombok/javac/apt/LombokFileObject.java \ src/core/lombok/javac/apt/Processor.java \ src/delombok/lombok/delombok/FormatPreferences.java \ src/delombok/lombok/delombok/LombokOptionsFactory.java \ src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java" mkdir -p classes CLASSPATH=$CLASSPATH:$(ls %{_libdir}/eclipse/plugins/org.eclipse.core.jobs_*.jar) CLASSPATH=$CLASSPATH:$(ls %{_libdir}/eclipse/plugins/org.eclipse.core.resources_*.jar) CLASSPATH=$CLASSPATH:$(ls %{_libdir}/eclipse/plugins/org.eclipse.core.runtime_*.jar) CLASSPATH=$CLASSPATH:$(ls %{_libdir}/eclipse/plugins/org.eclipse.equinox.common_*.jar) %if %{with patcher} CLASSPATH=$CLASSPATH:$(build-classpath lombok-patcher) %endif CLASSPATH=$CLASSPATH:$(build-classpath eclipse/osgi spi zwitserloot-cmdreader jna objectweb-asm/asm) export CLASSPATH=$CLASSPATH:$PWD/classes:$PWD/classes-utils %{_jvmdir}/java-1.8.0/bin/javac -d classes -classpath $CLASSPATH $BUILD_SRC cp -p src/core/lombok/core/handlers/singulars.txt \ classes/lombok/core/handlers/ echo lombok.core.AnnotationProcessor > classes/META-INF/services/javax.annotation.processing.Processor ( cd classes-utils %{_jvmdir}/java-1.8.0/bin/jar -cf ../%{name}-utils.jar * ) cp -p AUTHORS classes/ cp -p LICENSE classes/ cp -p doc/changelog.markdown classes/changelog.txt echo `date +%Y-%m-%d` > classes/release-timestamp.txt ( cd classes %{_jvmdir}/java-1.8.0/bin/jar -cf ../%{name}.jar * ) mkdir -p docs %{_jvmdir}/java-1.8.0/bin/javadoc -d docs -classpath $CLASSPATH $BUILD_SRC $UTILS_BUILD_SRC # Generate OSGi manifest %{_jvmdir}/java-1.8.0/bin/java -jar $(build-classpath aqute-bnd) wrap -properties %{name}-utils.bnd %{name}-utils.jar %{_jvmdir}/java-1.8.0/bin/java -jar $(build-classpath aqute-bnd) wrap -properties %{name}.bnd %{name}.jar mv %{name}-utils.bar %{name}-utils.jar mv %{name}.bar %{name}.jar %install %mvn_artifact utils-pom.xml %{name}-utils.jar %mvn_artifact pom.xml %{name}.jar %mvn_install -J docs %files -f .mfiles %doc README %doc doc/changelog.markdown %doc doc/experiences.txt %doc doc/PlannedExtensions.txt %license LICENSE %files javadoc -f .mfiles-javadoc %license LICENSE %changelog * Tue Jun 02 2015 gil cattaneo 1.16.4-1 - update to 1.16.4 * Tue Mar 03 2015 gil cattaneo 1.16.2-1 - initial rpm