File java-1_5_0-gcj-compat.spec of Package java-1_5_0-gcj-compat

#
# spec file for package java-1_5_0-gcj-compat
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%define section		free
%define gccsuffix   %(rpm -q --qf "%%{VERSION}" gcc-java | sed 's#\.##g')
%define gccbinsuffix %(rpm -q --qf "-%%{VERSION}" gcc-java)
%define	origin		gcj
%define priority	1505
%define	javaver		1.5.0
%define buildver	0
%define gccver		%(rpm -q --qf "%%{VERSION}" gcc-java)
%define jgcver		1.0.80
%define cname       java-%{javaver}-%{origin}%{gccbinsuffix}
%define	sdklnk		java-%{javaver}-%{origin}
%define	jrelnk		jre-%{javaver}-%{origin}
%define	sdkdir		%{cname}-%{version}
%define	jredir		%{sdkdir}/jre
%define sdkbindir	%{_jvmdir}/%{sdklnk}/bin
%define jrebindir	%{_jvmdir}/%{jrelnk}/bin
%define jvmjardir %{_jvmjardir}/%{cname}-%{version}
# FIXME: this is not a good fix of name issue
%define jvmdir          %{_jvmdir}/%{sdklnk}%{gccbinsuffix}-%{version}
%define sdkjardir       %{_jvmdir}/%{sdkdir}/lib
# 32-bit versus 64-bit specific provides:
%ifarch %{ix86} ppc s390
%define bits 32
%endif
%ifarch x86_64 ia64 s390x ppc64
%define bits 64
%endif
Name:           java-1_5_0-gcj-compat
Version:        1.5.0.0
Release:        0
Summary:        JPackage Runtime Scripts for GCJ
License:        GPL-2.0-or-later
Group:          Development/Languages/Java
URL:            ftp://sources.redhat.com/pub/rhug/java-gcj-compat
Source0:        ftp://sources.redhat.com/pub/rhug/java-gcj-compat-%{jgcver}.tar.gz
Source1:        baselibs.conf
# Call gij instead of gcj in the "java" wrapper script:
Patch0:         gcc43-fixes.patch
Patch1:         python_prefix.patch
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  gcc-gij
BuildRequires:  gcc-java
BuildRequires:  javapackages-tools
BuildRequires:  python3-devel
BuildRequires:  python3-setuptools
BuildRequires:  unzip
BuildRequires:  update-alternatives
Requires:       gcc%{gccsuffix}-gij
Requires(post): coreutils
Requires(post): sed
Requires(post): update-alternatives
Requires(pre):  sed
# See java-1_4_2-sun.spec:
Provides:       j2re = %{javaver}
Provides:       java = %{javaver}
Provides:       java-%{bits} = %{javaver}
Provides:       java-%{javaver}
Provides:       java-%{javaver}-%{bits}
Provides:       java-%{origin} = %{version}-%{release}
Provides:       java-%{origin}-%{bits} = %{version}-%{release}
Provides:       jdbc-stdext
Provides:       jdbc-stdext-%{bits}
Provides:       jndi-%{bits}
Provides:       jre = %{javaver}
Provides:       jre-%{bits} = %{javaver}
Provides:       jre-%{javaver}
Provides:       jre-%{javaver}-%{bits}
Provides:       jre-%{javaver}-%{origin} = %{version}-%{release}
Provides:       jre-%{javaver}-%{origin}-%{bits} = %{version}-%{release}
Provides:       jre-%{origin} = %{version}-%{release}
Provides:       jre-%{origin}-%{bits} = %{version}-%{release}
# See java-1_4_2-sun.spec and Suse Bugzilla bug #148186:
Provides:       jre1.1.x
Provides:       jre1.2.x
Provides:       jre1.3.x
Provides:       jre1.4.x
Provides:       jre1.5.x
# See java-1_4_2-sun.spec and Suse Bugzilla bug #160828:
Provides:       jaas = %{javaver}
Provides:       jndi = %{javaver}
Provides:       jndi-cos = %{javaver}
Provides:       jndi-dns = %{javaver}
Provides:       jndi-ldap = %{javaver}
Provides:       jndi-rmi = %{javaver}
# also provide the java_1_4_2-gcj-compat
# see comment 15 bug #341578
Provides:       java-1_4_2-gcj-compat = %{version}-%{release}
Obsoletes:      java-1_4_2-gcj-compat < %{version}-%{release}
# not required #341578
# Requires:       classpath
# let's provide it here for now
Provides:       classpath = %{version}
Obsoletes:      classpath <= 0.95
Provides:       classpath-jta = %{version}
Obsoletes:      classpath-jta <= 0.95
Provides:       jta
Provides:       java-headless = %{version}-%{release}
%if 0%{?suse_version} > 1230
BuildRequires:  ca-certificates-mozilla
%else
BuildRequires:  openssl-certs
%endif

%description
This package contains shell scripts and symbolic links to simulate a
JPackage Java runtime environment with GCJ.

%package devel
Summary:        JPackage development scripts for GCJ
Group:          Development/Languages/Java
Requires:       %{name} = %{version}-%{release}
Requires:       gcc%{gccsuffix}-java >= %{gccver}
# Be able to check bytecode version
Requires:       unzip
Requires(post): coreutils
Requires(post): update-alternatives
# Similar provides as in java-1_4_2-sun.spec:
Provides:       classpath-devel = %{version}
Provides:       java-%{javaver}-devel
Provides:       java-devel = %{javaver}
Provides:       java-devel-%{origin} = %{version}
Provides:       java-sdk = %{javaver}
Provides:       java-sdk-%{javaver}
Provides:       java-sdk-%{javaver}-%{origin} = %{version}
Provides:       java-sdk-%{origin} = %{version}
Obsoletes:      classpath-devel <= 0.95
# See java-1_4_2-sun.spec:
Provides:       j2sdk = %{javaver}
Provides:       java-1_4_2-gcj-compat-devel = %{version}-%{release}
Obsoletes:      java-1_4_2-gcj-compat-devel < %{version}-%{release}

%description devel
This package contains shell scripts and symbolic links to simulate a
JPackage Java development environment with GCJ.

%prep
%setup -q -n java-gcj-compat-%{jgcver}
%patch -P 0 -p1
%patch -P 1
# bnc#447342
for key in %{_sysconfdir}/ssl/certs/*.pem; do
    # workaround for bnc#546843
  (yes | gkeytool%{gccbinsuffix} -import -keystore cacerts -file $key -storepass '' -alias `basename $key`) || :
done

%build
autoreconf -fi
%configure \
	--disable-symlinks \
	--with-gcc-suffix=%{gccbinsuffix} \
	--with-jvm-root-dir=%{_jvmdir} \
	--with-java-home=%{_jvmdir}
%ifarch riscv64
make -j1
%else
make %{?_smp_mflags}
%endif

%install
%make_install
install -dm 755 %{buildroot}%{_jvmdir}/%{cname}-%{version}/jre/lib
# make a link to ecj.jar in the lib dir:
ln -sf %{_javadir}/libgcj%{gccbinsuffix}.jar %{buildroot}%{_jvmdir}/%{cname}-%{version}/jre/lib/jdtcore.jar
ln -sf %{_javadir}/libgcj%{gccbinsuffix}.jar %{buildroot}%{_jvmdir}/%{cname}-%{version}/jre/lib/rt.jar
install -dm 755 %{buildroot}%{_jvmdir}/%{cname}-%{version}/include
mkdir %{buildroot}%{_jvmdir} || :
pushd %{buildroot}%{_jvmdir}
   ln -s %{jredir} %{jrelnk}
   ln -s %{sdkdir} %{sdklnk}
popd
mkdir -p %{buildroot}/%{jvmjardir}|| :
pushd %{buildroot}%{_jvmjardir}
   ln -s %{sdkdir} %{jrelnk}
   ln -s %{sdkdir} %{sdklnk}
popd
mkdir -p %{buildroot}/%{sdkjardir}|| :
mkdir -p %{buildroot}/%{_bindir}
mkdir -p %{buildroot}/%{_libdir}
mv %{buildroot}%{_prefix}/local/%{_lib}/* %{buildroot}/%{_libdir} || :
rm -rf %{buildroot}%{_prefix}/local/

rm -f %{buildroot}/%{_jvmdir}/%{sdkdir}/bin/javadoc
rm -f %{buildroot}/%{_bindir}/gjdoc

# Create a script that uses the gcj's ecj.jar as java compiler.
# This provides javac that is option-compatible with openjdk
pushd %{buildroot}/%{_jvmdir}/%{sdkdir}/bin/
rm -f javac
JAVAC=`pwd`/javac
ECJJAR=`gcj%{gccbinsuffix} -print-file-name=ecj.jar`
cat <<EOF > $JAVAC
#!/bin/sh
exec gij%{gccbinsuffix} -cp $ECJJAR org.eclipse.jdt.internal.compiler.batch.Main \${1+\$@}
EOF
chmod +x ${JAVAC}
popd

# generate file lists
find %{buildroot}%{_jvmdir}/%{jredir} -type d \
  | sed 's|'%{buildroot}'|%dir |' >  %{name}-%{version}-all.files
find %{buildroot}%{_jvmdir}/%{jredir} -type f -o -type l \
  | sed 's|'%{buildroot}'||'      >> %{name}-%{version}-all.files
cat %{name}-%{version}-all.files \
  > %{name}-%{version}.files
find %{buildroot}%{_jvmdir}/%{sdkdir}/bin -type f \
  | sed "s|^%{buildroot}||"      > %{name}-%{version}-sdk-bin.files
# bnc#447342
install -d -m 0755 %{buildroot}/%{_jvmdir}/%{jredir}/lib/security/
install -m 0644 cacerts %{buildroot}/%{_jvmdir}/%{jredir}/lib/security/

# alternatives regular
mkdir -p %{buildroot}%{_sysconfdir}/alternatives/
touch "%{buildroot}%{_sysconfdir}/alternatives/java"
ln -sf %{_sysconfdir}/alternatives/java %{buildroot}%{_bindir}/java
touch "%{buildroot}%{_sysconfdir}/alternatives/jre"
ln -sf %{_sysconfdir}/alternatives/jre %{buildroot}%{_jvmdir}/jre
touch "%{buildroot}%{_sysconfdir}/alternatives/jre_exports"
ln -sf %{_sysconfdir}/alternatives/jre_exports %{buildroot}%{_jvmjardir}/jre
touch "%{buildroot}%{_sysconfdir}/alternatives/rmiregistry"
ln -sf %{_sysconfdir}/alternatives/rmiregistry %{buildroot}%{_bindir}/rmiregistry
touch "%{buildroot}%{_sysconfdir}/alternatives/jre_%{origin}"
ln -sf %{_sysconfdir}/alternatives/jre_%{origin} %{buildroot}%{_jvmdir}/jre-%{origin}
touch "%{buildroot}%{_sysconfdir}/alternatives/jre_%{origin}_exports"
ln -sf %{_sysconfdir}/alternatives/jre_%{origin}_exports %{buildroot}%{_jvmjardir}/jre-%{origin}
touch "%{buildroot}%{_sysconfdir}/alternatives/jre_%{javaver}"
ln -sf %{_sysconfdir}/alternatives/jre_%{javaver} %{buildroot}%{_jvmdir}/jre-%{javaver}
touch "%{buildroot}%{_sysconfdir}/alternatives/jre_%{javaver}_exports"
ln -sf %{_sysconfdir}/alternatives/jre_%{javaver}_exports %{buildroot}%{_jvmjardir}/jre-%{javaver}
# alternatives devel
touch "%{buildroot}%{_sysconfdir}/alternatives/javac"
ln -sf %{_sysconfdir}/alternatives/javac %{buildroot}%{_bindir}/javac
touch "%{buildroot}%{_sysconfdir}/alternatives/java_sdk"
ln -sf %{_sysconfdir}/alternatives/java_sdk %{buildroot}%{_jvmdir}/java
touch "%{buildroot}%{_sysconfdir}/alternatives/java_sdk_exports"
ln -sf %{_sysconfdir}/alternatives/java_sdk_exports %{buildroot}%{_jvmjardir}/java
touch "%{buildroot}%{_sysconfdir}/alternatives/javah"
ln -sf %{_sysconfdir}/alternatives/javah %{buildroot}%{_bindir}/javah
touch "%{buildroot}%{_sysconfdir}/alternatives/jar"
ln -sf %{_sysconfdir}/alternatives/jar %{buildroot}%{_bindir}/jar
touch "%{buildroot}%{_sysconfdir}/alternatives/rmic"
ln -sf %{_sysconfdir}/alternatives/rmic %{buildroot}%{_bindir}/rmic
touch "%{buildroot}%{_sysconfdir}/alternatives/java_sdk_%{origin}"
ln -sf %{_sysconfdir}/alternatives/java_sdk_%{origin} %{buildroot}%{_jvmdir}/java-%{origin}
touch "%{buildroot}%{_sysconfdir}/alternatives/java_sdk_%{origin}_exports"
ln -sf %{_sysconfdir}/alternatives/java_sdk_%{origin}_exports %{buildroot}%{_jvmjardir}/java-%{origin}
touch "%{buildroot}%{_sysconfdir}/alternatives/java_sdk_%{javaver}"
ln -sf %{_sysconfdir}/alternatives/java_sdk_%{javaver} %{buildroot}%{_jvmdir}/java-%{javaver}
touch "%{buildroot}%{_sysconfdir}/alternatives/java_sdk_%{javaver}_exports"
ln -sf %{_sysconfdir}/alternatives/java_sdk_%{javaver}_exports %{buildroot}%{_jvmjardir}/java-%{javaver}

%post
%{_sbindir}/update-alternatives \
  --install %{_bindir}/java java %{jrebindir}/java %{priority} \
  --slave %{_jvmdir}/jre          jre          %{_jvmdir}/%{jrelnk} \
  --slave %{_jvmjardir}/jre       jre_exports  %{_jvmjardir}/%{jrelnk} \
  --slave %{_bindir}/rmiregistry  rmiregistry  %{jrebindir}/rmiregistry
%{_sbindir}/update-alternatives \
  --install %{_jvmdir}/jre-%{origin} \
      jre_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \
  --slave %{_jvmjardir}/jre-%{origin} \
      jre_%{origin}_exports %{_jvmjardir}/%{jrelnk}
%{_sbindir}/update-alternatives \
  --install %{_jvmdir}/jre-%{javaver} \
      jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
  --slave %{_jvmjardir}/jre-%{javaver} \
      jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk}
# little work-around if no version-less link to libgcj-x.y.z.jar does not exist
if [ ! -e %{_javadir}/libgcj.jar ] && ls %{_javadir}/libgcj-[0-9]*.jar 2>/dev/null >&2
then
  cd %{_javadir}
  for file in `ls libgcj-[0-9]*.jar`
  do
    LIBGCJ_NAME=$file
  done
  cd - >/dev/null
else
  LIBGCJ_NAME=libgcj.jar
fi
cd %{jvmjardir}
   ln -sf %{_javadir}/$LIBGCJ_NAME jndi-%{version}.jar
   ln -sf %{_javadir}/$LIBGCJ_NAME jndi-ldap-%{version}.jar
   ln -sf %{_javadir}/$LIBGCJ_NAME jndi-cos-%{version}.jar
   ln -sf %{_javadir}/$LIBGCJ_NAME jndi-rmi-%{version}.jar
   ln -sf %{_javadir}/$LIBGCJ_NAME jaas-%{version}.jar
   ln -sf %{_javadir}/$LIBGCJ_NAME jdbc-stdext-%{version}.jar
   ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar
   for jar in *-%{version}.jar ; do
      ln -fs ${jar} $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g")
      ln -fs ${jar} $(echo $jar | sed "s|-%{version}.jar|.jar|g")
   done
cd - >/dev/null

%post devel
%{_sbindir}/update-alternatives \
  --install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \
  --slave %{_jvmdir}/java     java_sdk          %{_jvmdir}/%{sdklnk} \
  --slave %{_jvmjardir}/java  java_sdk_exports  %{_jvmjardir}/%{sdklnk} \
  --slave %{_bindir}/javah    javah             %{sdkbindir}/javah \
  --slave %{_bindir}/jar      jar               %{sdkbindir}/jar \
  --slave %{_bindir}/rmic     rmic              %{sdkbindir}/rmic
%{_sbindir}/update-alternatives \
  --install %{_jvmdir}/java-%{origin} \
      java_sdk_%{origin} %{_jvmdir}/%{sdklnk} %{priority} \
  --slave %{_jvmjardir}/java-%{origin} \
      java_sdk_%{origin}_exports %{_jvmjardir}/%{sdklnk}
%{_sbindir}/update-alternatives \
  --install %{_jvmdir}/java-%{javaver} \
      java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority} \
  --slave %{_jvmjardir}/java-%{javaver} \
      java_sdk_%{javaver}_exports %{_jvmjardir}/%{sdklnk}
for i in gcj/libgcj-config.h jawt.h jawt_md.h jni.h jni_md.h; do
  mkdir -p `dirname %{_jvmdir}/%{cname}-%{version}/include/$i`
  ln -sf \
    `gcj%{gccbinsuffix} -print-file-name=include/$i` \
    %{_jvmdir}/%{cname}-%{version}/include/$i
done
# little work-around if no version-less link to libgcj-x.y.z.jar does not exist
if [ ! -e %{_javadir}/libgcj-tool.sjar ] && ls %{_javadir}/libgcj-tools-*.jar 2>/dev/null >&2
then
  cd %{_javadir}
  for file in `ls libgcj-tools-*.jar`
  do
    LIBGCJTOOLS_NAME=$file
  done
  cd - >/dev/null
else
  LIBGCJTOOLS_NAME=libgcj-tools.jar
fi
cd %{sdkjardir}
  ln -sf %{_javadir}/$LIBGCJTOOLS_NAME tools.jar
cd - >/dev/null

%postun
if [ $1 -eq 0 ] ; then
   rm -rf %{jvmjardir}/*
   %{_sbindir}/update-alternatives --remove java %{jrebindir}/java
   %{_sbindir}/update-alternatives --remove jre_%{origin}  %{_jvmdir}/%{jrelnk}
   %{_sbindir}/update-alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
fi

%postun devel
if [ $1 -eq 0 ] ; then
   %{_sbindir}/update-alternatives --remove javac %{sdkbindir}/javac
   %{_sbindir}/update-alternatives --remove java_sdk_%{origin}  %{_jvmdir}/%{sdklnk}
   %{_sbindir}/update-alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
fi

%files -f %{name}-%{version}.files
%ghost %{_sysconfdir}/alternatives/java
%ghost %{_sysconfdir}/alternatives/jre
%ghost %{_sysconfdir}/alternatives/jre_exports
%ghost %{_sysconfdir}/alternatives/rmiregistry
%ghost %{_sysconfdir}/alternatives/jre_%{origin}
%ghost %{_sysconfdir}/alternatives/jre_%{origin}_exports
%ghost %{_sysconfdir}/alternatives/jre_%{javaver}
%ghost %{_sysconfdir}/alternatives/jre_%{javaver}_exports
%{_bindir}/java
%{_jvmdir}/jre
%{_jvmjardir}/jre
%{_bindir}/rmiregistry
%{_jvmdir}/jre-%{origin}
%{_jvmjardir}/jre-%{origin}
%{_jvmdir}/jre-%{javaver}
%{_jvmjardir}/jre-%{javaver}
%dir %{_jvmdir}
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
%{_jvmjardir}/
%exclude %{_jvmjardir}/%{sdklnk}
%exclude %{_jvmjardir}/java-%{javaver}
%exclude %{_jvmjardir}/java-%{origin}
%exclude %{_jvmjardir}/java
%{jvmjardir}
%{_jvmdir}/%{jredir}/lib/security
%{_bindir}/aot-compile
%{_bindir}/aot-compile-rpm
%{_bindir}/rebuild-gcj-db

%files devel -f %{name}-%{version}-sdk-bin.files
%ghost %{_sysconfdir}/alternatives/javac
%ghost %{_sysconfdir}/alternatives/java_sdk
%ghost %{_sysconfdir}/alternatives/java_sdk_exports
%ghost %{_sysconfdir}/alternatives/javah
%ghost %{_sysconfdir}/alternatives/jar
%ghost %{_sysconfdir}/alternatives/rmic
%ghost %{_sysconfdir}/alternatives/java_sdk_%{origin}
%ghost %{_sysconfdir}/alternatives/java_sdk_%{origin}_exports
%ghost %{_sysconfdir}/alternatives/java_sdk_%{javaver}
%ghost %{_sysconfdir}/alternatives/java_sdk_%{javaver}_exports
%{_bindir}/javac
%{_jvmdir}/java
%{_jvmjardir}/java
%{_bindir}/javah
%{_bindir}/jar
%{_bindir}/rmic
%{_jvmdir}/java-%{origin}
%{_jvmjardir}/java-%{origin}
%{_jvmdir}/java-%{javaver}
%{_jvmjardir}/java-%{javaver}
%{_jvmdir}/%{sdkdir}/include
%{_jvmdir}/%{sdklnk}
%{_jvmjardir}/%{sdklnk}
%{python3_sitelib}/*
%{jvmdir}
%exclude %{jvmdir}/jre

%changelog
openSUSE Build Service is sponsored by