1
0
Fridrich Strba 2020-01-23 22:00:21 +00:00 committed by Git OBS Bridge
commit 302079db68
21 changed files with 1845 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ff125a90f7285cc96e7a36543efdcaca94108bdd17819bd8ebe744ba69a9bf7
size 121420076

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:74203efa15f569c2c437ef0c2855954ab8b928f2b97abe3c0373cfa6df3f9b81
size 26391010

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:56e380e5b23a34535d07deb222b472c341d5fbfe08e753cf90b79d0f3e777570
size 10470834

72
TestCryptoLevel.java Normal file
View File

@ -0,0 +1,72 @@
/* TestCryptoLevel -- Ensure unlimited crypto policy is in use.
Copyright (C) 2012 Red Hat, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.security.Permission;
import java.security.PermissionCollection;
public class TestCryptoLevel
{
public static void main(String[] args)
throws NoSuchFieldException, ClassNotFoundException,
IllegalAccessException, InvocationTargetException
{
Class<?> cls = null;
Method def = null, exempt = null;
try
{
cls = Class.forName("javax.crypto.JceSecurity");
}
catch (ClassNotFoundException ex)
{
System.err.println("Running a non-Sun JDK.");
System.exit(0);
}
try
{
def = cls.getDeclaredMethod("getDefaultPolicy");
exempt = cls.getDeclaredMethod("getExemptPolicy");
}
catch (NoSuchMethodException ex)
{
System.err.println("Running IcedTea with the original crypto patch.");
System.exit(0);
}
def.setAccessible(true);
exempt.setAccessible(true);
PermissionCollection defPerms = (PermissionCollection) def.invoke(null);
PermissionCollection exemptPerms = (PermissionCollection) exempt.invoke(null);
Class<?> apCls = Class.forName("javax.crypto.CryptoAllPermission");
Field apField = apCls.getDeclaredField("INSTANCE");
apField.setAccessible(true);
Permission allPerms = (Permission) apField.get(null);
if (defPerms.implies(allPerms) && (exemptPerms == null || exemptPerms.implies(allPerms)))
{
System.err.println("Running with the unlimited policy.");
System.exit(0);
}
else
{
System.err.println("WARNING: Running with a restricted crypto policy.");
System.exit(-1);
}
}
}

View File

@ -0,0 +1,58 @@
Disable doclint by default
OpenJDK 8 adds and enables doclint by default. This catches issues in
javadoc comments. It is too strict, breaks javadoc compilation and, in
general, breaks the build for old code known to build with previous
versions of OpenJDK.
See: http://blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
See: https://lists.fedoraproject.org/pipermail/java-devel/2014-February/005150.html
Author: Andrew John Hughes <ahughes@redhat.com>
Author: Emmanuel Bourg <ebourg@apache.org>
--- jdk8/langtools/src/share/classes/com/sun/tools/javadoc/DocEnv.java
+++ jdk8/langtools/src/share/classes/com/sun/tools/javadoc/DocEnv.java
@@ -811,10 +811,9 @@
doclintOpts.add(opt == null ? DocLint.XMSGS_OPTION : DocLint.XMSGS_CUSTOM_PREFIX + opt);
}
- if (doclintOpts.isEmpty()) {
- doclintOpts.add(DocLint.XMSGS_OPTION);
- } else if (doclintOpts.size() == 1
- && doclintOpts.get(0).equals(DocLint.XMSGS_CUSTOM_PREFIX + "none")) {
+ if (doclintOpts.isEmpty() ||
+ (doclintOpts.size() == 1
+ && doclintOpts.get(0).equals(DocLint.XMSGS_CUSTOM_PREFIX + "none"))) {
return;
}
--- jdk8/langtools/test/tools/javadoc/doclint/DocLintTest.java
+++ jdk8/langtools/test/tools/javadoc/doclint/DocLintTest.java
@@ -130,12 +130,12 @@
};
test(Collections.<String>emptyList(),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9A, Message.DL_WRN12A));
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
test(Arrays.asList(rawDiags),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
test(Arrays.asList("-Xdoclint:none"),
Main.Result.OK,
@@ -158,8 +158,8 @@
EnumSet.of(Message.DL_WRN12));
test(Arrays.asList(rawDiags, "-private"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
test(Arrays.asList(rawDiags, "-Xdoclint:syntax", "-private"),
Main.Result.ERROR,

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ff852b82ae7db7a95981271037eb3a3d52c59581e3b27a638a7c6bc8eecb4a3
size 1515308

54
include-all-srcs.patch Normal file
View File

@ -0,0 +1,54 @@
--- jdk8/jdk/make/CreateJars.gmk
+++ jdk8/jdk/make/CreateJars.gmk
@@ -569,38 +569,12 @@
##########################################################################################
SRC_ZIP_INCLUDES = \
- com/sun/corba \
- com/sun/image/codec/jpeg \
- com/sun/imageio \
- com/sun/java_cup \
- com/sun/javadoc \
- com/sun/java/swing \
- com/sun/jmx \
- com/sun/naming \
- com/sun/org/apache \
- com/sun/security/auth \
- com/sun/security/jgss \
- com/sun/source \
+ com \
java \
- javax/accessibility \
- javax/annotation \
- javax/imageio \
- javax/lang \
- javax/management \
- javax/naming \
- javax/print \
- javax/rmi \
- javax/script \
- javax/security \
- javax/sound \
- javax/sql \
- javax/swing \
- javax/tools \
- javax/xml \
- org/ietf \
- org/omg \
- org/w3c/dom \
- org/xml/sax \
+ javax \
+ jdk \
+ org \
+ sun \
#
SRC_ZIP_SRCS = $(JDK_TOPDIR)/src/share/classes $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes
@@ -632,7 +606,6 @@
$(eval $(call SetupZipArchive,BUILD_SRC_ZIP, \
SRC := $(SRC_ZIP_SRCS) $(IMAGES_OUTPUTDIR)/src, \
INCLUDES := $(SRC_ZIP_INCLUDES) launcher, \
- EXCLUDES := javax/swing/beaninfo, \
SUFFIXES := .java .c .h, \
ZIP := $(IMAGES_OUTPUTDIR)/src.zip, \
EXTRA_DEPS := $(LAUNCHER_ZIP_SRC)))

972
java-1_8_0-openj9.spec Normal file
View File

@ -0,0 +1,972 @@
#
# spec file for package java-1_8_0-openj9
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global debug 0
%global bootcycle 1
# Convert an absolute path to a relative path. Each symbolic link is
# specified relative to the directory in which it is installed so that
# it will resolve properly within chrooted installations.
%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])'
%global abs2rel perl -e %{script}
%global syslibdir %{_libdir}
# Standard JPackage naming and versioning defines.
%global updatever 242
%global buildver b08
%global root_repository https://github.com/ibmruntimes/openj9-openjdk-jdk8/archive
%global root_revision 0033b2fea25a2034ee064bffcb01fad1863fda5d
%global root_branch openj9-0.18.0
%global omr_repository https://github.com/eclipse/openj9-omr/archive
%global omr_revision 7a1b0239a91f9d8819cb541812b4d774edd5bba4
%global omr_branch v0.18.0-release
%global openj9_repository https://github.com/eclipse/openj9/archive
%global openj9_revision 6968c18d74cedfde4406ac680b869f14d4ba2ed2
%global openj9_branch v0.18.0-release
%global openj9_tag openj9-0.18.0
%global icedtea_sound_version 1.0.1
# priority must be 6 digits in total
%global priority 1801
%global javaver 1.8.0
# Standard JPackage directories and symbolic links.
%global sdklnk java-%{javaver}-openj9
%global archname %{sdklnk}
%global jrelnk jre-%{javaver}-openj9
%global sdkdir %{sdklnk}-%{javaver}
%global jredir %{sdkdir}/jre
%global sdkbindir %{_jvmdir}/%{sdklnk}/bin
%global jrebindir %{_jvmdir}/%{jrelnk}/bin
%global jvmjardir %{_jvmjardir}/%{sdkdir}
%global jvmjarlink %{_jvmjardir}/%{sdklnk}
# Prevent brp-java-repack-jars from being run.
%global __jar_repack 0
# cacert symlink
%global cacerts %{_jvmdir}/%{jredir}/lib/security/cacerts
# real file made by update-ca-certificates
%global javacacerts %{_var}/lib/ca-certificates/java-cacerts
# turn zero on non jit arches by default
%if 0%{?suse_version} >= 1140
%global with_pulseaudio 1
%else
%global with_pulseaudio 0
%endif
%ifarch x86_64
%global archinstall amd64
%endif
%ifarch ppc64le
%global archinstall ppc64le
%endif
%ifarch s390x
%global archinstall s390x
%endif
%if %{debug}
%global debugbuild slowdebug
%else
%global debugbuild release
%endif
%if %{bootcycle}
%global imagesdir build/%{debugbuild}/bootcycle-build/images
%global imagestarget bootcycle-images
%else
%global imagesdir build/%{debugbuild}/images
%global imagestarget images
%endif
%global bits 64
ExclusiveArch: x86_64 ppc64le s390x
Name: java-1_8_0-openj9
Version: %{javaver}.%{updatever}
Release: 0
Summary: OpenJDK 8 Runtime Environment with OpenJ9 virtual machine
License: Apache-1.1 and Apache-2.0 and GPL-1.0+ and GPL-2.0 and GPL-2.0-with-classpath-exception and LGPL-2.0 and MPL-1.0 and MPL-1.1 and SUSE-Public-Domain and W3C
Group: Development/Languages/Java
Url: http://openjdk.java.net/
# Sources from upstream OpenJDK8 project.
Source0: %{root_repository}/%{root_revision}.zip
Source1: %{omr_repository}/%{omr_revision}.zip
Source2: %{openj9_repository}/%{openj9_revision}.zip
# Pulseaudio plugin
Source9: http://icedtea.classpath.org/download/source/icedtea-sound-%{icedtea_sound_version}.tar.xz
# Desktop files. Adapated from IcedTea.
Source11: jconsole.desktop.in
Source12: policytool.desktop.in
# nss configuration file
Source13: nss.cfg
# Ensure we aren't using the limited crypto policy
Source14: TestCryptoLevel.java
Source100: openj9-nogit.patch.in
# RPM/distribution specific patches
# Restrict access to java-atk-wrapper classes
Patch1: java-atk-wrapper-security.patch
# Allow multiple initialization of PKCS11 libraries
Patch2: multiple-pkcs11-library-init.patch
# Disable doclint for compatibility
Patch3: disable-doclint-by-default.patch
# Patches for system libraries
Patch201: system-libjpeg.patch
Patch202: system-libpng.patch
Patch203: system-lcms.patch
Patch205: link-with-as-needed.patch
BuildRequires: alsa-lib-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: binutils
BuildRequires: cups-devel
BuildRequires: desktop-file-utils
BuildRequires: fdupes git freemarker nasm
BuildRequires: fontconfig
BuildRequires: freetype2-devel
BuildRequires: gcc-c++ libnuma-devel libdwarf-devel libelf-devel
BuildRequires: giflib-devel
BuildRequires: gtk2-devel
BuildRequires: libjpeg-devel
BuildRequires: liblcms2-devel
BuildRequires: libpng-devel
BuildRequires: libxslt
BuildRequires: pkgconfig
BuildRequires: unzip
BuildRequires: update-desktop-files
BuildRequires: xorg-x11-proto-devel
BuildRequires: zip
# Requires rest of java
Requires: %{name}-headless = %{version}-%{release}
Requires: fontconfig
# mozilla-nss has to be installed to prevent
# java.security.ProviderException: Could not initialize NSS
# ...
# java.io.FileNotFoundException: /usr/lib64/libnss3.so
#was bnc#634793
Requires: mozilla-nss
# Standard JPackage base provides.
Provides: java = %{javaver}
Provides: java-%{javaver} = %{version}-%{release}
Provides: java-openjdk = %{version}-%{release}
Provides: java-openj9 = %{version}-%{release}
Provides: jre = %{javaver}
Provides: jre-%{javaver} = %{version}-%{release}
Provides: jre-%{javaver}-openjdk = %{version}-%{release}
Provides: jre-%{javaver}-openj9 = %{version}-%{release}
Provides: jre-openjdk = %{version}-%{release}
Provides: jre-openj9 = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: java-fonts = %{version}
# Required at least by fop
Provides: java-%{bits} = %{javaver}
Provides: java-%{javaver}-%{bits}
Provides: java-openjdk-%{bits} = %{version}-%{release}
Provides: jre-%{bits} = %{javaver}
Provides: jre-%{javaver}-%{bits}
Provides: jre-%{javaver}-openjdk-%{bits} = %{version}-%{release}
Provides: jre-%{javaver}-openj9-%{bits} = %{version}-%{release}
Provides: jre-openjdk-%{bits} = %{version}-%{release}
Provides: jre-openj9-%{bits} = %{version}-%{release}
Provides: jre1.3.x
Provides: jre1.4.x
Provides: jre1.5.x
Provides: jre1.6.x
Provides: jre1.7.x
Provides: jre1.8.x
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libX11-devel
BuildRequires: libXi-devel
BuildRequires: libXinerama-devel
BuildRequires: libXt-devel
BuildRequires: libXtst-devel
%if %{bootcycle}
BuildRequires: java-devel >= 1.7
BuildConflicts: java-devel >= 9 java-headless >= 9 java >= 9
%else
BuildRequires: %{name}-devel
%endif
#BuildIgnore java-headless >= 9
BuildRequires: java-ca-certificates
Requires(post): file
Requires(post): java-ca-certificates
# pulse audio requirements
%if %{with_pulseaudio}
BuildRequires: libpulse-devel >= 0.9.11
BuildRequires: pulseaudio >= 0.9.11
%endif
%description
The OpenJDK 8 runtime environment.
%package headless
Summary: OpenJDK 8 Runtime Environment
Group: Development/Languages/Java
# Require jpackage-utils for ownership of /usr/lib/jvm/
Requires: jpackage-utils
# Post requires update-alternatives to install tool update-alternatives.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall tool update-alternatives.
Requires(postun): update-alternatives
# Standard JPackage base provides.
Provides: java-%{javaver}-headless = %{version}-%{release}
Provides: java-headless = %{javaver}
Provides: java-openjdk-headless = %{version}-%{release}
Provides: java-openj9-headless = %{version}-%{release}
Provides: jre-%{javaver}-headless = %{version}-%{release}
Provides: jre-%{javaver}-openjdk-headless = %{version}-%{release}
Provides: jre-%{javaver}-openj9-headless = %{version}-%{release}
Provides: jre-headless = %{javaver}
Provides: jre-openjdk-headless = %{version}-%{release}
Provides: jre-openj9-headless = %{version}-%{release}
# Standard JPackage extensions provides.
Provides: jaas = %{version}
Provides: java-sasl = %{version}
Provides: jce = %{version}
Provides: jdbc-stdext = 4.2
Provides: jndi = %{version}
Provides: jndi-cos = %{version}
Provides: jndi-dns = %{version}
Provides: jndi-ldap = %{version}
Provides: jndi-rmi = %{version}
Provides: jsse = %{version}
Requires(post): tzdata-java8
%description headless
The OpenJDK 8 runtime environment without audio and video support.
%package devel
Summary: OpenJDK 8 Development Environment
Group: Development/Languages/Java
# Require base package.
Requires: %{name} = %{version}-%{release}
# Post requires update-alternatives to install tool update-alternatives.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall tool update-alternatives.
Requires(postun): update-alternatives
# Standard JPackage devel provides.
Provides: java-%{javaver}-devel = %{version}
Provides: java-devel = %{javaver}
Provides: java-devel-openjdk = %{version}
Provides: java-devel-openj9 = %{version}
Provides: java-sdk = %{javaver}
Provides: java-sdk-%{javaver} = %{version}
Provides: java-sdk-%{javaver}-openjdk = %{version}
Provides: java-sdk-%{javaver}-openj9 = %{version}
Provides: java-sdk-openjdk = %{version}
Provides: java-sdk-openj9 = %{version}
%description devel
The OpenJDK 8 development tools.
%package demo
Summary: OpenJDK 8 Demos
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
%description demo
The OpenJDK 8 demos.
%package src
Summary: OpenJDK 8 Source Bundle
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
%description src
The OpenJDK 8 source bundle.
%package javadoc
Summary: OpenJDK 8 API Documentation
Group: Development/Languages/Java
Requires: jpackage-utils
# Post requires update-alternatives to install javadoc alternative.
Requires(post): update-alternatives
# Postun requires update-alternatives to uninstall javadoc alternative.
Requires(postun): update-alternatives
# Standard JPackage javadoc provides.
Provides: java-%{javaver}-javadoc = %{version}-%{release}
Provides: java-javadoc = %{version}-%{release}
BuildArch: noarch
%description javadoc
The OpenJDK 8 API documentation.
%package accessibility
Summary: OpenJDK 8 accessibility connector
Group: Development/Languages/Java
Requires: %{name} = %{version}-%{release}
Requires: java-atk-wrapper
%description accessibility
Enables accessibility support in OpenJDK 8 by using java-atk-wrapper.
This allows compatible at-spi2 based accessibility programs to work
for AWT and Swing-based programs.
Please note, the java-atk-wrapper is still in beta, and OpenJDK 8
itself is still being tuned to be working with accessibility features.
There are known issues with accessibility on, so please do not install
this package unless you really need to.
%prep
%setup -q -n openj9-openjdk-jdk8-%{root_revision} -a 1 -a 2
%if %{with_pulseaudio}
%setup -q -D -n openj9-openjdk-jdk8-%{root_revision} -T -a 9
%endif
# Set up the build tree using the subrepository tarballs
pwd
mv openj9-omr-%{omr_revision} omr
mv openj9-%{openj9_revision} openj9
%if %{with_pulseaudio}
mv icedtea-sound-%{icedtea_sound_version} icedtea-sound
%endif
# Remove libraries that are linked
rm -rvf jdk/src/share/native/java/util/zip/zlib-*
find jdk/src/share/native/sun/awt/image/jpeg ! -name imageioJPEG.c ! -name jpegdecoder.c -type f -delete
rm -rvf jdk/src/share/native/sun/awt/libpng
rm -rvf jdk/src/share/native/sun/awt/giflib
rm -rvf jdk/src/share/native/sun/java2d/cmm/lcms/cms*
rm -rvf jdk/src/share/native/sun/java2d/cmm/lcms/lcms2*
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch205 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
cat %{SOURCE100} \
| sed "s/@OPENJ9_SHA@/%{openj9_revision}/g" \
| sed "s/@OPENJ9_BRANCH@/%{openj9_branch}/g" \
| sed "s/@OPENJ9_TAG@/%{openj9_tag}/g" \
| sed "s/@OPENJ9OMR_SHA@/%{omr_revision}/g" \
| sed "s/@OPENJDK_SHA@/%{root_revision}/g" \
| patch -p1 -u -l
# Prepare desktop files
for file in %{SOURCE11} %{SOURCE12} ; do
OUTPUT_FILE=`basename $file | sed -e s:\.in$::g`
sed -e s:@JAVA_HOME@:%{_jvmdir}/%{sdkdir}:g $file > $OUTPUT_FILE
sed -i -e s:@VERSION@:%{javaver}.%{_arch}:g $OUTPUT_FILE
done
%build
export ARCH_DATA_MODEL=64
(cd common/autoconf
bash ./autogen.sh
)
bash configure \
--disable-zip-debug-info \
--with-milestone="fcs" \
--with-update-version=%{updatever} \
--with-build-number=%{buildver} \
--with-debug-level=%{debugbuild} \
--with-conf-name=%{debugbuild} \
--enable-unlimited-crypto \
--with-zlib=system \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
--with-lcms=system \
--with-stdc++lib=dynamic \
--with-native-debug-symbols=internal \
--with-boot-jdk=%{_sysconfdir}/alternatives/java_sdk \
--with-freemarker-jar=%{_javadir}/freemarker.jar
# The combination of FULL_DEBUG_SYMBOLS=0 and ALT_OBJCOPY=/does_not_exist
# disables FDS for all build configs and reverts to pre-FDS make logic.
# STRIP_POLICY=none says don't do any stripping. DEBUG_BINARIES=true says
# ignore all the other logic about which debug options and just do '-g'.
make \
DEBUG_BINARIES=true \
FULL_DEBUG_SYMBOLS=0 \
ZIP_DEBUGINFO_FILES=0 \
STRIP_POLICY=none \
POST_STRIP_CMD=true \
ALT_OBJCOPY=/does_not_exist \
LOG=debug \
HAS_AUTOCONF=1 \
%{imagestarget} docs
# remove redundant *diz and *debuginfo files
find %{imagesdir}/j2sdk-image -iname '*.diz' -exec rm {} \;
find %{imagesdir}/j2sdk-image -iname '*.debuginfo' -exec rm {} \;
export JAVA_HOME=$(pwd)/%{imagesdir}/j2sdk-image
# cacerts are generated in runtime in openSUSE
if [ -f %{imagesdir}/j2sdk-image/jre/lib/security/cacerts ]; then
rm %{imagesdir}/j2sdk-image/jre/lib/security/cacerts
fi
%if %{with_pulseaudio}
# Build the pulseaudio plugin
pushd icedtea-sound
%configure \
--with-jdk-home=$JAVA_HOME \
--disable-docs
make %{?_smp_mflags}
cp icedtea-sound.jar $JAVA_HOME/jre/lib/ext/
cp build/native/libicedtea-sound.so $JAVA_HOME/jre/lib/%{archinstall}/
echo "#Config file to enable PulseAudio support" > $JAVA_HOME/jre/lib/pulseaudio.properties
echo "" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider" >> $JAVA_HOME/jre/lib/pulseaudio.properties
echo "" >> $JAVA_HOME/jre/lib/pulseaudio.properties
popd
%endif
# Check unlimited policy has been used
$JAVA_HOME/bin/javac -d . %{SOURCE14}
$JAVA_HOME/bin/java TestCryptoLevel
%if 0
# Check debug symbols are present and can identify code
SERVER_JVM="$JAVA_HOME/jre/lib/%{archinstall}/server/libjvm.so"
if [ -f "$SERVER_JVM" ] ; then
nm -aCl "$SERVER_JVM" | grep javaCalls.cpp
fi
CLIENT_JVM="$JAVA_HOME/jre/lib/%{archinstall}/client/libjvm.so"
if [ -f "$CLIENT_JVM" ] ; then
nm -aCl "$CLIENT_JVM" | grep javaCalls.cpp
fi
ZERO_JVM="$JAVA_HOME/jre/lib/%{archinstall}/zero/libjvm.so"
if [ -f "$ZERO_JVM" ] ; then
nm -aCl "$ZERO_JVM" | grep javaCalls.cpp
fi
%endif
%install
export LANG=en_US.UTF-8
#bnc#530046
export STRIP_KEEP_SYMTAB=libjvm*
# skip /usr/lib/rpm/brp-check-bytecode-version:
export NO_BRP_CHECK_BYTECODE_VERSION=true
pushd %{imagesdir}/j2sdk-image
# Install main files.
install -d -m 755 %{buildroot}%{_jvmdir}/%{sdkdir}
cp -a bin include lib src.zip %{buildroot}%{_jvmdir}/%{sdkdir}
install -d -m 755 %{buildroot}%{_jvmdir}/%{jredir}
cp -a jre/bin jre/lib %{buildroot}%{_jvmdir}/%{jredir}
# Install extension symlinks.
install -d -m 755 %{buildroot}%{jvmjardir}
pushd %{buildroot}%{jvmjardir}
RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir}/lib %{jvmjardir})
ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar
ln -sf $RELATIVE/jce.jar jce-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar
ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar
ln -sf $RELATIVE/rt.jar jaas-%{version}.jar
ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar
ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar
ln -sf $RELATIVE/rt.jar sasl-%{version}.jar
for jar in *-%{version}.jar
do
if [ x%{version} != x%{javaver} ]
then
ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g")
fi
ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g")
done
popd
# Install JCE policy symlinks.
install -d -m 755 %{buildroot}%{_jvmprivdir}/%{archname}/jce/vanilla
# Install versionless symlinks.
pushd %{buildroot}%{_jvmdir}
ln -sf %{jredir} %{jrelnk}
ln -sf %{sdkdir} %{sdklnk}
popd
pushd %{buildroot}%{_jvmjardir}
ln -sf %{sdkdir} %{jrelnk}
ln -sf %{sdkdir} %{sdklnk}
popd
# Remove javaws man page
rm -f man/man1/javaws*
# Install man pages.
install -d -m 755 %{buildroot}%{_mandir}/man1
# These tree tools are not built,
# so disregard their manpages too.
rm -f man/man1/jhat.1*
rm -f man/man1/jinfo.1*
rm -f man/man1/jstatd.1*
for manpage in man/man1/*
do
# Convert man pages to UTF8 encoding.
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp
mv -f $manpage.tmp $manpage
install -m 644 -p $manpage %{buildroot}%{_mandir}/man1/$(basename \
$manpage .1)-%{sdklnk}.1
done
# Install demos and samples.
cp -a demo %{buildroot}%{_jvmdir}/%{sdkdir}
# enable short-circuit
mkdir -p sample/rmi
[ -f bin/java-rmi.cgi ] && mv bin/java-rmi.cgi sample/rmi
cp -a sample %{buildroot}%{_jvmdir}/%{sdkdir}
popd
# Install nss.cfg
install -m 644 %{SOURCE13} %{buildroot}%{_jvmdir}/%{jredir}/lib/security/
# Install Javadoc documentation.
install -d -m 755 %{buildroot}%{_javadocdir}
cp -a build/%{debugbuild}/docs %{buildroot}%{_javadocdir}/%{sdklnk}
# Install icons and menu entries.
for s in 16 24 32 48 ; do
install -D -p -m 644 \
jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}-openj9.png
done
# Install desktop files.
install -d -m 0755 %{buildroot}%{_datadir}/{applications,pixmaps}
install -d -m 0755 %{buildroot}/%{_jvmdir}/%{jredir}/lib/desktop/
for d in jconsole policytool; do
install -m 0644 $d.desktop %{buildroot}/%{_jvmdir}/%{jredir}/lib/desktop/
%suse_update_desktop_file %{buildroot}/%{_jvmdir}/%{jredir}/lib/desktop/$d.desktop
done
# Find JRE directories.
find %{buildroot}%{_jvmdir}/%{jredir} -type d \
| grep -v jre/lib/security \
| sed 's|'%{buildroot}'|%dir |' \
> %{name}.files.headless
# Find JRE files.
find %{buildroot}%{_jvmdir}/%{jredir} -type f -o -type l \
| grep -v jre/lib/security \
| sed 's|'%{buildroot}'||' \
>> %{name}.files.all
#split %{name}.files to %{name}.files-headless and %{name}.files
#see https://bugzilla.redhat.com/show_bug.cgi?id=875408
NOT_HEADLESS=\
"%{_jvmdir}/%{jredir}/lib/%{archinstall}/libjsoundalsa.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libicedtea-sound.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libsplashscreen.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libawt_xawt.so
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libjawt.so"
#filter %{name}.files from %{name}.files.all to %{name}.files-headless
ALL=`cat %{name}.files.all`
for file in $ALL ; do
INLCUDE="NO" ;
for blacklist in $NOT_HEADLESS ; do
# we can not match normally, because rpmbuild will evaluate !0 result as script failure
q=`expr match "$file" "$blacklist"` || :
l=`expr length "$blacklist"` || :
if [ $q -eq $l ]; then
INLCUDE="YES" ;
fi;
done
if [ "x$INLCUDE" = "xNO" ]; then
echo "$file" >> %{name}.files-headless
else
echo "$file" >> %{name}.files
fi
done
# Find demo directories.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample -type d \
| sed 's|'%{buildroot}'|%dir |' \
> %{name}-demo.files
# FIXME: remove SONAME entries from demo DSOs. See
# https://bugzilla.redhat.com/show_bug.cgi?id=436497
# Find non-documentation demo files.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample \
-type f -o -type l | sort \
| grep -v README \
| sed 's|'%{buildroot}'||' \
>> %{name}-demo.files
# Find documentation demo files.
find %{buildroot}%{_jvmdir}/%{sdkdir}/demo \
%{buildroot}%{_jvmdir}/%{sdkdir}/sample \
-type f -o -type l | sort \
| grep README \
| sed 's|'%{buildroot}'||' \
| sed 's|^|%doc |' \
>> %{name}-demo.files
# Create links which leads to separately installed java-atk-bridge and allow configuration
# links points to java-atk-wrapper - an dependence
# mvyskocil: links are handled in post, lets make ghost files there
touch %{buildroot}/%{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
touch %{buildroot}/%{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar
pushd %{buildroot}/%{_jvmdir}/%{jredir}/lib/
echo "#Config file to enable java-atk-wrapper" > accessibility.properties
echo "" >> accessibility.properties
echo "assistive_technologies=org.GNOME.Accessibility.AtkWrapper" >> accessibility.properties
echo "" >> accessibility.properties
popd
# fdupes links the files from JDK to JRE, so it breaks a JRE
# use it carefully :))
%fdupes -s %{buildroot}/%{_jvmdir}/%{jredir}/
%fdupes -s %{buildroot}/%{_jvmdir}/%{sdkdir}/demo
%fdupes -s %{buildroot}%{_javadocdir}/%{sdklnk}
%post headless
ext=.gz
update-alternatives \
--install %{_bindir}/java java %{jrebindir}/java %{priority} \
--slave %{_jvmdir}/jre jre %{_jvmdir}/%{jrelnk} \
--slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jrelnk} \
--slave %{_bindir}/keytool keytool %{jrebindir}/keytool \
--slave %{_bindir}/orbd orbd %{jrebindir}/orbd \
--slave %{_bindir}/policytool policytool %{jrebindir}/policytool \
--slave %{_bindir}/rmid rmid %{jrebindir}/rmid \
--slave %{_bindir}/rmiregistry rmiregistry %{jrebindir}/rmiregistry \
--slave %{_bindir}/servertool servertool %{jrebindir}/servertool \
--slave %{_bindir}/tnameserv tnameserv %{jrebindir}/tnameserv \
--slave %{_mandir}/man1/java.1$ext java.1$ext \
%{_mandir}/man1/java-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \
%{_mandir}/man1/keytool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \
%{_mandir}/man1/orbd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \
%{_mandir}/man1/policytool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \
%{_mandir}/man1/rmid-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \
%{_mandir}/man1/rmiregistry-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \
%{_mandir}/man1/servertool-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \
%{_mandir}/man1/tnameserv-%{sdklnk}.1$ext \
--slave %{_datadir}/applications/policytool.desktop policytool.desktop \
%{_jvmdir}/%{jredir}/lib/desktop/policytool.desktop \
|| :
update-alternatives \
--install %{_jvmdir}/jre-openjdk \
jre_openjdk %{_jvmdir}/%{jrelnk} %{priority} \
--slave %{_jvmjardir}/jre-openjdk \
jre_openjdk_exports %{_jvmjardir}/%{jrelnk}
update-alternatives \
--install %{_jvmdir}/jre-%{javaver} \
jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
--slave %{_jvmjardir}/jre-%{javaver} \
jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk}
%postun headless
if [ $1 -eq 0 ]
then
if test -f /proc/sys/fs/binfmt_misc/jarexec
then
echo '-1' > /proc/sys/fs/binfmt_misc/jarexec
fi
update-alternatives --remove java %{jrebindir}/java
update-alternatives --remove jre_openjdk %{_jvmdir}/%{jrelnk}
update-alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
fi
%posttrans headless
# bnc#781690#c11: don't trust user defined JAVA_HOME and use the current VM
# XXX: this might conflict between various versions of openjdk
export JAVA_HOME=%{_jvmdir}/%{jrelnk}
# check if the java-cacerts is a valid keystore (bnc#781690)
if [ X"`%{_bindir}/file --mime-type -b %{javacacerts}`" \
!= "Xapplication/x-java-keystore;" ]; then
%{_sbindir}/update-ca-certificates
fi
# remove the default empty cacert file, if it's installed
if [ 0`stat -c "%{s}" %{cacerts} 2>/dev/null` = "032" ] ; then
rm -f %{cacerts}
fi
# if cacerts does exists, neither does not contain/point to a
# valid keystore (bnc#781690) ...
if [ X"`%{_bindir}/file --mime-type -b -L %{cacerts}`" \
!= "Xapplication/x-java-keystore;" ]; then
# bnc#727223
rm -f %{cacerts}
ln -s %{javacacerts} %{cacerts}
fi
%post devel
ext=.gz
update-alternatives \
--install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \
--slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdklnk} \
--slave %{_jvmjardir}/java java_sdk_exports %{jvmjarlink} \
--slave %{_bindir}/appletviewer appletviewer %{sdkbindir}/appletviewer \
--slave %{_bindir}/extcheck extcheck %{sdkbindir}/extcheck \
--slave %{_bindir}/jar jar %{sdkbindir}/jar \
--slave %{_bindir}/jarsigner jarsigner %{sdkbindir}/jarsigner \
--slave %{_bindir}/javadoc javadoc %{sdkbindir}/javadoc \
--slave %{_bindir}/javah javah %{sdkbindir}/javah \
--slave %{_bindir}/javap javap %{sdkbindir}/javap \
--slave %{_bindir}/jconsole jconsole %{sdkbindir}/jconsole \
--slave %{_bindir}/pack200 pack200 %{sdkbindir}/pack200 \
--slave %{_bindir}/unpack200 unpack200 %{sdkbindir}/unpack200 \
--slave %{_bindir}/jdb jdb %{sdkbindir}/jdb \
--slave %{_bindir}/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}/native2ascii native2ascii %{sdkbindir}/native2ascii \
--slave %{_bindir}/rmic rmic %{sdkbindir}/rmic \
--slave %{_bindir}/schemagen schemagen %{sdkbindir}/schemagen \
--slave %{_bindir}/serialver serialver %{sdkbindir}/serialver \
--slave %{_bindir}/wsgen wsgen %{sdkbindir}/wsgen \
--slave %{_bindir}/wsimport wsimport %{sdkbindir}/wsimport \
--slave %{_bindir}/xjc xjc %{sdkbindir}/xjc \
--slave %{_mandir}/man1/appletviewer.1$ext appletviewer.1$ext \
%{_mandir}/man1/appletviewer-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \
%{_mandir}/man1/extcheck-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jar.1$ext jar.1$ext \
%{_mandir}/man1/jar-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \
%{_mandir}/man1/jarsigner-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javac.1$ext javac.1$ext \
%{_mandir}/man1/javac-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \
%{_mandir}/man1/javadoc-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javah.1$ext javah.1$ext \
%{_mandir}/man1/javah-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/javap.1$ext javap.1$ext \
%{_mandir}/man1/javap-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \
%{_mandir}/man1/jconsole-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \
%{_mandir}/man1/jcmd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \
%{_mandir}/man1/jdb-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \
%{_mandir}/man1/pack200-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \
%{_mandir}/man1/unpack200-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \
%{_mandir}/man1/jmap-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jps.1$ext jps.1$ext \
%{_mandir}/man1/jps-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \
%{_mandir}/man1/jrunscript-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \
%{_mandir}/man1/jsadebugd-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \
%{_mandir}/man1/jstack-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \
%{_mandir}/man1/jstat-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \
%{_mandir}/man1/native2ascii-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \
%{_mandir}/man1/rmic-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \
%{_mandir}/man1/schemagen-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \
%{_mandir}/man1/serialver-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \
%{_mandir}/man1/wsgen-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \
%{_mandir}/man1/wsimport-%{sdklnk}.1$ext \
--slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \
%{_mandir}/man1/xjc-%{sdklnk}.1$ext \
--slave %{_datadir}/applications/jconsole.desktop jconsole.desktop \
%{_jvmdir}/%{jredir}/lib/desktop/jconsole.desktop \
|| :
update-alternatives \
--install %{_jvmdir}/java-openjdk \
java_sdk_openjdk %{_jvmdir}/%{sdklnk} %{priority} \
--slave %{_jvmjardir}/java-openjdk \
java_sdk_openjdk_exports %{jvmjarlink}
update-alternatives \
--install %{_jvmdir}/java-%{javaver} \
java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority} \
--slave %{_jvmjardir}/java-%{javaver} \
java_sdk_%{javaver}_exports %{jvmjarlink}
%postun devel
if [ $1 -eq 0 ]
then
update-alternatives --remove javac %{sdkbindir}/javac
update-alternatives --remove java_sdk_openjdk %{_jvmdir}/%{sdklnk}
update-alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk}
fi
%post javadoc
# in some settings, the %{_javadocdir}/%{sdklnk}/api does not exist
# and the update-alternatives call ends up in error. So, filter this
# cases out.
if [ -d %{_javadocdir}/%{sdklnk}/api ]
then
update-alternatives \
--install %{_javadocdir}/java javadocdir %{_javadocdir}/%{sdklnk}/api \
%{priority}
fi
%postun javadoc
if [ $1 -eq 0 ]
then
# in some settings, the %{_javadocdir}/%{sdklnk}/api does not exist
# and the update-alternatives call ends up in error. So, filter this
# cases out.
if [ -d %{_javadocdir}/%{sdklnk}/api ]
then
update-alternatives --remove javadocdir %{_javadocdir}/%{sdklnk}/api
fi
fi
%post accessibility
# create links to java-atk-wrapper
if [ ! -e %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so ]; then
if [ -e %{_libdir}/java-atk-wrapper/libatk-wrapper.so ]; then
ln -sf %{_libdir}/java-atk-wrapper/libatk-wrapper.so %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
else
ln -sf %{_libdir}/java-atk-wrapper/libatk-wrapper.so.0 %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
fi
fi
if [ ! -e %{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar ]; then
ln -sf %{_libdir}/java-atk-wrapper/java-atk-wrapper.jar %{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar
fi
%files -f %{name}.files
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}
%dir %{_datadir}/icons/hicolor
%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}-openj9.png
%files headless -f %{name}.files-headless
%dir %{_jvmdir}
%dir %{_jvmdir}/%{jredir}/
%dir %{_jvmdir}/%{jredir}/bin
%dir %{_jvmdir}/%{jredir}/lib
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}/compressedrefs
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}/jli
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}/j9vm
%dir %{_jvmdir}/%{jredir}/lib/%{archinstall}/server
%dir %{_jvmdir}/%{jredir}/lib/cmm
%dir %{_jvmdir}/%{jredir}/lib/ddr
%dir %{_jvmdir}/%{jredir}/lib/desktop
%dir %{_jvmdir}/%{jredir}/lib/ext
%dir %{_jvmdir}/%{jredir}/lib/images
%dir %{_jvmdir}/%{jredir}/lib/images/cursors
%dir %{_jvmdir}/%{jredir}/lib/management
%dir %{_jvmdir}/%{jredir}/lib/security
%dir %{_jvmdir}/%{jredir}/lib/security/policy
%dir %{_jvmdir}/%{jredir}/lib/security/policy/limited
%dir %{_jvmdir}/%{jredir}/lib/security/policy/unlimited
%dir %{_libdir}/jvm-exports
%dir %{_libdir}/jvm-private
%doc %{imagesdir}/j2sdk-image/jre/ASSEMBLY_EXCEPTION
%license %{imagesdir}/j2sdk-image/jre/LICENSE
%doc %{imagesdir}/j2sdk-image/jre/THIRD_PARTY_README
%dir %{_jvmdir}/%{sdkdir}
%{_jvmdir}/%{jrelnk}
%{_jvmjardir}/%{jrelnk}
%{_jvmprivdir}/*
%{jvmjardir}
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.policy
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklisted.certs
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/nss.cfg
%{_mandir}/man1/java-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jjs-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/keytool-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/orbd-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/pack200-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/policytool-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/rmid-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/rmiregistry-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/servertool-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/tnameserv-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/unpack200-%{sdklnk}.1%{?ext_man}
%{_jvmdir}/%{jredir}/lib/security/policy/limited/US_export_policy.jar
%{_jvmdir}/%{jredir}/lib/security/policy/limited/local_policy.jar
%{_jvmdir}/%{jredir}/lib/security/policy/unlimited/US_export_policy.jar
%{_jvmdir}/%{jredir}/lib/security/policy/unlimited/local_policy.jar
%files devel
%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}
%{_mandir}/man1/appletviewer-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/extcheck-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/idlj-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jar-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jarsigner-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javac-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javadoc-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javah-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/javap-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jconsole-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jcmd-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jdb-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jdeps-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jmap-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jps-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jrunscript-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jsadebugd-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jstack-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/jstat-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/native2ascii-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/rmic-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/schemagen-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/serialver-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/wsgen-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/wsimport-%{sdklnk}.1%{?ext_man}
%{_mandir}/man1/xjc-%{sdklnk}.1%{?ext_man}
%files demo -f %{name}-demo.files
%files src
%{_jvmdir}/%{sdkdir}/src.zip
%files javadoc
%dir %{_javadocdir}
%dir %{_javadocdir}/%{sdklnk}
%{_javadocdir}/%{sdklnk}/*
%files accessibility
%dir %{_jvmdir}/%{jredir}/lib/ext
%config(noreplace) %{_jvmdir}/%{jredir}/lib/accessibility.properties
%ghost %{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so
%ghost %{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar
%changelog

View File

@ -0,0 +1,24 @@
--- jdk8/jdk/src/share/lib/security/java.security-linux 2014-07-15 23:08:27.000000000 +0200
+++ jdk8/jdk/src/share/lib/security/java.security-linux 2014-07-18 09:04:45.127566697 +0200
@@ -224,7 +224,9 @@
com.ibm.oti.,\
openj9.internal.,\
jdk.xml.internal.,\
- com.sun.activation.registries.
+ com.sun.activation.registries.,\
+ org.GNOME.Accessibility.,\
+ org.GNOME.Bonobo.
#
# List of comma-separated packages that start with or equal this string
@@ -274,7 +276,9 @@
jdk.nashorn.internal.,\
jdk.nashorn.tools.,\
jdk.xml.internal.,\
- com.sun.activation.registries.
+ com.sun.activation.registries.,\
+ org.GNOME.Accessibility.,\
+ org.GNOME.Bonobo.
#
# Determines whether this properties file can be appended to

11
jconsole.desktop.in Normal file
View File

@ -0,0 +1,11 @@
[Desktop Entry]
Name=OpenJDK 8 Monitoring & Management Console
GenericName=OpenJDK Monitoring & Management Console
Comment=Monitor and manage OpenJDK applications for @VERSION@
Exec=@JAVA_HOME@/bin/jconsole
Icon=java
Terminal=false
Type=Application
StartupWMClass=sun-tools-jconsole-JConsole
Categories=Development;Profiling;
Version=1.0

38
link-with-as-needed.patch Normal file
View File

@ -0,0 +1,38 @@
--- jdk8/jdk/make/CompileLaunchers.gmk 2014-09-26 08:53:47.340118668 +0200
+++ jdk8/jdk/make/CompileLaunchers.gmk 2014-09-26 08:54:18.702392301 +0200
@@ -504,7 +504,7 @@
# binary (at least on linux) which causes the size to differ between old and new build.
ifeq ($(USE_EXTERNAL_LIBZ), true)
UNPACKEXE_CFLAGS := -DSYSTEM_ZLIB
- UNPACKEXE_ZIPOBJS := -lz
+ UNPACKEXE_LIBS := -lz
else
UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/java/util/zip/zlib
UNPACKEXE_ZIPOBJS := $(JDK_OUTPUTDIR)/objs/libzip/zcrc32$(OBJ_SUFFIX) \
@@ -560,9 +560,9 @@
LDFLAGS_posix := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_linux := -lc, \
+ LDFLAGS_linux := , \
LDFLAGS_solaris := $(UNPACKEXE_LDFLAGS_solaris) -lc, \
- LDFLAGS_SUFFIX := $(LIBCXX), \
+ LDFLAGS_SUFFIX := $(UNPACKEXE_LIBS) $(LIBCXX), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/unpackexe$(OUTPUT_SUBDIR), \
OUTPUT_DIR := $(JDK_OUTPUTDIR)/objs/unpackexe$(OUTPUT_SUBDIR), \
PROGRAM := unpack200, \
--- jdk8/jdk/make/lib/Awt2dLibraries.gmk 2014-09-26 08:53:47.341118645 +0200
+++ jdk8/jdk/make/lib/Awt2dLibraries.gmk 2014-09-26 08:54:22.383307050 +0200
@@ -760,10 +760,10 @@
$(BUILD_LIBJAVAJPEG_CLOSED_INCLUDES) \
$(BUILD_LIBJAVAJPEG_HEADERS), \
MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
- LDFLAGS := $(LDFLAGS_JDKLIB) $(LIBJPEG_LIBS) \
+ LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_windows := $(WIN_JAVA_LIB) jvm.lib, \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
+ LDFLAGS_SUFFIX := $(LIBJPEG_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=javajpeg.dll" \

View File

@ -0,0 +1,74 @@
# HG changeset patch
# User andrew
# Date 1352129932 0
# Node ID e9c857dcb964dbfa5eef3a3590244cb4d999cf7a
# Parent 1406789608b76d0906881979335d685855f44190
Allow multiple PKCS11 library initialisation to be a non-critical error.
diff -r 1406789608b7 -r e9c857dcb964 src/share/classes/sun/security/pkcs11/Config.java
--- jdk8/jdk/src/share/classes/sun/security/pkcs11/Config.java Tue Oct 30 13:05:14 2012 +0000
+++ jdk8/jdk/src/share/classes/sun/security/pkcs11/Config.java Mon Nov 05 15:38:52 2012 +0000
@@ -52,6 +52,7 @@
static final int ERR_HALT = 1;
static final int ERR_IGNORE_ALL = 2;
static final int ERR_IGNORE_LIB = 3;
+ static final int ERR_IGNORE_MULTI_INIT = 4;
// same as allowSingleThreadedModules but controlled via a system property
// and applied to all providers. if set to false, no SunPKCS11 instances
@@ -980,6 +981,8 @@
handleStartupErrors = ERR_IGNORE_LIB;
} else if (val.equals("halt")) {
handleStartupErrors = ERR_HALT;
+ } else if (val.equals("ignoreMultipleInitialisation")) {
+ handleStartupErrors = ERR_IGNORE_MULTI_INIT;
} else {
throw excToken("Invalid value for handleStartupErrors:");
}
diff -r 1406789608b7 -r e9c857dcb964 src/share/classes/sun/security/pkcs11/SunPKCS11.java
--- jdk8/jdk/src/share/classes/sun/security/pkcs11/SunPKCS11.java Tue Oct 30 13:05:14 2012 +0000
+++ jdk8/jdk/src/share/classes/sun/security/pkcs11/SunPKCS11.java Mon Nov 05 15:38:52 2012 +0000
@@ -168,26 +168,37 @@
String nssLibraryDirectory = config.getNssLibraryDirectory();
String nssSecmodDirectory = config.getNssSecmodDirectory();
boolean nssOptimizeSpace = config.getNssOptimizeSpace();
+ int errorHandling = config.getHandleStartupErrors();
if (secmod.isInitialized()) {
if (nssSecmodDirectory != null) {
String s = secmod.getConfigDir();
if ((s != null) &&
(s.equals(nssSecmodDirectory) == false)) {
- throw new ProviderException("Secmod directory "
- + nssSecmodDirectory
- + " invalid, NSS already initialized with "
- + s);
+ String msg = "Secmod directory " + nssSecmodDirectory
+ + " invalid, NSS already initialized with " + s;
+ if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
+ errorHandling == Config.ERR_IGNORE_ALL) {
+ throw new UnsupportedOperationException(msg);
+ } else {
+ throw new ProviderException(msg);
+ }
}
}
if (nssLibraryDirectory != null) {
String s = secmod.getLibDir();
if ((s != null) &&
(s.equals(nssLibraryDirectory) == false)) {
- throw new ProviderException("NSS library directory "
+ String msg = "NSS library directory "
+ nssLibraryDirectory
+ " invalid, NSS already initialized with "
- + s);
+ + s;
+ if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
+ errorHandling == Config.ERR_IGNORE_ALL) {
+ throw new UnsupportedOperationException(msg);
+ } else {
+ throw new ProviderException(msg);
+ }
}
}
} else {

4
nss.cfg Normal file
View File

@ -0,0 +1,4 @@
name = NSS
nssLibraryDirectory =
nssDbMode = noDb
attributes = compatibility

11
openj9-fix-build.patch Normal file
View File

@ -0,0 +1,11 @@
--- a/closed/OpenJ9.gmk
+++ b/closed/OpenJ9.gmk
@@ -579,7 +579,7 @@ JPP_BASE_DIR := $(call FixPath,$(OPENJ9_TOPDIR))
JPP_DEST := $(call FixPath,$(JDK_OUTPUTDIR)/j9jcl_sources/jdk/src/share/classes)
JPP_JAR := $(call FixPath,$(OPENJ9_VM_BUILD_DIR)/sourcetools/lib/jpp.jar)
-$(J9JCL_SOURCES_DONEFILE) : $(AllJclSource)
+$(J9JCL_SOURCES_DONEFILE) : $(AllJclSource) build-openj9-tools
@$(ECHO) Generating J9JCL sources
@$(MKDIR) -p $(JDK_OUTPUTDIR)/j9jcl_sources/jdk/src/share/classes
$(BOOT_JDK)/bin/java \

30
openj9-nogit.patch.in Normal file
View File

@ -0,0 +1,30 @@
--- a/closed/OpenJ9.gmk 2020-01-23 11:32:56.700658325 +0100
+++ b/closed/OpenJ9.gmk 2020-01-23 11:48:34.737730143 +0100
@@ -29,15 +29,15 @@
BUILD_ID := 000000
endif
-OPENJ9_SHA := $(shell git -C $(OPENJ9_TOPDIR) rev-parse --short HEAD)
+OPENJ9_SHA := @OPENJ9_SHA@
ifeq (,$(OPENJ9_SHA))
$(error Could not determine OpenJ9 SHA)
endif
# Find OpenJ9 tag associated with current commit (suppressing stderr in case there is no such tag).
-OPENJ9_TAG := $(shell git -C $(OPENJ9_TOPDIR) describe --exact-match HEAD 2>/dev/null)
+OPENJ9_TAG := @OPENJ9_TAG@
ifeq (,$(OPENJ9_TAG))
- OPENJ9_BRANCH := $(shell git -C $(OPENJ9_TOPDIR) rev-parse --abbrev-ref HEAD)
+ OPENJ9_BRANCH := @OPENJ9_BRANCH@
ifeq (,$(OPENJ9_BRANCH))
$(error Could not determine OpenJ9 branch)
endif
@@ -46,7 +46,7 @@
OPENJ9_VERSION_STRING := $(OPENJ9_TAG)
endif
-OPENJ9OMR_SHA := $(shell git -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
+OPENJ9OMR_SHA := @OPENJ9OMR_SHA@
ifeq (,$(OPENJ9OMR_SHA))
$(error Could not determine OMR SHA)
endif

11
policytool.desktop.in Normal file
View File

@ -0,0 +1,11 @@
[Desktop Entry]
Name=OpenJDK 8 Policy Tool
GenericName=OpenJDK Policy Tool
Comment=Manage OpenJDK policy files (@VERSION@)
Exec=@JAVA_HOME@/bin/policytool
Icon=java
Terminal=false
Type=Application
StartupWMClass=sun-security-tools-PolicyTool
Categories=Settings;DesktopSettings;Security;
Version=1.0

99
system-lcms.patch Normal file
View File

@ -0,0 +1,99 @@
--- jdk8/common/autoconf/libraries.m4 2014-09-26 08:49:01.572737814 +0200
+++ jdk8/common/autoconf/libraries.m4 2014-09-26 08:50:22.896853996 +0200
@@ -679,6 +679,46 @@
###############################################################################
#
+ # Check for the lcms2 library
+ #
+
+ AC_ARG_WITH(lcms, [AS_HELP_STRING([--with-lcms],
+ [use lcms2 from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_CHECK_LIB(lcms2, cmsOpenProfileFromFile,
+ [ LCMS_FOUND=yes ],
+ [ LCMS_FOUND=no ])
+
+ AC_MSG_CHECKING([for which lcms to use])
+
+ DEFAULT_LCMS=bundled
+
+ #
+ # If user didn't specify, use DEFAULT_LCMS
+ #
+ if test "x${with_lcms}" = "x"; then
+ with_lcms=${DEFAULT_LCMS}
+ fi
+
+ if test "x${with_lcms}" = "xbundled"; then
+ USE_EXTERNAL_LCMS=false
+ AC_MSG_RESULT([bundled])
+ elif test "x${with_lcms}" = "xsystem"; then
+ if test "x${LCMS_FOUND}" = "xyes"; then
+ USE_EXTERNAL_LCMS=true
+ AC_MSG_RESULT([system])
+ else
+ AC_MSG_RESULT([system not found])
+ AC_MSG_ERROR([--with-lcms=system specified, but no lcms found!])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --with-lcms: ${with_lcms}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_LCMS)
+
+ ###############################################################################
+ #
# Check for the png library
#
--- jdk8/jdk/make/lib/Awt2dLibraries.gmk 2014-09-26 08:49:00.981751504 +0200
+++ jdk8/jdk/make/lib/Awt2dLibraries.gmk 2014-09-26 08:50:22.897853978 +0200
@@ -669,8 +669,8 @@
##########################################################################################
# TODO: Update awt lib path when awt is converted
-$(eval $(call SetupNativeCompilation,BUILD_LIBLCMS, \
- LIBRARY := lcms, \
+$(eval $(call SetupNativeCompilation,BUILD_LIBJAVALCMS, \
+ LIBRARY := javalcms, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
SRC := $(JDK_TOPDIR)/src/share/native/sun/java2d/cmm/lcms, \
LANG := C, \
@@ -688,19 +688,19 @@
LDFLAGS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
LDFLAGS_SUFFIX_solaris := -lawt -ljava -ljvm -lc, \
LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \
- LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm, \
+ LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm -llcms2, \
LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
- -D "JDK_FNAME=lcms.dll" \
- -D "JDK_INTERNAL_NAME=lcms" \
+ -D "JDK_FNAME=javalcms.dll" \
+ -D "JDK_INTERNAL_NAME=javalcms" \
-D "JDK_FTYPE=0x2L", \
- OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/liblcms, \
+ OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjavalcms, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-BUILD_LIBRARIES += $(BUILD_LIBLCMS)
+BUILD_LIBRARIES += $(BUILD_LIBJAVALCMS)
-$(BUILD_LIBLCMS): $(BUILD_LIBAWT)
+$(BUILD_LIBJAVALCMS): $(BUILD_LIBAWT)
##########################################################################################
--- jdk8/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMS.java 2014-09-26 08:49:00.646759264 +0200
+++ jdk8/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMS.java 2014-09-26 08:50:22.897853978 +0200
@@ -207,7 +207,7 @@
* disposer frameworks
*/
System.loadLibrary("awt");
- System.loadLibrary("lcms");
+ System.loadLibrary("javalcms");
return null;
}
});

240
system-libjpeg.patch Normal file
View File

@ -0,0 +1,240 @@
--- jdk8/common/autoconf/libraries.m4 2015-02-17 13:27:11.468829365 +0100
+++ jdk8/common/autoconf/libraries.m4 2015-02-17 13:27:49.143980484 +0100
@@ -608,11 +608,36 @@
# Check for the jpeg library
#
+ AC_ARG_WITH(libjpeg, [AS_HELP_STRING([--with-libjpeg],
+ [use libjpeg from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_MSG_CHECKING([for which libjpeg to use])
+
+ # default is bundled
+ DEFAULT_LIBJPEG=bundled
+
+ #
+ # if user didn't specify, use DEFAULT_LIBJPEG
+ #
+ if test "x${with_libjpeg}" = "x"; then
+ with_libjpeg=${DEFAULT_LIBJPEG}
+ fi
+
+ AC_MSG_RESULT(${with_libjpeg})
+
+ if test "x${with_libjpeg}" = "xbundled"; then
+ USE_EXTERNAL_LIBJPEG=false
+ elif test "x${with_libjpeg}" = "xsystem"; then
+ AC_CHECK_HEADER(jpeglib.h, [],
+ [ AC_MSG_ERROR([--with-libjpeg=system specified, but jpeglib.h not found!])])
+ AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, [],
+ [ AC_MSG_ERROR([--with-libjpeg=system specified, but no libjpeg found])])
+
USE_EXTERNAL_LIBJPEG=true
- AC_CHECK_LIB(jpeg, main, [],
- [ USE_EXTERNAL_LIBJPEG=false
- AC_MSG_NOTICE([Will use jpeg decoder bundled with the OpenJDK source])
- ])
+ else
+ AC_MSG_ERROR([Invalid use of --with-libjpeg: ${with_libjpeg}, use 'system' or 'bundled'])
+ fi
+
AC_SUBST(USE_EXTERNAL_LIBJPEG)
###############################################################################
--- jdk8/jdk/make/lib/Awt2dLibraries.gmk 2015-02-17 13:25:22.125292473 +0100
+++ jdk8/jdk/make/lib/Awt2dLibraries.gmk 2015-02-17 13:28:30.812041352 +0100
@@ -704,18 +704,20 @@
##########################################################################################
+BUILD_LIBJAVAJPEG_DIR := $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
+
ifdef OPENJDK
- BUILD_LIBJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers
+ BUILD_LIBJAVAJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers
else
- BUILD_LIBJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers-closed
- BUILD_LIBJPEG_CLOSED_SRC := $(JDK_TOPDIR)/src/closed/share/native/sun/awt/image/jpeg
- BUILD_LIBJPEG_CLOSED_INCLUDES := -I$(BUILD_LIBJPEG_CLOSED_SRC)
+ BUILD_LIBJAVAJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers-closed
+ BUILD_LIBJAVAJPEG_CLOSED_SRC := $(JDK_TOPDIR)/src/closed/share/native/sun/awt/image/jpeg
+ BUILD_LIBJAVAJPEG_CLOSED_INCLUDES := -I$(BUILD_LIBJAVAJPEG_CLOSED_SRC)
endif
-BUILD_LIBJPEG_REORDER :=
+BUILD_LIBJAVAJPEG_REORDER :=
ifeq ($(OPENJDK_TARGET_OS), solaris)
ifneq ($(OPENJDK_TARGET_CPU), x86_64)
- BUILD_LIBJPEG_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
+ BUILD_LIBJAVAJPEG_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
endif
endif
@@ -730,37 +733,50 @@
# $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
# \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
# ifeq ($(CC_43_OR_NEWER), 1)
-# BUILD_LIBJPEG_CFLAGS_linux += -Wno-clobbered
+# BUILD_LIBJAVAJPEG_CFLAGS_linux += -Wno-clobbered
# endif
#endif
-$(eval $(call SetupNativeCompilation,BUILD_LIBJPEG, \
- LIBRARY := jpeg, \
+ifeq ($(USE_EXTERNAL_LIBJPEG), true)
+ LIBJPEG_LIBS := -ljpeg
+ BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
+ imageioJPEG.c \
+ jpegdecoder.c
+ BUILD_LIBJAVAJPEG_HEADERS :=
+else
+ LIBJPEG_LIBS :=
+ BUILD_LIBJAVAJPEG_INCLUDE_FILES :=
+ BUILD_LIBJAVAJPEG_HEADERS := -I$(BUILD_LIBJAVAJPEG_DIR)
+endif
+
+$(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \
+ LIBRARY := javajpeg, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
- SRC := $(BUILD_LIBJPEG_CLOSED_SRC) \
- $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg, \
+ SRC := $(BUILD_LIBJAVAJPEG_CLOSED_SRC) \
+ $(BUILD_LIBJAVAJPEG_DIR), \
+ INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
LANG := C, \
OPTIMIZATION := HIGHEST, \
CFLAGS := $(CFLAGS_JDKLIB) \
- $(BUILD_LIBJPEG_CLOSED_INCLUDES) \
- -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg, \
- MAPFILE := $(BUILD_LIBJPEG_MAPFILE), \
- LDFLAGS := $(LDFLAGS_JDKLIB) \
+ $(BUILD_LIBJAVAJPEG_CLOSED_INCLUDES) \
+ $(BUILD_LIBJAVAJPEG_HEADERS), \
+ MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
+ LDFLAGS := $(LDFLAGS_JDKLIB) $(LIBJPEG_LIBS) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_windows := $(WIN_JAVA_LIB) jvm.lib, \
LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
- -D "JDK_FNAME=jpeg.dll" \
- -D "JDK_INTERNAL_NAME=jpeg" \
+ -D "JDK_FNAME=javajpeg.dll" \
+ -D "JDK_INTERNAL_NAME=javajpeg" \
-D "JDK_FTYPE=0x2L", \
- REORDER := $(BUILD_LIBJPEG_REORDER), \
+ REORDER := $(BUILD_LIBJAVAJPEG_REORDER), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjpeg, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-$(BUILD_LIBJPEG): $(BUILD_LIBJAVA)
+$(BUILD_LIBJAVAJPEG): $(BUILD_LIBJAVA)
-BUILD_LIBRARIES += $(BUILD_LIBJPEG)
+BUILD_LIBRARIES += $(BUILD_LIBJAVAJPEG)
##########################################################################################
@@ -1206,6 +1222,13 @@
GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib
endif
+ ifeq ($(USE_EXTERNAL_LIBJPEG), true)
+ LIBJPEG_LDFLAGS := -ljpeg
+ else
+ LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
+ LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
+ endif
+
ifneq ($(OPENJDK_TARGET_OS), macosx)
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
else
@@ -1268,11 +1291,13 @@
EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
LANG := C, \
OPTIMIZATION := LOW, \
- CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) $(GIFLIB_CFLAGS), \
+ CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
+ $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS), \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(GIFLIB_LDFLAGS), \
+ LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) \
+ $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS), \
LDFLAGS_SUFFIX_solaris := -lc, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
--- jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java 2015-02-17 13:25:22.295288644 +0100
+++ jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java 2015-02-17 13:27:49.145980439 +0100
@@ -89,7 +89,7 @@
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Void>() {
public Void run() {
- System.loadLibrary("jpeg");
+ System.loadLibrary("javajpeg");
return null;
}
});
--- jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java 2015-02-17 13:25:22.295288644 +0100
+++ jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java 2015-02-17 13:27:49.145980439 +0100
@@ -179,7 +179,7 @@
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Void>() {
public Void run() {
- System.loadLibrary("jpeg");
+ System.loadLibrary("javajpeg");
return null;
}
});
--- jdk8/jdk/src/share/classes/sun/awt/image/JPEGImageDecoder.java 2015-02-17 13:25:22.170291459 +0100
+++ jdk8/jdk/src/share/classes/sun/awt/image/JPEGImageDecoder.java 2015-02-17 13:27:49.146980416 +0100
@@ -56,7 +56,7 @@
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Void>() {
public Void run() {
- System.loadLibrary("jpeg");
+ System.loadLibrary("javajpeg");
return null;
}
});
--- jdk8/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c 2015-02-17 13:25:22.531283329 +0100
+++ jdk8/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c 2015-02-17 13:27:49.146980416 +0100
@@ -51,7 +51,7 @@
/* headers from the JPEG library */
#include <jpeglib.h>
-#include "jerror.h"
+#include <jerror.h>
#undef MAX
#define MAX(a,b) ((a) > (b) ? (a) : (b))
--- jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c 2015-02-17 13:25:22.539283148 +0100
+++ jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c 2015-02-17 13:27:49.147980394 +0100
@@ -25,9 +25,9 @@
#include "splashscreen_impl.h"
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jerror.h"
+#include <jpeglib.h>
+#include <jerror.h>
+#include <jmorecfg.h>
#include <setjmp.h>
@@ -113,11 +113,11 @@
if (cinfo->src == NULL) { /* first time for this JPEG object? */
cinfo->src = (struct jpeg_source_mgr *)
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo,
- JPOOL_PERMANENT, SIZEOF(stream_source_mgr));
+ JPOOL_PERMANENT, sizeof(stream_source_mgr));
src = (stream_src_ptr) cinfo->src;
src->buffer = (JOCTET *)
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo,
- JPOOL_PERMANENT, INPUT_BUF_SIZE * SIZEOF(JOCTET));
+ JPOOL_PERMANENT, INPUT_BUF_SIZE * sizeof(JOCTET));
}
src = (stream_src_ptr) cinfo->src;

111
system-libpng.patch Normal file
View File

@ -0,0 +1,111 @@
--- jdk8/common/autoconf/libraries.m4 2014-09-26 08:45:01.057310067 +0200
+++ jdk8/common/autoconf/libraries.m4 2014-09-26 08:46:38.602049970 +0200
@@ -679,6 +679,47 @@
###############################################################################
#
+ # Check for the png library
+ #
+
+ AC_ARG_WITH(libpng, [AS_HELP_STRING([--with-libpng],
+ [use libpng from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_CHECK_LIB(png, png_sig_cmp,
+ [ LIBPNG_FOUND=yes ],
+ [ LIBPNG_FOUND=no ])
+
+ AC_MSG_CHECKING([for which libpng to use])
+
+ # default is bundled
+ DEFAULT_LIBPNG=bundled
+
+ #
+ # if user didn't specify, use DEFAULT_LIBPNG
+ #
+ if test "x${with_libpng}" = "x"; then
+ with_libpng=${DEFAULT_libpng}
+ fi
+
+
+ if test "x${with_libpng}" = "xbundled"; then
+ USE_EXTERNAL_LIBPNG=false
+ AC_MSG_RESULT([bundled])
+ elif test "x${with_libpng}" = "xsystem"; then
+ if test "x${LIBPNG_FOUND}" = "xyes"; then
+ USE_EXTERNAL_LIBPNG=true
+ AC_MSG_RESULT([system])
+ else
+ AC_MSG_RESULT([system not found])
+ AC_MSG_ERROR([--with-libpng=system specified, but no libpng found!])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value of --with-libpng: ${with_libpng}, use 'system' or 'bundled'])
+ fi
+ AC_SUBST(USE_EXTERNAL_LIBPNG)
+
+ ###############################################################################
+ #
# Check for the zlib library
#
--- jdk8/common/autoconf/spec.gmk.in 2014-09-26 08:45:01.057310067 +0200
+++ jdk8/common/autoconf/spec.gmk.in 2014-09-26 08:46:38.603049945 +0200
@@ -555,6 +555,7 @@
ENABLE_JFR=@ENABLE_JFR@
ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
+USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
--- jdk8/jdk/make/lib/Awt2dLibraries.gmk 2014-09-26 08:45:00.475323552 +0200
+++ jdk8/jdk/make/lib/Awt2dLibraries.gmk 2014-09-26 08:46:38.603049945 +0200
@@ -1211,7 +1211,6 @@
ifndef BUILD_HEADLESS_ONLY
LIBSPLASHSCREEN_DIRS := \
$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg \
- $(JDK_TOPDIR)/src/share/native/sun/awt/libpng \
$(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen
ifeq ($(USE_EXTERNAL_LIBGIF), true)
@@ -1228,6 +1227,13 @@
LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
endif
+ ifeq ($(USE_EXTERNAL_LIBPNG), true)
+ LIBPNG_LDFLAGS := -lpng
+ else
+ LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/image/libpng
+ LIBPNG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/libpng
+ endif
+
ifneq ($(OPENJDK_TARGET_OS), macosx)
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
else
@@ -1291,12 +1297,12 @@
LANG := C, \
OPTIMIZATION := LOW, \
CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
- $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS), \
+ $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(LIBPNG_CFLAGS), \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) \
- $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS), \
+ $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS) $(LIBPNG_LDFLAGS), \
LDFLAGS_SUFFIX_solaris := -lc, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
--- jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c 2014-09-26 08:45:00.414324966 +0200
+++ jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c 2014-09-26 08:46:38.603049945 +0200
@@ -25,8 +25,7 @@
#include "splashscreen_impl.h"
-#include "../libpng/png.h"
-
+#include <png.h>
#include <setjmp.h>
#define SIG_BYTES 8