Репозитории ALT
5.1: | 1.6.0.0-alt12_33.b16jpp5.M51.1 |
4.1: | 1.6.0.0-alt0.M41.5 |
4.0: | 1.6.0.0-alt0.M40.5 |
Группа :: Разработка/Java
Пакет: java-1.6.0-openjdk
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Packager: Igor Vlasenko <viy at altlinux.ru>
Patch33: java-1.6.0-openjdk-alt-ldflag.patch
Patch34: java-1.6.0-openjdk-alt-as-needed1.patch
BuildRequires: gcc-c++ libstdc++-devel-static
BuildRequires(pre): browser-plugins-npapi-devel
# hack :(
# BuildRequires: chrpath
# todo: remove after as-needed fix
%set_verify_elf_method unresolved=relaxed
%def_enable javaws
%def_enable moz_plugin
%def_disable desktop
BuildRequires: /proc
BuildRequires: jpackage-1.6-compat
%define version 1.6.0.0
%define name java-1.6.0-openjdk
# If gcjbootstrap is 1 IcedTea is bootstrapped against
# java-1.6.0-sun-devel. If gcjbootstrap is 0 IcedTea is built against
# java-1.6.0-openjdk-devel.
%define gcjbootstrap 0
# If runtests is 0 test suites will not be run.
%define runtests 0
%define icedteaver 1.2
%define icedteasnapshot %{nil}
%define openjdkver b09
%define openjdkdate 11_apr_2008
%define genurl http://cvs.fedoraproject.org/viewcvs/devel/java-1.6.0-openjdk/
%define accessmajorver 1.22
%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/jdk7/promoted/
%define openjdkurl %{openjdkurlbase}%{openjdkver}/
%define fedorazip openjdk-6-src-%{openjdkver}-%{openjdkdate}-fedora.tar.gz
%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 %{nil}
%else
%define icedteaopt --with-openjdk
%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}
# Hard-code libdir on 64-bit architectures to make the 64-bit JDK
# simply be another alternative.
%ifarch %{multilib_arches}
# define syslibdir %{_prefix}/lib64
# define _libdir %{_prefix}/lib
%define archname %{name}.%{_arch}
%define localpolicy jce_%{javaver}_%{origin}_local_policy.%{_arch}
%define uspolicy jce_%{javaver}_%{origin}_us_export_policy.%{_arch}
%define javaplugin libjavaplugin.so.%{_arch}
%else
# define syslibdir %{_libdir}
%define archname %{name}
%define localpolicy jce_%{javaver}_%{origin}_local_policy
%define uspolicy jce_%{javaver}_%{origin}_us_export_policy
%define javaplugin libjavaplugin.so
%endif
# Standard JPackage naming and versioning defines.
%define origin openjdk
%define priority 16000
%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.
%ifarch %{multilib_arches}
%define sdklnk java-%{javaver}-%{origin}.%{_arch}
%define jrelnk jre-%{javaver}-%{origin}.%{_arch}
%define sdkdir %{name}-%{version}.%{_arch}
%else
%define sdklnk java-%{javaver}-%{origin}
%define jrelnk jre-%{javaver}-%{origin}
%define sdkdir %{name}-%{version}
%endif
%define jredir %{sdkdir}/jre
%define sdkbindir %{_jvmdir}/%{sdklnk}/bin
%define jrebindir %{_jvmdir}/%{jrelnk}/bin
%ifarch %{multilib_arches}
%define jvmjardir %{_jvmjardir}/%{name}-%{version}.%{_arch}
%else
%define jvmjardir %{_jvmjardir}/%{name}-%{version}
%endif
# Prevent brp-java-repack-jars from being run.
%define __jar_repack 0
Name: java-%{javaver}-%{origin}
Version: %{javaver}.%{buildver}
Release: alt0.M41.5
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
# also included the epoch in their virtual provides. This created a
# situation where in-the-wild java-1.5.0-ibm packages provided "java =
# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
Epoch: 0
Summary: OpenJDK Runtime Environment
Group: Development/Java
License: GPLv2 with exceptions
URL: http://icedtea.classpath.org/
Source0: %{url}download/source/icedtea6-%{icedteaver}%{icedteasnapshot}.tar.gz
Source1: %{fedorazip}
Source2: %{accessurl}%{accessmajorver}/java-access-bridge-%{accessver}.tar.gz
Source3: %{genurl}generate-fedora-zip.sh
Source4: README.src
Source5: README.plugin
Source6: mauve-%{mauvedate}.tar.gz
Source7: mauve_tests
# FIXME: This patch needs to be fixed. optflags argument
# -mtune=generic is being ignored because it breaks several graphical
# applications.
Patch0: java-1.6.0-openjdk-optflags.patch
Patch1: java-1.6.0-openjdk-java-access-bridge-tck.patch
BuildRequires: libalsa-devel
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
BuildRequires: libungif-devel
BuildRequires: openmotif-devel
BuildRequires: libX11-devel
BuildRequires: libXi-devel
BuildRequires: libXp-devel
BuildRequires: libXt-devel
BuildRequires: libXtst-devel
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: wget
BuildRequires: xalan-j2
BuildRequires: xerces-j2
BuildRequires: xorg-x11-proto-devel
BuildRequires: mercurial
BuildRequires: ant
BuildRequires: libXinerama-devel
%if %{gcjbootstrap}
BuildRequires: java-1.6.0-sun-devel
%else
BuildRequires: java-1.6.0-openjdk-devel
%endif
# Mauve build requirements.
BuildRequires: xorg-x11-xvfb
BuildRequires: fonts-type1-xorg
BuildRequires: fonts-bitmap-misc
BuildRequires: libfreetype-devel >= 2.3.0
BuildRequires: fontconfig
BuildRequires: eclipse-ecj
# Java Access Bridge for GNOME build requirements.
BuildRequires: libat-spi-devel
BuildRequires: gawk
BuildRequires: libbonobo-devel
BuildRequires: pkgconfig >= 0.9.0
BuildRequires: xorg-x11-utils
# gcjwebplugin build requirements.
BuildRequires: firefox-devel
BuildRequires: glib2-devel
BuildRequires: gtk2-devel
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
Requires: libjpeg = 6b
# Require /etc/pki/java/cacerts.
Requires: ca-certificates
# Require jpackage-utils for ant.
Requires: jpackage-utils >= 1.7.3-1jpp.3
# Require zoneinfo data provided by tzdata-java subpackage.
Requires: tzdata-java
# Post requires alternatives to install tool alternatives.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall tool alternatives.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# Post requires update-desktop-database to update desktop database
# for jnlp files.
Requires(post): %{_bindir}/update-desktop-database
# Postun requires update-desktop-database to update desktop database
# for jnlp files.
Requires(postun): %{_bindir}/update-desktop-database
# java-1.6.0-openjdk replaces java-1.7.0-icedtea.
#Provides: java-1.7.0-icedtea = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea < 0:1.7.0.0-0.999
# Standard JPackage base provides.
Provides: jre-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
Provides: jre-%{origin} = %{epoch}:%{version}-%{release}
Provides: jre-%{javaver} = %{epoch}:%{version}-%{release}
Provides: java-%{javaver} = %{epoch}:%{version}-%{release}
Provides: jre = %{javaver}
Provides: java-%{origin} = %{epoch}:%{version}-%{release}
Provides: java = %{epoch}:%{javaver}
# Standard JPackage extensions provides.
Provides: jndi = %{epoch}:%{version}
Provides: jndi-ldap = %{epoch}:%{version}
Provides: jndi-cos = %{epoch}:%{version}
Provides: jndi-rmi = %{epoch}:%{version}
Provides: jndi-dns = %{epoch}:%{version}
Provides: jaas = %{epoch}:%{version}
Provides: jsse = %{epoch}:%{version}
Provides: jce = %{epoch}:%{version}
Provides: jdbc-stdext = 3.0
Provides: java-sasl = %{epoch}:%{version}
%define mozilla_java_plugin_so %{_jvmdir}/%{jrelnk}/lib/%{archinstall}/gcjwebplugin.so
%define altname %name
%define label -%{name}
%define javaws_ver %{javaver}
Patch35: java-1.6.0-openjdk-alt-as-needed-gcjwebplugin-M40.patch
%description
The OpenJDK runtime environment.
%package devel
Summary: OpenJDK Development Environment
Group: Development/Java
# Require base package.
Requires: %{name} = %{epoch}:%{version}-%{release}
# Post requires alternatives to install tool alternatives.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall tool alternatives.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# java-1.6.0-openjdk-devel replaces java-1.7.0-icedtea-devel.
#Provides: java-1.7.0-icedtea-devel = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-devel < 0:1.7.0.0-0.999
# Standard JPackage devel provides.
Provides: java-sdk-%{javaver}-%{origin} = %{epoch}:%{version}
Provides: java-sdk-%{javaver} = %{epoch}:%{version}
Provides: java-sdk-%{origin} = %{epoch}:%{version}
Provides: java-sdk = %{epoch}:%{javaver}
Provides: java-%{javaver}-devel = %{epoch}:%{version}
Provides: java-devel-%{origin} = %{epoch}:%{version}
Provides: java-devel = %{epoch}:%{javaver}
%package alsa
Summary: ALSA support for %{name}
Group: Development/Java
Requires: %{name} = %{version}-%{release}
%description alsa
This package contains Advanced Linux Sound Architecture (ALSA) support
libraries for %{name}.
%package jdbc
Summary: Native library for JDBC support in Java
Group: Development/Databases
Provides: j2se-jdbc = %javaver
Requires: %name = %version-%release
%description jdbc
This package contains the JDBC/ODBC bridge driver for %{name}.
%if_enabled javaws
%package javaws
Summary: Java Web Start
Group: Networking/Other
Requires: %name = %version-%release
Requires(post,preun): alternatives >= 0.2.0
# --- jpackage compatibility stuff starts here ---
Provides: javaws = %{epoch}:%{javaws_ver}
Obsoletes: javaws-menu
# --- jpackage compatibility stuff ends here ---
%description javaws
Java Web Start is a deployment solution for Java-technology-based
applications. It is the plumbing between the computer and the Internet
that allows the user to launch and manage applications right off the
Web. Java Web Start provides easy, one-click activation of
applications, and guarantees that you are always running the latest
version of the application, eliminating complicated installation or
upgrade procedures.
This package provides the Java Web Start installation that is bundled
with %{name} J2SE Runtime Environment.
%endif # enabled javaws
%description devel
The OpenJDK development tools.
%package demo
Summary: OpenJDK Demos
Group: Development/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
# java-1.6.0-openjdk-demo replaces java-1.7.0-icedtea-demo.
#Provides: java-1.7.0-icedtea-demo = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-demo < 0:1.7.0.0-0.999
%description demo
The OpenJDK demos.
%package src
Summary: OpenJDK Source Bundle
Group: Development/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
# java-1.6.0-openjdk-src replaces java-1.7.0-icedtea-src.
#Provides: java-1.7.0-icedtea-src = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-src < 0:1.7.0.0-0.999
%description src
The OpenJDK source bundle.
%package javadoc
Summary: OpenJDK API Documentation
Group: Development/Java
# Post requires alternatives to install javadoc alternative.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall javadoc alternative.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# java-1.6.0-openjdk-javadoc replaces java-1.7.0-icedtea-javadoc.
#Provides: java-1.7.0-icedtea-javadoc = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-javadoc < 0:1.7.0.0-0.999
# Standard JPackage javadoc provides.
Provides: java-javadoc = %{epoch}:%{version}-%{release}
Provides: java-%{javaver}-javadoc = %{epoch}:%{version}-%{release}
%description javadoc
The OpenJDK API documentation.
%package -n mozilla-plugin-%name
Summary: OpenJDK Web Browser Plugin
Group: Development/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: browser-plugins-npapi
# Post requires alternatives to install plugin alternative.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall plugin alternative.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# java-1.6.0-openjdk-plugin replaces java-1.7.0-icedtea-plugin.
#Provides: java-1.7.0-icedtea-plugin = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-plugin < 0:1.7.0.0-0.999
# Standard JPackage plugin provides.
Provides: java-plugin = %{javaver}
Provides: java-%{javaver}-plugin = %{epoch}:%{version}
%description -n mozilla-plugin-%name
The OpenJDK web browser plugin.
%prep
%setup -q -n icedtea6-%{icedteaver}
%setup -q -n icedtea6-%{icedteaver} -T -D -a 6
%setup -q -n icedtea6-%{icedteaver} -T -D -a 2
%patch0
cp %{SOURCE4} .
cp %{SOURCE5} .
cp %{SOURCE7} .
%patch35 -p0
%build
unset JAVA_HOME
#autoreconf
# Build IcedTea and OpenJDK.
./configure --with-openjdk-home=/usr/lib/jvm/java %{icedteaopt} --with-openjdk-src-zip=%{SOURCE1}
%if %{gcjbootstrap}
make MEMORY_LIMIT=-J-Xmx512m stamps/patch-ecj.stamp
%endif
make MEMORY_LIMIT=-J-Xmx512m stamps/patch.stamp
patch -p1 < %{PATCH33}
patch -p1 < %{PATCH34}
make MEMORY_LIMIT=-J-Xmx512m
export JAVA_HOME=$(pwd)/%{buildoutputdir}/j2sdk-image
# Build Java Access Bridge for GNOME.
pushd java-access-bridge-%{accessver}
patch -l -p1 < %{PATCH1}
OLD_PATH=$PATH
export PATH=$JAVA_HOME/bin:$OLD_PATH
./configure --with-openjdk-home=/usr/lib/jvm/java
make MEMORY_LIMIT=-J-Xmx512m
export PATH=$OLD_PATH
cp -a bridge/accessibility.properties $JAVA_HOME/jre/lib
cp -a gnome-java-bridge.jar $JAVA_HOME/jre/lib/ext
popd
%if %{runtests}
# Run jtreg test suite.
{
echo ====================JTREG TESTING========================
export DISPLAY=:20
Xvfb :20 -screen 0 1x1x24 -ac&
echo $! > Xvfb.pid
make MEMORY_LIMIT=-J-Xmx512m jtregcheck -k | tee jtreg_output
kill -9 `cat Xvfb.pid` || :
unset DISPLAY
rm -f Xvfb.pid
echo ====================JTREG TESTING END====================
} || :
# Run Mauve test suite.
{
pushd mauve-%{mauvedate}
./configure --with-openjdk-home=/usr/lib/jvm/java
make MEMORY_LIMIT=-J-Xmx512m
echo ====================MAUVE TESTING========================
export DISPLAY=:20
Xvfb :20 -screen 0 1x1x24 -ac&
echo $! > Xvfb.pid
$JAVA_HOME/bin/java Harness -vm $JAVA_HOME/bin/java \
-file %{SOURCE7} -timeout 30000 2>&1 | tee mauve_output
kill -9 `cat Xvfb.pid` || :
unset DISPLAY
rm -f Xvfb.pid
echo ====================MAUVE TESTING END====================
popd
} || :
%endif
%install
unset JAVA_HOME
pushd %{buildoutputdir}/j2sdk-image
# 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}
if /bin/false; then
# Install cacerts symlink.
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/cacerts
pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security
RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
%{_jvmdir}/%{jredir}/lib/security)
ln -sf $RELATIVE/cacerts .
popd
fi
# 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)-%{name}.1
done
# Install demos and samples.
cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
mkdir -p sample/rmi
#mv bin/java-rmi.cgi sample/rmi
cp -a sample $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
popd
# Install Javadoc documentation.
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
cp -a %{buildoutputdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{name}
# Install icons and menu entries.
for s in 16 24 32 48 ; do
install -D -p -m 644 \
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
$RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java.png
done
# Install desktop files.
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
cp javaws.png $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -D -m644 javaws.desktop $RPM_BUILD_ROOT%{_datadir}/applications/javaws.desktop
#desktop-file-install \
#--dir $RPM_BUILD_ROOT%{_datadir}/applications javaws.desktop
for e in jconsole policytool ; do
install -D -m644 $e.desktop $RPM_BUILD_ROOT%{_datadir}/applications/$e.desktop
#desktop-file-install --vendor=fedora --mode=644 \
#--dir $RPM_BUILD_ROOT%{_datadir}/applications $e.desktop
done
# 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
# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# 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
install -d $RPM_BUILD_ROOT/%_altdir; cat >$RPM_BUILD_ROOT/%_altdir/javadocdir_%{name}-javadoc<<EOF
%{_javadocdir}/java %{_javadocdir}/%{name}/api %{priority}
EOF
%__subst 's,^Categories=.*,Categories=Settings;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};,' %buildroot/usr/share/applications/policytool.desktop
# HACK around find-requires
%define __find_requires $RPM_BUILD_ROOT/.find-requires
cat > $RPM_BUILD_ROOT/.find-requires <<EOF
(/usr/lib/rpm/find-requires | grep -v %{_jvmdir}/%{sdkdir} | sed -e s,^/usr/lib64/lib,lib, | sed -e s,^/usr/lib/lib,lib,) || :
EOF
chmod 755 $RPM_BUILD_ROOT/.find-requires
# end HACK around find-requires
##################################################
# --- alt linux specific, shared with openjdk ---#
##################################################
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/applications
if [ -e $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/bin/jvisualvm ]; then
cat >> $RPM_BUILD_ROOT%{_datadir}/applications/%{name}-jvisualvm.desktop << EOF
[Desktop Entry]
Name=Java VisualVM (%{name})
Comment=Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool
Exec=jvisualvm
Icon=%{name}
Terminal=false
Type=Application
Categories=Development;Profiling;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};
EOF
fi
%if_enabled moz_plugin
# ControlPanel freedesktop.org menu entry
cat >> $RPM_BUILD_ROOT%{_datadir}/applications/%{name}-control-panel.desktop << EOF
[Desktop Entry]
Name=Java Plugin Control Panel (%{name})
Comment=Java Control Panel
Exec=jcontrol
Icon=%{name}
Terminal=false
Type=Application
Categories=Settings;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};
EOF
# javaws freedesktop.org menu entry
cat >> $RPM_BUILD_ROOT%{_datadir}/applications/%{name}-javaws.desktop << EOF
[Desktop Entry]
Name=Java Web Start (%{name})
Comment=Java Application Launcher
MimeType=application/x-java-jnlp-file;
Exec=%{_jvmdir}/%{jredir}/bin/javaws %%u
Icon=%{name}
Terminal=false
Type=Application
Categories=Settings;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};
EOF
%endif
# Install substitute rules for buildreq
echo java >j2se-buildreq-substitute
echo java-devel >j2se-devel-buildreq-substitute
mkdir -p %buildroot%_sysconfdir/buildreqs/packages/substitute.d
install -m644 j2se-buildreq-substitute \
%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name
install -m644 j2se-devel-buildreq-substitute \
%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name-devel
%__install -d %buildroot%_altdir
# J2SE alternative
%__cat <<EOF >%buildroot%_altdir/%altname-java
%{_bindir}/java %{jrebindir}/java %priority
%_man1dir/java.1.gz %_man1dir/java%{label}.1.gz %{jrebindir}/java
EOF
# binaries and manuals
for i in keytool policytool servertool pack200 unpack200 \
orbd rmid rmiregistry tnameserv
do
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%_bindir/$i %{_jvmdir}/%{jredir}/bin/$i %{jrebindir}/java
%_man1dir/$i.1.gz %_man1dir/${i}%{label}.1.gz %{jrebindir}/java
EOF
done
# ----- JPackage compatibility alternatives ------
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%{_jvmdir}/jre %{_jvmdir}/%{jrelnk} %{jrebindir}/java
%{_jvmjardir}/jre %{_jvmjardir}/%{jrelnk} %{jrebindir}/java
%{_jvmdir}/jre-%{origin} %{_jvmdir}/%{jrelnk} %{jrebindir}/java
%{_jvmjardir}/jre-%{origin} %{_jvmjardir}/%{jrelnk} %{jrebindir}/java
%{_jvmdir}/jre-%{javaver} %{_jvmdir}/%{jrelnk} %{jrebindir}/java
%{_jvmjardir}/jre-%{javaver} %{_jvmjardir}/%{jrelnk} %{jrebindir}/java
EOF
%if_enabled moz_plugin
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%{_bindir}/ControlPanel %{jrebindir}/ControlPanel %{jrebindir}/java
%{_bindir}/jcontrol %{jrebindir}/jcontrol %{jrebindir}/java
EOF
%endif
# JPackage specific: alternatives for security policy
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%{_jvmdir}/%{jrelnk}/lib/security/local_policy.jar %{_jvmprivdir}/%{name}/jce/vanilla/local_policy.jar %{priority}
%{_jvmdir}/%{jrelnk}/lib/security/US_export_policy.jar %{_jvmprivdir}/%{name}/jce/vanilla/US_export_policy.jar %{_jvmprivdir}/%{name}/jce/vanilla/local_policy.jar
EOF
# ----- end: JPackage compatibility alternatives ------
# Javac alternative
%__cat <<EOF >%buildroot%_altdir/%altname-javac
%_bindir/javac %{_jvmdir}/%{sdkdir}/bin/javac %priority
%_prefix/lib/jdk %{_jvmdir}/%{sdkdir} %{_jvmdir}/%{sdkdir}/bin/javac
%_man1dir/javac.1.gz %_man1dir/javac%{label}.1.gz %{_jvmdir}/%{sdkdir}/bin/javac
EOF
# binaries and manuals
for i in appletviewer extcheck idlj jar jarsigner javadoc javah javap jdb native2ascii rmic serialver apt jconsole jinfo jmap jps jsadebugd jstack jstat jstatd \
jhat jrunscript jvisualvm schemagen wsgen wsimport xjc
do
if [ -e $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/bin/$i ]; then
%__cat <<EOF >>%buildroot%_altdir/%altname-javac
%_bindir/$i %{_jvmdir}/%{sdkdir}/bin/$i %{_jvmdir}/%{sdkdir}/bin/javac
%_man1dir/$i.1.gz %_man1dir/${i}%{label}.1.gz %{_jvmdir}/%{sdkdir}/bin/javac
EOF
fi
done
# binaries w/o manuals
for i in HtmlConverter
do
%__cat <<EOF >>%buildroot%_altdir/%altname-javac
%_bindir/$i %{_jvmdir}/%{sdkdir}/bin/$i %{_jvmdir}/%{sdkdir}/bin/javac
EOF
done
# ----- JPackage compatibility alternatives ------
%__cat <<EOF >>%buildroot%_altdir/%altname-javac
%_prefix/lib/j2se %{_jvmdir}/%{sdkdir} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/java %{_jvmdir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmjardir}/java %{_jvmjardir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/java-%{origin} %{_jvmdir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmjardir}/java-%{origin} %{_jvmjardir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/java-%{javaver} %{_jvmdir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmjardir}/java-%{javaver} %{_jvmjardir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
EOF
# ----- end: JPackage compatibility alternatives ------
%if_enabled moz_plugin
# Mozilla plugin alternative
%__cat <<EOF >%buildroot%_altdir/%name-mozilla
%browser_plugins_path/libjavaplugin_oji.so %mozilla_java_plugin_so %priority
EOF
%endif # enabled moz_plugin
%if_enabled javaws
# Java Web Start alternative
%__cat <<EOF >%buildroot%_altdir/%altname-javaws
%_bindir/javaws %{jrebindir}/javaws %{jrebindir}/java
%_man1dir/javaws.1.gz %_man1dir/javaws%label.1.gz %{jrebindir}/java
EOF
# ----- JPackage compatibility alternatives ------
%__cat <<EOF >>%buildroot%_altdir/%altname-javaws
%{_datadir}/javaws %{jrebindir}/javaws %{jrebindir}/java
EOF
# ----- end: JPackage compatibility alternatives ------
%endif # enabled javaws
# hack (see #11383) to enshure that all man pages will be compressed
for i in $RPM_BUILD_ROOT%_man1dir/*.1; do
[ -f $i ] && gzip -9 $i
done
%post
# ----- JPackage stuff ------
if [ -d %{_jvmdir}/%{jrelnk}/lib/security ]; then
# Need to remove the old jars in order to support upgrading, ugly :(
# update-alternatives fails silently if the link targets exist as files.
rm -f %{_jvmdir}/%{jrelnk}/lib/security/{local,US_export}_policy.jar
fi
# %ifnarch x86_64
# if [ -f %{_sysconfdir}/mime.types ]; then
# %__subst 's|application/x-java-jnlp-file.*||g' %{_sysconfdir}/mailcap.bak 2>/dev/null
# echo "type=application/x-java-jnlp-file; description=\"Java Web Start\"; exts=\"jnlp\"" >> %{_sysconfdir}/mailcap 2>/dev/null
# %__subst 's|application/x-java-jnlp-file.*||g' %{_sysconfdir}/mime.types 2>/dev/null
# echo "application/x-java-jnlp-file jnlp" >> %{_sysconfdir}/mime.types 2>/dev/null
# fi
# %endif
# ----- JPackage stuff ------
%register_alternatives %altname-java
# though it is useless for openjdk, it is harmless
%pre
[ -L %{_jvmdir}/%{jredir}/lib/fonts ] || %__rm -rf %{_jvmdir}/%{jredir}/lib/fonts
[ -L %{_jvmdir}/%{jredir}/lib/oblique-fonts ] || %__rm -rf %{_jvmdir}/%{jredir}/lib/oblique-fonts
%preun
%unregister_alternatives %altname-java
%post devel
%register_alternatives %altname-javac
%update_menus
%preun devel
%unregister_alternatives %altname-javac
%postun devel
%clean_menus
%if_enabled desktop
%post -n java-%{origin}-desktop
%update_mimedb
%update_desktopdb
%postun -n java-%{origin}-desktop
%clean_mimedb
%clean_desktopdb
%endif
%if_enabled moz_plugin
%post -n mozilla-plugin-%name
if [ -d %browser_plugins_path ]; then
%register_alternatives %name-mozilla
fi
%update_menus
%preun -n mozilla-plugin-%name
%unregister_alternatives %name-mozilla
%postun -n mozilla-plugin-%name
%clean_menus
%endif # enabled moz_plugin
%if_enabled javaws
%post javaws
%register_alternatives %altname-javaws
%update_menus
%update_desktopdb
%preun javaws
%unregister_alternatives %altname-javaws
%postun javaws
%clean_menus
%clean_desktopdb
%endif # enabled javaws
##################################################
# - END alt linux specific, shared with openjdk -#
##################################################
%post javadoc
%register_alternatives javadocdir_%{name}-javadoc
exit 0
%postun javadoc
if [ $1 -eq 0 ]
then
%unregister_alternatives javadocdir_%{name}-javadoc
fi
exit 0
%files -f %{name}.files
%_altdir/%altname-java
%_sysconfdir/buildreqs/packages/substitute.d/%name
%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
# FIXME: The TRADEMARK file should be in j2sdk-image.
%doc openjdk/TRADEMARK
%doc AUTHORS
%doc COPYING
%doc ChangeLog
%doc NEWS
%doc README
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
%{_jvmjardir}/%{jrelnk}
%{_jvmprivdir}/*
%{jvmjardir}
%dir %{_jvmdir}/%{jredir}/lib/security
%{_jvmdir}/%{jredir}/lib/security/cacerts
# FIXME: These should be replaced by symlinks into /etc.
%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
%{_datadir}/applications/*policytool.desktop
%{_datadir}/icons/hicolor/*x*/apps/java.png
%{_mandir}/man1/java-%{name}.1*
%{_mandir}/man1/keytool-%{name}.1*
%{_mandir}/man1/orbd-%{name}.1*
%{_mandir}/man1/pack200-%{name}.1*
%{_mandir}/man1/policytool-%{name}.1*
%{_mandir}/man1/rmid-%{name}.1*
%{_mandir}/man1/rmiregistry-%{name}.1*
%{_mandir}/man1/servertool-%{name}.1*
%{_mandir}/man1/tnameserv-%{name}.1*
%{_mandir}/man1/unpack200-%{name}.1*
%{_datadir}/pixmaps/javaws.png
%{_datadir}/applications/javaws.desktop
%files devel
%_altdir/%altname-javac
%_sysconfdir/buildreqs/packages/substitute.d/%name-devel
%doc %{buildoutputdir}/j2sdk-image/ASSEMBLY_EXCEPTION
%doc %{buildoutputdir}/j2sdk-image/LICENSE
%doc %{buildoutputdir}/j2sdk-image/README.html
%doc %{buildoutputdir}/j2sdk-image/THIRD_PARTY_README
# FIXME: The TRADEMARK file should be in j2sdk-image.
%doc openjdk/TRADEMARK
%dir %{_jvmdir}/%{sdkdir}/bin
%dir %{_jvmdir}/%{sdkdir}/include
%dir %{_jvmdir}/%{sdkdir}/lib
%{_jvmdir}/%{sdkdir}/bin/*
%{_jvmdir}/%{sdkdir}/include/*
%{_jvmdir}/%{sdkdir}/lib/*
%{_jvmdir}/%{sdklnk}
%{_jvmjardir}/%{sdklnk}
%{_datadir}/applications/*jconsole.desktop
%{_mandir}/man1/appletviewer-%{name}.1*
%{_mandir}/man1/apt-%{name}.1*
%{_mandir}/man1/extcheck-%{name}.1*
%{_mandir}/man1/idlj-%{name}.1*
%{_mandir}/man1/jar-%{name}.1*
%{_mandir}/man1/jarsigner-%{name}.1*
%{_mandir}/man1/javac-%{name}.1*
%{_mandir}/man1/javadoc-%{name}.1*
%{_mandir}/man1/javah-%{name}.1*
%{_mandir}/man1/javap-%{name}.1*
%{_mandir}/man1/jconsole-%{name}.1*
%{_mandir}/man1/jdb-%{name}.1*
%{_mandir}/man1/jhat-%{name}.1*
%{_mandir}/man1/jinfo-%{name}.1*
%{_mandir}/man1/jmap-%{name}.1*
%{_mandir}/man1/jps-%{name}.1*
%{_mandir}/man1/jrunscript-%{name}.1*
%{_mandir}/man1/jsadebugd-%{name}.1*
%{_mandir}/man1/jstack-%{name}.1*
%{_mandir}/man1/jstat-%{name}.1*
%{_mandir}/man1/jstatd-%{name}.1*
%{_mandir}/man1/native2ascii-%{name}.1*
%{_mandir}/man1/rmic-%{name}.1*
%{_mandir}/man1/schemagen-%{name}.1*
%{_mandir}/man1/serialver-%{name}.1*
%{_mandir}/man1/wsgen-%{name}.1*
%{_mandir}/man1/wsimport-%{name}.1*
%{_mandir}/man1/xjc-%{name}.1*
%files demo -f %{name}-demo.files
%files src
%doc README.src
%{_jvmdir}/%{sdkdir}/src.zip
%if %{runtests}
# FIXME: put these in a separate testresults subpackage.
%doc mauve_tests
%doc mauve-%{mauvedate}/mauve_output
%doc jtreg_output
%endif
%files javadoc
%_altdir/javadocdir_%{name}-javadoc
%doc %{_javadocdir}/%{name}
%files -n mozilla-plugin-%name
%_altdir/%altname-mozilla
%{_datadir}/applications/%{name}-control-panel.desktop
%doc README.plugin
%{_jvmdir}/%{jredir}/lib/%{archinstall}/gcjwebplugin.so
%files javaws
%_altdir/%altname-javaws
%{_datadir}/applications/%{name}-javaws.desktop
%changelog
…
Полный changelog можно просмотреть здесь
Patch33: java-1.6.0-openjdk-alt-ldflag.patch
Patch34: java-1.6.0-openjdk-alt-as-needed1.patch
BuildRequires: gcc-c++ libstdc++-devel-static
BuildRequires(pre): browser-plugins-npapi-devel
# hack :(
# BuildRequires: chrpath
# todo: remove after as-needed fix
%set_verify_elf_method unresolved=relaxed
%def_enable javaws
%def_enable moz_plugin
%def_disable desktop
BuildRequires: /proc
BuildRequires: jpackage-1.6-compat
%define version 1.6.0.0
%define name java-1.6.0-openjdk
# If gcjbootstrap is 1 IcedTea is bootstrapped against
# java-1.6.0-sun-devel. If gcjbootstrap is 0 IcedTea is built against
# java-1.6.0-openjdk-devel.
%define gcjbootstrap 0
# If runtests is 0 test suites will not be run.
%define runtests 0
%define icedteaver 1.2
%define icedteasnapshot %{nil}
%define openjdkver b09
%define openjdkdate 11_apr_2008
%define genurl http://cvs.fedoraproject.org/viewcvs/devel/java-1.6.0-openjdk/
%define accessmajorver 1.22
%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/jdk7/promoted/
%define openjdkurl %{openjdkurlbase}%{openjdkver}/
%define fedorazip openjdk-6-src-%{openjdkver}-%{openjdkdate}-fedora.tar.gz
%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 %{nil}
%else
%define icedteaopt --with-openjdk
%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}
# Hard-code libdir on 64-bit architectures to make the 64-bit JDK
# simply be another alternative.
%ifarch %{multilib_arches}
# define syslibdir %{_prefix}/lib64
# define _libdir %{_prefix}/lib
%define archname %{name}.%{_arch}
%define localpolicy jce_%{javaver}_%{origin}_local_policy.%{_arch}
%define uspolicy jce_%{javaver}_%{origin}_us_export_policy.%{_arch}
%define javaplugin libjavaplugin.so.%{_arch}
%else
# define syslibdir %{_libdir}
%define archname %{name}
%define localpolicy jce_%{javaver}_%{origin}_local_policy
%define uspolicy jce_%{javaver}_%{origin}_us_export_policy
%define javaplugin libjavaplugin.so
%endif
# Standard JPackage naming and versioning defines.
%define origin openjdk
%define priority 16000
%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.
%ifarch %{multilib_arches}
%define sdklnk java-%{javaver}-%{origin}.%{_arch}
%define jrelnk jre-%{javaver}-%{origin}.%{_arch}
%define sdkdir %{name}-%{version}.%{_arch}
%else
%define sdklnk java-%{javaver}-%{origin}
%define jrelnk jre-%{javaver}-%{origin}
%define sdkdir %{name}-%{version}
%endif
%define jredir %{sdkdir}/jre
%define sdkbindir %{_jvmdir}/%{sdklnk}/bin
%define jrebindir %{_jvmdir}/%{jrelnk}/bin
%ifarch %{multilib_arches}
%define jvmjardir %{_jvmjardir}/%{name}-%{version}.%{_arch}
%else
%define jvmjardir %{_jvmjardir}/%{name}-%{version}
%endif
# Prevent brp-java-repack-jars from being run.
%define __jar_repack 0
Name: java-%{javaver}-%{origin}
Version: %{javaver}.%{buildver}
Release: alt0.M41.5
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons,
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
# also included the epoch in their virtual provides. This created a
# situation where in-the-wild java-1.5.0-ibm packages provided "java =
# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is
# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be
# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0".
Epoch: 0
Summary: OpenJDK Runtime Environment
Group: Development/Java
License: GPLv2 with exceptions
URL: http://icedtea.classpath.org/
Source0: %{url}download/source/icedtea6-%{icedteaver}%{icedteasnapshot}.tar.gz
Source1: %{fedorazip}
Source2: %{accessurl}%{accessmajorver}/java-access-bridge-%{accessver}.tar.gz
Source3: %{genurl}generate-fedora-zip.sh
Source4: README.src
Source5: README.plugin
Source6: mauve-%{mauvedate}.tar.gz
Source7: mauve_tests
# FIXME: This patch needs to be fixed. optflags argument
# -mtune=generic is being ignored because it breaks several graphical
# applications.
Patch0: java-1.6.0-openjdk-optflags.patch
Patch1: java-1.6.0-openjdk-java-access-bridge-tck.patch
BuildRequires: libalsa-devel
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
BuildRequires: libungif-devel
BuildRequires: openmotif-devel
BuildRequires: libX11-devel
BuildRequires: libXi-devel
BuildRequires: libXp-devel
BuildRequires: libXt-devel
BuildRequires: libXtst-devel
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: wget
BuildRequires: xalan-j2
BuildRequires: xerces-j2
BuildRequires: xorg-x11-proto-devel
BuildRequires: mercurial
BuildRequires: ant
BuildRequires: libXinerama-devel
%if %{gcjbootstrap}
BuildRequires: java-1.6.0-sun-devel
%else
BuildRequires: java-1.6.0-openjdk-devel
%endif
# Mauve build requirements.
BuildRequires: xorg-x11-xvfb
BuildRequires: fonts-type1-xorg
BuildRequires: fonts-bitmap-misc
BuildRequires: libfreetype-devel >= 2.3.0
BuildRequires: fontconfig
BuildRequires: eclipse-ecj
# Java Access Bridge for GNOME build requirements.
BuildRequires: libat-spi-devel
BuildRequires: gawk
BuildRequires: libbonobo-devel
BuildRequires: pkgconfig >= 0.9.0
BuildRequires: xorg-x11-utils
# gcjwebplugin build requirements.
BuildRequires: firefox-devel
BuildRequires: glib2-devel
BuildRequires: gtk2-devel
# Zero-assembler build requirement.
%ifnarch %{jit_arches}
BuildRequires: libffi-devel
%endif
Requires: libjpeg = 6b
# Require /etc/pki/java/cacerts.
Requires: ca-certificates
# Require jpackage-utils for ant.
Requires: jpackage-utils >= 1.7.3-1jpp.3
# Require zoneinfo data provided by tzdata-java subpackage.
Requires: tzdata-java
# Post requires alternatives to install tool alternatives.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall tool alternatives.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# Post requires update-desktop-database to update desktop database
# for jnlp files.
Requires(post): %{_bindir}/update-desktop-database
# Postun requires update-desktop-database to update desktop database
# for jnlp files.
Requires(postun): %{_bindir}/update-desktop-database
# java-1.6.0-openjdk replaces java-1.7.0-icedtea.
#Provides: java-1.7.0-icedtea = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea < 0:1.7.0.0-0.999
# Standard JPackage base provides.
Provides: jre-%{javaver}-%{origin} = %{epoch}:%{version}-%{release}
Provides: jre-%{origin} = %{epoch}:%{version}-%{release}
Provides: jre-%{javaver} = %{epoch}:%{version}-%{release}
Provides: java-%{javaver} = %{epoch}:%{version}-%{release}
Provides: jre = %{javaver}
Provides: java-%{origin} = %{epoch}:%{version}-%{release}
Provides: java = %{epoch}:%{javaver}
# Standard JPackage extensions provides.
Provides: jndi = %{epoch}:%{version}
Provides: jndi-ldap = %{epoch}:%{version}
Provides: jndi-cos = %{epoch}:%{version}
Provides: jndi-rmi = %{epoch}:%{version}
Provides: jndi-dns = %{epoch}:%{version}
Provides: jaas = %{epoch}:%{version}
Provides: jsse = %{epoch}:%{version}
Provides: jce = %{epoch}:%{version}
Provides: jdbc-stdext = 3.0
Provides: java-sasl = %{epoch}:%{version}
%define mozilla_java_plugin_so %{_jvmdir}/%{jrelnk}/lib/%{archinstall}/gcjwebplugin.so
%define altname %name
%define label -%{name}
%define javaws_ver %{javaver}
Patch35: java-1.6.0-openjdk-alt-as-needed-gcjwebplugin-M40.patch
%description
The OpenJDK runtime environment.
%package devel
Summary: OpenJDK Development Environment
Group: Development/Java
# Require base package.
Requires: %{name} = %{epoch}:%{version}-%{release}
# Post requires alternatives to install tool alternatives.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall tool alternatives.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# java-1.6.0-openjdk-devel replaces java-1.7.0-icedtea-devel.
#Provides: java-1.7.0-icedtea-devel = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-devel < 0:1.7.0.0-0.999
# Standard JPackage devel provides.
Provides: java-sdk-%{javaver}-%{origin} = %{epoch}:%{version}
Provides: java-sdk-%{javaver} = %{epoch}:%{version}
Provides: java-sdk-%{origin} = %{epoch}:%{version}
Provides: java-sdk = %{epoch}:%{javaver}
Provides: java-%{javaver}-devel = %{epoch}:%{version}
Provides: java-devel-%{origin} = %{epoch}:%{version}
Provides: java-devel = %{epoch}:%{javaver}
%package alsa
Summary: ALSA support for %{name}
Group: Development/Java
Requires: %{name} = %{version}-%{release}
%description alsa
This package contains Advanced Linux Sound Architecture (ALSA) support
libraries for %{name}.
%package jdbc
Summary: Native library for JDBC support in Java
Group: Development/Databases
Provides: j2se-jdbc = %javaver
Requires: %name = %version-%release
%description jdbc
This package contains the JDBC/ODBC bridge driver for %{name}.
%if_enabled javaws
%package javaws
Summary: Java Web Start
Group: Networking/Other
Requires: %name = %version-%release
Requires(post,preun): alternatives >= 0.2.0
# --- jpackage compatibility stuff starts here ---
Provides: javaws = %{epoch}:%{javaws_ver}
Obsoletes: javaws-menu
# --- jpackage compatibility stuff ends here ---
%description javaws
Java Web Start is a deployment solution for Java-technology-based
applications. It is the plumbing between the computer and the Internet
that allows the user to launch and manage applications right off the
Web. Java Web Start provides easy, one-click activation of
applications, and guarantees that you are always running the latest
version of the application, eliminating complicated installation or
upgrade procedures.
This package provides the Java Web Start installation that is bundled
with %{name} J2SE Runtime Environment.
%endif # enabled javaws
%description devel
The OpenJDK development tools.
%package demo
Summary: OpenJDK Demos
Group: Development/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
# java-1.6.0-openjdk-demo replaces java-1.7.0-icedtea-demo.
#Provides: java-1.7.0-icedtea-demo = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-demo < 0:1.7.0.0-0.999
%description demo
The OpenJDK demos.
%package src
Summary: OpenJDK Source Bundle
Group: Development/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
# java-1.6.0-openjdk-src replaces java-1.7.0-icedtea-src.
#Provides: java-1.7.0-icedtea-src = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-src < 0:1.7.0.0-0.999
%description src
The OpenJDK source bundle.
%package javadoc
Summary: OpenJDK API Documentation
Group: Development/Java
# Post requires alternatives to install javadoc alternative.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall javadoc alternative.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# java-1.6.0-openjdk-javadoc replaces java-1.7.0-icedtea-javadoc.
#Provides: java-1.7.0-icedtea-javadoc = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-javadoc < 0:1.7.0.0-0.999
# Standard JPackage javadoc provides.
Provides: java-javadoc = %{epoch}:%{version}-%{release}
Provides: java-%{javaver}-javadoc = %{epoch}:%{version}-%{release}
%description javadoc
The OpenJDK API documentation.
%package -n mozilla-plugin-%name
Summary: OpenJDK Web Browser Plugin
Group: Development/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: browser-plugins-npapi
# Post requires alternatives to install plugin alternative.
Requires(post): alternatives >= 0:0.2.0-alt0.12
# Postun requires alternatives to uninstall plugin alternative.
Requires(postun): alternatives >= 0:0.2.0-alt0.12
# java-1.6.0-openjdk-plugin replaces java-1.7.0-icedtea-plugin.
#Provides: java-1.7.0-icedtea-plugin = 0:1.7.0.0-0.999
#Obsoletes: java-1.7.0-icedtea-plugin < 0:1.7.0.0-0.999
# Standard JPackage plugin provides.
Provides: java-plugin = %{javaver}
Provides: java-%{javaver}-plugin = %{epoch}:%{version}
%description -n mozilla-plugin-%name
The OpenJDK web browser plugin.
%prep
%setup -q -n icedtea6-%{icedteaver}
%setup -q -n icedtea6-%{icedteaver} -T -D -a 6
%setup -q -n icedtea6-%{icedteaver} -T -D -a 2
%patch0
cp %{SOURCE4} .
cp %{SOURCE5} .
cp %{SOURCE7} .
%patch35 -p0
%build
unset JAVA_HOME
#autoreconf
# Build IcedTea and OpenJDK.
./configure --with-openjdk-home=/usr/lib/jvm/java %{icedteaopt} --with-openjdk-src-zip=%{SOURCE1}
%if %{gcjbootstrap}
make MEMORY_LIMIT=-J-Xmx512m stamps/patch-ecj.stamp
%endif
make MEMORY_LIMIT=-J-Xmx512m stamps/patch.stamp
patch -p1 < %{PATCH33}
patch -p1 < %{PATCH34}
make MEMORY_LIMIT=-J-Xmx512m
export JAVA_HOME=$(pwd)/%{buildoutputdir}/j2sdk-image
# Build Java Access Bridge for GNOME.
pushd java-access-bridge-%{accessver}
patch -l -p1 < %{PATCH1}
OLD_PATH=$PATH
export PATH=$JAVA_HOME/bin:$OLD_PATH
./configure --with-openjdk-home=/usr/lib/jvm/java
make MEMORY_LIMIT=-J-Xmx512m
export PATH=$OLD_PATH
cp -a bridge/accessibility.properties $JAVA_HOME/jre/lib
cp -a gnome-java-bridge.jar $JAVA_HOME/jre/lib/ext
popd
%if %{runtests}
# Run jtreg test suite.
{
echo ====================JTREG TESTING========================
export DISPLAY=:20
Xvfb :20 -screen 0 1x1x24 -ac&
echo $! > Xvfb.pid
make MEMORY_LIMIT=-J-Xmx512m jtregcheck -k | tee jtreg_output
kill -9 `cat Xvfb.pid` || :
unset DISPLAY
rm -f Xvfb.pid
echo ====================JTREG TESTING END====================
} || :
# Run Mauve test suite.
{
pushd mauve-%{mauvedate}
./configure --with-openjdk-home=/usr/lib/jvm/java
make MEMORY_LIMIT=-J-Xmx512m
echo ====================MAUVE TESTING========================
export DISPLAY=:20
Xvfb :20 -screen 0 1x1x24 -ac&
echo $! > Xvfb.pid
$JAVA_HOME/bin/java Harness -vm $JAVA_HOME/bin/java \
-file %{SOURCE7} -timeout 30000 2>&1 | tee mauve_output
kill -9 `cat Xvfb.pid` || :
unset DISPLAY
rm -f Xvfb.pid
echo ====================MAUVE TESTING END====================
popd
} || :
%endif
%install
unset JAVA_HOME
pushd %{buildoutputdir}/j2sdk-image
# 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}
if /bin/false; then
# Install cacerts symlink.
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/cacerts
pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security
RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \
%{_jvmdir}/%{jredir}/lib/security)
ln -sf $RELATIVE/cacerts .
popd
fi
# 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)-%{name}.1
done
# Install demos and samples.
cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
mkdir -p sample/rmi
#mv bin/java-rmi.cgi sample/rmi
cp -a sample $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}
popd
# Install Javadoc documentation.
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}
cp -a %{buildoutputdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{name}
# Install icons and menu entries.
for s in 16 24 32 48 ; do
install -D -p -m 644 \
openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
$RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java.png
done
# Install desktop files.
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps}
cp javaws.png $RPM_BUILD_ROOT%{_datadir}/pixmaps
install -D -m644 javaws.desktop $RPM_BUILD_ROOT%{_datadir}/applications/javaws.desktop
#desktop-file-install \
#--dir $RPM_BUILD_ROOT%{_datadir}/applications javaws.desktop
for e in jconsole policytool ; do
install -D -m644 $e.desktop $RPM_BUILD_ROOT%{_datadir}/applications/$e.desktop
#desktop-file-install --vendor=fedora --mode=644 \
#--dir $RPM_BUILD_ROOT%{_datadir}/applications $e.desktop
done
# 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
# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# 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
install -d $RPM_BUILD_ROOT/%_altdir; cat >$RPM_BUILD_ROOT/%_altdir/javadocdir_%{name}-javadoc<<EOF
%{_javadocdir}/java %{_javadocdir}/%{name}/api %{priority}
EOF
%__subst 's,^Categories=.*,Categories=Settings;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};,' %buildroot/usr/share/applications/policytool.desktop
# HACK around find-requires
%define __find_requires $RPM_BUILD_ROOT/.find-requires
cat > $RPM_BUILD_ROOT/.find-requires <<EOF
(/usr/lib/rpm/find-requires | grep -v %{_jvmdir}/%{sdkdir} | sed -e s,^/usr/lib64/lib,lib, | sed -e s,^/usr/lib/lib,lib,) || :
EOF
chmod 755 $RPM_BUILD_ROOT/.find-requires
# end HACK around find-requires
##################################################
# --- alt linux specific, shared with openjdk ---#
##################################################
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/applications
if [ -e $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/bin/jvisualvm ]; then
cat >> $RPM_BUILD_ROOT%{_datadir}/applications/%{name}-jvisualvm.desktop << EOF
[Desktop Entry]
Name=Java VisualVM (%{name})
Comment=Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool
Exec=jvisualvm
Icon=%{name}
Terminal=false
Type=Application
Categories=Development;Profiling;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};
EOF
fi
%if_enabled moz_plugin
# ControlPanel freedesktop.org menu entry
cat >> $RPM_BUILD_ROOT%{_datadir}/applications/%{name}-control-panel.desktop << EOF
[Desktop Entry]
Name=Java Plugin Control Panel (%{name})
Comment=Java Control Panel
Exec=jcontrol
Icon=%{name}
Terminal=false
Type=Application
Categories=Settings;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};
EOF
# javaws freedesktop.org menu entry
cat >> $RPM_BUILD_ROOT%{_datadir}/applications/%{name}-javaws.desktop << EOF
[Desktop Entry]
Name=Java Web Start (%{name})
Comment=Java Application Launcher
MimeType=application/x-java-jnlp-file;
Exec=%{_jvmdir}/%{jredir}/bin/javaws %%u
Icon=%{name}
Terminal=false
Type=Application
Categories=Settings;Java;X-ALTLinux-Java;X-ALTLinux-Java-%javaver-%{origin};
EOF
%endif
# Install substitute rules for buildreq
echo java >j2se-buildreq-substitute
echo java-devel >j2se-devel-buildreq-substitute
mkdir -p %buildroot%_sysconfdir/buildreqs/packages/substitute.d
install -m644 j2se-buildreq-substitute \
%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name
install -m644 j2se-devel-buildreq-substitute \
%buildroot%_sysconfdir/buildreqs/packages/substitute.d/%name-devel
%__install -d %buildroot%_altdir
# J2SE alternative
%__cat <<EOF >%buildroot%_altdir/%altname-java
%{_bindir}/java %{jrebindir}/java %priority
%_man1dir/java.1.gz %_man1dir/java%{label}.1.gz %{jrebindir}/java
EOF
# binaries and manuals
for i in keytool policytool servertool pack200 unpack200 \
orbd rmid rmiregistry tnameserv
do
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%_bindir/$i %{_jvmdir}/%{jredir}/bin/$i %{jrebindir}/java
%_man1dir/$i.1.gz %_man1dir/${i}%{label}.1.gz %{jrebindir}/java
EOF
done
# ----- JPackage compatibility alternatives ------
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%{_jvmdir}/jre %{_jvmdir}/%{jrelnk} %{jrebindir}/java
%{_jvmjardir}/jre %{_jvmjardir}/%{jrelnk} %{jrebindir}/java
%{_jvmdir}/jre-%{origin} %{_jvmdir}/%{jrelnk} %{jrebindir}/java
%{_jvmjardir}/jre-%{origin} %{_jvmjardir}/%{jrelnk} %{jrebindir}/java
%{_jvmdir}/jre-%{javaver} %{_jvmdir}/%{jrelnk} %{jrebindir}/java
%{_jvmjardir}/jre-%{javaver} %{_jvmjardir}/%{jrelnk} %{jrebindir}/java
EOF
%if_enabled moz_plugin
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%{_bindir}/ControlPanel %{jrebindir}/ControlPanel %{jrebindir}/java
%{_bindir}/jcontrol %{jrebindir}/jcontrol %{jrebindir}/java
EOF
%endif
# JPackage specific: alternatives for security policy
%__cat <<EOF >>%buildroot%_altdir/%altname-java
%{_jvmdir}/%{jrelnk}/lib/security/local_policy.jar %{_jvmprivdir}/%{name}/jce/vanilla/local_policy.jar %{priority}
%{_jvmdir}/%{jrelnk}/lib/security/US_export_policy.jar %{_jvmprivdir}/%{name}/jce/vanilla/US_export_policy.jar %{_jvmprivdir}/%{name}/jce/vanilla/local_policy.jar
EOF
# ----- end: JPackage compatibility alternatives ------
# Javac alternative
%__cat <<EOF >%buildroot%_altdir/%altname-javac
%_bindir/javac %{_jvmdir}/%{sdkdir}/bin/javac %priority
%_prefix/lib/jdk %{_jvmdir}/%{sdkdir} %{_jvmdir}/%{sdkdir}/bin/javac
%_man1dir/javac.1.gz %_man1dir/javac%{label}.1.gz %{_jvmdir}/%{sdkdir}/bin/javac
EOF
# binaries and manuals
for i in appletviewer extcheck idlj jar jarsigner javadoc javah javap jdb native2ascii rmic serialver apt jconsole jinfo jmap jps jsadebugd jstack jstat jstatd \
jhat jrunscript jvisualvm schemagen wsgen wsimport xjc
do
if [ -e $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/bin/$i ]; then
%__cat <<EOF >>%buildroot%_altdir/%altname-javac
%_bindir/$i %{_jvmdir}/%{sdkdir}/bin/$i %{_jvmdir}/%{sdkdir}/bin/javac
%_man1dir/$i.1.gz %_man1dir/${i}%{label}.1.gz %{_jvmdir}/%{sdkdir}/bin/javac
EOF
fi
done
# binaries w/o manuals
for i in HtmlConverter
do
%__cat <<EOF >>%buildroot%_altdir/%altname-javac
%_bindir/$i %{_jvmdir}/%{sdkdir}/bin/$i %{_jvmdir}/%{sdkdir}/bin/javac
EOF
done
# ----- JPackage compatibility alternatives ------
%__cat <<EOF >>%buildroot%_altdir/%altname-javac
%_prefix/lib/j2se %{_jvmdir}/%{sdkdir} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/java %{_jvmdir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmjardir}/java %{_jvmjardir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/java-%{origin} %{_jvmdir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmjardir}/java-%{origin} %{_jvmjardir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmdir}/java-%{javaver} %{_jvmdir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
%{_jvmjardir}/java-%{javaver} %{_jvmjardir}/%{sdklnk} %{_jvmdir}/%{sdkdir}/bin/javac
EOF
# ----- end: JPackage compatibility alternatives ------
%if_enabled moz_plugin
# Mozilla plugin alternative
%__cat <<EOF >%buildroot%_altdir/%name-mozilla
%browser_plugins_path/libjavaplugin_oji.so %mozilla_java_plugin_so %priority
EOF
%endif # enabled moz_plugin
%if_enabled javaws
# Java Web Start alternative
%__cat <<EOF >%buildroot%_altdir/%altname-javaws
%_bindir/javaws %{jrebindir}/javaws %{jrebindir}/java
%_man1dir/javaws.1.gz %_man1dir/javaws%label.1.gz %{jrebindir}/java
EOF
# ----- JPackage compatibility alternatives ------
%__cat <<EOF >>%buildroot%_altdir/%altname-javaws
%{_datadir}/javaws %{jrebindir}/javaws %{jrebindir}/java
EOF
# ----- end: JPackage compatibility alternatives ------
%endif # enabled javaws
# hack (see #11383) to enshure that all man pages will be compressed
for i in $RPM_BUILD_ROOT%_man1dir/*.1; do
[ -f $i ] && gzip -9 $i
done
%post
# ----- JPackage stuff ------
if [ -d %{_jvmdir}/%{jrelnk}/lib/security ]; then
# Need to remove the old jars in order to support upgrading, ugly :(
# update-alternatives fails silently if the link targets exist as files.
rm -f %{_jvmdir}/%{jrelnk}/lib/security/{local,US_export}_policy.jar
fi
# %ifnarch x86_64
# if [ -f %{_sysconfdir}/mime.types ]; then
# %__subst 's|application/x-java-jnlp-file.*||g' %{_sysconfdir}/mailcap.bak 2>/dev/null
# echo "type=application/x-java-jnlp-file; description=\"Java Web Start\"; exts=\"jnlp\"" >> %{_sysconfdir}/mailcap 2>/dev/null
# %__subst 's|application/x-java-jnlp-file.*||g' %{_sysconfdir}/mime.types 2>/dev/null
# echo "application/x-java-jnlp-file jnlp" >> %{_sysconfdir}/mime.types 2>/dev/null
# fi
# %endif
# ----- JPackage stuff ------
%register_alternatives %altname-java
# though it is useless for openjdk, it is harmless
%pre
[ -L %{_jvmdir}/%{jredir}/lib/fonts ] || %__rm -rf %{_jvmdir}/%{jredir}/lib/fonts
[ -L %{_jvmdir}/%{jredir}/lib/oblique-fonts ] || %__rm -rf %{_jvmdir}/%{jredir}/lib/oblique-fonts
%preun
%unregister_alternatives %altname-java
%post devel
%register_alternatives %altname-javac
%update_menus
%preun devel
%unregister_alternatives %altname-javac
%postun devel
%clean_menus
%if_enabled desktop
%post -n java-%{origin}-desktop
%update_mimedb
%update_desktopdb
%postun -n java-%{origin}-desktop
%clean_mimedb
%clean_desktopdb
%endif
%if_enabled moz_plugin
%post -n mozilla-plugin-%name
if [ -d %browser_plugins_path ]; then
%register_alternatives %name-mozilla
fi
%update_menus
%preun -n mozilla-plugin-%name
%unregister_alternatives %name-mozilla
%postun -n mozilla-plugin-%name
%clean_menus
%endif # enabled moz_plugin
%if_enabled javaws
%post javaws
%register_alternatives %altname-javaws
%update_menus
%update_desktopdb
%preun javaws
%unregister_alternatives %altname-javaws
%postun javaws
%clean_menus
%clean_desktopdb
%endif # enabled javaws
##################################################
# - END alt linux specific, shared with openjdk -#
##################################################
%post javadoc
%register_alternatives javadocdir_%{name}-javadoc
exit 0
%postun javadoc
if [ $1 -eq 0 ]
then
%unregister_alternatives javadocdir_%{name}-javadoc
fi
exit 0
%files -f %{name}.files
%_altdir/%altname-java
%_sysconfdir/buildreqs/packages/substitute.d/%name
%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
# FIXME: The TRADEMARK file should be in j2sdk-image.
%doc openjdk/TRADEMARK
%doc AUTHORS
%doc COPYING
%doc ChangeLog
%doc NEWS
%doc README
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
%{_jvmjardir}/%{jrelnk}
%{_jvmprivdir}/*
%{jvmjardir}
%dir %{_jvmdir}/%{jredir}/lib/security
%{_jvmdir}/%{jredir}/lib/security/cacerts
# FIXME: These should be replaced by symlinks into /etc.
%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
%{_datadir}/applications/*policytool.desktop
%{_datadir}/icons/hicolor/*x*/apps/java.png
%{_mandir}/man1/java-%{name}.1*
%{_mandir}/man1/keytool-%{name}.1*
%{_mandir}/man1/orbd-%{name}.1*
%{_mandir}/man1/pack200-%{name}.1*
%{_mandir}/man1/policytool-%{name}.1*
%{_mandir}/man1/rmid-%{name}.1*
%{_mandir}/man1/rmiregistry-%{name}.1*
%{_mandir}/man1/servertool-%{name}.1*
%{_mandir}/man1/tnameserv-%{name}.1*
%{_mandir}/man1/unpack200-%{name}.1*
%{_datadir}/pixmaps/javaws.png
%{_datadir}/applications/javaws.desktop
%files devel
%_altdir/%altname-javac
%_sysconfdir/buildreqs/packages/substitute.d/%name-devel
%doc %{buildoutputdir}/j2sdk-image/ASSEMBLY_EXCEPTION
%doc %{buildoutputdir}/j2sdk-image/LICENSE
%doc %{buildoutputdir}/j2sdk-image/README.html
%doc %{buildoutputdir}/j2sdk-image/THIRD_PARTY_README
# FIXME: The TRADEMARK file should be in j2sdk-image.
%doc openjdk/TRADEMARK
%dir %{_jvmdir}/%{sdkdir}/bin
%dir %{_jvmdir}/%{sdkdir}/include
%dir %{_jvmdir}/%{sdkdir}/lib
%{_jvmdir}/%{sdkdir}/bin/*
%{_jvmdir}/%{sdkdir}/include/*
%{_jvmdir}/%{sdkdir}/lib/*
%{_jvmdir}/%{sdklnk}
%{_jvmjardir}/%{sdklnk}
%{_datadir}/applications/*jconsole.desktop
%{_mandir}/man1/appletviewer-%{name}.1*
%{_mandir}/man1/apt-%{name}.1*
%{_mandir}/man1/extcheck-%{name}.1*
%{_mandir}/man1/idlj-%{name}.1*
%{_mandir}/man1/jar-%{name}.1*
%{_mandir}/man1/jarsigner-%{name}.1*
%{_mandir}/man1/javac-%{name}.1*
%{_mandir}/man1/javadoc-%{name}.1*
%{_mandir}/man1/javah-%{name}.1*
%{_mandir}/man1/javap-%{name}.1*
%{_mandir}/man1/jconsole-%{name}.1*
%{_mandir}/man1/jdb-%{name}.1*
%{_mandir}/man1/jhat-%{name}.1*
%{_mandir}/man1/jinfo-%{name}.1*
%{_mandir}/man1/jmap-%{name}.1*
%{_mandir}/man1/jps-%{name}.1*
%{_mandir}/man1/jrunscript-%{name}.1*
%{_mandir}/man1/jsadebugd-%{name}.1*
%{_mandir}/man1/jstack-%{name}.1*
%{_mandir}/man1/jstat-%{name}.1*
%{_mandir}/man1/jstatd-%{name}.1*
%{_mandir}/man1/native2ascii-%{name}.1*
%{_mandir}/man1/rmic-%{name}.1*
%{_mandir}/man1/schemagen-%{name}.1*
%{_mandir}/man1/serialver-%{name}.1*
%{_mandir}/man1/wsgen-%{name}.1*
%{_mandir}/man1/wsimport-%{name}.1*
%{_mandir}/man1/xjc-%{name}.1*
%files demo -f %{name}-demo.files
%files src
%doc README.src
%{_jvmdir}/%{sdkdir}/src.zip
%if %{runtests}
# FIXME: put these in a separate testresults subpackage.
%doc mauve_tests
%doc mauve-%{mauvedate}/mauve_output
%doc jtreg_output
%endif
%files javadoc
%_altdir/javadocdir_%{name}-javadoc
%doc %{_javadocdir}/%{name}
%files -n mozilla-plugin-%name
%_altdir/%altname-mozilla
%{_datadir}/applications/%{name}-control-panel.desktop
%doc README.plugin
%{_jvmdir}/%{jredir}/lib/%{archinstall}/gcjwebplugin.so
%files javaws
%_altdir/%altname-javaws
%{_datadir}/applications/%{name}-javaws.desktop
%changelog
…
Полный changelog можно просмотреть здесь