java-1_8_0-openjdk/java-1_8_0-openjdk.spec

1266 lines
43 KiB
RPMSpec
Raw Normal View History

#
# spec file for package java-1_8_0-openjdk
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#
%{!?aarch64:%global aarch64 aarch64 arm64 armv8}
%global jit_arches %ix86 x86_64 ppc64 ppc64le %aarch64
%global debug 0
%global bootcycle 1
%global buildoutputdir build
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
%global abs2rel perl -e %{script}
%global syslibdir %{_libdir}
%global archname %{name}
# Standard JPackage naming and versioning defines.
%global updatever 51
%global buildver b16
%global root_project jdk8u
%global root_repository jdk8u60
%global root_revision 3ee37a71b2ab
%global corba_revision 3b9b39af6c36
%global hotspot_revision 3639e38bd73f
%global jaxp_revision 050f5654fa19
%global jaxws_revision e465c106bfe3
%global jdk_revision ee8642297369
%global langtools_revision e27a094cb423
%global nashorn_revision f01ca5e6b907
%global aarch64_project aarch64-port
%global aarch64_repository jdk8
%global aarch64_hotspot_revision 11098f828fb8
%global icedtea_sound_version 1.0.1
# priority must be 6 digits in total
%global priority 1805
%global javaver 1.8.0
# Standard JPackage directories and symbolic links.
%global sdklnk java-%{javaver}-openjdk
%global archname %{sdklnk}
%global jrelnk jre-%{javaver}-openjdk
%global sdkdir %{sdklnk}-%{javaver}
%global jredir %{sdkdir}/jre
%global sdkbindir %{_jvmdir}/%{sdklnk}/bin
%global jrebindir %{_jvmdir}/%{jrelnk}/bin
%global jvmjardir %{_jvmjardir}/%{sdkdir}
%global jvmjarlink %{_jvmjardir}/%{sdklnk}
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
# cacert symlink
%global cacerts %{_jvmdir}/%{jredir}/lib/security/cacerts
# real file made by update-ca-certificates
%global javacacerts %{_var}/lib/ca-certificates/java-cacerts
# turn zero on non jit arches by default
%ifnarch %{jit_arches}
%global _with_zero 1
%endif
%if 0%{?suse_version} >= 1140
%global with_pulseaudio 1
%else
%global with_pulseaudio 0
%endif
%ifarch x86_64
%global archinstall amd64
%endif
%ifarch ppc
%global archinstall ppc
%endif
%ifarch ppc64 ppc64le
%global archinstall ppc64
%endif
%ifarch %ix86
%global archinstall i386
%endif
%ifarch ia64
%global archinstall ia64
%endif
%ifarch s390
%global archinstall s390
%endif
%ifarch s390x
%global archinstall s390x
%endif
%ifarch %arm
%global archinstall arm
%endif
%ifarch %aarch64
%global archinstall aarch64
%endif
# 32 bit sparc, optimized for v9
%ifarch sparcv9
%global archinstall sparc
%endif
# 64 bit sparc
%ifarch sparc64
%global archinstall sparcv9
%endif
%ifnarch %{jit_arches}
%global archinstall %{_arch}
%endif
%if %{debug}
%global debugbuild slowdebug
%else
%global debugbuild release
%endif
%if %{bootcycle}
%global imagesdir bootcycle-build/images
%global imagestarget bootcycle-images
%else
%global imagesdir images
%global imagestarget images
%endif
%ifnarch %{jit_arches}
%global _with_zero 1
%endif
# bnc#542545
# 32-bit versus 64-bit specific provides:
%ifarch %ix86 ppc s390
%global bits 32
%endif
%ifarch x86_64 ia64 s390x
%global bits 64
%endif
%if 0%{?__isa_bits}
%global bits %{__isa_bits}
%endif
%bcond_with zero
# Turn on/off some features depending on openSUSE version
%if 0%{?suse_version} >= 1130
%if ! %{with zero}
%global with_systemtap 1
%else
%global with_systemtap 0
%endif
%else
%global with_systemtap 0
%endif
%if %{with_systemtap}
%global tapsetroot %{_datadir}/systemtap
%global tapsetdir %{tapsetroot}/tapset/%{_build_cpu}
%endif
%if %{with_systemtap}
# Where to install systemtap tapset (links)
# We would like these to be in a package specific subdir,
# but currently systemtap doesn't support that, so we have to
# use the root tapset dir for now. To distinquish between 64
# and 32 bit architectures we place the tapsets under the arch
# specific dir (note that systemtap will only pickup the tapset
# for the primary arch for now). Systemtap uses the machine name
# aka build_cpu as architecture specific directory name.
%global tapsetroot %{_datadir}/systemtap
%global tapsetdir %{tapsetroot}/tapset/%{_build_cpu}
%endif
Name: java-1_8_0-openjdk
Version: %{javaver}.%{updatever}
Release: 0
Summary: OpenJDK Runtime Environment
License: Apache-1.1 and Apache-2.0 and GPL-1.0+ and GPL-2.0 and GPL-2.0-with-classpath-exception and LGPL-2.0 and MPL-1.0 and MPL-1.1 and SUSE-Public-Domain and W3C
Group: Development/Languages
Url: http://openjdk.java.net/
# Sources from upstream OpenJDK8 project.
Source0: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/archive/%{root_revision}.tar.bz2
Source1: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/corba/archive/%{corba_revision}.tar.bz2
Source2: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/hotspot/archive/%{hotspot_revision}.tar.bz2
Source3: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/jaxp/archive/%{jaxp_revision}.tar.bz2
Source4: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/jaxws/archive/%{jaxws_revision}.tar.bz2
Source5: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/jdk/archive/%{jdk_revision}.tar.bz2
Source6: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/langtools/archive/%{langtools_revision}.tar.bz2
Source7: http://hg.openjdk.java.net/%{root_project}/%{root_repository}/nashorn/archive/%{nashorn_revision}.tar.bz2
# Hotspot version from aarch64-port repository (using the _tip_ of the http://hg.openjdk.java.net/%{aarch64_project}/%{aarch64_repository}/hotspot)
Source8: http://hg.openjdk.java.net/%{aarch64_project}/%{aarch64_repository}/hotspot/archive/%{aarch64_hotspot_revision}.tar.bz2
# Pulseaudio plugin
Source9: http://icedtea.wildebeest.org/download/source/icedtea-sound-%{icedtea_sound_version}.tar.xz
# Systemtap tapsets. Zipped up to keep it small.
Source10: systemtap-tapset.tar.gz
# Desktop files. Adapated from IcedTea.
Source11: jconsole.desktop.in
Source12: policytool.desktop.in
# nss configuration file
Source13: nss.cfg
# Ensure we aren't using the limited crypto policy
Source14: TestCryptoLevel.java
# New versions of config files with aarch64 support. This is not upstream yet.
Source100: config.guess
Source101: config.sub
# RPM/distribution specific patches
# RHBZ 1015432
Patch2: 1015432.patch
# Restrict access to java-atk-wrapper classes
Patch3: java-atk-wrapper-security.patch
# RHBZ 808293
Patch4: PStack-808293.patch
# Allow multiple initialization of PKCS11 libraries
Patch5: multiple-pkcs11-library-init.patch
# Disable doclint for compatibility
Patch6: disable-doclint-by-default.patch
# Include all sources in src.zip
Patch7: include-all-srcs.patch
# Fix expression compares a char* pointer with a string literal
Patch8: compare-pointer-with-literal.patch
# Add missing build bits for AArch64 from the AArch64 branch
Patch9: aarch64-misc.patch
# From icedtea: Increase default memory limits
Patch10: memory-limits.patch
# Fix hotspot for kernel 4.0
Patch11: hotspot-support-kernel-4.patch
# Fix use of unintialized memory in adlc parser
Patch12: adlc-parser.patch
# Fix: implicit-pointer-decl
Patch13: implicit-pointer-decl.patch
# Avoid triggering inactivity timeout while generating javadoc in zero VM
Patch14: zero-javadoc-verbose.patch
# Fix to build the C++ interpreter that does not have Interpreter::remove_activation_entry
Patch15: cplusplus-interpreter.patch
# Fix crash on zero virtual machine built with gcc5
Patch16: zero-dummy.patch
# July 2015 security fixes backported to aarch64 hotspot
#
# OpenJDK specific patches
#
# Allow icedtea-web to build
Patch99: applet-hole.patch
# JVM heap size changes for s390 (thanks to aph)
Patch100: s390-java-opts.patch
Patch101: s390-size_t.patch
# Fix OOM due to signed overflow
Patch102: signed-overflow.patch
# Patch for PPC/PPC64
Patch103: ppc-zero-hotspot.patch
# Patches for system libraries
Patch201: system-libjpeg.patch
Patch202: system-libpng.patch
Patch203: system-lcms.patch
Patch204: system-giflib5.patch
Patch205: link-with-as-needed.patch
BuildRequires: alsa-lib-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: binutils
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
BuildRequires: fdupes
BuildRequires: fontconfig
BuildRequires: freetype2-devel
BuildRequires: gcc-c++
BuildRequires: giflib-devel
BuildRequires: gtk2-devel
BuildRequires: libjpeg-devel
BuildRequires: liblcms2-devel
BuildRequires: libpng-devel
BuildRequires: libxslt
BuildRequires: pkgconfig
BuildRequires: unzip
BuildRequires: update-desktop-files
BuildRequires: xorg-x11-proto-devel
BuildRequires: zip
# Requires rest of java
Requires: %{name}-headless = %{version}-%{release}
Requires: fontconfig
# mozilla-nss has to be installed to prevent
# java.security.ProviderException: Could not initialize NSS
# ...
# java.io.FileNotFoundException: /usr/lib64/libnss3.so
#was bnc#634793
Requires: mozilla-nss
# Standard JPackage base provides.
Provides: java = %{javaver}
Provides: java-%{javaver} = %{version}-%{release}
Provides: java-openjdk = %{version}-%{release}
Provides: jre = %{javaver}
Provides: jre-%{javaver} = %{version}-%{release}
Provides: jre-%{javaver}-openjdk = %{version}-%{release}
Provides: jre-openjdk = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: java-fonts = %{version}
# Required at least by fop
Provides: java-%{bits} = %{javaver}
Provides: java-%{javaver}-%{bits}
Provides: java-openjdk-%{bits} = %{version}-%{release}
Provides: jre-%{bits} = %{javaver}
Provides: jre-%{javaver}-%{bits}
Provides: jre-%{javaver}-openjdk-%{bits} = %{version}-%{release}
Provides: jre-openjdk-%{bits} = %{version}-%{release}
Provides: jre1.3.x
Provides: jre1.4.x
Provides: jre1.5.x
Provides: jre1.6.x
Provides: jre1.7.x
Provides: jre1.8.x
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# Zero-assembler build requirement.
%if %{with zero}
BuildRequires: libffi-devel
%endif
%if 0%{?suse_version} <= 1130
BuildRequires: xorg-x11-devel
%else
BuildRequires: libX11-devel
BuildRequires: libXi-devel
BuildRequires: libXinerama-devel
BuildRequires: libXt-devel
BuildRequires: libXtst-devel
%endif
%if %{bootcycle}
BuildRequires: java-bootstrap-devel >= 1.6.0
%else
BuildRequires: java-devel >= %{javaver}
%endif
# runtime certificates generation available in 11.3+ - bnc#596177
%if 0%{?suse_version} >= 1130
BuildRequires: java-ca-certificates
Requires(post): file
Requires(post): java-ca-certificates
%else
BuildRequires: openssl-certs
# the certificates will converted in a prep to standard keystore file - cacerts
# The openssl requirment seems to be necessary for build only.
Requires: openssl
%endif
%if %{with_systemtap}
BuildRequires: systemtap-sdt-devel
%endif
# pulse audio requirements
%if %{with_pulseaudio}
BuildRequires: libpulse-devel >= 0.9.11
BuildRequires: pulseaudio >= 0.9.11
%endif
%description
The OpenJDK runtime environment.
%package headless
Summary: OpenJDK Runtime Environment
Group: Development/Languages
# Require jpackage-utils for ownership of /usr/lib/jvm/
Requires: jpackage-utils
# Post requires update-alternatives to install tool update-alternatives.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall tool update-alternatives.
Requires(postun): update-alternatives
# Standard JPackage base provides.
Provides: java-%{javaver}-headless = %{version}-%{release}
Provides: java-headless = %{javaver}
Provides: java-openjdk-headless = %{version}-%{release}
Provides: jre-%{javaver}-headless = %{version}-%{release}
Provides: jre-%{javaver}-openjdk-headless = %{version}-%{release}
Provides: jre-headless = %{javaver}
Provides: jre-openjdk-headless = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: jaas = %{version}
Provides: java-sasl = %{version}
Provides: jce = %{version}
Provides: jdbc-stdext = 4.1
Provides: jndi = %{version}
Provides: jndi-cos = %{version}
Provides: jndi-dns = %{version}
Provides: jndi-ldap = %{version}
Provides: jndi-rmi = %{version}
Provides: jsse = %{version}
%if 0%{?suse_version} > 1320
# Require zoneinfo data in java8+ format provided by tzdata-java8 subpackage.
Requires(post): tzdata-java8
%endif
%description headless
The OpenJDK runtime environment without audio and video support.
%package devel
Summary: OpenJDK Development Environment
Group: Development/Tools
# Require base package.
Requires: %{name} = %{version}-%{release}
# Post requires update-alternatives to install tool update-alternatives.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall tool update-alternatives.
Requires(postun): update-alternatives
# Standard JPackage devel provides.
Provides: java-%{javaver}-devel = %{version}
Provides: java-devel = %{javaver}
Provides: java-devel-openjdk = %{version}
Provides: java-sdk = %{javaver}
Provides: java-sdk-%{javaver} = %{version}
Provides: java-sdk-%{javaver}-openjdk = %{version}
Provides: java-sdk-openjdk = %{version}
%description devel
The OpenJDK development tools.
%package demo
Summary: OpenJDK Demos
Group: Development/Languages
Requires: %{name} = %{version}-%{release}
%description demo
The OpenJDK demos.
%package src
Summary: OpenJDK Source Bundle
Group: Development/Languages
Requires: %{name} = %{version}-%{release}
%description src
The OpenJDK source bundle.
%package javadoc
Summary: OpenJDK API Documentation
Group: Documentation
Requires: jpackage-utils
# Post requires update-alternatives to install javadoc alternative.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall javadoc alternative.
Requires(postun): update-alternatives
# Standard JPackage javadoc provides.
Provides: java-%{javaver}-javadoc = %{version}-%{release}
Provides: java-javadoc = %{version}-%{release}
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description javadoc
The OpenJDK API documentation.
%package accessibility
Summary: OpenJDK accessibility connector
Group: Development/Languages
Requires: %{name} = %{version}-%{release}
Requires: java-atk-wrapper
%description accessibility
Enables accessibility support in OpenJDK by using java-atk-wrapper. This allows
compatible at-spi2 based accessibility programs to work for AWT and Swing-based
programs.
Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still
being tuned to be working with accessibility features. There are known issues
with accessibility on, so please do not install this package unless you really
need to.
%prep
%setup -q -n %{root_repository}-%{root_revision}
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 1
%ifarch %aarch64
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 8
%else
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 2
%endif
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 3
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 4
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 5
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 6
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 7
%if %{with_pulseaudio}
%setup -q -D -n %{root_repository}-%{root_revision} -T -a 9
%endif
# Set up the build tree using the subrepository tarballs
pwd
mv corba-%{corba_revision} corba
%ifarch %aarch64
mv hotspot-%{aarch64_hotspot_revision} hotspot
%else
mv hotspot-%{hotspot_revision} hotspot
%endif
mv jaxp-%{jaxp_revision} jaxp
mv jaxws-%{jaxws_revision} jaxws
mv jdk-%{jdk_revision} jdk
mv langtools-%{langtools_revision} langtools
mv nashorn-%{nashorn_revision} nashorn
%if %{with_pulseaudio}
mv icedtea-sound-%{icedtea_sound_version} icedtea-sound
%endif
# replace outdated configure guess script
#
# the configure macro will do this too, but it also passes a few flags not
# supported by openjdk configure script
cp %{SOURCE100} common/autoconf/build-aux/
cp %{SOURCE101} common/autoconf/build-aux/
# Remove libraries that are linked
rm -rvf jdk/src/share/native/java/util/zip/zlib-*
find jdk/src/share/native/sun/awt/image/jpeg ! -name imageioJPEG.c ! -name jpegdecoder.c -type f -delete
rm -rvf jdk/src/share/native/sun/awt/libpng
rm -rvf jdk/src/share/native/sun/awt/giflib
rm -rvf jdk/src/share/native/sun/java2d/cmm/lcms/cms*
rm -rvf jdk/src/share/native/sun/java2d/cmm/lcms/lcms2*
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1
%patch205 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%ifnarch %aarch64
%patch11 -p1
%endif
%patch12 -p1
%patch13 -p1
%if %{with zero}
%patch14 -p1
%patch16 -p1
%endif
%ifnarch %aarch64
%patch15 -p1
%endif
%patch99 -p1
# s390 build fixes
%ifarch s390
%patch100 -p1
%patch101 -p1
%endif
%ifnarch %aarch64
%patch102 -p1
%endif
%ifarch ppc ppc64 ppc64le
# PPC fixes
%patch103 -p1
%endif
# Extract systemtap tapsets
%if %{with_systemtap}
tar xzf %{SOURCE10}
for file in tapset/*.in; do
OUTPUT_FILE=`echo $file | sed -e s:\.in$::g`
sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{jredir}/lib/%{archinstall}/server/libjvm.so:g $file > $file.1
# TODO find out which architectures other than ix86 have a client vm
%ifarch %ix86
sed -e s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{jredir}/lib/%{archinstall}/client/libjvm.so:g $file.1 > $OUTPUT_FILE
%else
sed -e '/@ABS_CLIENT_LIBJVM_SO@/d' $file.1 > $OUTPUT_FILE
%endif
sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir}:g $OUTPUT_FILE
sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE
done
%endif
# Prepare desktop files
for file in %{SOURCE11} %{SOURCE12} ; do
OUTPUT_FILE=`basename $file | sed -e s:\.in$::g`
sed -e s:@JAVA_HOME@:%{_jvmdir}/%{sdkdir}:g $file > $OUTPUT_FILE
sed -i -e s:@VERSION@:%{javaver}.%{_arch}:g $OUTPUT_FILE
done
%build
# How many cpu's do we have?
export NUM_PROC=`%{_bindir}/getconf _NPROCESSORS_ONLN 2> /dev/null || :`
export NUM_PROC=${NUM_PROC:-1}
# handle zlib packages without pkg-config file
%if 0%{?suse_version} <= 1130
export ZLIB_CFLAGS=" "
export ZLIB_LIBS="-L/%{_lib} -lz"
%endif
# Build IcedTea and OpenJDK.
%ifarch s390x sparc64 alpha ppc64 ppc64le %aarch64
export ARCH_DATA_MODEL=64
%endif
%ifarch alpha
export CFLAGS="$CFLAGS -mieee"
%endif
(cd common/autoconf
bash ./autogen.sh
)
mkdir -p %{buildoutputdir}
pushd %{buildoutputdir}
bash ../configure \
%if %{with zero}
--with-jvm-variants=zero \
%endif
--disable-zip-debug-info \
--with-milestone="fcs" \
--with-update-version=%{updatever} \
--with-build-number=%{buildver} \
--with-debug-level=%{debugbuild} \
--enable-unlimited-crypto \
--with-zlib=system \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
--with-lcms=system \
--with-stdc++lib=dynamic \
%ifnarch %arm
--with-num-cores="$NUM_PROC" \
%endif
%if 0%{?suse_version} >= 1120
--with-extra-cflags="-fno-devirtualize" \
--with-extra-cxxflags="-fno-devirtualize" \
%endif
--with-boot-jdk=%{_sysconfdir}/alternatives/java_sdk
# The combination of FULL_DEBUG_SYMBOLS=0 and ALT_OBJCOPY=/does_not_exist
# disables FDS for all build configs and reverts to pre-FDS make logic.
# STRIP_POLICY=none says don't do any stripping. DEBUG_BINARIES=true says
# ignore all the other logic about which debug options and just do '-g'.
make \
DEBUG_BINARIES=true \
FULL_DEBUG_SYMBOLS=0 \
ZIP_DEBUGINFO_FILES=0 \
STRIP_POLICY=none \
POST_STRIP_CMD=true \
ALT_OBJCOPY=/does_not_exist \
LOG=debug \
%{imagestarget} docs
# remove redundant *diz and *debuginfo files
find %{imagesdir}/j2sdk-image -iname '*.diz' -exec rm {} \;
find %{imagesdir}/j2sdk-image -iname '*.debuginfo' -exec rm {} \;
popd >& /dev/null
export JAVA_HOME=$(pwd)/%{buildoutputdir}/%{imagesdir}/j2sdk-image
# cacerts are generated in runtime in openSUSE
if [ -f %{buildoutputdir}/%{imagesdir}/j2sdk-image/jre/lib/security/cacerts ]; then
rm %{buildoutputdir}/%{imagesdir}/j2sdk-image/jre/lib/security/cacerts
fi
%if 0%{?suse_version} < 1130
# ========== a default keystore ==========
# a cacerts generation - 11.3+ use java-ca-certificates package
for PEM in %{_sysconfdir}/ssl/certs/*.pem; do
ALIAS=$(basename ${PEM} .pem)
awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/{ print $0; }' ${PEM} > ${ALIAS}.pem
yes | $JAVA_HOME/jre/bin/keytool -import -alias ${ALIAS} -keystore %{buildoutputdir}/%{imagesdir}/j2sdk-image/jre/lib/security/cacerts -storepass 'changeit' -file ${ALIAS}.pem || :
rm ${ALIAS}.pem
done
%endif
%if %{with_pulseaudio}
# Build the pulseaudio plugin
pushd icedtea-sound
%configure \
--with-jdk-home=$JAVA_HOME \
--disable-docs
make %{?_smp_mflags}
cp icedtea-sound.jar $JAVA_HOME/jre/lib/ext/
cp build/native/libicedtea-sound.so $JAVA_HOME/jre/lib/%{archinstall}/
echo "#Config file to enable PulseAudio support" > $JAVA_HOME/jre/lib/pulseaudio.properties
echo "" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "" >> $JAVA_HOME/jre/lib/pulseaudio.properties
popd
%endif
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE14}
$JAVA_HOME/bin/java TestCryptoLevel
# Check debug symbols are present and can identify code
SERVER_JVM="$JAVA_HOME/jre/lib/%{archinstall}/server/libjvm.so"
if [ -f "$SERVER_JVM" ] ; then
nm -aCl "$SERVER_JVM" | grep javaCalls.cpp
fi
CLIENT_JVM="$JAVA_HOME/jre/lib/%{archinstall}/client/libjvm.so"
if [ -f "$CLIENT_JVM" ] ; then
nm -aCl "$CLIENT_JVM" | grep javaCalls.cpp
fi
ZERO_JVM="$JAVA_HOME/jre/lib/%{archinstall}/zero/libjvm.so"
if [ -f "$ZERO_JVM" ] ; then
nm -aCl "$ZERO_JVM" | grep javaCalls.cpp
fi
%install
export LANG=en_US.UTF-8
#bnc#530046
export STRIP_KEEP_SYMTAB=libjvm*
# skip /usr/lib/rpm/brp-check-bytecode-version:
export NO_BRP_CHECK_BYTECODE_VERSION=true
%if %{with_systemtap}
# Install systemtap support files.
install -dm 755 %{buildroot}%{_jvmdir}/%{sdkdir}/tapset
cp -a tapset/*.stp %{buildroot}%{_jvmdir}/%{sdkdir}/tapset/
install -d -m 755 %{buildroot}%{tapsetdir}
pushd %{buildroot}%{tapsetdir}
RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir}/tapset %{tapsetdir})
ln -sf $RELATIVE/*.stp .
popd
%endif
pushd %{buildoutputdir}/%{imagesdir}/j2sdk-image
# Install main files.
install -d -m 755 %{buildroot}%{_jvmdir}/%{sdkdir}
cp -a bin include lib src.zip %{buildroot}%{_jvmdir}/%{sdkdir}
install -d -m 755 %{buildroot}%{_jvmdir}/%{jredir}
cp -a jre/bin jre/lib %{buildroot}%{_jvmdir}/%{jredir}
# Install extension symlinks.
install -d -m 755 %{buildroot}%{jvmjardir}
pushd %{buildroot}%{jvmjardir}
RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir}/lib %{jvmjardir})
ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar
ln -sf $RELATIVE/jce.jar jce-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar
ln -sf $RELATIVE/rt.jar jaas-%{version}.jar
ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar
ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar
ln -sf $RELATIVE/rt.jar sasl-%{version}.jar
for jar in *-%{version}.jar
do
if [ x%{version} != x%{javaver} ]
then
ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g")
fi
ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g")
done
popd
# Install JCE policy symlinks.
install -d -m 755 %{buildroot}%{_jvmprivdir}/%{archname}/jce/vanilla
# Install versionless symlinks.
pushd %{buildroot}%{_jvmdir}
ln -sf %{jredir} %{jrelnk}
ln -sf %{sdkdir} %{sdklnk}
popd
pushd %{buildroot}%{_jvmjardir}
ln -sf %{sdkdir} %{jrelnk}
ln -sf %{sdkdir} %{sdklnk}
popd
# Remove javaws man page
rm -f man/man1/javaws*
# Install man pages.
install -d -m 755 %{buildroot}%{_mandir}/man1
for manpage in man/man1/*
do
# Convert man pages to UTF8 encoding.
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage %{buildroot}%{_mandir}/man1/$(basename \
$manpage .1)-%{sdklnk}.1
done
# Install demos and samples.
cp -a demo %{buildroot}%{_jvmdir}/%{sdkdir}
# enable short-circuit
mkdir -p sample/rmi
[ -f bin/java-rmi.cgi ] && mv bin/java-rmi.cgi sample/rmi
cp -a sample %{buildroot}%{_jvmdir}/%{sdkdir}
popd
# Install nss.cfg
install -m 644 %{SOURCE13} %{buildroot}%{_jvmdir}/%{jredir}/lib/security/
# Install Javadoc documentation.
install -d -m 755 %{buildroot}%{_javadocdir}
cp -a %{buildoutputdir}/docs %{buildroot}%{_javadocdir}/%{sdklnk}
# Install icons and menu entries.
for s in 16 24 32 48 ; do
install -D -p -m 644 \
jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png
done
# Install desktop files.
install -d -m 0755 %{buildroot}%{_datadir}/{applications,pixmaps}
install -d -m 0755 %{buildroot}/%{_jvmdir}/%{jredir}/lib/desktop/
for d in jconsole policytool; do
install -m 0644 $d.desktop %{buildroot}/%{_jvmdir}/%{jredir}/lib/desktop/
%suse_update_desktop_file %{buildroot}/%{_jvmdir}/%{jredir}/lib/desktop/$d.desktop
done
# Find JRE directories.
find %{buildroot}%{_jvmdir}/%{jredir} -type d \
| grep -v jre/lib/security \
| sed 's|'%{buildroot}'|%dir |' \
> %{name}.files.headless
# Find JRE files.
find %{buildroot}%{_jvmdir}/%{jredir} -type f -o -type l \
| grep -v jre/lib/security \
| sed 's|'%{buildroot}'||' \
>> %{name}.files.all
#split %{name}.files to %{name}.files-headless and %{name}.files
#see https://bugzilla.redhat.com/show_bug.cgi?id=875408
NOT_HEADLESS=\
"%{_jvmdir}/%{jredir}/lib/%{archinstall}/libjsoundalsa.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libicedtea-sound.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libsplashscreen.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libawt_xawt.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libjawt.so"
#filter %{name}.files from %{name}.files.all to %{name}.files-headless
ALL=`cat %{name}.files.all`
for file in $ALL ; do
INLCUDE="NO" ;
for blacklist in $NOT_HEADLESS ; do
# we can not match normally, because rpmbuild will evaluate !0 result as script failure
q=`expr match "$file" "$blacklist"` || :
l=`expr length "$blacklist"` || :
if [ $q -eq $l ]; then
INLCUDE="YES" ;
fi;
done
if [ "x$INLCUDE" = "xNO" ]; then
echo "$file" >> %{name}.files-headless
else
echo "$file" >> %{name}.files
fi
done
# Find demo directories.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample -type d \
| sed 's|'%{buildroot}'|%dir |' \
> %{name}-demo.files
# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample \
-type f -o -type l | sort \
| grep -v README \
| sed 's|'%{buildroot}'||' \
>> %{name}-demo.files
# Find documentation demo files.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample \
-type f -o -type l | sort \
| grep README \
| sed 's|'%{buildroot}'||' \
| sed 's|^|%doc |' \
>> %{name}-demo.files
# Create links which leads to separately installed java-atk-bridge and allow configuration
# links points to java-atk-wrapper - an dependence
# mvyskocil: links are handled in post, lets make ghost files there
touch %{buildroot}/%{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
touch %{buildroot}/%{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar
pushd %{buildroot}/%{_jvmdir}/%{jredir}/lib/
echo "#Config file to enable java-atk-wrapper" > accessibility.properties
echo "" >> accessibility.properties
echo "assistive_technologies=org.GNOME.Accessibility.AtkWrapper" >> accessibility.properties
echo "" >> accessibility.properties
popd
# fdupes links the files from JDK to JRE, so it breaks a JRE
# use it carefully :))
%fdupes -s %{buildroot}/%{_jvmdir}/%{jredir}/
%fdupes -s %{buildroot}/%{_jvmdir}/%{sdkdir}/demo
%fdupes -s %{buildroot}%{_javadocdir}/%{sdklnk}
%if 0%{?suse_version} <= 1130
# bnc496378 - check the size of installed cacerts
# 32 bytes means a default empty one
if [[ $(stat -c "%{s}" %{buildroot}/%{cacerts}) == "32" ]]; then
echo "ERROR: Default keystore seems empty"
exit 1
fi
%endif
%post headless
ext=.gz
update-alternatives \
--install %{_bindir}/java java %{jrebindir}/java %{priority} \
--slave %{_jvmdir}/jre jre %{_jvmdir}/%{jrelnk} \
--slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jrelnk} \
--slave %{_bindir}/keytool keytool %{jrebindir}/keytool \
--slave %{_bindir}/orbd orbd %{jrebindir}/orbd \
--slave %{_bindir}/policytool policytool %{jrebindir}/policytool \
--slave %{_bindir}/rmid rmid %{jrebindir}/rmid \
--slave %{_bindir}/rmiregistry rmiregistry %{jrebindir}/rmiregistry \
--slave %{_bindir}/servertool servertool %{jrebindir}/servertool \
--slave %{_bindir}/tnameserv tnameserv %{jrebindir}/tnameserv \
--slave %{_mandir}/man1/java.1$ext java.1$ext \
%{_mandir}/man1/java-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \
%{_mandir}/man1/keytool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \
%{_mandir}/man1/orbd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \
%{_mandir}/man1/policytool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \
%{_mandir}/man1/rmid-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \
%{_mandir}/man1/rmiregistry-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \
%{_mandir}/man1/servertool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \
%{_mandir}/man1/tnameserv-%{sdklnk}.1$ext \
--slave %{_datadir}/applications/policytool.desktop policytool.desktop \
%{_jvmdir}/%{jredir}/lib/desktop/policytool.desktop
update-alternatives \
--install %{_jvmdir}/jre-openjdk \
jre_openjdk %{_jvmdir}/%{jrelnk} %{priority} \
--slave %{_jvmjardir}/jre-openjdk \
jre_openjdk_exports %{_jvmjardir}/%{jrelnk}
update-alternatives \
--install %{_jvmdir}/jre-%{javaver} \
jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
--slave %{_jvmjardir}/jre-%{javaver} \
jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk}
%if 0%{?suse_version} > 1320
if [ ! -e %{_jvmdir}/%{jredir}/lib/tzdb.dat ]; then
ln -sf %{_datadir}/javazi/tzdb.dat %{_jvmdir}/%{jredir}/lib/tzdb.dat
fi
%endif
%postun headless
if [ $1 -eq 0 ]
then
if test -f /proc/sys/fs/binfmt_misc/jarexec
then
echo '-1' > /proc/sys/fs/binfmt_misc/jarexec
fi
update-alternatives --remove java %{jrebindir}/java
update-alternatives --remove jre_openjdk %{_jvmdir}/%{jrelnk}
update-alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
fi
%if 0%{?suse_version} >= 1130
%posttrans headless
# bnc#781690#c11: don't trust user defined JAVA_HOME and use the current VM
# XXX: this might conflict between various versions of openjdk
export JAVA_HOME=%{_jvmdir}/%{jrelnk}
# check if the java-cacerts is a valid keystore (bnc#781690)
if [ X"`%{_bindir}/file --mime-type -b %{javacacerts}`" \
!= "Xapplication/x-java-keystore;" ]; then
%if 0%{?suse_version} <= 1310
# workaround for bnc#847952 - pre 13.1 keyring.jar attempts to load invalid keystore and fail on it
rm -f "%{javacacerts}"
%endif
%{_sbindir}/update-ca-certificates
fi
# remove the default empty cacert file, if it's installed
if [ 0`stat -c "%{s}" %{cacerts} 2>/dev/null` = "032" ] ; then
rm -f %{cacerts}
fi
# if cacerts does exists, neither does not contain/point to a
# valid keystore (bnc#781690) ...
if [ X"`%{_bindir}/file --mime-type -b -L %{cacerts}`" \
!= "Xapplication/x-java-keystore;" ]; then
# bnc#727223
rm -f %{cacerts}
ln -s %{javacacerts} %{cacerts}
fi
%endif
%post devel
ext=.gz
update-alternatives \
--install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \
--slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdklnk} \
--slave %{_jvmjardir}/java java_sdk_exports %{jvmjarlink} \
--slave %{_bindir}/appletviewer appletviewer %{sdkbindir}/appletviewer \
--slave %{_bindir}/extcheck extcheck %{sdkbindir}/extcheck \
--slave %{_bindir}/jar jar %{sdkbindir}/jar \
--slave %{_bindir}/jarsigner jarsigner %{sdkbindir}/jarsigner \
--slave %{_bindir}/javadoc javadoc %{sdkbindir}/javadoc \
--slave %{_bindir}/javah javah %{sdkbindir}/javah \
--slave %{_bindir}/javap javap %{sdkbindir}/javap \
--slave %{_bindir}/jconsole jconsole %{sdkbindir}/jconsole \
--slave %{_bindir}/pack200 pack200 %{sdkbindir}/pack200 \
--slave %{_bindir}/unpack200 unpack200 %{sdkbindir}/unpack200 \
--slave %{_bindir}/jdb jdb %{sdkbindir}/jdb \
--slave %{_bindir}/jhat jhat %{sdkbindir}/jhat \
--slave %{_bindir}/jinfo jinfo %{sdkbindir}/jinfo \
--slave %{_bindir}/jmap jmap %{sdkbindir}/jmap \
--slave %{_bindir}/jps jps %{sdkbindir}/jps \
--slave %{_bindir}/jrunscript jrunscript %{sdkbindir}/jrunscript \
--slave %{_bindir}/jsadebugd jsadebugd %{sdkbindir}/jsadebugd \
--slave %{_bindir}/jstack jstack %{sdkbindir}/jstack \
--slave %{_bindir}/jstat jstat %{sdkbindir}/jstat \
--slave %{_bindir}/jstatd jstatd %{sdkbindir}/jstatd \
--slave %{_bindir}/native2ascii native2ascii %{sdkbindir}/native2ascii \
--slave %{_bindir}/rmic rmic %{sdkbindir}/rmic \
--slave %{_bindir}/schemagen schemagen %{sdkbindir}/schemagen \
--slave %{_bindir}/serialver serialver %{sdkbindir}/serialver \
--slave %{_bindir}/wsgen wsgen %{sdkbindir}/wsgen \
--slave %{_bindir}/wsimport wsimport %{sdkbindir}/wsimport \
--slave %{_bindir}/xjc xjc %{sdkbindir}/xjc \
--slave %{_mandir}/man1/appletviewer.1$ext appletviewer.1$ext \
%{_mandir}/man1/appletviewer-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \
%{_mandir}/man1/extcheck-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jar.1$ext jar.1$ext \
%{_mandir}/man1/jar-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \
%{_mandir}/man1/jarsigner-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javac.1$ext javac.1$ext \
%{_mandir}/man1/javac-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \
%{_mandir}/man1/javadoc-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javah.1$ext javah.1$ext \
%{_mandir}/man1/javah-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javap.1$ext javap.1$ext \
%{_mandir}/man1/javap-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \
%{_mandir}/man1/jconsole-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \
%{_mandir}/man1/jcmd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \
%{_mandir}/man1/jdb-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \
%{_mandir}/man1/pack200-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \
%{_mandir}/man1/unpack200-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jhat.1$ext jhat.1$ext \
%{_mandir}/man1/jhat-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \
%{_mandir}/man1/jinfo-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \
%{_mandir}/man1/jmap-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jps.1$ext jps.1$ext \
%{_mandir}/man1/jps-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \
%{_mandir}/man1/jrunscript-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \
%{_mandir}/man1/jsadebugd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \
%{_mandir}/man1/jstack-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \
%{_mandir}/man1/jstat-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \
%{_mandir}/man1/jstatd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \
%{_mandir}/man1/native2ascii-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \
%{_mandir}/man1/rmic-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \
%{_mandir}/man1/schemagen-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \
%{_mandir}/man1/serialver-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \
%{_mandir}/man1/wsgen-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \
%{_mandir}/man1/wsimport-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \
%{_mandir}/man1/xjc-%{sdklnk}.1$ext \
--slave %{_datadir}/applications/jconsole.desktop jconsole.desktop \
%{_jvmdir}/%{jredir}/lib/desktop/jconsole.desktop
update-alternatives \
--install %{_jvmdir}/java-openjdk \
java_sdk_openjdk %{_jvmdir}/%{sdklnk} %{priority} \
--slave %{_jvmjardir}/java-openjdk \
java_sdk_openjdk_exports %{jvmjarlink}
update-alternatives \
--install %{_jvmdir}/java-%{javaver} \
java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority} \
--slave %{_jvmjardir}/java-%{javaver} \
java_sdk_%{javaver}_exports %{jvmjarlink}
%postun devel
if [ $1 -eq 0 ]
then
update-alternatives --remove javac %{sdkbindir}/javac
update-alternatives --remove java_sdk_openjdk %{_jvmdir}/%{sdklnk}
update-alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
fi
%post javadoc
update-alternatives \
--install %{_javadocdir}/java javadocdir %{_javadocdir}/%{sdklnk}/api \
%{priority}
%postun javadoc
if [ $1 -eq 0 ]
then
update-alternatives --remove javadocdir %{_javadocdir}/%{sdklnk}/api
fi
%post accessibility
# create links to java-atk-wrapper
if [ ! -e %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so ]; then
ln -sf %{_libdir}/java-atk-wrapper/libatk-wrapper.so.0 %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
fi
if [ ! -e %{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar ]; then
ln -sf %{_libdir}/java-atk-wrapper/java-atk-wrapper.jar %{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar
fi
%files -f %{name}.files
%defattr(-,root,root)
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}
%dir %{_datadir}/icons/hicolor
%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png
%files headless -f %{name}.files-headless
%defattr(-,root,root,-)
%dir %{_jvmdir}
%dir %{_jvmdir}/%{jredir}/
%dir %{_jvmdir}/%{jredir}/bin
%dir %{_jvmdir}/%{jredir}/lib
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}/jli
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}/server
%dir %{_jvmdir}/%{jredir}/lib/cmm
%dir %{_jvmdir}/%{jredir}/lib/desktop
%dir %{_jvmdir}/%{jredir}/lib/ext
%dir %{_jvmdir}/%{jredir}/lib/images
%dir %{_jvmdir}/%{jredir}/lib/images/cursors
%dir %{_jvmdir}/%{jredir}/lib/management
%dir %{_jvmdir}/%{jredir}/lib/security
%dir %{_libdir}/jvm-exports
%dir %{_libdir}/jvm-private
%doc %{buildoutputdir}/%{imagesdir}/j2sdk-image/jre/ASSEMBLY_EXCEPTION
%doc %{buildoutputdir}/%{imagesdir}/j2sdk-image/jre/LICENSE
%doc %{buildoutputdir}/%{imagesdir}/j2sdk-image/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
%{_jvmjardir}/%{jrelnk}
%{_jvmprivdir}/*
%{jvmjardir}
%if 0%{?suse_version} <= 1130
%config(noreplace) %{cacerts}
%endif
%if 0%{?suse_version} > 1320
%ghost %{_jvmdir}/%{jredir}/lib/tzdb.dat
%endif
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.policy
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklisted.certs
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/nss.cfg
%{_mandir}/man1/java-%{sdklnk}.1*
%{_mandir}/man1/jjs-%{sdklnk}.1*
%{_mandir}/man1/keytool-%{sdklnk}.1*
%{_mandir}/man1/orbd-%{sdklnk}.1*
%{_mandir}/man1/pack200-%{sdklnk}.1*
%{_mandir}/man1/policytool-%{sdklnk}.1*
%{_mandir}/man1/rmid-%{sdklnk}.1*
%{_mandir}/man1/rmiregistry-%{sdklnk}.1*
%{_mandir}/man1/servertool-%{sdklnk}.1*
%{_mandir}/man1/tnameserv-%{sdklnk}.1*
%{_mandir}/man1/unpack200-%{sdklnk}.1*
%{_jvmdir}/%{jredir}/lib/security/US_export_policy.jar
%{_jvmdir}/%{jredir}/lib/security/local_policy.jar
%files devel
%defattr(-,root,root,-)
%dir %{_jvmdir}/%{sdkdir}/bin
%dir %{_jvmdir}/%{sdkdir}/include
%dir %{_jvmdir}/%{sdkdir}/lib
%if %{with_systemtap}
%dir %{_jvmdir}/%{sdkdir}/tapset
%endif
%{_jvmdir}/%{sdkdir}/bin/*
%{_jvmdir}/%{sdkdir}/include/*
%{_jvmdir}/%{sdkdir}/lib/*
%if %{with_systemtap}
%{_jvmdir}/%{sdkdir}/tapset/*.stp
%endif
%{_jvmdir}/%{sdklnk}
%{_jvmjardir}/%{sdklnk}
%{_mandir}/man1/appletviewer-%{sdklnk}.1*
%{_mandir}/man1/extcheck-%{sdklnk}.1*
%{_mandir}/man1/idlj-%{sdklnk}.1*
%{_mandir}/man1/jar-%{sdklnk}.1*
%{_mandir}/man1/jarsigner-%{sdklnk}.1*
%{_mandir}/man1/javac-%{sdklnk}.1*
%{_mandir}/man1/javadoc-%{sdklnk}.1*
%{_mandir}/man1/javah-%{sdklnk}.1*
%{_mandir}/man1/javap-%{sdklnk}.1*
%{_mandir}/man1/jconsole-%{sdklnk}.1*
%{_mandir}/man1/jcmd-%{sdklnk}.1*
%{_mandir}/man1/jdb-%{sdklnk}.1*
%{_mandir}/man1/jdeps-%{sdklnk}.1*
%{_mandir}/man1/jhat-%{sdklnk}.1*
%{_mandir}/man1/jinfo-%{sdklnk}.1*
%{_mandir}/man1/jmap-%{sdklnk}.1*
%{_mandir}/man1/jps-%{sdklnk}.1*
%{_mandir}/man1/jrunscript-%{sdklnk}.1*
%{_mandir}/man1/jsadebugd-%{sdklnk}.1*
%{_mandir}/man1/jstack-%{sdklnk}.1*
%{_mandir}/man1/jstat-%{sdklnk}.1*
%{_mandir}/man1/jstatd-%{sdklnk}.1*
%{_mandir}/man1/native2ascii-%{sdklnk}.1*
%{_mandir}/man1/rmic-%{sdklnk}.1*
%{_mandir}/man1/schemagen-%{sdklnk}.1*
%{_mandir}/man1/serialver-%{sdklnk}.1*
%{_mandir}/man1/wsgen-%{sdklnk}.1*
%{_mandir}/man1/wsimport-%{sdklnk}.1*
%{_mandir}/man1/xjc-%{sdklnk}.1*
%if %{with_systemtap}
%{tapsetroot}
%endif
%files demo -f %{name}-demo.files
%defattr(-,root,root,-)
%files src
%defattr(-,root,root,-)
%{_jvmdir}/%{sdkdir}/src.zip
%files javadoc
%defattr(0644,root,root,0755)
%dir %{_javadocdir}
%dir %{_javadocdir}/%{sdklnk}
%{_javadocdir}/%{sdklnk}/*
%files accessibility
%defattr(-,root,root)
%dir %{_jvmdir}/%{jredir}/lib/ext
%config(noreplace) %{_jvmdir}/%{jredir}/lib/accessibility.properties
%ghost %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
%ghost %{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar
%changelog