%define java_ver 1.5.0 %define java_build_ver %{java_ver}.0 %define origin gcj %define gcj_sover 17 %define gcj_ver 6.4.0 %define gcj_libver %{gcj_ver}-%{gcj_sover} %define gcj_dir java-%{java_ver}-gcj-%{java_build_ver} %define java_dir %{_jvmdir}/%{gcj_dir} %define jredir %{java_dir}/jre %define sdklnk jdk-%{origin} %define jrelnk jre-%{origin} %define jvmjardir %{_jvmjardir}/%{gcj_dir} %define bootstrap 0 %ifnarch arm %define with_ecj 1 %else %define with_ecj 0 %endif %if "%{stage1}" != "1" %define with_openjdk 1 %else %define with_openjdk 0 %endif Name: java-gcj-compat Version: 1.0.80 Epoch: 1 Release: 46mamba Summary: A Java compatible runtime and build environment based on gcj Group: Development/Languages Vendor: openmamba Distribution: openmamba Packager: Silvan Calarco URL: ftp://sources.redhat.com/pub Source0: ftp://sources.redhat.com/pub/rhug/%{name}-%{version}.tar.gz Source1: javac-gcj-wrapper Source2: javac-ecj-wrapper Source3: javadoc-workaround.patch License: GPL BuildRoot: %{_tmppath}/%{name}-%{version}-root ## AUTOBUILDREQ-BEGIN BuildRequires: libpython-devel ## AUTOBUILDREQ-END BuildRequires: libgcj4-devel = %{gcj_ver} BuildRequires: gcc6-java = %{gcj_ver} BuildRequires: libgcj4-devel = %{gcj_ver} %if "%{stage1}" != "1" BuildRequires: gjdoc >= 0.7.5 %endif BuildRequires: jpackage-utils BuildRequires: ca-certificates BuildRequires: openssl BuildRequires: perl %if %{with_openjdk} # required for javadoc BuildRequires: java-openjdk %endif %if %{?with_ecj} BuildRequires: eclipse-ecj Requires: eclipse-ecj %endif Requires: sinjdoc Requires: gcc6-java = %{gcj_ver} Requires: libgcj4-devel = %{gcj_ver} Requires: gjdoc >= 0.7.5 Requires: %{name}-runtime == %{?epoch:%epoch:}%{version}-%{release} Requires: %{name}-python == %{?epoch:%epoch:}%{version}-%{release} Requires: fastjar Requires: libgcj4 = %{gcj_ver} Requires: gcc6-java = %{gcj_ver} Requires: %{_libdir}/libgcj.so.%{gcj_sover} Provides: jdk %description A Java compatible runtime and build environment based on gcj. %package runtime Summary: A Java compatible runtime environment based on gcj Group: System/Libraries Requires: libgcj4 = %{gcj_ver} Requires: %{_libdir}/libgcj.so.%{gcj_sover} Provides: jre %description runtime A Java compatible runtime environment based on gcj. %package source Summary: Source files for libgcj4 Group: Development/Languages Requires: libgcj4 >= %{gcj_ver} Requires: %{name} == %{?epoch:%epoch:}%{version}-%{release} %description source This package installs a src.zip symbolic link that points to a specific version of the libgcj sources. %package python Summary: Python bindings for the gcj based Java compatible environment Group: System/Libraries Requires: libgcj4 >= %{gcj_ver} Requires: %{name} == %{?epoch:%epoch:}%{version}-%{release} %description python Python bindings for the gcj based Java compatible environment. %if %{with_openjdk} %package javadoc Summary: API documentation for libgcj4 Group: Documentation Requires: %{name} == %{?epoch:%epoch:}%{version}-%{release} %description javadoc This package installs Javadoc API documentation for libgcj4. %endif %prep %setup -q %build %configure %make %install [ "%{buildroot}" != / ] && rm -rf %{buildroot} %makeinstall rm -f %{buildroot}%{java_dir}/bin/javac %if !%with_ecj install -m 0755 %{SOURCE1} %{buildroot}%{java_dir}/bin/javac %else install -m 0755 %{SOURCE2} %{buildroot}%{java_dir}/bin/javac %endif #ln -sf %{_bindir}/gnative2ascii %{buildroot}%{java_dir}/bin/native2ascii #make symlink to gcj library %ifarch %{ix86} rmdir %{buildroot}%{java_dir}/jre/lib/i386 ln -s ../../../../gcj-%{gcj_libver} %{buildroot}%{java_dir}/jre/lib/i386 %endif %ifarch arm ln -s ../../../../gcj-%{gcj_libver} %{buildroot}%{java_dir}/jre/lib/arm %endif install -d -m 755 %{buildroot}%{java_dir}/include/linux/ ln -s ../../../gcc/%{_host}/%{gcj_ver}/include/jawt.h %{buildroot}%{java_dir}/include/ ln -s ../../../gcc/%{_host}/%{gcj_ver}/include/jni.h %{buildroot}%{java_dir}/include/ ln -s ../../../../gcc/%{_host}/%{gcj_ver}/include/jawt_md.h %{buildroot}%{java_dir}/include/linux/ ln -s ../../../../gcc/%{_host}/%{gcj_ver}/include/jni_md.h %{buildroot}%{java_dir}/include/linux/ install -d %{buildroot}%{java_dir}/lib ln -s ../../../../share/java/libgcj-tools-%{gcj_ver}.jar \ %{buildroot}%{java_dir}/lib/tools.jar ln -s %{_datadir}/java/src-%{gcj_ver}.zip \ %{buildroot}%{java_dir}/src.zip #ln -s %{gcj_dir} %{buildroot}%{_jvmdir}/jdk-gcj #ln -s %{gcj_dir}/jre %{buildroot}%{_jvmdir}/jre-gcj ln -s %{_datadir}/java/libgcj-%{gcj_ver}.jar \ %{buildroot}/%{jredir}/lib/rt.jar # Install extension symlinks. install -d -m 755 %{buildroot}%{jvmjardir} pushd %{buildroot}%{jvmjardir} for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns jndi-ldap jndi-rmi jsse sasl; do ln -sf %{jredir}/lib/rt.jar $jarname-%{java_ver}.jar done for jar in *-%{java_ver}.jar do ln -sf $jar $(echo $jar | sed "s|-%{java_ver}.jar|.jar|g") done popd pushd %{buildroot}%{jredir}/lib for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns jndi-ldap jndi-rmi jsse sasl; do ln -s rt.jar $jarname.jar done popd install -dm 755 %{buildroot}%{jredir}/lib/security pushd %{buildroot}%{jredir}/lib/security ln -sf %{_libdir}/security/classpath.security libjava.security popd %if "%{stage1}" != "1" # default security providers, provided by libgcj install -dm 755 %{buildroot}%{_sysconfdir}/java/security/security.d for provider in \ 1000-gnu.java.security.provider.Gnu \ 1001-gnu.javax.crypto.jce.GnuCrypto \ 1002-gnu.javax.crypto.jce.GnuSasl \ 1003-gnu.javax.net.ssl.provider.Jessie \ 1004-gnu.javax.security.auth.callback.GnuCallbacks do cat > %{buildroot}%{_sysconfdir}/java/security/security.d/$provider << EOF # This file's contents are ignored. Its name, of the form # -, is used by post and postun scripts to # rebuild the list of security providers in libgcj's # classpath.security file. EOF done %{__perl} generate-cacerts.pl install -m 644 cacerts %{buildroot}%{jredir}/lib/security %endif # classmap database directory install -dm 755 %{buildroot}%{_libdir}/gcj %ifnarch x86_64 %if %{with_openjdk} # build and install API documentation install -dm 755 %{buildroot}%{_javadocdir}/%{name} mkdir javadocbuild pushd javadocbuild echo ==== CHECK ZIP ==== unzip -tq /usr/share/java/src-%{gcj_ver}.zip || : echo ==== END CHECK ZIP ==== if unzip -tq /usr/share/java/src-%{gcj_ver}.zip then fastjar xvf /usr/share/java/src-%{gcj_ver}.zip rm -rf gnu patch -p0 < %{SOURCE3} find ./ -name \*.java | xargs -n 1 dirname | sort | uniq \ | sed -e "s/\.\///" | sed -e "s/\//\./" \ | sed -e "s/\//\./" | sed -e "s/\//\./" \ | sed -e "s/\//\./" | sed -e "s/\//\./" \ | xargs javadoc -quiet \ -d %{buildroot}%{_javadocdir}/%{name} \ -encoding UTF-8 -breakiterator \ -linksource -splitindex -doctitle "GNU libgcj %{gcj_ver}" \ -windowtitle "GNU libgcj %{gcj_ver} Documentation" else touch %{buildroot}%{_javadocdir}/%{name}/package-list fi popd %endif %endif pushd %{buildroot}%{_jvmdir} ln -s %{jredir} %{jrelnk} ln -s %{gcj_dir} %{sdklnk} popd pushd %{buildroot}%{_jvmjardir} ln -s %{gcj_dir} %{jrelnk} ln -s %{gcj_dir} %{sdklnk} popd rm -rf %{buildroot}%{_bindir}/aot-compile rm -rf %{buildroot}%{_bindir}/jar rm -rf %{buildroot}%{_bindir}/java rm -rf %{buildroot}%{_bindir}/javac rm -rf %{buildroot}%{_bindir}/javadoc rm -rf %{buildroot}%{_bindir}/javah rm -rf %{buildroot}%{_bindir}/rebuild-gcj-db %clean [ "%{buildroot}" != / ] && rm -rf %{buildroot} %post for b in javac javah jar; do [ -L /usr/bin/$b -a "`readlink /usr/bin/$b`" != "/etc/alternatives/$b" ] && rm -f /usr/bin/$b %{_sbindir}/update-alternatives \ --install %{_bindir}/$b $b \ %{_jvmdir}/%{sdklnk}/bin/$b 20 done %{_sbindir}/update-alternatives \ --install %{_jvmdir}/jdk jdk \ %{_jvmdir}/%{sdklnk} 20 %{_sbindir}/update-alternatives \ --install %{_datadir}/java/jaxp_parser_impl.jar jaxp_parser_impl.jar \ %{_datadir}/java/libgcj-%{gcj_ver}.jar 20 %{_sbindir}/update-alternatives \ --install %{_jvmjardir}/jdk jdk-exports \ %{_jvmjardir}/jdk-gcj 20 exit 0 %preun if [ $1 -eq 0 ]; then for b in javac javah jar; do /usr/sbin/update-alternatives --remove $b \ %{jvmdir}/%{sdklnk}/bin/$b done /usr/sbin/update-alternatives --remove jdk %{_jvmdir}/%{sdklnk} /usr/sbin/update-alternatives --remove jaxp_parser_impl.jar %{_datadir}/java/libgcj-%{gcj_ver}.jar 20 fi exit 0 %pre runtime if [ $1 -gt 1 ]; then # remove directory replace by symlink [ -L %{java_dir}/jre/lib/i386 ] || rm -rf %{java_dir}/jre/lib/i386 fi : %post runtime [ -L /usr/bin/java -a "`readlink /usr/bin/java`" != "/etc/alternatives/java" ] && rm -f /usr/bin/java %{_sbindir}/update-alternatives --remove jre %{_jvmdir}/jre 2>/dev/null %{_sbindir}/update-alternatives \ --install %{_bindir}/java java \ %{_jvmdir}/%{jrelnk}/bin/java 20 %{_sbindir}/update-alternatives \ --install %{_jvmdir}/jre jre \ %{_jvmdir}/%{jrelnk} 20 %{_sbindir}/update-alternatives \ --install %{_jvmjardir}/jre jre-exports \ %{_jvmjardir}/jre-gcj 20 { # Rebuild the list of security providers in classpath.security. # check if this classpath.security file exists [ -f "%{_libdir}/security/classpath.security" ] || continue sed -i '/^security\.provider\./d' "%{_libdir}/security/classpath.security" count=0 for provider in $(ls %{_sysconfdir}/java/security/security.d); do count=$((count + 1)) echo "security.provider.${count}=${provider#*-}" >> "%{_libdir}/security/classpath.security" done } || : exit 0 %preun runtime if [ $1 -eq 0 ]; then /usr/sbin/update-alternatives --remove java %{_jvmdir}/%{jrelnk}/bin/java /usr/sbin/update-alternatives --remove jre %{_jvmdir}/%{jrelnk} { # Rebuild the list of security providers in classpath.security. # check if this classpath.security file exists [ -f "%{_libdir}/security/classpath.security" ] || continue sed -i '/^security\.provider\./d' "%{_libdir}/security/classpath.security" count=0 for provider in $(ls %{_sysconfdir}/java/security/security.d); do count=$((count + 1)) echo "security.provider.${count}=${provider#*-}" >> "%{_libdir}/security/classpath.security" done } || : fi exit 0 %files %defattr(-,root,root) %{_bindir}/appletviewer #%exclude %{_bindir}/aot-compile %{_bindir}/aot-compile-rpm #%{_bindir}/find-and-aot-compile #%exclude %{_bindir}/jar %{_bindir}/jarsigner #%exclude %{_bindir}/javac #%exclude %{_bindir}/javadoc #%exclude %{_bindir}/javah %{_bindir}/keytool #%exclude %{_bindir}/rebuild-gcj-db %{_bindir}/rmic %{_jvmjardir}/%{sdklnk} %dir %{java_dir} %dir %{java_dir}/bin %{java_dir}/bin/* %dir %{java_dir}/include %{java_dir}/include/* #%{java_dir}/jre/* %dir %{java_dir}/lib %{java_dir}/lib/tools.jar %{_jvmdir}/%{sdklnk} %dir %{_jvmjardir} %doc AUTHORS %files runtime %defattr(-,root,root) %doc COPYING #%exclude %{_bindir}/java %{_bindir}/rmiregistry %dir %{_libdir}/gcj %{jredir}/* %{_jvmdir}/%{jrelnk} %dir %{_jvmjardir} %dir %{_jvmjardir}/%{gcj_dir} %{_jvmjardir}/%{gcj_dir}/jaas-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jaas.jar %{_jvmjardir}/%{gcj_dir}/jce-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jce.jar %{_jvmjardir}/%{gcj_dir}/jdbc-stdext-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jdbc-stdext.jar %{_jvmjardir}/%{gcj_dir}/jndi-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jndi-cos-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jndi-cos.jar %{_jvmjardir}/%{gcj_dir}/jndi-dns-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jndi-dns.jar %{_jvmjardir}/%{gcj_dir}/jndi-ldap-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jndi-ldap.jar %{_jvmjardir}/%{gcj_dir}/jndi-rmi-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jndi-rmi.jar %{_jvmjardir}/%{gcj_dir}/jndi.jar %{_jvmjardir}/%{gcj_dir}/jsse-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/jsse.jar %{_jvmjardir}/%{gcj_dir}/sasl-%{java_ver}.jar %{_jvmjardir}/%{gcj_dir}/sasl.jar %{_jvmjardir}/%{jrelnk} %if "%{stage1}" != "1" # These must not be marked %config(noreplace). Their file names are # used in post and preun. Their contents are ignored, so replacing # them doesn't matter. .rpmnew files are harmful since they're # interpreted by post and postun as classnames ending in rpmnew. %{_sysconfdir}/java/security/security.d/1000-gnu.java.security.provider.Gnu %{_sysconfdir}/java/security/security.d/1001-gnu.javax.crypto.jce.GnuCrypto %{_sysconfdir}/java/security/security.d/1002-gnu.javax.crypto.jce.GnuSasl %{_sysconfdir}/java/security/security.d/1003-gnu.javax.net.ssl.provider.Jessie %{_sysconfdir}/java/security/security.d/1004-gnu.javax.security.auth.callback.GnuCallbacks %endif %files python %defattr(-,root,root) %{python_sitelib}/aotcompile.py %{python_sitelib}/aotcompile.pyc %{python_sitelib}/classfile.py %{python_sitelib}/classfile.pyc %{python_sitelib}/java_gcj_compat-%{version}-py%{python_version}.egg-info %files source %defattr(-,root,root) %{java_dir}/src.zip %ifnarch x86_64 %if %{with_openjdk} %files javadoc %defattr(-,root,root) %{_javadocdir}/%{name} %doc ChangeLog INSTALL README %endif %endif %changelog * Wed Apr 18 2018 Silvan Calarco 1.0.80-46mamba - rebuilt with gcc6-java 6.4.0 * Sun Aug 28 2016 Silvan Calarco 1.0.80-45mamba - gcc 6.2.0 rebuild * Fri May 13 2016 Silvan Calarco 1.0.80-44mamba - fix sover with libgcj 6.1.0 * Sat May 07 2016 Silvan Calarco 1.0.80-43mamba - rebuilt with gcc 6.1.0 * Thu Dec 17 2015 Silvan Calarco 1.0.80-42mamba - rebuilt with gcj 5.3.0 * Wed Nov 25 2015 Silvan Calarco 1.0.80-41mamba - rebuilt with gcj 5.2.0 * Fri Oct 31 2014 Silvan Calarco 1.0.80-40mamba - rebuilt with gcj 4.9.2 * Fri Aug 08 2014 Silvan Calarco 1.0.80-39mamba - rebuilt with gcc 4.9.1 * Sun May 11 2014 Silvan Calarco 1.0.80-38mamba - rebuilt with gcc 4.9.0 * Wed Mar 12 2014 Silvan Calarco 1.0.80-37mamba - java-gcj-compat: require java-gcj-compat-python needed by aot-compile-rpm * Sun Oct 20 2013 Silvan Calarco 1.0.80-36mamba - rebuilt with gcc 4.8.2 * Wed Jun 05 2013 Silvan Calarco 1.0.80-35mamba - rebuilt with gcc 4.8.1 * Mon Apr 08 2013 Silvan Calarco 1.0.80-34mamba - rebuilt with gcc 4.8.0 * Tue Feb 12 2013 Silvan Calarco 1.0.80-33mamba - switch to Ben Burton's debian javac wrapper * Tue Sep 25 2012 Silvan Calarco 1.0.80-32mamba - rebuilt with gcc 4.7.2 * Wed Aug 29 2012 Silvan Calarco 1.0.80-31mamba - provide /usr/bin/javah alternative * Wed Aug 08 2012 Silvan Calarco 1.0.80-30mamba - pre script: remove jre/lib/i386 directory to be replaced with a symlink * Tue Aug 07 2012 Silvan Calarco 1.0.80-29mamba - fix jre/lib/i386 link for x86 arch * Sun Jun 24 2012 Silvan Calarco 1.0.80-28mamba - rebuilt with gcc 4.7.1 * Wed Apr 04 2012 Silvan Calarco 1.0.80-27mamba - rebuilt with gcc 4.7.0 * Sun Mar 25 2012 Silvan Calarco 1.0.80-26mamba - install alternatives for /usr/lib/jvm-exports/{jdk,jre} * Sat Mar 24 2012 Silvan Calarco 1.0.80-25mamba - add virtual provides for jdk and jre in respective packages * Wed Nov 30 2011 Silvan Calarco 1.0.80-24mamba - rebuilt with gcc 4.5.3 * Sun Aug 14 2011 Silvan Calarco 1.0.80-23mamba - rebuilt with javadoc (requiring java-openjdk) * Sat Aug 13 2011 Silvan Calarco 1.0.80-22mamba - provide alternative for /usr/share/java/jaxp_parser_impl.jar pointing to libgcj.jar (https://bugzilla.redhat.com/show_bug.cgi?id=158751) * Sat Apr 02 2011 Silvan Calarco 1.0.80-21mamba - rename bootstrap define to with_openjdk and set disabled by default * Thu Feb 10 2011 gil 1.0.80-20mamba - edit ecj javac wrapper * Thu Jan 20 2011 gil 1.0.80-19mamba - add headers symlinks * Thu Jan 06 2011 gil 1.0.80-18mamba - add extension symlinks * Mon Jan 03 2011 gil 1.0.80-17mamba - edit %{name}-source group - generate cacerts * Mon Jan 03 2011 gil 1.0.80-16mamba - add eclipse ecj support - add new sub package javadoc * Mon Dec 27 2010 Silvan Calarco 1.0.80-15mamba - rebuilt for gcc 4.5.2 - added rt.jar symlink to libgcj-%{gcj_ver}.jar * Sat Jul 31 2010 Silvan Calarco 1.0.80-14mamba - rebuilt with gcc 4.5.1 * Tue Jun 29 2010 Silvan Calarco 1.0.80-13mamba - fixed symlink to gcj internal libdir (use library so version, better check on gcc update) * Sat May 22 2010 Silvan Calarco 1.0.80-12mamba - rebuilt with gcc 4.5.0 - don't build as noarch * Fri Jan 22 2010 Silvan Calarco 1.0.80-11mamba - rebuilt for gcc 4.4.3 * Sat Dec 12 2009 Silvan Calarco 1.0.80-10mamba - remove conflict between runtime and sdk packages * Mon Nov 16 2009 Silvan Calarco 1.0.80-9mamba - rebuilt with correct libgcj4 * Sun Nov 15 2009 Silvan Calarco 1.0.80-8mamba - rebuilt with gcc 4.4.2 * Sun Jul 26 2009 Silvan Calarco 1.0.80-7mamba - rebuilt with gcc 4.4.1 * Sat Jul 11 2009 Silvan Calarco 1.0.80-6mamba - removed symlink /usr/bin/javadoc and /usr/bin/javah * Sat Jun 06 2009 Silvan Calarco 1.0.80-5mamba - added directory %{_jvmjardir} * Fri Jun 05 2009 Silvan Calarco 1.0.80-4mamba - manage alternatives for /usr/lib/jvm/{jdk,jre} * Thu Jun 04 2009 Silvan Calarco 1.0.80-3mamba - rebuilt with gcj 4.4 - added strict version requirement for libgcj4 * Tue May 26 2009 Silvan Calarco 1.0.80-2mamba - remoed aot-compile and rebuild-gcj-db provided by gcc 4.4 * Sat Mar 07 2009 Silvan Calarco 1.0.80-1mamba - automatic update by autodist * Thu Jan 08 2009 Silvan Calarco 1.0.79-1mamba - automatic update by autodist * Tue Nov 18 2008 Silvan Calarco 1.0.78-2mamba - update with gcc 4.3 - added requirement for sinjdoc * Thu Jul 10 2008 Silvan Calarco 1.0.78-1mamba - update to 1.0.78 - added requirement for fastjar - added symlink to gcj tools.jar library * Tue Mar 11 2008 Silvan Calarco 1.0.77-1mamba - update to 1.0.77 - handle /usr/bin/{java,javac,jar} as system alternatives with priority 20 * Fri Nov 16 2007 Silvan Calarco 1.0.76-2mamba - put epoch in java-gcj-compat requirement for java-gcj-compat-runtime * Thu Nov 08 2007 Silvan Calarco 1.0.76-1mamba - update to 1.0.76 - get versioning from source package instead of java release (upgraded epoch) - added python subpackage * Mon Oct 24 2005 Silvan Calarco 1.0.36-6qilnx - use a wrapper for javac calling "gcj -C" * Sun Oct 23 2005 Silvan Calarco 1.0.36-5qilnx - link javac to gcj (was ecj) * Thu Oct 20 2005 Silvan Calarco 1.0.36-4qilnx - runtime package added * Wed Aug 17 2005 Silvan Calarco 1.0.36-3qilnx - added gjdoc support * Wed Aug 17 2005 Silvan Calarco 1.0.36-2qilnx - rebuilt with gcc 4.0.1 - added some missing requirements and build requirements * Thu Aug 11 2005 Silvan Calarco 1.0.36-1qilnx - package created by autospec