File java-1_6_0-openjdk.spec of Package java-1_6_0-openjdk

#
# spec file for package java-1_6_0-openjdk (Version MACRO)
#
# Copyright (c) 2008 SUSE LINUX Products 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/
#


%define gcjbootstrap 0
%define runtest 0
%define icedteaver 1.2
%define icedteasnapshot %{nil}
%define openjdkver b11
%define openjdkdate 10_jul_2008
%if 0%suse_version <= 1030
%define ext bz2
%else
%define ext lzma
%endif
%define genurl http://cvs.fedoraproject.org/viewcvs/devel/java-1.6.0-openjdk/
%define accessmajorver 1.23
%define accessminorver 0
%define accessver %{accessmajorver}.%{accessminorver}
%define accessurl http://ftp.gnome.org/pub/GNOME/sources/java-access-bridge/
%define openjdkurlbase http://www.java.net/download/openjdk/jdk6/promoted/
%define openjdkurl %{openjdkurlbase}%{openjdkver}/
%define fedorazip  openjdk-6-src-%{openjdkver}-%{openjdkdate}-fedora.tar.%{ext}
%define mauvedate 2008-03-11
%define multilib_arches ppc64 sparc64 x86_64
%define jit_arches %{ix86} x86_64
%ifarch %{ix86}
%define archbuild   i586
%define archinstall i386
%endif
%ifarch x86_64
%define archbuild   amd64
%define archinstall amd64
%endif
%ifnarch %{jit_arches}
%define archbuild   %{_arch}
%define archinstall %{_arch}
%endif
# Reduce build time from 27 hours to 12 hours by only running test
# suites on JIT architectures.
%ifnarch %{jit_arches}
%define runtests 0
%endif
%define buildoutputdir  openjdk/control/build/linux-%{archbuild}
%if %{gcjbootstrap}
%define icedteaopt --with-libgcj-jar=%_javadir/libgcj-4.3.jar --with-gcj-home=%_jvmdir/java-1.5.0-gcj
%else
%define icedteaopt --with-openjdk --with-openjdk-home=/etc/alternatives/java_sdk
%endif
# 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.
%define script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
%define abs2rel %{__perl} -e %{script}
%ifarch %{multilib_arches}
%define archsuffix      .%{_arch}
%define syslibdir       %{_prefix}/lib64
#% define _libdir         %{_prefix}/lib
%else
%define archsuffix      %{nil}
%define syslibdir       %{_libdir}
%endif
# Hard-code libdir on 64-bit architectures to make the 64-bit JDK
# simply be another alternative.
%define sdkname         java-%{javaver}-%{origin}
%define archname        %{sdkname}%{archsuffix}
%define localpolicy     jce_%{javaver}_%{origin}_local_policy%{archsuffix}
%define uspolicy        jce_%{javaver}_%{origin}_us_export_policy%{archsuffix}
%define javaplugin      libjavaplugin.so%{archsuffix}
# Standard JPackage naming and versioning defines.
%define origin          openjdk
%define priority        17100
%define javaver         1.6.0
%define buildver        0
# Standard JPackage directories and symbolic links.
# Make 64-bit JDKs just another alternative on 64-bit architectures.
# FIXME: add a archsuffix, or use of an baseline.conf
%define jrelnk          jre-%{javaver}-%{origin}
%define sdklnk          %{sdkname}
%define sdkdir          %{sdklnk}-%{version}
%define jredir          %{sdkdir}/jre
%define sdkbindir       %{_jvmdir}/%{sdklnk}/bin
%define jrebindir       %{_jvmdir}/%{jrelnk}/bin
%define jvmjardir       %{_jvmjardir}/%{sdkdir}
%define jvmjarlink      %{_jvmjardir}/%{sdklnk}

Name:           java-1_6_0-openjdk
%define obsoletes java-1_7_0-icedtea
# As 1.6.0 is stable, obsolete java-1_7_0-icedtea in openSUSE 11.0 and earlier:
%if 0%suse_version <= 1100
Obsoletes:      %obsoletes
%endif
Version:        %{icedteaver}_%{openjdkver}
Release:        22
Summary:        Java runtime environment based on OpenJDK 6 and IcedTea 6
Group:          Development/Languages/Java
License:        GPL v2 only; - with the OpenJDK Assembly Exception and the GNU Classpath Exception
Url:            http://openjdk.java.net/
%if 0%suse_version > 1030
BuildRequires:  lzma
%endif
Source0:        %{url}icedtea6-%{icedteaver}%{icedteasnapshot}.tar.%{ext}
Source1:        %{fedorazip}
Source2:        %{accessurl}%{accessmajorver}/java-access-bridge-%{accessver}.tar.%{ext}
Source3:        %{genurl}generate-fedora-zip.sh
# FIXME: This patch needs to be fixed. optflags argument -mtune=generic is
# being ignored because it breaks several graphical applications.
# (wallluck): Fixed to patch configure.ac, not configure
Patch0:         java-1.6.0-openjdk-optflags.patch
Patch1:         java-1.6.0-openjdk-makefile.patch
# FIXME: The licenses in the jhat sources need to be fixed with proper GPL
# Licenses.
Patch2:         java-1.6.0-openjdk-jhat.patch
Patch3:         java-1.6.0-openjdk-java-access-bridge-tck.patch
# SUSE patches
Patch103:       openjdk-6-src-b09-execstack.patch 
Patch104:       openjdk-6-src-b09-gcc4-warningfixes.patch
Patch105:       openjdk-6-src-b09-s390+s390x.patch
Patch106:       openjdk-6-src-b09-s390-size_t-fixes.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  alsa-lib-devel
BuildRequires:  cups-devel
BuildRequires:  desktop-file-utils
BuildRequires:  giflib-devel
BuildRequires:  openmotif-devel
BuildRequires:  xorg-x11
BuildRequires:  xorg-x11-proto-devel
BuildRequires:  libjpeg-devel
BuildRequires:  libpng-devel
BuildRequires:  rhino
BuildRequires:  wget
BuildRequires:  xalan-j2
# make sure to use bootstrap requires of ant
BuildRequires:  xerces-j2-bootstrap
#!BuildIgnore: xerces-j2 xml-commons-resolver xml-commons-apis xml-commons
BuildRequires:  ant
BuildRequires:  zip
%if %{gcjbootstrap}
BuildRequires:  ecj-bootstrap java-1_5_0-gcj-compat-devel
%else
BuildRequires:  java-1_6_0-openjdk java-1_6_0-openjdk-devel
%endif
# Mauve build requirements.
#BuildRequires: x11-server-xvfb
#BuildRequires: x11-font-type1
#BuildRequires: x11-font-misc
#BuildRequires: freetype2-devel >= 2.3.0
#BuildRequires: fontconfig
#BuildRequires: eclipse-ecj
# Java Access Bridge for GNOME build requirements.
BuildRequires:  at-spi-devel
BuildRequires:  gawk
BuildRequires:  libbonobo-devel
BuildRequires:  pkgconfig >= 0.9.0
BuildRequires:  xorg-x11-util-devel
# gcjwebplugin build requirements.
BuildRequires:  glib2-devel
BuildRequires:  gtk2-devel
BuildRequires:  mozilla-nspr-devel
BuildRequires:  mozilla-xulrunner190-devel
#!BuildIgnore:  mozilla-xulrunner181-devel mozilla-xulrunner181
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires:  libffi-devel
%endif
%if %defined suse_version
BuildRequires:  fdupes
BuildRequires:  unzip
BuildRequires:  procps
BuildRequires:  gcc-c++
%endif
# the certificates will converted in a prep to standard keystore file - cacerts
BuildRequires:  openssl-certs >= 0.9.8h
Requires:       rhino
# Require jpackage-utils for ant.
Requires:       jpackage-utils >= 1.7.3
# Require zoneinfo data provided by tzdata-java subpackage.
Requires:       tzdata-java
# Post requires alternatives to install tool alternatives.
Requires(post):   update-alternatives
# Postun requires alternatives to uninstall tool alternatives.
Requires(postun): update-alternatives
# Post requires update-desktop-database to update desktop database
# for jnlp files.
Requires(post):   desktop-file-utils
# Postun requires update-desktop-database to update desktop database
# for jnlp files.
Requires(postun): desktop-file-utils
%if %defined suse_version
PreReq:         update-alternatives
PreReq:         desktop-file-utils
%endif
# Standard JPackage base provides.
Provides:       %(echo %name|sed s/_/./g)
Provides:       jre-%{javaver}-%{origin} = %{version}-%{release}
Provides:       jre-%{origin} = %{version}-%{release}
Provides:       jre-%{javaver} = %{version}-%{release}
Provides:       java-%{javaver} = %{version}-%{release}
Provides:       jre = %{javaver}
Provides:       java-%{origin} = %{version}-%{release}
Provides:       java = %{javaver}
# Standard JPackage extensions provides.
Provides:       jndi = %{version}
Provides:       jndi-ldap = %{version}
Provides:       jndi-cos = %{version}
Provides:       jndi-rmi = %{version}
Provides:       jndi-dns = %{version}
Provides:       jaas = %{version}
Provides:       jsse = %{version}
Provides:       jce = %{version}
Provides:       jdbc-stdext = 3.0
Provides:       jdbc-stdext = %{version}
Provides:       java-sasl = %{version}
# Required at least by fop
Provides:       jre1.3.x
Provides:       jre1.4.x
Provides:       jre1.5.x
Provides:       jre1.6.x

%description
This Java 6 compatible Java Runtime Environment is based on OpenJDK 6
and IcedTea 6.

It contains a Java virtual machine, runtime class libraries, and an
Java application launcher that are necessary to run programs written in
the Java progamming language. It is not a development environment and
does not contain development tools such as compilers and debuggers. For
development tools, see the java-1_6_0-openjdk-devel package.

The Java 6 Runtime Environment is intended for software developers and
vendors who wish to redistribute their applications.



%package devel
License:        GPL v2 only; - with the OpenJDK Assembly Exception and the GNU Classpath Exception
# As 1.6.0 is stable, obsolete java-1_7_0-icedtea in openSUSE 11.0 and earlier:
%if 0%suse_version <= 1100
Obsoletes:      %obsoletes-devel
%endif
Summary:        Java SDK based on OpenJDK 6 and IcedTea 6
Group:          Development/Languages/Java
Requires:       %{name} = %{version}-%{release}
PreReq:         %{_sbindir}/update-alternatives
Provides:       %(echo %name|sed s/_/./g)-devel
Provides:       java-sdk-%{javaver}-%{origin} = %{version}
Provides:       java-sdk-%{javaver} = %{version}
Provides:       java-sdk-%{origin} = %{version}
Provides:       java-sdk = %{javaver}
Provides:       java-%{javaver}-devel = %{version}
Provides:       java-devel-%{origin} = %{version}
Provides:       java-devel = %{javaver}

%description devel
This Java 6 compatible Java SDK is based on OpenJDK 6 and IcedTea 6.

The Java 6 SDK is a development environment for building applications,
applets, and components using the Java programming language.

The Java 6 SDK includes tools useful for developing and testing
programs written in the Java programming language and running on the
Java platform. These tools are designed to be used from the command
line. Except for the appletviewer, these tools do not provide a
graphical user interface.



%package demo
License:        GPL v2 only; - with the OpenJDK Assembly Exception and the GNU Classpath Exception
# As 1.6.0 is stable, obsolete java-1_7_0-icedtea in openSUSE 11.0 and earlier:
%if 0%suse_version <= 1100
Obsoletes:      %obsoletes-demo
%endif
Summary:        Sources for building demo applications with OpenJDK 6
Group:          Development/Languages/Java
Provides:       %(echo %name|sed s/_/./g)-demo
Requires:       %{name}-devel = %{version}-%{release}

%description demo
This package provides sources of demonstration applications for OpenJDK
6 and is intented for aspiring Java developers which want to learn
about the features of OpenJDK 6.



%package src
License:        GPL v2 only; - with the OpenJDK Assembly Exception and the GNU Classpath Exception
# As 1.6.0 is stable, obsolete java-1_7_0-icedtea in openSUSE 11.0 and earlier:
%if 0%suse_version <= 1100
Obsoletes:      %obsoletes-src
%endif
Summary:        OpenJDK 6 Java class sources for developers
Group:          Development/Languages/Java
Requires:       %{name}-devel = %{version}-%{release}

%description src
This package provides Java Runtime librarcy class sources of OpenJDK 6
and is intented for developers which may need them for investigating
problems.



%package javadoc
License:        GPL v2 only; - with the OpenJDK Assembly Exception and the GNU Classpath Exception
# As 1.6.0 is stable, obsolete java-1_7_0-icedtea in openSUSE 11.0 and earlier:
%if 0%suse_version <= 1100
Obsoletes:      %obsoletes-javadoc
%endif
Summary:        Documentation of the Java API of OpenJDK 6
Group:          Development/Languages/Java
PreReq:         %{_sbindir}/update-alternatives
Provides:       %(echo %name|sed s/_/./g)-javadoc
Provides:       java-javadoc = %{version}-%{release}
Provides:       java-%{javaver}-javadoc = %{version}-%{release}

%description javadoc
This package provides documentation of the API provided by OpenJDK 6
and is intented for Java developers which need to which API features
are provided by OpenJDK 6.



%package plugin
License:        GPL v2 only; - with the OpenJDK Assembly Exception and the GNU Classpath Exception
# As 1.6.0 is stable, obsolete java-1_7_0-icedtea in openSUSE 11.0 and earlier:
%if 0%suse_version <= 1100
Obsoletes:      %obsoletes-plugin
%endif
Summary:        Java web browser plugin based on OpenJDK 6 and IcedTea 6
Group:          Development/Languages/Java
Requires:       %{name} = %{version}-%{release}
PreReq:         %{_sbindir}/update-alternatives
Provides:       %(echo %name|sed s/_/./g)-plugin
Provides:       java-plugin = %{javaver}
Provides:       java-%{javaver}-plugin = %{version}

%description plugin
This package provides a Java plugin for using Java applets in web
browsers such as FireFox. It is based on gcjwebplugin using OpenJDK 6
and IcedTea 6.

In Firefox, you can check the plugin used by the browser by typing the
URL

about:plugins

into the URL field of the navigation toolbar.



%prep
# Standard JPackage directories and symbolic links:
lzma -dc %{SOURCE0} | tar x --recursive-unlink -f -
%setup -n icedtea6-%{icedteaver} -q -D -T
lzma -dc %{SOURCE1} | tar x --recursive-unlink -f -
mkdir stamps;touch stamps/download.stamp
touch stamps/extract.stamp
lzma -dc %{SOURCE2} | tar x --recursive-unlink -f -
# a cacerts generation
rm openjdk/jdk/src/share/lib/security/cacerts
for PEM in /etc/ssl/certs/*.pem; do
    ALIAS=$(basename ${PEM} .pem)
    if [[ $(openssl verify ${PEM} | grep error) ]]; then
        continue
    fi
    awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/{ print $0; }' ${PEM} > ${ALIAS}.pem
    yes | %{_bindir}/keytool -import -alias ${ALIAS} -keystore openjdk/jdk/src/share/lib/security/cacerts -storepass 'changeit' -file ${ALIAS}.pem
    rm ${ALIAS}.pem
done
%patch0 -b .optflags
%patch1 -b .makefile
%patch2 -b .jhat
%patch3 -b .java-access-bridge-tck

%build
# the Java VM of the bootstrap JDK needs a fair amount of virtual memory:
unset JAVA_HOME
export LIBFFI_CFLAGS="-I/usr/include"
export LIBFFI_LIBS="-lffi"
autoreconf -i -v -f
./configure %{icedteaopt} --with-openjdk-src-zip=%{SOURCE1}
patch_openjdk() {
  patch -l $* --input=%{PATCH103}
  patch -l $* --input=%{PATCH104}
%ifarch s390 s390x # contains a special makefile test which is only for s390(x) for now:
  patch -l $* --input=%{PATCH105}
%endif
  # IcedTea's openjdk patching is quite a mess, this patch should be added as
  # an IcedTea openjdk patch which is applied during the IcedTea patch orgy:
%ifarch s390 # Only needed on s390 for now, could break on other archictures in theory, for review:
  patch -l $* --input=%PATCH106
%endif
}
%if %{gcjbootstrap}
make patch-ecj; pushd openjdk-ecj; patch_openjdk -p1; popd
%endif
make patch
patch_openjdk -p0
# hack for binutils/linker issue
sed -i -e "s@-ljpeg@/%{_libdir}/libjpeg.so@" openjdk/jdk/make/sun/jpeg/Makefile
# This should catch the remaining places were we used default march/mtune so far:
sed -i.orig 's/CFLAGS_REQUIRED_i586.*/& -march=i586 -mtune=i686/' openjdk/corba/make/common/Defs-linux.gmk
# Java likes to have the frame pointer to make it easy to walk the stack,
# see the comment in openjdk/corba/make/common/Defs-linux.gmk, and gcc
# complains about strict-aliasing bugs (-fno-strict-aliasing is used by Intel arch targes too):
sed -i 's/CFLAGS_REQUIRED.*ZERO_ARCHFLAG)/& -fno-strict-aliasing -fno-omit-frame-pointer/' openjdk/corba/make/common/Defs-linux.gmk
make
# ========== java access bridge ==========
pushd java-access-bridge-%{accessver}
  export JAVA_HOME=$(pwd)/../%{buildoutputdir}/j2sdk-image
  export PATH=$JAVA_HOME/bin:$PATH
  ./configure
  make
  cp -a bridge/accessibility.properties $JAVA_HOME/jre/lib
  cp -a gnome-java-bridge.jar $JAVA_HOME/jre/lib/ext
popd

%install
# skip /usr/lib/rpm/brp-check-bytecode-version:
export NO_BRP_CHECK_BYTECODE_VERSION=true
pushd %{buildoutputdir}/j2sdk-image
  # Assume that java-rmi.cgi is not used.
  # http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4418631
  rm -f bin/java-rmi.cgi
  # Install main files.
  install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
  cp -a bin include lib src.zip $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
  install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}
  cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}
  # Install extension symlinks.
  install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir}
  pushd $RPM_BUILD_ROOT%{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 $RPM_BUILD_ROOT%{_jvmprivdir}/%{archname}/jce/vanilla
  for file in local_policy.jar US_export_policy.jar
  do
    mv -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/$file \
      $RPM_BUILD_ROOT%{_jvmprivdir}/%{archname}/jce/vanilla
    # Touch files for ghosts.
    touch $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/$file
  done
  # Install versionless symlinks.
  pushd $RPM_BUILD_ROOT%{_jvmdir}
    ln -sf %{jredir} %{jrelnk}
    ln -sf %{sdkdir} %{sdklnk}
  popd
  pushd $RPM_BUILD_ROOT%{_jvmjardir}
    ln -sf %{sdkdir} %{jrelnk}
    ln -sf %{sdkdir} %{sdklnk}
  popd
  # Remove javaws man page.
  rm -f man/man1/javaws.1
  # Install man pages.
  install -d -m 755 $RPM_BUILD_ROOT%{_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 $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \
      $manpage .1)-%{sdkname}.1
  done
  # Install demos and samples.
  cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
  cp -a sample $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
popd
# Install Javadoc documentation.
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
mv %{buildoutputdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{sdkname}
# Find JRE directories.
find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type d \
  | grep -v jre/lib/security \
  | sed 's|'$RPM_BUILD_ROOT'|%dir |' \
  > %{name}.files
# Find JRE files.
find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type f -o -type l \
  | grep -v jre/lib/security \
  | grep -v gcjwebplugin.so \
  | sed 's|'$RPM_BUILD_ROOT'||' \
  >> %{name}.files
# Find demo directories.
find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample -type d \
  | sed 's|'$RPM_BUILD_ROOT'|%dir |' \
  > %{name}-demo.files
# Find non-documentation demo files.
find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \
  -type f -o -type l | sort \
  | grep -v README \
  | sed 's|'$RPM_BUILD_ROOT'||' \
  >> %{name}-demo.files
# Find documentation demo files.
find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
  $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \
  -type f -o -type l | sort \
  | grep README \
  | sed 's|'$RPM_BUILD_ROOT'||' \
  | sed 's|^|%doc |' \
  >> %{name}-demo.files
#symlink dupes
%if 0%suse_version > 1020
%fdupes %buildroot
%endif

%clean
rm -rf $RPM_BUILD_ROOT

%post
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}/javaws javaws %{jrebindir}/javaws \
  --slave %{_bindir}/keytool keytool %{jrebindir}/keytool \
  --slave %{_bindir}/orbd orbd %{jrebindir}/orbd \
  --slave %{_bindir}/pack200 pack200 %{jrebindir}/pack200 \
  --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 %{_bindir}/unpack200 unpack200 %{jrebindir}/unpack200 \
  --slave %{_mandir}/man1/java.1$ext java.1$ext \
  %{_mandir}/man1/java-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \
  %{_mandir}/man1/keytool-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \
  %{_mandir}/man1/orbd-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \
  %{_mandir}/man1/pack200-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \
  %{_mandir}/man1/policytool-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \
  %{_mandir}/man1/rmid-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \
  %{_mandir}/man1/rmiregistry-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \
  %{_mandir}/man1/servertool-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \
  %{_mandir}/man1/tnameserv-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \
  %{_mandir}/man1/unpack200-%{sdkname}.1$ext
update-alternatives \
  --install %{_jvmdir}/jre-%{origin} \
  jre_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \
  --slave %{_jvmjardir}/jre-%{origin} \
  jre_%{origin}_exports %{_jvmjardir}/%{jrelnk}
update-alternatives \
  --install %{_jvmdir}/jre-%{javaver} \
  jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
  --slave %{_jvmjardir}/jre-%{javaver} \
  jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk}
update-alternatives \
  --install \
  %{_jvmdir}/%{jrelnk}/lib/security/local_policy.jar \
  %{localpolicy} \
  %{_jvmprivdir}/%{archname}/jce/vanilla/local_policy.jar \
  %{priority} \
  --slave \
  %{_jvmdir}/%{jrelnk}/lib/security/US_export_policy.jar \
  %{uspolicy} \
  %{_jvmprivdir}/%{archname}/jce/vanilla/US_export_policy.jar

%postun
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_%{origin} %{_jvmdir}/%{jrelnk}
  update-alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
  update-alternatives --remove \
    %{localpolicy} \
    %{_jvmprivdir}/%{archname}/jce/vanilla/local_policy.jar
fi

%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}/apt apt %{sdkbindir}/apt \
  --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}/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-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/apt.1$ext apt.1$ext \
  %{_mandir}/man1/apt-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \
  %{_mandir}/man1/extcheck-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jar.1$ext jar.1$ext \
  %{_mandir}/man1/jar-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \
  %{_mandir}/man1/jarsigner-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/javac.1$ext javac.1$ext \
  %{_mandir}/man1/javac-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \
  %{_mandir}/man1/javadoc-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/javah.1$ext javah.1$ext \
  %{_mandir}/man1/javah-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/javap.1$ext javap.1$ext \
  %{_mandir}/man1/javap-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \
  %{_mandir}/man1/jconsole-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \
  %{_mandir}/man1/jdb-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jhat.1$ext jhat.1$ext \
  %{_mandir}/man1/jhat-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \
  %{_mandir}/man1/jinfo-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \
  %{_mandir}/man1/jmap-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jps.1$ext jps.1$ext \
  %{_mandir}/man1/jps-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \
  %{_mandir}/man1/jrunscript-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \
  %{_mandir}/man1/jsadebugd-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \
  %{_mandir}/man1/jstack-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \
  %{_mandir}/man1/jstat-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \
  %{_mandir}/man1/jstatd-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \
  %{_mandir}/man1/native2ascii-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \
  %{_mandir}/man1/rmic-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \
  %{_mandir}/man1/schemagen-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \
  %{_mandir}/man1/serialver-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \
  %{_mandir}/man1/wsgen-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \
  %{_mandir}/man1/wsimport-%{sdkname}.1$ext \
  --slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \
  %{_mandir}/man1/xjc-%{sdkname}.1$ext
update-alternatives \
  --install %{_jvmdir}/java-%{origin} \
  java_sdk_%{origin} %{_jvmdir}/%{sdklnk} %{priority} \
  --slave %{_jvmjardir}/java-%{origin} \
  java_sdk_%{origin}_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_%{origin} %{_jvmdir}/%{sdklnk}
  update-alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
fi

%post javadoc
update-alternatives \
  --install %{_javadocdir}/java javadocdir %{_javadocdir}/%{sdkname}/api \
  %{priority}

%postun javadoc
if [ $1 -eq 0 ]
then
  update-alternatives --remove javadocdir %{_javadocdir}/%{sdkname}/api
fi

%post plugin
update-alternatives \
  --install %{_libdir}/browser-plugins/libjavaplugin.so %{javaplugin} \
  %{_jvmdir}/%{jrelnk}/lib/%{archinstall}/gcjwebplugin.so %{priority}

%postun plugin
if [ $1 -eq 0 ]
then
  update-alternatives --remove %{javaplugin} \
    %{_jvmdir}/%{jrelnk}/lib/%{archinstall}/gcjwebplugin.so
fi

%files -f %{name}.files
%defattr(-,root,root,-)
%doc %{buildoutputdir}/j2sdk-image/jre/ASSEMBLY_EXCEPTION
%doc %{buildoutputdir}/j2sdk-image/jre/LICENSE
%doc %{buildoutputdir}/j2sdk-image/jre/README.html
%doc %{buildoutputdir}/j2sdk-image/jre/THIRD_PARTY_README
%doc AUTHORS COPYING ChangeLog NEWS README
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
%{_jvmjardir}/%{jrelnk}
%{_jvmprivdir}/*
%{jvmjardir}
%dir %{_jvmdir}/%{jredir}/lib/security
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/cacerts
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.policy
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
%ghost %{_jvmdir}/%{jredir}/lib/security/local_policy.jar
%ghost %{_jvmdir}/%{jredir}/lib/security/US_export_policy.jar
%{_mandir}/man1/java-%{sdkname}.1*
%{_mandir}/man1/keytool-%{sdkname}.1*
%{_mandir}/man1/orbd-%{sdkname}.1*
%{_mandir}/man1/pack200-%{sdkname}.1*
%{_mandir}/man1/policytool-%{sdkname}.1*
%{_mandir}/man1/rmid-%{sdkname}.1*
%{_mandir}/man1/rmiregistry-%{sdkname}.1*
%{_mandir}/man1/servertool-%{sdkname}.1*
%{_mandir}/man1/tnameserv-%{sdkname}.1*
%{_mandir}/man1/unpack200-%{sdkname}.1*

%files devel
%defattr(-,root,root,-)
%dir %{_jvmdir}/%{sdkdir}/bin
%dir %{_jvmdir}/%{sdkdir}/include
%dir %{_jvmdir}/%{sdkdir}/lib
%{_jvmdir}/%{sdkdir}/bin/*
%{_jvmdir}/%{sdkdir}/include/*
%{_jvmdir}/%{sdkdir}/lib/*
%{_jvmdir}/%{sdklnk}
%{jvmjarlink}
%{_mandir}/man1/appletviewer-%{sdkname}.1*
%{_mandir}/man1/apt-%{sdkname}.1*
%{_mandir}/man1/extcheck-%{sdkname}.1*
%{_mandir}/man1/idlj-%{sdkname}.1*
%{_mandir}/man1/jar-%{sdkname}.1*
%{_mandir}/man1/jarsigner-%{sdkname}.1*
%{_mandir}/man1/javac-%{sdkname}.1*
%{_mandir}/man1/javadoc-%{sdkname}.1*
%{_mandir}/man1/javah-%{sdkname}.1*
%{_mandir}/man1/javap-%{sdkname}.1*
%{_mandir}/man1/jconsole-%{sdkname}.1*
%{_mandir}/man1/jdb-%{sdkname}.1*
%{_mandir}/man1/jhat-%{sdkname}.1*
%{_mandir}/man1/jinfo-%{sdkname}.1*
%{_mandir}/man1/jmap-%{sdkname}.1*
%{_mandir}/man1/jps-%{sdkname}.1*
%{_mandir}/man1/jrunscript-%{sdkname}.1*
%{_mandir}/man1/jsadebugd-%{sdkname}.1*
%{_mandir}/man1/jstack-%{sdkname}.1*
%{_mandir}/man1/jstat-%{sdkname}.1*
%{_mandir}/man1/jstatd-%{sdkname}.1*
%{_mandir}/man1/native2ascii-%{sdkname}.1*
%{_mandir}/man1/rmic-%{sdkname}.1*
%{_mandir}/man1/schemagen-%{sdkname}.1*
%{_mandir}/man1/serialver-%{sdkname}.1*
%{_mandir}/man1/wsgen-%{sdkname}.1*
%{_mandir}/man1/wsimport-%{sdkname}.1*
%{_mandir}/man1/xjc-%{sdkname}.1*

%files demo -f %{name}-demo.files
%defattr(-,root,root,-)

%files src
%defattr(-,root,root,-)
%{_jvmdir}/%{sdkdir}/src.zip
#doc mauve_tests
#doc mauve-%{mauvedate}/mauve_output

%files javadoc
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{sdkname}

%files plugin
%defattr(-,root,root,-)
%{_jvmdir}/%{jredir}/lib/%{archinstall}/gcjwebplugin.so

%changelog
* Fri Nov 21 2008 ro@suse.de
- update check-build.sh
* Mon Nov 03 2008 mvyskocil@suse.cz
- Removed the explicit ulimit setup
* Thu Oct 23 2008 mvyskocil@suse.cz
- Fix of some signed applets related bugs:
  bnc#430401, bnc#436915, bnc#396451
  convert the certificates from openssl-certs package to standard
  Java Key store jre/lib/cacerts
- Added a missing rhino requires (provides a Java/Javascript support)
- Added a missing alternative symlink to javaws (Java Webstart)
* Fri Sep 05 2008 mvyskocil@suse.cz
- merged spec file upstream one (from icedtea.classpath.org) for simpler
  maintenance in future
  - movement of some macro definitions on the begining of the spec file
  - added some missing macros (eg. icedteasnapshot and openjdkdate)
  - the sources are defined by these macros
  - changed the Group to Development/Languages/Java (from Libraries)
  - changed the URL to icedtea.classpath.org
  - removal of icedtea7 bootstrapping and leave the gcj and openjdk6 options
  - improved BuildRequires and Requires - one value per line (better diff
  output)
  - a new --with-openjdk-src-zip option to configure
- updates
  - openjdk - version from 10_jul_2008
  - icedtea - from b09 to b11
  - java access bridge - from 1.22 to 1.23
  - a new BuildRequire - rhino
- changes in patches
  - the java-1.6.0-openjdk-optflags.patch was improved (thanks to Mandriva)
  - regenerated java-1.6.0-openjdk-makefile.patch and
  java-1.6.0-openjdk-jhat.patch with movement into %%prep
  - new java-1.6.0-openjdk-java-access-bridge-tck.patch (from upstream)
  - increase a numbers of SUSE specific patches
  - removed java-enum_cell.patch, because it was obsoleted by new version of
  source codes
* Wed Jul 30 2008 ro@suse.de
- extend provides list jre1.4.x jre1.5.x jre1.6.x
* Mon Jul 28 2008 ro@suse.de
- fix build on i386 again (from gcc bug#36917)
* Tue Jul 22 2008 coolo@suse.de
- build with xml-commons-api-bootstrap (ant complains, still works)
* Tue Jul 22 2008 coolo@suse.de
- build with xerces-j2-bootstrap (misses jaxp_parser_impl, but
  ant still works)
* Mon Jul 21 2008 coolo@suse.de
- avoid buildcycle between xulrunner and openjdk
* Thu Jul 17 2008 ro@suse.de
- use openjdk for bootstrap on ppc64 just as on ppc
- added provides for jre1.3.x needed by fop
* Tue May 20 2008 bk@suse.de
- Complete migration of %%{_jvmjardir}/%%{sdklnk} to symlink (#bnc 392494)
- un-lzma tarballs using lzma directly to support older rpmbuild's
- add checks for the amount of virtual memory available for build
* Sat May 17 2008 aj@suse.de
- Do not package %%{_jvmjardir}/%%{sdklnk}.
* Wed May 14 2008 mvyskocil@suse.cz
- fix of [bnc#388578] - tomcat6 cannot get installed
  changed the definition of a %%jvmjardir macro to %%{_jvmjardir}/%%{sdkdir}
- increased an update-alternatives priority
- added a new Requires to jpackage-utils
* Fri May 09 2008 aj@suse.de
- Silence gcc warning about missing return value.
* Fri May 09 2008 adrian@suse.de
- remove not needed mercurial from BuildRequires to reduce
  bootstrap loop
* Wed Apr 30 2008 adrian@suse.de
- switch to openjdk-bootstrap for all %%ix86
* Mon Apr 28 2008 ro@suse.de
- switch to openjdk-bootstrap for i386,ppc,x86_64
* Fri Apr 25 2008 bk@suse.de
- Fix build and add macros to make it easyer to build on SUSE 10.3
* Tue Apr 22 2008 bk@suse.de
- Initial version based on java-1_7_0-icedtea, but it's a lot smaller
openSUSE Build Service is sponsored by