From 15697b326442d69ef53bd864108f901fbc46482b Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Tue, 31 Jan 2023 23:30:42 +0800 Subject: [PATCH] Resolves: #2160545 Add ecj to RHEL9 --- .gitignore | 3 + 0001-Always-generate-bytecode-debuginfo.patch | 47 +++ 0002-Fix-build-from-source.patch | 19 + MANIFEST.MF | 27 ++ ecj.spec | 376 ++++++++++++++++++ sources | 3 + 6 files changed, 475 insertions(+) create mode 100644 0001-Always-generate-bytecode-debuginfo.patch create mode 100644 0002-Fix-build-from-source.patch create mode 100644 MANIFEST.MF create mode 100644 ecj.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..7561048 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +/ecjsrc-4.20.jar +/ecj-3.27.0.pom +/javax16api.jar diff --git a/0001-Always-generate-bytecode-debuginfo.patch b/0001-Always-generate-bytecode-debuginfo.patch new file mode 100644 index 0000000..6bc2c92 --- /dev/null +++ b/0001-Always-generate-bytecode-debuginfo.patch @@ -0,0 +1,47 @@ +From e7ff390ef777bd818ccc6e6f8f3a56f36020abfe Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Wed, 15 Sep 2021 10:21:53 +0100 +Subject: [PATCH 1/2] Always generate bytecode debuginfo + +When ecj is used to build RPMs +--- + .../jdt/internal/compiler/batch/Main.java | 23 +++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/org/eclipse/jdt/internal/compiler/batch/Main.java b/org/eclipse/jdt/internal/compiler/batch/Main.java +index f77372d..73a0d24 100644 +--- a/org/eclipse/jdt/internal/compiler/batch/Main.java ++++ b/org/eclipse/jdt/internal/compiler/batch/Main.java +@@ -3109,6 +3109,29 @@ public void configure(String[] argv) { + 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); + +-- +2.31.1 + diff --git a/0002-Fix-build-from-source.patch b/0002-Fix-build-from-source.patch new file mode 100644 index 0000000..6c33ab8 --- /dev/null +++ b/0002-Fix-build-from-source.patch @@ -0,0 +1,19 @@ +diff --git a/build.xml b/build.xml +index 229bec2..2037a6f 100644 +--- a/build.xml ++++ b/build.xml +@@ -24,10 +24,10 @@ + + + +- ++ debuglevel="lines,vars,source" ++ debug="true" ++ release="11"> ++ + + + diff --git a/MANIFEST.MF b/MANIFEST.MF new file mode 100644 index 0000000..09a02a7 --- /dev/null +++ b/MANIFEST.MF @@ -0,0 +1,27 @@ +Manifest-Version: 1.0 +Created-By: Maven Archiver 3.5.0 +Build-Jdk-Spec: 11 +Main-Class: org.eclipse.jdt.internal.compiler.batch.Main +Bundle-ManifestVersion: 2 +Bundle-Name: Eclipse Compiler for Java(TM) +Bundle-SymbolicName: org.eclipse.jdt.core.compiler.batch +Bundle-Version: 3.27.0.v20210823-1758 +Bundle-ClassPath: . +Bundle-Vendor: Eclipse.org +Export-Package: org.eclipse.jdt.core,org.eclipse.jdt.core.compiler,org.e + clipse.jdt.internal.antadapter;x-internal:=true,org.eclipse.jdt.interna + l.compiler;x-internal:=true,org.eclipse.jdt.internal.compiler.apt.dispa + tch;x-internal:=true,org.eclipse.jdt.internal.compiler.apt.model;x-inte + rnal:=true,org.eclipse.jdt.internal.compiler.apt.util;x-internal:=true, + org.eclipse.jdt.internal.compiler.ast;x-internal:=true,org.eclipse.jdt. + internal.compiler.batch;x-internal:=true,org.eclipse.jdt.internal.compi + ler.classfmt;x-internal:=true,org.eclipse.jdt.internal.compiler.codegen + ;x-internal:=true,org.eclipse.jdt.internal.compiler.env;x-internal:=tru + e,org.eclipse.jdt.internal.compiler.flow;x-internal:=true,org.eclipse.j + dt.internal.compiler.impl;x-internal:=true,org.eclipse.jdt.internal.com + piler.lookup;x-internal:=true,org.eclipse.jdt.internal.compiler.parser; + x-internal:=true,org.eclipse.jdt.internal.compiler.parser.diagnose;x-in + ternal:=true,org.eclipse.jdt.internal.compiler.problem;x-internal:=true + ,org.eclipse.jdt.internal.compiler.util;x-internal:=true,org.eclipse.jd + t.internal.compiler.tool;x-internal:=true + diff --git a/ecj.spec b/ecj.spec new file mode 100644 index 0000000..abd2a4d --- /dev/null +++ b/ecj.spec @@ -0,0 +1,376 @@ +Epoch: 1 + +%global eclipse_ver 4.20 +%global bundle_ver 3.27.0 +%global jar_ver %{eclipse_ver} +%global drop R-%{jar_ver}-202106111600 + +Summary: Eclipse Compiler for Java +Name: ecj +Version: %{eclipse_ver} +Release: 1%{?dist} +URL: https://www.eclipse.org +License: EPL-2.0 + +Source0: https://download.eclipse.org/eclipse/downloads/drops4/%{drop}/ecjsrc-%{jar_ver}.jar +Source1: https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/%{bundle_ver}/ecj-%{bundle_ver}.pom +# The ecj build does not generate a proper manifest, so use the one from the binary distribution +# Extracted from: https://download.eclipse.org/eclipse/downloads/drops4/%%{drop}/ecj-%%{jar_ver}.jar +Source2: MANIFEST.MF +# Provide API stubs for newer JDKs to allow us to build on the system default JDK where those APIs are not present +# Fetched from: https://git.eclipse.org/c/jdt/eclipse.jdt.core.git/plain/org.eclipse.jdt.compiler.tool/lib/javax16api.jar?h=S4_21_0_RC2a +Source3: javax16api.jar + +# Always generate debug info when building RPMs (Andrew Haley) +Patch0: 0001-Always-generate-bytecode-debuginfo.patch + +# Include java API stubs in build and fix misc other incorrect build flags +Patch1: 0002-Fix-build-from-source.patch + +BuildArch: noarch + +BuildRequires: ant +BuildRequires: javapackages-local +BuildRequires: java-11-openjdk-devel + +%description +ECJ is the Java bytecode compiler of the Eclipse Platform. It is also known as +the JDT Core batch compiler. + +%prep +%autosetup -p1 -c -n %{name}-%{eclipse_ver} + +# Specify encoding +sed -i -e '/compilerarg/s/Xlint:none/Xlint:none -encoding cp1252/' build.xml + +cp %{SOURCE1} pom.xml +mkdir -p scripts/binary/META-INF/ +cp %{SOURCE2} scripts/binary/META-INF/MANIFEST.MF +rm ./META-INF/ECLIPSE_.{SF,RSA} + +# Aliases +%mvn_alias org.eclipse.jdt:ecj org.eclipse.jdt:core org.eclipse.jdt.core.compiler:ecj \ + org.eclipse.tycho:org.eclipse.jdt.core org.eclipse.tycho:org.eclipse.jdt.compiler.apt + +%build +export JAVA_HOME=/usr/lib/jvm/java-11 +ant -Djavaapi=%{SOURCE3} + +%install +%mvn_artifact pom.xml ecj.jar +%mvn_install + +# Install the ecj wrapper script +%jpackage_script org.eclipse.jdt.internal.compiler.batch.Main '' '' ecj ecj true + +# Install manpage +mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 +install -m 644 -p ecj.1 $RPM_BUILD_ROOT%{_mandir}/man1/ecj.1 + +%files -f .mfiles +%license about.html +%{_bindir}/ecj +%{_mandir}/man1/ecj* + +%changelog +* Thu Jan 19 2023 Hui Wang - 1:4.20-1 +- Update to 4.20 + +* Wed Aug 25 2021 Stefan Bluhm - 1:4.19-3 +- Added RHEL8 build. + +* Wed Jul 21 2021 Fedora Release Engineering - 1:4.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Mar 10 2021 Mat Booth - 1:4.19-1 +- Update to latest upstream release + +* Mon Mar 01 2021 Mat Booth - 1:4.18-3 +- Allow building against Java 11 + +* Tue Jan 26 2021 Fedora Release Engineering - 1:4.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jan 12 2021 Alexander Kurtakov 1:4.18-1 +- Update to latest upstream release. + +* Thu Oct 29 2020 Mat Booth - 1:4.17-1 +- Update to latest upstream release + +* Mon Jul 27 2020 Fedora Release Engineering - 1:4.16-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jul 10 2020 Jiri Vanek - 1:4.16-3 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Fri Jun 19 2020 Mat Booth - 1:4.16-2 +- Restore compiler adaptor + +* Thu Jun 18 2020 Mat Booth - 1:4.16-1 +- Update to latest upstream release + +* Fri Mar 20 2020 Mat Booth - 1:4.15-1 +- Update to latest upstream release + +* Tue Jan 28 2020 Fedora Release Engineering - 1:4.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Dec 16 2019 Mat Booth - 1:4.14-2 +- Remove upstream code-signatures + +* Fri Dec 13 2019 Mat Booth - 1:4.14-1 +- Update to latest upstream version + +* Wed Jul 24 2019 Fedora Release Engineering - 1:4.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Jun 29 2019 Mat Booth - 1:4.12-1 +- Update to latest upstream release + +* Thu Mar 07 2019 Mat Booth - 1:4.11-0.1 +- Update to latest release candidate of 4.11 + +* Thu Jan 31 2019 Fedora Release Engineering - 1:4.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Dec 11 2018 Mat Booth - 1:4.10-1 +- Update to 2018-12 release + +* Wed Sep 12 2018 Mat Booth - 1:4.9-1 +- Update to latest release +- Amend license tag + +* Thu Jul 12 2018 Fedora Release Engineering - 1:4.7.3a-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Apr 09 2018 Mat Booth - 1:4.7.3a-1 +- Update to Oxygen.3a release for java 10 support +- Break circular dep on JDT by providing the java API stubs in this package + +* Tue Mar 20 2018 Mat Booth - 1:4.7.3-1 +- Update to Oxygen.3 + +* Wed Feb 07 2018 Fedora Release Engineering - 1:4.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Sep 21 2017 Mat Booth - 1:4.7.1-1 +- Update to Oxygen.1 release + +* Wed Jul 26 2017 Fedora Release Engineering - 1:4.6.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jun 15 2017 Michael Simacek - 1:4.6.3-2 +- Update aliases for jetty + +* Wed Mar 29 2017 Mat Booth - 1:4.6.3-1 +- Update to Neon.3 release + +* Fri Feb 10 2017 Fedora Release Engineering - 1:4.6.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 10 2017 Mat Booth - 1:4.6.2-1 +- Update to Neon.2 release + +* Fri Jul 01 2016 Mat Booth - 1:4.6-1 +- Update to Neon release + +* Tue Apr 26 2016 Mikolaj Izdebski - 4.5.2-3 +- Re-add alias for org.eclipse.jdt:core + +* Fri Apr 22 2016 Mat Booth - 1:4.5.2-2 +- Drop aliases that are now provided by eclipse-jdt + +* Mon Feb 29 2016 Mat Booth - 1:4.5.2-1 +- Update to Mars.2 release + +* Fri Feb 05 2016 Mat Booth - 1:4.5.1-3 +- Allow any compression man pages + +* Wed Feb 03 2016 Fedora Release Engineering - 1:4.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Oct 06 2015 Mat Booth - 1:4.5.1-1 +- Update to Mars.1 release + +* Thu Jul 2 2015 Alexander Kurtakov 1:4.5-1 +- Update to upstream 4.5 release. + +* Wed Jun 17 2015 Fedora Release Engineering - 1:4.4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Mar 30 2015 Mat Booth - 1:4.4.2-1 +- Update to 4.4.2. +- Install with mvn_install +- Add jetty.orbit alias +- Add compiler.apt aliases +- Drop ancient obsoletes/provides on eclipse-ecj +- Use man page from upstream source + +* Thu Jan 8 2015 Alexander Kurtakov 1:4.4.1-1 +- Update to 4.4.1. + +* Thu Jul 3 2014 Alexander Kurtakov 1:4.4.0-1 +- Update to 4.4 final. +- Drop gcj patches as gcj is not in Fedora anymore and ecj now requires 1.6. + +* Thu Jun 12 2014 Alexander Kurtakov 1:4.4.0-0.4.git20140430 +- Add additional depmap for maven. + +* Mon Jun 9 2014 Alexander Kurtakov 1:4.4.0-0.3.git20140430 +- Fix FTBFS. + +* Sat Jun 07 2014 Fedora Release Engineering - 1:4.4.0-0.2.git20140430 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 1 2014 Alexander Kurtakov 1:4.4.0-0.1.git20140430 +- Update to 4.4.0 I-build to make it cope with Java 8. + +* Mon Apr 14 2014 Mat Booth - 1:4.2.1-10 +- Drop gcj AOT-compilation support. +- Obsolete -native sub-package. + +* Wed Oct 09 2013 gil cattaneo 1:4.2.1-9 +- enable build of org/eclipse/jdt/internal/compiler/[apt,tool] + (ant build mode only), required by querydsl +- remove some rpmlint problems (invalid date) + +* Sat Aug 03 2013 Fedora Release Engineering - 1:4.2.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue May 21 2013 Jon VanAlten - 4.2.1-7 +- Add manpage for ecj executable +- Resolves: rhbz#948442 + +* Tue Apr 9 2013 Mikolaj Izdebski - 4.2.1-6 +- Add depmap for org.eclipse.jdt.core.compiler:ecj +- Resolves: rhbz#949938 + +* Wed Mar 06 2013 Karsten Hopp 1:4.2.1-5 +- add BR java-devel for !with_gcjbootstrap + +* Wed Feb 13 2013 Fedora Release Engineering - 1:4.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Oct 29 2012 Jon VanAlten 1:4.2.1-3 +- Patch GCCMain to avoid dummy symbols. + +* Wed Oct 10 2012 Krzysztof Daniel 1:4.2.1-2 +- Add depmap satysfying Tycho req. + +* Sun Jul 29 2012 Jon VanAlten 1:4.2.1-1 +- Update to 4.2.1 upstream version. + +* Wed Jul 18 2012 Fedora Release Engineering - 1:3.4.2-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Apr 18 2012 Alexander Kurtakov 1:3.4.2-13 +- Add missing epoch to native subpackage requires. + +* Tue Apr 17 2012 Alexander Kurtakov 1:3.4.2-12 +- Separate gcj in subpackage. + +* Mon Jan 16 2012 Alexander Kurtakov 1:3.4.2-11 +- Patch pom file to better represent ecj and not jdt.core . +- Guidelines fixes. + +* Fri Jan 13 2012 Fedora Release Engineering - 1:3.4.2-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 1:3.4.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Nov 26 2010 Stanislav Ochotnicky - 1:3.4.2-8 +- Fix add_to_maven_depmap call (Resolves rhbz#655796) + +* Mon Dec 21 2009 Deepak Bhole - 1:3.4.2-7 +- Fix RHBZ# 490936. If CLASSPATH is not set, add . to default classpath. + +* Wed Sep 9 2009 Alexander Kurtakov 1:3.4.2-6 +- Add maven pom and depmaps. + +* Fri Jul 24 2009 Fedora Release Engineering - 1:3.4.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Mar 11 2009 Deepak Bhole 1:3.4.2-4 +- Add patch to generate full debuginfo for ecj itself + +* Tue Mar 10 2009 Deepak Bhole 1:3.4.2-3 +- Add BR for aot-compile-rpm + +* Tue Mar 10 2009 Deepak Bhole 1:3.4.2-2 +- Add BR for ant + +* Fri Mar 6 2009 Andrew Overholt 1:3.4.2-1 +- 3.4.2 + +* Tue Dec 9 2008 Andrew Overholt 1:3.4.1-1 +- 3.4.1 +- Don't conditionalize building of gcj AOT bits (we're only building + this for gcj and IcedTea bootstrapping). + +* Mon Jan 22 2007 Andrew Overholt 3.2.1-1 +- Add eclipse-ecj-gcj.patch. + +* Fri Jan 12 2007 Andrew Overholt 3.2.1-1 +- First version for Fedora 7. +- Add BR: java-devel for jar. + +* Thu Nov 02 2006 Andrew Overholt 1:3.2.1-1jpp +- First version for JPackage. + +* Mon Jul 24 2006 Andrew Overholt 1:3.2.0-1 +- Add versionless ecj.jar symlink in /usr/share/java. + +* Wed Jul 19 2006 Andrew Overholt 1:3.2.0-1 +- 3.2.0. + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Mar 07 2005 Andrew Overholt 1:3.1.0.M4.9 +- Don't build for ppc or ia64. + +* Sun Feb 20 2005 Andrew Overholt 1:3.1.0.M4.6 +- Upgrade back to 3.1M4. +- Don't build for i386 and x86_64. +- Provide eclipse-ecj until we can deprecate this package. + +* Fri Jan 14 2005 Andrew Overholt 3.1.0.M4.4 +- build for all but x86 + +* Thu Jan 13 2005 Andrew Overholt 3.1.0.M4.3 +- build for ppc exclusively + +* Wed Jan 12 2005 Andrew Overholt 3.1.0.M4.2 +- Add RPM_OPT_FLAGS workaround. + +* Tue Jan 11 2005 Andrew Overholt 3.1.0.M4.1 +- New version. + +* Mon Sep 27 2004 Gary Benson 2.1.3-5 +- Rebuild with new katana. + +* Thu Jul 22 2004 Gary Benson 2.1.3-4 +- Build without bootstrap-ant. +- Split out lib-org-eclipse-jdt-internal-compiler.so. + +* Tue Jul 6 2004 Gary Benson 2.1.3-3 +- Fix ecj-devel's dependencies. + +* Wed Jun 9 2004 Gary Benson 2.1.3-2 +- Work around an optimiser failure somewhere in ecj or gcj (#125613). + +* Fri May 28 2004 Gary Benson +- Build with katana. + +* Mon May 24 2004 Gary Benson 2.1.3-1 +- Initial Red Hat Linux build. + +* Mon May 24 2004 Gary Benson +- Upgraded to latest version. + +* Sun Jul 20 2003 Anthony Green +- Add %%doc + +* Fri Jul 18 2003 Anthony Green +- Initial RHUG build. diff --git a/sources b/sources new file mode 100644 index 0000000..d719dde --- /dev/null +++ b/sources @@ -0,0 +1,3 @@ +SHA512 (ecjsrc-4.20.jar) = fb27c0a37ed5cdfdcdbc904d067bfdd0477ddfd873a6cd8477d3b473734fd0e37329f0e9ab85dc5f89994d68d9886a488bd88568bc00e25f54c1a5a468dc1384 +SHA512 (ecj-3.27.0.pom) = 675ab0f5f9a5bb7cc7feb47d98de4623d19a57a89b89d8191e6f7f0e524aae423a7f7fead380b0a58bafab439295ce01eeb442823033d415ac890f6b3ea070a2 +SHA512 (javax16api.jar) = 20bed38ea93b7cb91783333dce0023ce86e4d82a8b88950e3abced0ff6c3e086f3b13c25d6ae1674c8ddb8099be3925c7636ef262171b65e035088f61f5306b0