diff --git a/README.md b/README.md index 83e437f..48c78ac 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # eclipse-ecj +ECJ is the Java bytecode compiler of the Eclipse Platform. It is also known as the JDT Core batch compiler. + diff --git a/eclipse-ecj-3.6.pom b/eclipse-ecj-3.6.pom new file mode 100644 index 0000000..e7875bf --- /dev/null +++ b/eclipse-ecj-3.6.pom @@ -0,0 +1,32 @@ + + + + + + 4.0.0 + org.eclipse.jdt.core.compiler + ecj + 3.6 + jar + + Eclipse ECJ + http://www.eclipse.org/jdt/ + + + + Eclipse Public License v1.0 + http://www.eclipse.org/org/documents/epl-v10.php + repo + + + + + http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/ + + + + diff --git a/eclipse-ecj.sh.in b/eclipse-ecj.sh.in new file mode 100644 index 0000000..018999b --- /dev/null +++ b/eclipse-ecj.sh.in @@ -0,0 +1,4 @@ +#!/bin/sh + +CLASSPATH=@JAVADIR@/eclipse-ecj.jar${CLASSPATH:+:}$CLASSPATH \ +gij org.eclipse.jdt.internal.compiler.batch.Main "$@" diff --git a/eclipse-ecj.spec b/eclipse-ecj.spec new file mode 100644 index 0000000..1cf2eb1 --- /dev/null +++ b/eclipse-ecj.spec @@ -0,0 +1,203 @@ +%define antlib %(echo $ANT_HOME/lib) +%define gcjbootstrap 0 +%define javahome %{_jvmdir}/jdk +Name: eclipse-ecj +Version: 3.6 +Release: 6mamba +Summary: Eclipse Compiler for Java +Group: Development/Languages +Vendor: openmamba +Distribution: openmamba +Packager: gil +URL: http://www.eclipse.org +Source0: ftp://rm.mirror.garr.it/mirrors/eclipse/eclipse/downloads/drops/R-%{version}-201006080911/ecjsrc-%{version}.zip +#Source0: http://download.eclipse.org/eclipse/downloads/drops/R-%{version}-200902111700/ecjsrc-%{version}.zip +Source1: java-ecj.sh.in +# cvs -d:pserver:anonymous@sourceware.org:/cvs/rhug export -r eclipse_r34_1 eclipse-gcj +# tar cjf java-ecj-gcj.tar.bz2 eclipse-gcj +Source2: java-ecj-gcj.tar.bz2 +Source3: jdtcoresrc.tar.gz +Source4: eclipse-ecj-%{version}-OSGi_MANIFEST.tar.gz +# from http://repo1.maven.org/maven2/org/eclipse/jdt/core/compiler/ecj/3.5.1/ecj-3.5.1.pom +Source5: eclipse-ecj-%{version}.pom +Source6: eclipse-ecj.sh.in +Patch0: java-ecj-3.4.2-rpmdebuginfo.patch +Patch1: java-ecj-3.4.2-defaultto1.5.patch +Patch2: java-ecj-3.4.2-generatedebuginfo.patch +License: Eclipse Public License Version 1.0 +BuildRequires: apache-ant +%if %gcjbootstrap +BuildRequires: fastjar +BuildRequires: gcc-java +%endif +BuildRequires: java-gcj-compat +BuildRequires: java-junit3 +BuildRequires: jpackage-utils +BuildRequires: zip +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +ECJ is the Java bytecode compiler of the Eclipse Platform. It is also known as the JDT Core batch compiler. + +%package gcj +Summary: GCJ %{name} support +Group: System/Libraries/Java +BuildRequires: java-gcj-compat +BuildRequires: libgcj4-devel +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Requires: java-gcj-compat +Requires: jpackage-utils + +%description gcj +Eclipse Compiler for Java. +This package contains GCJ %{name} support. + +%prep + +%setup -q -c -n %{name}-%{version} +%patch0 -p1 +#%patch1 -p1 +%patch2 -p1 +tar jxf %{S:2} +tar zxf %{S:3} +# Use ECJ for GCJ's bytecode compiler + +cp -pr eclipse-gcj/org/eclipse/jdt/internal/compiler/batch/GCCMain.java org/eclipse/jdt/internal/compiler/batch/ +mkdir -p jdtcoresrc/src/org/eclipse/jdt/internal/compiler/batch/ +mv eclipse-gcj/org/eclipse/jdt/internal/compiler/batch/GCCMain.java jdtcoresrc/src/org/eclipse/jdt/internal/compiler/batch/ +cat eclipse-gcj/gcc.properties >> org/eclipse/jdt/internal/compiler/batch/messages.properties +rm -rf eclipse-gcj + +# JDTCompilerAdapter isn't used by the batch compiler +rm -f org/eclipse/jdt/core/JDTCompilerAdapter.java + +%build +unset JAVA_HOME +export JAVA_HOME=%javahome +%if %gcjbootstrap + for f in `find -name '*.java' | cut -c 3- | LC_ALL=C sort`; do + gcj -Wno-deprecated -C $f + done + + find -name '*.class' -or -name '*.properties' -or -name '*.rsc' | xargs fastjar cf ecj-%{version}.jar +%else + ORIGCLASSPATH=$CLASSPATH + ant -DcompilerArg="-encoding ISO-8859-1 -nowarn" -buildfile jdtcoresrc/compilejdtcorewithjavac.xml +# 2. Use this ecj to rebuild itself + export CLASSPATH=`pwd`/jdtcoresrc/ecj.jar:$ORIGCLASSPATH + ant -DcompilerArg="-encoding ISO-8859-1 -nowarn" -buildfile jdtcoresrc/compilejdtcore.xml +%endif + +mkdir temp +cd temp +%javahome/bin/jar -xf ../ecj.jar +rm -rf ../ecj.jar META-INF +cp -pr ../org/eclipse/jdt/internal/compiler/batch/messages.properties org/eclipse/jdt/internal/compiler/batch/ +%javahome/bin/jar -cMf ../ecj.jar * +cd .. +tar -xf %{S:4} +touch META-INF/MANIFEST.MF +touch META-INF/services/javax.tools.JavaCompiler +zip -u ecj.jar META-INF/MANIFEST.MF META-INF/services/javax.tools.JavaCompiler + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +mkdir -p %{buildroot}%{_javadir} +install -m 644 ecj.jar %{buildroot}%{_javadir}/ecj-%{version}.jar + +mkdir -p %{buildroot}%{antlib} + +pushd %{buildroot}%{_javadir} +# ln -s ecj-%{version}.jar ecj.jar + ln -s ecj-%{version}.jar eclipse-ecj-%{version}.jar + ln -s eclipse-ecj-%{version}.jar eclipse-ecj.jar + ln -s ecj-%{version}.jar jdtcore.jar + ln -s ../../java/ecj-%{version}.jar %{buildroot}%{antlib}/ecj-%{version}.jar +popd + +mkdir -p %{buildroot}%{_bindir} +install -pm 755 %{S:6} %{buildroot}%{_bindir}/ecj +sed -i "s:@JAVADIR@:%{_javadir}:" %{buildroot}%{_bindir}/ecj + +mkdir -p %{buildroot}%{_datadir}/maven2/poms +install -m 644 %{S:5} %{buildroot}%{_datadir}/maven2/poms/JPP-eclipse-ecj.pom +%add_to_maven_depmap org.eclipse.jdt.core.compiler ecj %{version} JPP eclipse-ecj + +%{_bindir}/aot-compile-rpm + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%files +%defattr(-,root,root) +%{_bindir}/ecj +%{_javadir}/ecj-%{version}.jar +#%{_javadir}/ecj.jar +%{_javadir}/eclipse-ecj-%{version}.jar +%{_javadir}/eclipse-ecj.jar +%{_javadir}/jdtcore.jar +%{antlib}/ecj-%{version}.jar +%{_mavendepmapfragdir} +%{_datadir}/maven2/poms +%doc about.html + +%post gcj +/sbin/ldconfig +if [ -x %{_bindir}/rebuild-gcj-db ]; then + %{_bindir}/rebuild-gcj-db +fi + +%postun gcj +/sbin/ldconfig +if [ -x %{_bindir}/rebuild-gcj-db ]; then + %{_bindir}/rebuild-gcj-db +fi + +%files gcj +%defattr(-,root,root) +%{_libdir}/gcj/eclipse-ecj/ecj-*.jar.db +%{_libdir}/gcj/eclipse-ecj/ecj-*.jar.so + +%changelog +* Fri Feb 25 2011 gil 3.6-6mamba +- rebuilt with java-gcj-compat 1.0.80-20mamba support + +* Thu Jan 06 2011 gil 3.6-5mamba +- rebuilt + +* Thu Jan 06 2011 gil 3.6-4mamba +- edit spec file + +* Thu Jan 06 2011 gil 3.6-3mamba +- edit eclipse-ecj.sh.in + +* Sun Nov 28 2010 gil 3.6-2mamba +- rebuilt devel + +* Sat Jul 10 2010 gil 3.6-1mamba +- update to 3.6 + +* Wed May 19 2010 gil 3.5.2-4mamba +- edit script + +* Wed May 19 2010 gil 3.5.2-3mamba +- added: maven pom + +* Thu Apr 22 2010 gil 3.5.2-2mamba +- added: OSGi MANIFEST + +* Wed Mar 17 2010 gil 3.5.2-1mamba +- update to 3.5.2 + +* Sun Sep 13 2009 gil 3.5-1mamba +- update to 3.5 + +* Sat Apr 04 2009 gil 3.4.2-2mamba +- rebuilt + +* Fri Mar 13 2009 gil 3.4.2-1mamba +- renamed eclipse-ecj + +* Fri Mar 13 2009 gil 3.4.2-1mamba +- package created by autospec diff --git a/java-ecj-3.4.2-defaultto1.5.patch b/java-ecj-3.4.2-defaultto1.5.patch new file mode 100644 index 0000000..d1f3d6d --- /dev/null +++ b/java-ecj-3.4.2-defaultto1.5.patch @@ -0,0 +1,15 @@ +--- java-ecj-3.4.2/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java 2008-04-14 15:41:34.000000000 +0200 ++++ java-ecj-3.4.2/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java-gil 2009-03-13 05:07:28.000000000 +0100 +@@ -253,9 +253,9 @@ + // By default only lines and source attributes are generated. + public int produceDebugAttributes = ClassFileConstants.ATTR_SOURCE | ClassFileConstants.ATTR_LINES; + +- public long complianceLevel = ClassFileConstants.JDK1_4; // by default be compliant with 1.4 +- public long sourceLevel = ClassFileConstants.JDK1_3; //1.3 source behavior by default +- public long targetJDK = ClassFileConstants.JDK1_2; // default generates for JVM1.2 ++ public long complianceLevel = ClassFileConstants.JDK1_5; // by default be compliant with 1.4 ++ public long sourceLevel = ClassFileConstants.JDK1_5; //1.3 source behavior by default ++ public long targetJDK = ClassFileConstants.JDK1_5; // default generates for JVM1.2 + + // source encoding format + public String defaultEncoding = null; // will use the platform default encoding diff --git a/java-ecj-3.4.2-generatedebuginfo.patch b/java-ecj-3.4.2-generatedebuginfo.patch new file mode 100644 index 0000000..87b62a0 --- /dev/null +++ b/java-ecj-3.4.2-generatedebuginfo.patch @@ -0,0 +1,20 @@ +--- java-ecj-3.4.2/build.xml 2007-02-23 15:17:54.000000000 +0100 ++++ java-ecj-3.4.2/build.xml-gil 2009-03-13 05:13:49.000000000 +0100 +@@ -10,7 +10,7 @@ + + + +@@ -18,7 +18,7 @@ + + + diff --git a/java-ecj-3.4.2-rpmdebuginfo.patch b/java-ecj-3.4.2-rpmdebuginfo.patch new file mode 100644 index 0000000..ebd0dd6 --- /dev/null +++ b/java-ecj-3.4.2-rpmdebuginfo.patch @@ -0,0 +1,32 @@ +--- java-ecj-3.4.2/org/eclipse/jdt/internal/compiler/batch/Main.java 2008-04-21 11:01:00.000000000 +0200 ++++ java-ecj-3.4.2/org/eclipse/jdt/internal/compiler/batch/Main.java-gil 2009-03-13 05:20:09.000000000 +0100 +@@ -2609,6 +2609,29 @@ + this.options.put(CompilerOptions.OPTION_Process_Annotations, CompilerOptions.ENABLED); + } + ++ { ++ // If we're building an RPM, force full debugging info to ++ // be generated, no matter what options have been passed ++ // by Ant. This is something of a kludge, but it is far ++ // better than the alternative, which is having class ++ // files with debug info mysteriously missing. ++ ++ String RpmPackageName = System.getenv("RPM_PACKAGE_NAME"); ++ String RpmArch = System.getenv("RPM_ARCH"); ++ String RpmBuildRoot = System.getenv("RPM_BUILD_ROOT"); ++ if (RpmPackageName != null && RpmArch != null && RpmBuildRoot != null) { ++ this.options.put( ++ CompilerOptions.OPTION_LocalVariableAttribute, ++ CompilerOptions.GENERATE); ++ this.options.put( ++ CompilerOptions.OPTION_LineNumberAttribute, ++ CompilerOptions.GENERATE); ++ this.options.put( ++ CompilerOptions.OPTION_SourceFileAttribute, ++ CompilerOptions.GENERATE); ++ } ++ } ++ + this.logger.logCommandLineArguments(newCommandLineArgs); + this.logger.logOptions(this.options); + diff --git a/java-ecj.sh.in b/java-ecj.sh.in new file mode 100644 index 0000000..1b2752d --- /dev/null +++ b/java-ecj.sh.in @@ -0,0 +1,4 @@ +#!/bin/sh + +CLASSPATH=@JAVADIR@/ecj.jar${CLASSPATH:+:}$CLASSPATH \ +java org.eclipse.jdt.internal.compiler.batch.Main "$@"