Make java 9 api stubs available for use

Migrate away from deprecated maven depmap macros
This commit is contained in:
Mat Booth 2017-11-20 14:01:19 +00:00
parent 53f7c532a2
commit d4a43f6b61
1 changed files with 70 additions and 42 deletions

View File

@ -38,7 +38,7 @@ Epoch: 1
Summary: An open, extensible IDE
Name: eclipse
Version: 4.7.1
Release: 7%{?dist}
Release: 8%{?dist}
License: EPL
URL: http://www.eclipse.org/
@ -600,14 +600,19 @@ for f in rt.equinox.bundles/bundles/org.eclipse.equinox.security.linux.*/META-IN
echo -e "Eclipse-BundleShape: dir\n\n" >> $f;
done
%if 0%{?rhel}
# Manually place rhino at correction location in reactor cache
mkdir rhino
pushd rhino
xmvn -B -o install:install-file -Dfile=%{_root_datadir}/java/rhino.jar -Dpackaging=jar \
-DgroupId=org.mozilla -DartifactId=rhino -Dversion=1.7.7.1
# Java 9 API stubs must be available at build time
mkdir java9api
pushd java9api
xmvn -B -o install:install-file -Dfile=../eclipse.jdt.core/org.eclipse.jdt.compiler.apt/lib/java9api.jar \
-Dpackaging=jar -DgroupId=org.eclipse -DartifactId=java9api -Dversion=9
popd
%endif
# Add dep on Java 9 API stubs when compiling with JDT
%pom_xpath_inject "pom:pluginManagement/pom:plugins/pom:plugin[pom:artifactId='tycho-compiler-plugin']/pom:dependencies" \
"<dependency><groupId>org.eclipse</groupId><artifactId>java9api</artifactId><version>9</version></dependency>" eclipse-platform-parent
# Make Java 9 API stubs available for other packages
%mvn_artifact "org.eclipse:java9api:jar:9" eclipse.jdt.core/org.eclipse.jdt.compiler.apt/lib/java9api.jar
# Build fake ant bundle that contains symlinks to system jars
dependencies/fake_ant_dependency.sh
@ -669,6 +674,7 @@ ln -s %{_javadir}/osgi-annotation/osgi.annotation.jar rt.equinox.bundles/bundles
%mvn_package "org.eclipse.pde{,.ui,.feature}:" pde
%mvn_package "org.eclipse.ui:org.eclipse.ui.{views.log,trace}" pde
%mvn_package "org.eclipse.sdk{,.feature}:" sdk
%mvn_package "org.eclipse:java9api" jdt
%mvn_package ":" __noinstall
%build
@ -791,58 +797,76 @@ popd
#installation itself - copy it into right location
rsync -vrpl eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.eclipse.platform.ide/linux/gtk/%{eclipse_arch}/eclipse \
$RPM_BUILD_ROOT%{_prefix}/lib
# SWT is a directory, but we need to provide jars for others that depend on it
pushd $RPM_BUILD_ROOT/%{_eclipsedir}/plugins
SWT_JAR=$(ls | grep swt.gtk.linux)
(cd ${SWT_JAR} && zip -r "../../swt.jar" * )
popd
# Symlink SWT jar
pushd $RPM_BUILD_ROOT/%{_jnidir}/
ln -s $(abs2rel %{_eclipsedir}/swt.jar %{_jnidir})
popd
%{buildroot}%{_prefix}/lib
# Symlink eclipse binary
pushd $RPM_BUILD_ROOT%{_bindir}
pushd %{buildroot}%{_bindir}
ln -s %{_eclipsedir}/eclipse
popd
# Symlink eclipse ini
pushd $RPM_BUILD_ROOT/%{_sysconfdir}/
pushd %{buildroot}/%{_sysconfdir}/
ln -s %{_eclipsedir}/eclipse.ini
popd
# List jars to be symlinked into javadir
pushd $RPM_BUILD_ROOT%{_eclipsedir}/plugins
pushd %{buildroot}%{_eclipsedir}/plugins
EQUINOX_JARS=$(ls . | grep -P '^org.eclipse.equinox(?!.*\.ui[\._])' | sed -e 's|^org\.eclipse\.\(.*\)_.*|\1|')
OSGI_JARS=$(ls . | grep '^org.eclipse.osgi' | sed -e 's|^org\.eclipse\.\(.*\)_.*|\1|')
popd
# Symlink jars into javadir
for J in $EQUINOX_JARS $OSGI_JARS core.contenttype core.jobs core.net core.runtime ; do
pushd $RPM_BUILD_ROOT%{_javadir}/eclipse
DIR=%{?scl:../../../../}../../../..%{_eclipsedir}
[ -e "`ls $DIR/plugins/org.eclipse.${J}_*.jar`" ] && ln -s $DIR/plugins/org.eclipse.${J}_*.jar ${J}.jar
popd
# Install pom file if there is one
if [ -e "externalpoms/org.eclipse.${J}.pom" ] ; then
VER=$(echo $RPM_BUILD_ROOT%{_eclipsedir}/plugins/org.eclipse.${J}_*.jar | sed -e "s/.*${J}_\(.*\)\.jar/\1/")
sed -i -e "s/@VERSION@/$VER/" externalpoms/org.eclipse.${J}.pom
install -m 0644 externalpoms/org.eclipse.${J}.pom $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.eclipse-${J}.pom
location=%{_eclipsedir}/plugins
while [ "$location" != "/" ] ; do
location=$(dirname $location)
updir="$updir../"
done
pushd %{buildroot}%{_javadir}/eclipse
for J in $EQUINOX_JARS core.contenttype core.jobs core.net core.runtime ; do
DIR=$updir%{_eclipsedir}/plugins
if [ "$J" != "equinox.http.servlet" ] ; then
[ -e "`ls $DIR/org.eclipse.${J}_*.jar`" ] && ln -s $DIR/org.eclipse.${J}_*.jar ${J}.jar
fi
done
popd
# Generate addition Maven metadata
rm -rf .xmvn/ .xmvn-reactor
%mvn_package "org.eclipse.osgi:" equinox-osgi
%mvn_package "org.eclipse.equinox.http:" platform
%mvn_package "org.eclipse.swt:" swt
# Install Maven metadata for OSGi jars
for J in $OSGI_JARS ; do
JAR=%{buildroot}%{_eclipsedir}/plugins/org.eclipse.${J}_*.jar
VER=$(echo $JAR | sed -e "s/.*${J}_\(.*\)\.jar/\1/")
%mvn_artifact "org.eclipse.osgi:$J:jar:$VER" $JAR
if [ "$J" = "osgi" ] ; then
%mvn_alias "org.eclipse.osgi:$J" "org.eclipse.osgi:org.eclipse.$J" "org.eclipse.tycho:org.eclipse.$J" "org.eclipse:$J"
else
%mvn_alias "org.eclipse.osgi:$J" "org.eclipse.osgi:org.eclipse.$J" "org.eclipse.tycho:org.eclipse.$J"
fi
done
# Install Maven metadata for OSGi jars
%add_maven_depmap JPP.eclipse-osgi.pom eclipse/osgi.jar -a "org.eclipse:osgi,org.eclipse.tycho:org.eclipse.osgi" -f equinox-osgi
%add_maven_depmap JPP.eclipse-osgi.compatibility.state.pom eclipse/osgi.compatibility.state.jar -a "org.eclipse.osgi:compatibility.state,org.eclipse.tycho:org.eclipse.osgi.compatibility.state" -f equinox-osgi
%add_maven_depmap JPP.eclipse-osgi.services.pom eclipse/osgi.services.jar -a "org.eclipse.osgi:services" -f equinox-osgi
%add_maven_depmap JPP.eclipse-osgi.util.pom eclipse/osgi.util.jar -a "org.eclipse.osgi:util" -f equinox-osgi
%add_maven_depmap JPP.eclipse-equinox.http.servlet.pom eclipse/equinox.http.servlet.jar -a "org.eclipse.equinox.http:servlet" -f platform
# Maven metadata for SWT (no POM)
VER=$(echo $RPM_BUILD_ROOT%{_eclipsedir}/plugins/org.eclipse.swt_*.jar | sed -e "s/.*_\(.*\)\.jar/\1/")
%add_maven_depmap org.eclipse.swt:org.eclipse.swt:$VER swt.jar -a org.eclipse.swt:swt -f swt
# Install Maven metadata for Equinox HTTP Servlet
JAR=%{buildroot}%{_eclipsedir}/plugins/org.eclipse.equinox.http.servlet_*.jar
VER=$(echo $JAR | sed -e "s/.*_\(.*\)\.jar/\1/")
%mvn_artifact "org.eclipse.equinox.http:equinox.http.servlet:jar:$VER" $JAR
%mvn_alias "org.eclipse.equinox.http:equinox.http.servlet" "org.eclipse.equinox.http:servlet"
# Install Maven metadata for SWT
JAR=%{buildroot}%{_eclipsedir}/plugins/org.eclipse.swt_*.jar
VER=$(echo $JAR | sed -e "s/.*_\(.*\)\.jar/\1/")
%mvn_artifact "org.eclipse.swt:org.eclipse.swt:jar:$VER" ./eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.%{eclipse_arch}/target/org.eclipse.swt.gtk.linux.%{eclipse_arch}-*-SNAPSHOT.jar
%mvn_alias "org.eclipse.swt:org.eclipse.swt" "org.eclipse.swt:swt"
%mvn_file "org.eclipse.swt:org.eclipse.swt" swt
%mvn_install
# Symlink SWT jar
pushd %{buildroot}/%{_eclipsedir}/
ln -s $(abs2rel %{_jnidir}/swt.jar %{_eclipsedir})
popd
# Tests framework
unzip eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests/target/eclipse-junit-tests-bundle.zip \
@ -1083,6 +1107,10 @@ fi
%{_eclipsedir}/plugins/org.eclipse.osgi.util_*
%changelog
* Fri Nov 17 2017 Mat Booth <mat.booth@redhat.com> - 1:4.7.1-8
- Make java 9 api stubs available for use
- Migrate away from deprecated maven depmap macros
* Wed Oct 18 2017 Mat Booth <mat.booth@redhat.com> - 1:4.7.1-7
- Update to 4.7.1a release