1 |
# If debug is 1, OpenJDK is built with all debug info present. |
2 |
%global debug 0 |
3 |
|
4 |
%global aarch64_hg_tag 992 |
5 |
|
6 |
%global aarch64 aarch64 arm64 armv8 |
7 |
# sometimes we need to distinguish big and little endian PPC64 |
8 |
%global ppc64le ppc64le |
9 |
%global ppc64be ppc64 ppc64p7 |
10 |
%global multilib_arches %{power64} sparc64 x86_64 |
11 |
%global jit_arches %{ix86} x86_64 sparcv9 sparc64 %{aarch64} %{power64} |
12 |
|
13 |
# With diabled nss is NSS deactivated, so in NSS_LIBDIR can be wrong path |
14 |
# the initialisation must be here. LAter the pkg-connfig have bugy behaviour |
15 |
#looks liekopenjdk RPM specific bug |
16 |
# Always set this so the nss.cfg file is not broken |
17 |
%global NSS_LIBDIR %(pkg-config --variable=libdir nss) |
18 |
|
19 |
#fix for https://bugzilla.redhat.com/show_bug.cgi?id=1111349 |
20 |
%global _privatelibs libmawt[.]so.* |
21 |
%global __provides_exclude ^(%{_privatelibs})$ |
22 |
%global __requires_exclude ^(%{_privatelibs})$ |
23 |
|
24 |
%ifarch x86_64 |
25 |
%global archinstall amd64 |
26 |
%endif |
27 |
%ifarch ppc |
28 |
%global archinstall ppc |
29 |
%endif |
30 |
%ifarch %{power64} |
31 |
%global archinstall ppc64 |
32 |
%endif |
33 |
%ifarch %{ix86} |
34 |
%global archinstall i386 |
35 |
%endif |
36 |
%ifarch ia64 |
37 |
%global archinstall ia64 |
38 |
%endif |
39 |
%ifarch s390 |
40 |
%global archinstall s390 |
41 |
%endif |
42 |
%ifarch s390x |
43 |
%global archinstall s390x |
44 |
%endif |
45 |
%ifarch %{arm} |
46 |
%global archinstall arm |
47 |
%endif |
48 |
%ifarch %{aarch64} |
49 |
%global archinstall aarch64 |
50 |
%endif |
51 |
# 32 bit sparc, optimized for v9 |
52 |
%ifarch sparcv9 |
53 |
%global archinstall sparc |
54 |
%endif |
55 |
# 64 bit sparc |
56 |
%ifarch sparc64 |
57 |
%global archinstall sparcv9 |
58 |
%endif |
59 |
%ifnarch %{jit_arches} |
60 |
%global archinstall %{_arch} |
61 |
%endif |
62 |
|
63 |
%if %{debug} |
64 |
%global debugbuild slowdebug |
65 |
%else |
66 |
%global debugbuild release |
67 |
%endif |
68 |
|
69 |
%global buildoutputdir jdk8/build/jdk8.build |
70 |
|
71 |
%ifarch %{jit_arches} |
72 |
%global with_systemtap 1 |
73 |
%else |
74 |
%global with_systemtap 0 |
75 |
%endif |
76 |
|
77 |
# Convert an absolute path to a relative path. Each symbolic link is |
78 |
# specified relative to the directory in which it is installed so that |
79 |
# it will resolve properly within chrooted installations. |
80 |
%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])' |
81 |
%global abs2rel %{__perl} -e %{script} |
82 |
|
83 |
|
84 |
# Standard JPackage naming and versioning defines. |
85 |
%global origin openjdk |
86 |
%global updatever 40 |
87 |
%global buildver b02 |
88 |
%global aarch64_updatever 40 |
89 |
%global aarch64_buildver b04 |
90 |
%global aarch64_changesetid a6df78e590bb |
91 |
# priority must be 6 digits in total |
92 |
%global priority 18000%{updatever} |
93 |
%global javaver 1.8.0 |
94 |
|
95 |
# Standard JPackage directories and symbolic links. |
96 |
%global sdkdir %{uniquesuffix} |
97 |
%global jrelnk jre-%{javaver}-%{origin}-%{version}-%{release}.%{_arch} |
98 |
|
99 |
%global jredir %{sdkdir}/jre |
100 |
%global sdkbindir %{_jvmdir}/%{sdkdir}/bin |
101 |
%global jrebindir %{_jvmdir}/%{jredir}/bin |
102 |
%global jvmjardir %{_jvmjardir}/%{uniquesuffix} |
103 |
|
104 |
%global fullversion %{name}-%{version}-%{release} |
105 |
|
106 |
%global uniquesuffix %{fullversion}.%{_arch} |
107 |
#we can copy the javadoc to not arched dir, or made it not noarch |
108 |
%global uniquejavadocdir %{fullversion} |
109 |
|
110 |
%if %{with_systemtap} |
111 |
# Where to install systemtap tapset (links) |
112 |
# We would like these to be in a package specific subdir, |
113 |
# but currently systemtap doesn't support that, so we have to |
114 |
# use the root tapset dir for now. To distinquish between 64 |
115 |
# and 32 bit architectures we place the tapsets under the arch |
116 |
# specific dir (note that systemtap will only pickup the tapset |
117 |
# for the primary arch for now). Systemtap uses the machine name |
118 |
# aka build_cpu as architecture specific directory name. |
119 |
%global tapsetroot /usr/share/systemtap |
120 |
%global tapsetdir %{tapsetroot}/tapset/%{_build_cpu} |
121 |
%endif |
122 |
|
123 |
# Prevent brp-java-repack-jars from being run. |
124 |
%global __jar_repack 0 |
125 |
|
126 |
Name: java-%{javaver}-%{origin} |
127 |
Version: %{javaver}.%{updatever} |
128 |
Release: %mkrel 4.%{buildver}.3 |
129 |
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons, |
130 |
# and this change was brought into RHEL-4. java-1.5.0-ibm packages |
131 |
# also included the epoch in their virtual provides. This created a |
132 |
# situation where in-the-wild java-1.5.0-ibm packages provided "java = |
133 |
# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is |
134 |
# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be |
135 |
# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in |
136 |
# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual |
137 |
# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0". |
138 |
Epoch: 1 |
139 |
Summary: OpenJDK Runtime Environment |
140 |
Group: Development/Java |
141 |
|
142 |
License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C |
143 |
URL: http://openjdk.java.net/ |
144 |
|
145 |
# Source from upstrem OpenJDK8 project. To regenerate, use |
146 |
# ./generate_source_tarball.sh jdk8u jdk8u jdk8u%%{updatever}-%%{buildver} |
147 |
# ./generate_source_tarball.sh aarch64-port jdk8 %%{aarch64_hg_tag} |
148 |
Source0: jdk8u-jdk8u%{updatever}-%{buildver}.tar.xz |
149 |
Source1: aarch64-hotspot-jdk8u%{aarch64_updatever}-%{aarch64_buildver}-%{aarch64_changesetid}.tar.xz |
150 |
|
151 |
# Custom README for -src subpackage |
152 |
Source2: README.src |
153 |
|
154 |
# Use 'generate_tarballs.sh' to generate the following tarballs |
155 |
# They are based on code contained in the IcedTea7 project. |
156 |
|
157 |
# Systemtap tapsets. Zipped up to keep it small. |
158 |
Source8: systemtap-tapset.tar.gz |
159 |
|
160 |
# Desktop files. Adapated from IcedTea. |
161 |
Source9: jconsole.desktop.in |
162 |
Source10: policytool.desktop.in |
163 |
|
164 |
# nss configuration file |
165 |
Source11: nss.cfg |
166 |
|
167 |
# Removed libraries that we link instead |
168 |
Source12: remove-intree-libraries.sh |
169 |
|
170 |
# Ensure we aren't using the limited crypto policy |
171 |
Source13: TestCryptoLevel.java |
172 |
|
173 |
# New versions of config files with aarch64 support. This is not upstream yet. |
174 |
Source100: config.guess |
175 |
Source101: config.sub |
176 |
|
177 |
# RPM/distribution specific patches |
178 |
|
179 |
# Ignore AWTError when assistive technologies are loaded |
180 |
Patch1: %{name}-accessible-toolkit.patch |
181 |
|
182 |
# Restrict access to java-atk-wrapper classes |
183 |
Patch3: java-atk-wrapper-security.patch |
184 |
# RHBZ 808293 |
185 |
Patch4: PStack-808293.patch |
186 |
# Allow multiple initialization of PKCS11 libraries |
187 |
Patch5: multiple-pkcs11-library-init.patch |
188 |
# Disable doclint for compatibility |
189 |
Patch6: disable-doclint-by-default.patch |
190 |
# Include all sources in src.zip |
191 |
Patch7: include-all-srcs.patch |
192 |
# Problem discovered with make 4.0 |
193 |
Patch11: hotspot-build-j-directive.patch |
194 |
|
195 |
# |
196 |
# OpenJDK specific patches |
197 |
# |
198 |
|
199 |
# JVM heap size changes for s390 (thanks to aph) |
200 |
Patch100: %{name}-s390-java-opts.patch |
201 |
# Type fixing for s390 |
202 |
Patch102: %{name}-size_t.patch |
203 |
|
204 |
Patch201: system-libjpeg.patch |
205 |
Patch202: system-libpng.patch |
206 |
Patch203: system-lcms.patch |
207 |
|
208 |
Patch300: jstack-pr1845.patch |
209 |
|
210 |
Patch400: ppc_stack_overflow_fix.patch |
211 |
Patch401: fix_ZERO_ARCHDEF_ppc.patch |
212 |
Patch402: atomic_linux_zero.inline.hpp.patch |
213 |
|
214 |
Patch9999: enableArm64.patch |
215 |
|
216 |
BuildRequires: autoconf |
217 |
BuildRequires: automake |
218 |
BuildRequires: alsa-lib-devel |
219 |
BuildRequires: binutils |
220 |
BuildRequires: cups-devel |
221 |
BuildRequires: desktop-file-utils |
222 |
BuildRequires: fontconfig |
223 |
BuildRequires: freetype-devel |
224 |
BuildRequires: giflib-devel |
225 |
BuildRequires: gcc-c++ |
226 |
BuildRequires: gtk2-devel |
227 |
BuildRequires: lcms2-devel |
228 |
BuildRequires: libjpeg-devel |
229 |
BuildRequires: libpng-devel |
230 |
BuildRequires: libxslt-devel |
231 |
BuildRequires: libx11-devel |
232 |
BuildRequires: libxi-devel |
233 |
BuildRequires: libxinerama-devel |
234 |
BuildRequires: libxt-devel |
235 |
BuildRequires: libxtst-devel |
236 |
# Requirements for setting up the nss.cfg |
237 |
BuildRequires: nss-devel |
238 |
BuildRequires: pkgconfig |
239 |
BuildRequires: x11-proto-devel |
240 |
#BuildRequires: redhat-lsb |
241 |
BuildRequires: zip |
242 |
BuildRequires: java-1.8.0-openjdk-devel |
243 |
# Zero-assembler build requirement. |
244 |
%ifnarch %{jit_arches} |
245 |
BuildRequires: libffi-devel |
246 |
%endif |
247 |
BuildRequires: timezone-java >= 2014f-1 |
248 |
|
249 |
# cacerts build requirement. |
250 |
BuildRequires: openssl |
251 |
# execstack build requirement. |
252 |
# no prelink on ARM yet |
253 |
%ifnarch %{arm} %{aarch64} %{ppc64le} |
254 |
BuildRequires: prelink |
255 |
%endif |
256 |
%if %{with_systemtap} |
257 |
BuildRequires: systemtap |
258 |
%endif |
259 |
|
260 |
Requires: fontconfig |
261 |
#Requires: x11-font-type1 |
262 |
|
263 |
# Requires rest of java |
264 |
Requires: %{name}-headless = %{epoch}:%{version}-%{release} |
265 |
#OrderWithRequires: %{name}-headless = %{epoch}:%{version}-%{release} |
266 |
|
267 |
|
268 |
# Standard JPackage base provides. |
269 |
Provides: jre-%{javaver}-%{origin} = %{epoch}:%{version}-%{release} |
270 |
Provides: jre-%{origin} = %{epoch}:%{version}-%{release} |
271 |
Provides: jre-%{javaver} = %{epoch}:%{version}-%{release} |
272 |
Provides: java-%{javaver} = %{epoch}:%{version}-%{release} |
273 |
Provides: jre = %{javaver} |
274 |
Provides: java-%{origin} = %{epoch}:%{version}-%{release} |
275 |
Provides: java = %{epoch}:%{javaver} |
276 |
# Standard JPackage extensions provides. |
277 |
Provides: java-fonts = %{epoch}:%{version} |
278 |
|
279 |
Obsoletes: java-1.7.0-openjdk < 1:1.7.0.65-2.5.2.2 |
280 |
Provides: java-1.7.0-openjdk = %{epoch}:%{version}-%{release} |
281 |
|
282 |
%description |
283 |
The OpenJDK runtime environment. |
284 |
|
285 |
%package headless |
286 |
Summary: OpenJDK Runtime Environment |
287 |
Group: Development/Java |
288 |
|
289 |
# Require /etc/pki/java/cacerts. |
290 |
#Requires: ca-certificates |
291 |
Requires: rootcerts-java |
292 |
# Require jpackage-utils for ownership of /usr/lib/jvm/ |
293 |
Requires: jpackage-utils |
294 |
# Require zoneinfo data provided by tzdata-java subpackage. |
295 |
Requires: timezone-java >= 2014f-1 |
296 |
# Post requires alternatives to install tool alternatives. |
297 |
Requires(post): %{_sbindir}/alternatives |
298 |
# Postun requires alternatives to uninstall tool alternatives. |
299 |
Requires(postun): %{_sbindir}/alternatives |
300 |
|
301 |
# Standard JPackage base provides. |
302 |
Provides: jre-%{javaver}-%{origin}-headless = %{epoch}:%{version}-%{release} |
303 |
Provides: jre-%{origin}-headless = %{epoch}:%{version}-%{release} |
304 |
Provides: jre-%{javaver}-headless = %{epoch}:%{version}-%{release} |
305 |
Provides: java-%{javaver}-headless = %{epoch}:%{version}-%{release} |
306 |
Provides: jre-headless = %{epoch}:%{javaver} |
307 |
Provides: java-%{origin}-headless = %{epoch}:%{version}-%{release} |
308 |
Provides: java-headless = %{epoch}:%{javaver} |
309 |
# Standard JPackage extensions provides. |
310 |
Provides: jndi = %{epoch}:%{version} |
311 |
Provides: jndi-ldap = %{epoch}:%{version} |
312 |
Provides: jndi-cos = %{epoch}:%{version} |
313 |
Provides: jndi-rmi = %{epoch}:%{version} |
314 |
Provides: jndi-dns = %{epoch}:%{version} |
315 |
Provides: jaas = %{epoch}:%{version} |
316 |
Provides: jsse = %{epoch}:%{version} |
317 |
Provides: jce = %{epoch}:%{version} |
318 |
Provides: jdbc-stdext = 4.1 |
319 |
Provides: java-sasl = %{epoch}:%{version} |
320 |
|
321 |
Obsoletes: java-1.7.0-openjdk-headless < 1:1.7.0.65-2.5.2.2 |
322 |
Provides: java-1.7.0-openjdk-headless = %{epoch}:%{version}-%{release} |
323 |
|
324 |
%description headless |
325 |
The OpenJDK runtime environment without audio and video support. |
326 |
|
327 |
%package devel |
328 |
Summary: OpenJDK Development Environment |
329 |
Group: Development/Java |
330 |
|
331 |
# Require base package. |
332 |
Requires: %{name} = %{epoch}:%{version}-%{release} |
333 |
#OrderWithRequires: %{name}-headless = %{epoch}:%{version}-%{release} |
334 |
# Post requires alternatives to install tool alternatives. |
335 |
Requires(post): %{_sbindir}/alternatives |
336 |
# Postun requires alternatives to uninstall tool alternatives. |
337 |
Requires(postun): %{_sbindir}/alternatives |
338 |
|
339 |
# Standard JPackage devel provides. |
340 |
Provides: java-sdk-%{javaver}-%{origin} = %{epoch}:%{version} |
341 |
Provides: java-sdk-%{javaver} = %{epoch}:%{version} |
342 |
Provides: java-sdk-%{origin} = %{epoch}:%{version} |
343 |
Provides: java-sdk = %{epoch}:%{javaver} |
344 |
Provides: java-%{javaver}-devel = %{epoch}:%{version} |
345 |
Provides: java-devel-%{origin} = %{epoch}:%{version} |
346 |
Provides: java-devel = %{epoch}:%{javaver} |
347 |
|
348 |
Obsoletes: java-1.7.0-openjdk-devel < 1:1.7.0.65-2.5.2.2 |
349 |
Provides: java-1.7.0-openjdk-devel = %{epoch}:%{version}-%{release} |
350 |
|
351 |
%description devel |
352 |
The OpenJDK development tools. |
353 |
|
354 |
%package demo |
355 |
Summary: OpenJDK Demos |
356 |
Group: Development/Java |
357 |
|
358 |
Requires: %{name} = %{epoch}:%{version}-%{release} |
359 |
#OrderWithRequires: %{name}-headless = %{epoch}:%{version}-%{release} |
360 |
|
361 |
Obsoletes: java-1.7.0-openjdk-demo < 1:1.7.0.65-2.5.2.2 |
362 |
Provides: java-1.7.0-openjdk-demo = %{epoch}:%{version}-%{release} |
363 |
|
364 |
%description demo |
365 |
The OpenJDK demos. |
366 |
|
367 |
%package src |
368 |
Summary: OpenJDK Source Bundle |
369 |
Group: Development/Java |
370 |
|
371 |
Requires: %{name} = %{epoch}:%{version}-%{release} |
372 |
|
373 |
Obsoletes: java-1.7.0-openjdk-src < 1:1.7.0.65-2.5.2.2 |
374 |
Provides: java-1.7.0-openjdk-src = %{epoch}:%{version}-%{release} |
375 |
|
376 |
%description src |
377 |
The OpenJDK source bundle. |
378 |
|
379 |
%package javadoc |
380 |
Summary: OpenJDK API Documentation |
381 |
Group: Documentation |
382 |
Requires: jpackage-utils |
383 |
BuildArch: noarch |
384 |
|
385 |
#OrderWithRequires: %{name}-headless = %{epoch}:%{version}-%{release} |
386 |
# Post requires alternatives to install javadoc alternative. |
387 |
Requires(post): %{_sbindir}/alternatives |
388 |
# Postun requires alternatives to uninstall javadoc alternative. |
389 |
Requires(postun): %{_sbindir}/alternatives |
390 |
|
391 |
# Standard JPackage javadoc provides. |
392 |
Provides: java-javadoc = %{epoch}:%{version}-%{release} |
393 |
Provides: java-%{javaver}-javadoc = %{epoch}:%{version}-%{release} |
394 |
|
395 |
Obsoletes: java-1.7.0-openjdk-javadoc < 1:1.7.0.65-2.5.2.2 |
396 |
Provides: java-1.7.0-openjdk-javadoc = %{epoch}:%{version}-%{release} |
397 |
|
398 |
%description javadoc |
399 |
The OpenJDK API documentation. |
400 |
|
401 |
%package accessibility |
402 |
Summary: OpenJDK accessibility connector |
403 |
Requires: java-atk-wrapper |
404 |
Requires: %{name} = %{epoch}:%{version}-%{release} |
405 |
#OrderWithRequires: %{name}-headless = %{epoch}:%{version}-%{release} |
406 |
|
407 |
Obsoletes: java-1.7.0-openjdk-accessibility < 1:1.7.0.65-2.5.2.2 |
408 |
Provides: java-1.7.0-openjdk-accessibility = %{epoch}:%{version}-%{release} |
409 |
|
410 |
%description accessibility |
411 |
Enables accessibility support in OpenJDK by using java-atk-wrapper. This allows |
412 |
compatible at-spi2 based accessibility programs to work for AWT and Swing-based |
413 |
programs. |
414 |
|
415 |
Please note, the java-atk-wrapper is still in beta, and OpenJDK itself is still |
416 |
being tuned to be working with accessibility features. There are known issues |
417 |
with accessibility on, so please do not install this package unless you really |
418 |
need to. |
419 |
|
420 |
|
421 |
%prep |
422 |
%setup -q -c -n %{uniquesuffix} -T -a 0 |
423 |
%ifarch %{aarch64} |
424 |
pushd jdk8 |
425 |
rm -r hotspot |
426 |
tar xf %{SOURCE1} |
427 |
popd |
428 |
%endif |
429 |
cp %{SOURCE2} . |
430 |
|
431 |
# replace outdated configure guess script |
432 |
# |
433 |
# the configure macro will do this too, but it also passes a few flags not |
434 |
# supported by openjdk configure script |
435 |
cp %{SOURCE100} jdk8/common/autoconf/build-aux/ |
436 |
cp %{SOURCE101} jdk8/common/autoconf/build-aux/ |
437 |
|
438 |
# OpenJDK patches |
439 |
|
440 |
# Remove libraries that are linked |
441 |
sh %{SOURCE12} |
442 |
|
443 |
%ifarch %{aarch64} |
444 |
%patch9999 |
445 |
%endif |
446 |
|
447 |
%patch201 |
448 |
%patch202 |
449 |
%patch203 |
450 |
|
451 |
%patch1 |
452 |
%patch3 |
453 |
%patch4 |
454 |
%patch5 |
455 |
%patch6 |
456 |
%patch7 |
457 |
%patch11 |
458 |
|
459 |
# s390 build fixes |
460 |
%ifarch s390 |
461 |
%patch100 |
462 |
%patch102 |
463 |
%endif |
464 |
|
465 |
# Zero PPC fixes. |
466 |
# TODO: propose them upstream |
467 |
%patch400 |
468 |
%patch401 |
469 |
%patch402 |
470 |
|
471 |
# Extract systemtap tapsets |
472 |
%if %{with_systemtap} |
473 |
|
474 |
tar xzf %{SOURCE8} |
475 |
|
476 |
%patch300 |
477 |
|
478 |
for file in tapset/*.in; do |
479 |
|
480 |
OUTPUT_FILE=`echo $file | sed -e s:%{javaver}\.stp\.in$:%{version}-%{release}.%{_arch}.stp:g` |
481 |
sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/server/libjvm.so:g $file > $file.1 |
482 |
# TODO find out which architectures other than i686 have a client vm |
483 |
%ifarch %{ix86} |
484 |
sed -e s:@ABS_CLIENT_LIBJVM_SO@:%{_jvmdir}/%{sdkdir}/jre/lib/%{archinstall}/client/libjvm.so:g $file.1 > $OUTPUT_FILE |
485 |
%else |
486 |
sed -e '/@ABS_CLIENT_LIBJVM_SO@/d' $file.1 > $OUTPUT_FILE |
487 |
%endif |
488 |
sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir}:g $OUTPUT_FILE |
489 |
sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE |
490 |
|
491 |
done |
492 |
|
493 |
%endif |
494 |
|
495 |
# Prepare desktop files |
496 |
for file in %{SOURCE9} %{SOURCE10} ; do |
497 |
OUTPUT_FILE=`basename $file | sed -e s:\.in$::g` |
498 |
sed -e s:#JAVA_HOME#:%{sdkbindir}:g $file > $OUTPUT_FILE |
499 |
sed -i -e s:#JRE_HOME#:%{jrebindir}:g $OUTPUT_FILE |
500 |
sed -i -e s:#ARCH#:%{version}-%{release}.%{_arch}:g $OUTPUT_FILE |
501 |
done |
502 |
|
503 |
%build |
504 |
# How many cpu's do we have? |
505 |
export NUM_PROC=`/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :` |
506 |
export NUM_PROC=${NUM_PROC:-1} |
507 |
|
508 |
# Build IcedTea and OpenJDK. |
509 |
%ifarch s390x sparc64 alpha %{power64} %{aarch64} |
510 |
export ARCH_DATA_MODEL=64 |
511 |
%endif |
512 |
%ifarch alpha |
513 |
export CFLAGS="$CFLAGS -mieee" |
514 |
%endif |
515 |
|
516 |
EXTRA_CFLAGS="-fstack-protector-strong" |
517 |
#see https://bugzilla.redhat.com/show_bug.cgi?id=1120792 |
518 |
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-devirtualize" |
519 |
EXTRA_CPP_FLAGS="-fno-devirtualize" |
520 |
# PPC/PPC64 needs -fno-tree-vectorize since -O3 would |
521 |
# otherwise generate wrong code producing segfaults. |
522 |
%ifarch %{power64} ppc |
523 |
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-tree-vectorize" |
524 |
# fix rpmlint warnings |
525 |
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing" |
526 |
%endif |
527 |
export EXTRA_CFLAGS |
528 |
|
529 |
(cd jdk8/common/autoconf |
530 |
bash ./autogen.sh |
531 |
) |
532 |
|
533 |
mkdir -p %{buildoutputdir} |
534 |
|
535 |
pushd %{buildoutputdir} |
536 |
|
537 |
bash ../../configure \ |
538 |
%ifnarch %{jit_arches} |
539 |
--with-jvm-variants=zero \ |
540 |
%endif |
541 |
%ifarch %{ppc64le} |
542 |
--with-jvm-interpreter=cpp \ |
543 |
%endif |
544 |
--disable-zip-debug-info \ |
545 |
--with-milestone="fcs" \ |
546 |
--with-update-version=%{updatever} \ |
547 |
--with-build-number=%{buildver} \ |
548 |
%ifarch %{aarch64} |
549 |
--with-user-release-suffix="aarch64-%{aarch64_updatever}-%{aarch64_buildver}-%{aarch64_changesetid}" \ |
550 |
%endif |
551 |
--with-boot-jdk=/usr/lib/jvm/java-openjdk \ |
552 |
--with-debug-level=%{debugbuild} \ |
553 |
--enable-unlimited-crypto \ |
554 |
--with-zlib=system \ |
555 |
--with-libjpeg=system \ |
556 |
--with-giflib=system \ |
557 |
--with-libpng=system \ |
558 |
--with-lcms=system \ |
559 |
--with-stdc++lib=dynamic \ |
560 |
--with-extra-cxxflags="$EXTRA_CPP_FLAGS" \ |
561 |
--with-extra-cflags="$EXTRA_CFLAGS" \ |
562 |
--with-num-cores="$NUM_PROC" |
563 |
|
564 |
# The combination of FULL_DEBUG_SYMBOLS=0 and ALT_OBJCOPY=/does_not_exist |
565 |
# disables FDS for all build configs and reverts to pre-FDS make logic. |
566 |
# STRIP_POLICY=none says don't do any stripping. DEBUG_BINARIES=true says |
567 |
# ignore all the other logic about which debug options and just do '-g'. |
568 |
|
569 |
make \ |
570 |
DEBUG_BINARIES=true \ |
571 |
STRIP_POLICY=no_strip \ |
572 |
POST_STRIP_CMD="" \ |
573 |
LOG=trace \ |
574 |
all |
575 |
|
576 |
# the build (erroneously) removes read permissions from some jars |
577 |
# this is a regression in OpenJDK 7 (our compiler): |
578 |
# http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1437 |
579 |
find images/j2sdk-image -iname '*.jar' -exec chmod ugo+r {} \; |
580 |
chmod ugo+r images/j2sdk-image/lib/ct.sym |
581 |
|
582 |
# remove redundant *diz and *debuginfo files |
583 |
find images/j2sdk-image -iname '*.diz' -exec rm {} \; |
584 |
find images/j2sdk-image -iname '*.debuginfo' -exec rm {} \; |
585 |
|
586 |
popd >& /dev/null |
587 |
|
588 |
# Install nss.cfg right away as we will be using the JRE above |
589 |
export JAVA_HOME=$(pwd)/%{buildoutputdir}/images/j2sdk-image |
590 |
|
591 |
# Install nss.cfg right away as we will be using the JRE above |
592 |
install -m 644 %{SOURCE11} $JAVA_HOME/jre/lib/security/ |
593 |
|
594 |
|
595 |
# Use system-wide tzdata |
596 |
rm $JAVA_HOME/jre/lib/tzdb.dat |
597 |
ln -s %{_datadir}/javazi-1.8/tzdb.dat $JAVA_HOME/jre/lib/tzdb.dat |
598 |
|
599 |
# Check unlimited policy has been used |
600 |
$JAVA_HOME/bin/javac -d . %{SOURCE13} |
601 |
$JAVA_HOME/bin/java TestCryptoLevel |
602 |
|
603 |
# Check debug symbols are present and can identify code |
604 |
SERVER_JVM="$JAVA_HOME/jre/lib/%{archinstall}/server/libjvm.so" |
605 |
if [ -f "$SERVER_JVM" ] ; then |
606 |
nm -aCl "$SERVER_JVM" | grep javaCalls.cpp |
607 |
fi |
608 |
CLIENT_JVM="$JAVA_HOME/jre/lib/%{archinstall}/client/libjvm.so" |
609 |
if [ -f "$CLIENT_JVM" ] ; then |
610 |
nm -aCl "$CLIENT_JVM" | grep javaCalls.cpp |
611 |
fi |
612 |
ZERO_JVM="$JAVA_HOME/jre/lib/%{archinstall}/zero/libjvm.so" |
613 |
if [ -f "$ZERO_JVM" ] ; then |
614 |
nm -aCl "$ZERO_JVM" | grep javaCalls.cpp |
615 |
fi |
616 |
|
617 |
%install |
618 |
rm -rf $RPM_BUILD_ROOT |
619 |
STRIP_KEEP_SYMTAB=libjvm* |
620 |
|
621 |
# Install symlink to default soundfont |
622 |
install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/audio |
623 |
pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/audio |
624 |
ln -s %{_datadir}/soundfonts/default.sf2 |
625 |
popd |
626 |
|
627 |
pushd %{buildoutputdir}/images/j2sdk-image |
628 |
|
629 |
#install jsa directories so we can owe them |
630 |
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/%{archinstall}/server/ |
631 |
mkdir -p $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/%{archinstall}/client/ |
632 |
|
633 |
# Install main files. |
634 |
install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} |
635 |
cp -a bin include lib src.zip $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} |
636 |
install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} |
637 |
cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} |
638 |
|
639 |
%if %{with_systemtap} |
640 |
# Install systemtap support files. |
641 |
install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/tapset |
642 |
cp -a $RPM_BUILD_DIR/%{uniquesuffix}/tapset/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/tapset/ |
643 |
install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir} |
644 |
pushd $RPM_BUILD_ROOT%{tapsetdir} |
645 |
RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir}/tapset %{tapsetdir}) |
646 |
ln -sf $RELATIVE/*.stp . |
647 |
popd |
648 |
%endif |
649 |
|
650 |
# Install cacerts symlink. |
651 |
rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/cacerts |
652 |
pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security |
653 |
RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \ |
654 |
%{_jvmdir}/%{jredir}/lib/security) |
655 |
ln -sf $RELATIVE/cacerts . |
656 |
popd |
657 |
|
658 |
# Install extension symlinks. |
659 |
install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir} |
660 |
pushd $RPM_BUILD_ROOT%{jvmjardir} |
661 |
RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir}/lib %{jvmjardir}) |
662 |
ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar |
663 |
ln -sf $RELATIVE/jce.jar jce-%{version}.jar |
664 |
ln -sf $RELATIVE/rt.jar jndi-%{version}.jar |
665 |
ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar |
666 |
ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar |
667 |
ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar |
668 |
ln -sf $RELATIVE/rt.jar jaas-%{version}.jar |
669 |
ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar |
670 |
ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar |
671 |
ln -sf $RELATIVE/rt.jar sasl-%{version}.jar |
672 |
for jar in *-%{version}.jar |
673 |
do |
674 |
if [ x%{version} != x%{javaver} ] |
675 |
then |
676 |
ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g") |
677 |
fi |
678 |
ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g") |
679 |
done |
680 |
popd |
681 |
|
682 |
# Install JCE policy symlinks. |
683 |
install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{uniquesuffix}/jce/vanilla |
684 |
|
685 |
# Install versioned symlinks. |
686 |
pushd $RPM_BUILD_ROOT%{_jvmdir} |
687 |
ln -sf %{jredir} %{jrelnk} |
688 |
popd |
689 |
|
690 |
pushd $RPM_BUILD_ROOT%{_jvmjardir} |
691 |
ln -sf %{sdkdir} %{jrelnk} |
692 |
popd |
693 |
|
694 |
# Remove javaws man page |
695 |
rm -f man/man1/javaws* |
696 |
|
697 |
# Install man pages. |
698 |
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1 |
699 |
for manpage in man/man1/* |
700 |
do |
701 |
# Convert man pages to UTF8 encoding. |
702 |
iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp |
703 |
mv -f $manpage.tmp $manpage |
704 |
install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \ |
705 |
$manpage .1)-%{uniquesuffix}.1 |
706 |
done |
707 |
|
708 |
# Install demos and samples. |
709 |
cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} |
710 |
mkdir -p sample/rmi |
711 |
mv bin/java-rmi.cgi sample/rmi |
712 |
cp -a sample $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} |
713 |
|
714 |
popd |
715 |
|
716 |
|
717 |
# Install Javadoc documentation. |
718 |
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir} |
719 |
cp -a %{buildoutputdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{uniquejavadocdir} |
720 |
|
721 |
# Install icons and menu entries. |
722 |
for s in 16 24 32 48 ; do |
723 |
install -D -p -m 644 \ |
724 |
jdk8/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ |
725 |
$RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png |
726 |
done |
727 |
|
728 |
# Install desktop files. |
729 |
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps} |
730 |
for e in jconsole policytool ; do |
731 |
desktop-file-install --vendor=%{uniquesuffix} --mode=644 \ |
732 |
--dir=$RPM_BUILD_ROOT%{_datadir}/applications $e.desktop |
733 |
done |
734 |
|
735 |
# Install /etc/.java/.systemPrefs/ directory |
736 |
# See https://bugzilla.redhat.com/show_bug.cgi?id=741821 |
737 |
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/.java/.systemPrefs |
738 |
|
739 |
# Find JRE directories. |
740 |
find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type d \ |
741 |
| grep -v jre/lib/security \ |
742 |
| sed 's|'$RPM_BUILD_ROOT'|%dir |' \ |
743 |
> %{name}.files-headless |
744 |
# Find JRE files. |
745 |
find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type f -o -type l \ |
746 |
| grep -v jre/lib/security \ |
747 |
| sed 's|'$RPM_BUILD_ROOT'||' \ |
748 |
> %{name}.files.all |
749 |
#split %%{name}.files to %%{name}.files-headless and %%{name}.files |
750 |
#see https://bugzilla.redhat.com/show_bug.cgi?id=875408 |
751 |
NOT_HEADLESS=\ |
752 |
"%{_jvmdir}/%{uniquesuffix}/jre/lib/%{archinstall}/libjsoundalsa.so |
753 |
%{_jvmdir}/%{uniquesuffix}/jre/lib/%{archinstall}/libpulse-java.so |
754 |
%{_jvmdir}/%{uniquesuffix}/jre/lib/%{archinstall}/libsplashscreen.so |
755 |
%{_jvmdir}/%{uniquesuffix}/jre/lib/%{archinstall}/libawt_xawt.so |
756 |
%{_jvmdir}/%{uniquesuffix}/jre/lib/%{archinstall}/libjawt.so |
757 |
%{_jvmdir}/%{uniquesuffix}/jre/bin/policytool" |
758 |
#filter %%{name}.files from %%{name}.files.all to %%{name}.files-headless |
759 |
ALL=`cat %{name}.files.all` |
760 |
for file in $ALL ; do |
761 |
INLCUDE="NO" ; |
762 |
for blacklist in $NOT_HEADLESS ; do |
763 |
#we can not match normally, because rpmbuild will evaluate !0 result as script failure |
764 |
q=`expr match "$file" "$blacklist"` || : |
765 |
l=`expr length "$blacklist"` || : |
766 |
if [ $q -eq $l ]; then |
767 |
INLCUDE="YES" ; |
768 |
fi; |
769 |
done |
770 |
if [ "x$INLCUDE" = "xNO" ]; then |
771 |
echo "$file" >> %{name}.files-headless |
772 |
else |
773 |
echo "$file" >> %{name}.files |
774 |
fi |
775 |
done |
776 |
# Find demo directories. |
777 |
find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \ |
778 |
$RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample -type d \ |
779 |
| sed 's|'$RPM_BUILD_ROOT'|%dir |' \ |
780 |
> %{name}-demo.files |
781 |
|
782 |
# FIXME: remove SONAME entries from demo DSOs. See |
783 |
# https://bugzilla.redhat.com/show_bug.cgi?id=436497 |
784 |
|
785 |
# Find non-documentation demo files. |
786 |
find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \ |
787 |
$RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \ |
788 |
-type f -o -type l | sort \ |
789 |
| grep -v README \ |
790 |
| sed 's|'$RPM_BUILD_ROOT'||' \ |
791 |
>> %{name}-demo.files |
792 |
# Find documentation demo files. |
793 |
find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \ |
794 |
$RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \ |
795 |
-type f -o -type l | sort \ |
796 |
| grep README \ |
797 |
| sed 's|'$RPM_BUILD_ROOT'||' \ |
798 |
| sed 's|^|%doc |' \ |
799 |
>> %{name}-demo.files |
800 |
|
801 |
# intentionally after the files generation, as it goes to separate package |
802 |
# Create links which leads to separately installed java-atk-bridge and allow configuration |
803 |
# links points to java-atk-wrapper - an dependence |
804 |
pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir}/lib/%{archinstall} |
805 |
ln -s %{_libdir}/java-atk-wrapper/libatk-wrapper.so.0 libatk-wrapper.so |
806 |
popd |
807 |
pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir}/lib/ext |
808 |
ln -s %{_libdir}/java-atk-wrapper/java-atk-wrapper.jar java-atk-wrapper.jar |
809 |
popd |
810 |
pushd $RPM_BUILD_ROOT/%{_jvmdir}/%{jredir}/lib/ |
811 |
echo "#Config file to enable java-atk-wrapper" > accessibility.properties |
812 |
echo "" >> accessibility.properties |
813 |
echo "assistive_technologies=org.GNOME.Accessibility.AtkWrapper" >> accessibility.properties |
814 |
echo "" >> accessibility.properties |
815 |
popd |
816 |
|
817 |
%pretrans headless -p <lua> |
818 |
-- see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue |
819 |
|
820 |
local posix = require "posix" |
821 |
|
822 |
local currentjvm = "%{uniquesuffix}" |
823 |
local jvmdir = "%{_jvmdir}" |
824 |
local jvmDestdir = jvmdir |
825 |
local origname = "%{name}" |
826 |
local origjavaver = "%{javaver}" |
827 |
--trasnform substitute names to lua patterns |
828 |
--all percentages must be doubled for case of RPM escapingg |
829 |
local name = string.gsub(string.gsub(origname, "%%-", "%%%%-"), "%%.", "%%%%.") |
830 |
local javaver = string.gsub(origjavaver, "%%.", "%%%%.") |
831 |
local arch ="%{_arch}" |
832 |
local debug = false; |
833 |
|
834 |
local jvms = { } |
835 |
|
836 |
local caredFiles = {"jre/lib/calendars.properties", |
837 |
"jre/lib/content-types.properties", |
838 |
"jre/lib/flavormap.properties", |
839 |
"jre/lib/logging.properties", |
840 |
"jre/lib/net.properties", |
841 |
"jre/lib/psfontj2d.properties", |
842 |
"jre/lib/sound.properties", |
843 |
"jre/lib/tz.properties", |
844 |
"jre/lib/deployment.properties", |
845 |
"jre/lib/deployment.config", |
846 |
"jre/lib/security/US_export_policy.jar", |
847 |
"jre/lib/security/java.policy", |
848 |
"jre/lib/security/java.security", |
849 |
"jre/lib/security/local_policy.jar", |
850 |
"jre/lib/security/nss.cfg,", |
851 |
"jre/lib/ext"} |
852 |
|
853 |
function splitToTable(source, pattern) |
854 |
local i1 = string.gmatch(source, pattern) |
855 |
local l1 = {} |
856 |
for i in i1 do |
857 |
table.insert(l1, i) |
858 |
end |
859 |
return l1 |
860 |
end |
861 |
|
862 |
if (debug) then |
863 |
print("started") |
864 |
end; |
865 |
|
866 |
foundJvms = posix.dir(jvmdir); |
867 |
if (foundJvms == nil) then |
868 |
if (debug) then |
869 |
print("no, or nothing in "..jvmdir.." exit") |
870 |
end; |
871 |
return |
872 |
end |
873 |
|
874 |
if (debug) then |
875 |
print("found "..#foundJvms.."jvms") |
876 |
end; |
877 |
|
878 |
for i,p in pairs(foundJvms) do |
879 |
-- regex similar to %{_jvmdir}/%{name}-%{javaver}*%{_arch} bash command |
880 |
--all percentages must be doubled for case of RPM escapingg |
881 |
if (string.find(p, name.."%%-"..javaver..".*"..arch) ~= nil ) then |
882 |
if (debug) then |
883 |
print("matched: "..p) |
884 |
end; |
885 |
if (currentjvm == p) then |
886 |
if (debug) then |
887 |
print("this jdk is already installed. exiting lua script") |
888 |
end; |
889 |
return |
890 |
end ; |
891 |
table.insert(jvms, p) |
892 |
else |
893 |
if (debug) then |
894 |
print("NOT matched: "..p) |
895 |
end; |
896 |
end |
897 |
end |
898 |
|
899 |
if (#jvms <=0) then |
900 |
if (debug) then |
901 |
print("no matching jdk in "..jvmdir.." exit") |
902 |
end; |
903 |
return |
904 |
end; |
905 |
|
906 |
if (debug) then |
907 |
print("matched "..#jvms.." jdk in "..jvmdir) |
908 |
end; |
909 |
|
910 |
--full names are like java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64 |
911 |
table.sort(jvms , function(a,b) |
912 |
-- version-sort |
913 |
-- split on non word: . - |
914 |
local l1 = splitToTable(a, "[^%.-]+") |
915 |
local l2 = splitToTable(b, "[^%.-]+") |
916 |
for x = 1, math.min(#l1, #l2) do |
917 |
local l1x = tonumber(l1[x]) |
918 |
local l2x = tonumber(l2[x]) |
919 |
if (l1x ~= nil and l2x ~= nil)then |
920 |
--if hunks are numbers, go with them |
921 |
if (l1x < l2x) then return true; end |
922 |
if (l1x > l2x) then return false; end |
923 |
else |
924 |
if (l1[x] < l2[x]) then return true; end |
925 |
if (l1[x] > l2[x]) then return false; end |
926 |
end |
927 |
-- if hunks are equals then move to another pair of hunks |
928 |
end |
929 |
return a<b |
930 |
|
931 |
end) |
932 |
|
933 |
if (debug) then |
934 |
print("sorted lsit of jvms") |
935 |
for i,file in pairs(jvms) do |
936 |
print(file) |
937 |
end |
938 |
end |
939 |
|
940 |
latestjvm = jvms[#jvms] |
941 |
|
942 |
|
943 |
for i,file in pairs(caredFiles) do |
944 |
local SOURCE=jvmdir.."/"..latestjvm.."/"..file |
945 |
local DEST=jvmDestdir.."/"..currentjvm.."/"..file |
946 |
if (debug) then |
947 |
print("going to copy "..SOURCE) |
948 |
print("to "..DEST) |
949 |
end; |
950 |
local stat1 = posix.stat(SOURCE, "type"); |
951 |
if (stat1 ~= nil) then |
952 |
if (debug) then |
953 |
print(SOURCE.." exists") |
954 |
end; |
955 |
local s = "" |
956 |
local dirs = splitToTable(DEST, "[^/]+") |
957 |
for i,d in pairs(dirs) do |
958 |
if (i == #dirs) then |
959 |
break |
960 |
end |
961 |
s = s.."/"..d |
962 |
local stat2 = posix.stat(s, "type"); |
963 |
if (stat2 == nil) then |
964 |
if (debug) then |
965 |
print(s.." does not exists, creating") |
966 |
end; |
967 |
posix.mkdir(s) |
968 |
else |
969 |
if (debug) then |
970 |
print(s.." exists,not creating") |
971 |
end; |
972 |
end |
973 |
end |
974 |
-- Copy with -a to keep everything intact |
975 |
local exe = "cp".." -ar "..SOURCE.." "..DEST |
976 |
if (debug) then |
977 |
print("executing "..exe) |
978 |
end; |
979 |
os.execute(exe) |
980 |
else |
981 |
if (debug) then |
982 |
print(SOURCE.." does not exists") |
983 |
end; |
984 |
end |
985 |
end |
986 |
|
987 |
|
988 |
%post headless |
989 |
# FIXME: identical binaries are copied, not linked. This needs to be |
990 |
# fixed upstream. |
991 |
%ifarch %{jit_arches} |
992 |
#see https://bugzilla.redhat.com/show_bug.cgi?id=513605 |
993 |
%{jrebindir}/java -Xshare:dump >/dev/null 2>/dev/null |
994 |
%endif |
995 |
|
996 |
ext=%{_extension} |
997 |
alternatives \ |
998 |
--install %{_bindir}/java java %{jrebindir}/java %{priority} \ |
999 |
--slave %{_jvmdir}/jre jre %{_jvmdir}/%{jredir} \ |
1000 |
--slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jrelnk} \ |
1001 |
--slave %{_bindir}/jjs jjs %{jrebindir}/jjs \ |
1002 |
--slave %{_bindir}/keytool keytool %{jrebindir}/keytool \ |
1003 |
--slave %{_bindir}/orbd orbd %{jrebindir}/orbd \ |
1004 |
--slave %{_bindir}/pack200 pack200 %{jrebindir}/pack200 \ |
1005 |
--slave %{_bindir}/rmid rmid %{jrebindir}/rmid \ |
1006 |
--slave %{_bindir}/rmiregistry rmiregistry %{jrebindir}/rmiregistry \ |
1007 |
--slave %{_bindir}/servertool servertool %{jrebindir}/servertool \ |
1008 |
--slave %{_bindir}/tnameserv tnameserv %{jrebindir}/tnameserv \ |
1009 |
--slave %{_bindir}/unpack200 unpack200 %{jrebindir}/unpack200 \ |
1010 |
--slave %{_mandir}/man1/java.1$ext java.1$ext \ |
1011 |
%{_mandir}/man1/java-%{uniquesuffix}.1$ext \ |
1012 |
--slave %{_mandir}/man1/jjs.1$ext jjs.1$ext \ |
1013 |
%{_mandir}/man1/jjs-%{uniquesuffix}.1$ext \ |
1014 |
--slave %{_bindir}/policytool policytool %{jrebindir}/policytool \ |
1015 |
--slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \ |
1016 |
%{_mandir}/man1/keytool-%{uniquesuffix}.1$ext \ |
1017 |
--slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \ |
1018 |
%{_mandir}/man1/orbd-%{uniquesuffix}.1$ext \ |
1019 |
--slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \ |
1020 |
%{_mandir}/man1/pack200-%{uniquesuffix}.1$ext \ |
1021 |
--slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \ |
1022 |
%{_mandir}/man1/rmid-%{uniquesuffix}.1$ext \ |
1023 |
--slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \ |
1024 |
%{_mandir}/man1/rmiregistry-%{uniquesuffix}.1$ext \ |
1025 |
--slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \ |
1026 |
%{_mandir}/man1/servertool-%{uniquesuffix}.1$ext \ |
1027 |
--slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \ |
1028 |
%{_mandir}/man1/tnameserv-%{uniquesuffix}.1$ext \ |
1029 |
--slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \ |
1030 |
%{_mandir}/man1/unpack200-%{uniquesuffix}.1$ext |
1031 |
|
1032 |
for X in %{origin} %{javaver} ; do |
1033 |
alternatives \ |
1034 |
--install %{_jvmdir}/jre-"$X" \ |
1035 |
jre_"$X" %{_jvmdir}/%{jredir} %{priority} \ |
1036 |
--slave %{_jvmjardir}/jre-"$X" \ |
1037 |
jre_"$X"_exports %{_jvmjardir}/%{jredir} |
1038 |
done |
1039 |
|
1040 |
update-alternatives --install %{_jvmdir}/jre-%{javaver}-%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \ |
1041 |
--slave %{_jvmjardir}/jre-%{javaver} jre_%{javaver}_%{origin}_exports %{jvmjardir} |
1042 |
|
1043 |
exit 0 |
1044 |
|
1045 |
|
1046 |
%postun headless |
1047 |
alternatives --remove java %{jrebindir}/java |
1048 |
alternatives --remove jre_%{origin} %{_jvmdir}/%{jredir} |
1049 |
alternatives --remove jre_%{javaver} %{_jvmdir}/%{jredir} |
1050 |
alternatives --remove jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk} |
1051 |
|
1052 |
|
1053 |
%post devel |
1054 |
ext=%{_extension} |
1055 |
alternatives \ |
1056 |
--install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \ |
1057 |
--slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdkdir} \ |
1058 |
--slave %{_jvmjardir}/java java_sdk_exports %{_jvmjardir}/%{sdkdir} \ |
1059 |
--slave %{_bindir}/appletviewer appletviewer %{sdkbindir}/appletviewer \ |
1060 |
--slave %{_bindir}/extcheck extcheck %{sdkbindir}/extcheck \ |
1061 |
--slave %{_bindir}/idlj idlj %{sdkbindir}/idlj \ |
1062 |
--slave %{_bindir}/jar jar %{sdkbindir}/jar \ |
1063 |
--slave %{_bindir}/jarsigner jarsigner %{sdkbindir}/jarsigner \ |
1064 |
--slave %{_bindir}/javadoc javadoc %{sdkbindir}/javadoc \ |
1065 |
--slave %{_bindir}/javah javah %{sdkbindir}/javah \ |
1066 |
--slave %{_bindir}/javap javap %{sdkbindir}/javap \ |
1067 |
--slave %{_bindir}/jcmd jcmd %{sdkbindir}/jcmd \ |
1068 |
--slave %{_bindir}/jconsole jconsole %{sdkbindir}/jconsole \ |
1069 |
--slave %{_bindir}/jdb jdb %{sdkbindir}/jdb \ |
1070 |
--slave %{_bindir}/jdeps jdeps %{sdkbindir}/jdeps \ |
1071 |
--slave %{_bindir}/jhat jhat %{sdkbindir}/jhat \ |
1072 |
--slave %{_bindir}/jinfo jinfo %{sdkbindir}/jinfo \ |
1073 |
--slave %{_bindir}/jmap jmap %{sdkbindir}/jmap \ |
1074 |
--slave %{_bindir}/jps jps %{sdkbindir}/jps \ |
1075 |
--slave %{_bindir}/jrunscript jrunscript %{sdkbindir}/jrunscript \ |
1076 |
--slave %{_bindir}/jsadebugd jsadebugd %{sdkbindir}/jsadebugd \ |
1077 |
--slave %{_bindir}/jstack jstack %{sdkbindir}/jstack \ |
1078 |
--slave %{_bindir}/jstat jstat %{sdkbindir}/jstat \ |
1079 |
--slave %{_bindir}/jstatd jstatd %{sdkbindir}/jstatd \ |
1080 |
--slave %{_bindir}/native2ascii native2ascii %{sdkbindir}/native2ascii \ |
1081 |
--slave %{_bindir}/rmic rmic %{sdkbindir}/rmic \ |
1082 |
--slave %{_bindir}/schemagen schemagen %{sdkbindir}/schemagen \ |
1083 |
--slave %{_bindir}/serialver serialver %{sdkbindir}/serialver \ |
1084 |
--slave %{_bindir}/wsgen wsgen %{sdkbindir}/wsgen \ |
1085 |
--slave %{_bindir}/wsimport wsimport %{sdkbindir}/wsimport \ |
1086 |
--slave %{_bindir}/xjc xjc %{sdkbindir}/xjc \ |
1087 |
--slave %{_mandir}/man1/appletviewer.1$ext appletviewer.1$ext \ |
1088 |
%{_mandir}/man1/appletviewer-%{uniquesuffix}.1$ext \ |
1089 |
--slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \ |
1090 |
%{_mandir}/man1/extcheck-%{uniquesuffix}.1$ext \ |
1091 |
--slave %{_mandir}/man1/idlj.1$ext idlj.1$ext \ |
1092 |
%{_mandir}/man1/idlj-%{uniquesuffix}.1$ext \ |
1093 |
--slave %{_mandir}/man1/jar.1$ext jar.1$ext \ |
1094 |
%{_mandir}/man1/jar-%{uniquesuffix}.1$ext \ |
1095 |
--slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \ |
1096 |
%{_mandir}/man1/jarsigner-%{uniquesuffix}.1$ext \ |
1097 |
--slave %{_mandir}/man1/javac.1$ext javac.1$ext \ |
1098 |
%{_mandir}/man1/javac-%{uniquesuffix}.1$ext \ |
1099 |
--slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \ |
1100 |
%{_mandir}/man1/javadoc-%{uniquesuffix}.1$ext \ |
1101 |
--slave %{_mandir}/man1/javah.1$ext javah.1$ext \ |
1102 |
%{_mandir}/man1/javah-%{uniquesuffix}.1$ext \ |
1103 |
--slave %{_mandir}/man1/javap.1$ext javap.1$ext \ |
1104 |
%{_mandir}/man1/javap-%{uniquesuffix}.1$ext \ |
1105 |
--slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \ |
1106 |
%{_mandir}/man1/jcmd-%{uniquesuffix}.1$ext \ |
1107 |
--slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \ |
1108 |
%{_mandir}/man1/jconsole-%{uniquesuffix}.1$ext \ |
1109 |
--slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \ |
1110 |
%{_mandir}/man1/jdb-%{uniquesuffix}.1$ext \ |
1111 |
--slave %{_mandir}/man1/jdeps.1$ext jdeps.1$ext \ |
1112 |
%{_mandir}/man1/jdeps-%{uniquesuffix}.1$ext \ |
1113 |
--slave %{_mandir}/man1/jhat.1$ext jhat.1$ext \ |
1114 |
%{_mandir}/man1/jhat-%{uniquesuffix}.1$ext \ |
1115 |
--slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \ |
1116 |
%{_mandir}/man1/jinfo-%{uniquesuffix}.1$ext \ |
1117 |
--slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \ |
1118 |
%{_mandir}/man1/jmap-%{uniquesuffix}.1$ext \ |
1119 |
--slave %{_mandir}/man1/jps.1$ext jps.1$ext \ |
1120 |
%{_mandir}/man1/jps-%{uniquesuffix}.1$ext \ |
1121 |
--slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \ |
1122 |
%{_mandir}/man1/jrunscript-%{uniquesuffix}.1$ext \ |
1123 |
--slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \ |
1124 |
%{_mandir}/man1/jsadebugd-%{uniquesuffix}.1$ext \ |
1125 |
--slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \ |
1126 |
%{_mandir}/man1/jstack-%{uniquesuffix}.1$ext \ |
1127 |
--slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \ |
1128 |
%{_mandir}/man1/jstat-%{uniquesuffix}.1$ext \ |
1129 |
--slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \ |
1130 |
%{_mandir}/man1/jstatd-%{uniquesuffix}.1$ext \ |
1131 |
--slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \ |
1132 |
%{_mandir}/man1/native2ascii-%{uniquesuffix}.1$ext \ |
1133 |
--slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \ |
1134 |
%{_mandir}/man1/policytool-%{uniquesuffix}.1$ext \ |
1135 |
--slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \ |
1136 |
%{_mandir}/man1/rmic-%{uniquesuffix}.1$ext \ |
1137 |
--slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \ |
1138 |
%{_mandir}/man1/schemagen-%{uniquesuffix}.1$ext \ |
1139 |
--slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \ |
1140 |
%{_mandir}/man1/serialver-%{uniquesuffix}.1$ext \ |
1141 |
--slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \ |
1142 |
%{_mandir}/man1/wsgen-%{uniquesuffix}.1$ext \ |
1143 |
--slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \ |
1144 |
%{_mandir}/man1/wsimport-%{uniquesuffix}.1$ext \ |
1145 |
--slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \ |
1146 |
%{_mandir}/man1/xjc-%{uniquesuffix}.1$ext |
1147 |
|
1148 |
for X in %{origin} %{javaver} ; do |
1149 |
alternatives \ |
1150 |
--install %{_jvmdir}/java-"$X" \ |
1151 |
java_sdk_"$X" %{_jvmdir}/%{sdkdir} %{priority} \ |
1152 |
--slave %{_jvmjardir}/java-"$X" \ |
1153 |
java_sdk_"$X"_exports %{_jvmjardir}/%{sdkdir} |
1154 |
done |
1155 |
|
1156 |
update-alternatives --install %{_jvmdir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir} %{priority} \ |
1157 |
--slave %{_jvmjardir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin}_exports %{_jvmjardir}/%{sdkdir} |
1158 |
|
1159 |
exit 0 |
1160 |
|
1161 |
%postun devel |
1162 |
alternatives --remove javac %{sdkbindir}/javac |
1163 |
alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdkdir} |
1164 |
alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdkdir} |
1165 |
alternatives --remove java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdkdir} |
1166 |
|
1167 |
%post javadoc |
1168 |
alternatives \ |
1169 |
--install %{_javadocdir}/java javadocdir %{_javadocdir}/%{uniquejavadocdir}/api \ |
1170 |
%{priority} |
1171 |
|
1172 |
exit 0 |
1173 |
|
1174 |
%postun javadoc |
1175 |
alternatives --remove javadocdir %{_javadocdir}/%{uniquejavadocdir}/api |
1176 |
|
1177 |
exit 0 |
1178 |
|
1179 |
|
1180 |
%files -f %{name}.files |
1181 |
%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png |
1182 |
%{_datadir}/applications/*policytool.desktop |
1183 |
|
1184 |
# important note, see https://bugzilla.redhat.com/show_bug.cgi?id=1038092 for whole issue |
1185 |
# all config/norepalce files (and more) have to be declared in pretrans. See pretrans |
1186 |
%files headless -f %{name}.files-headless |
1187 |
%defattr(-,root,root,-) |
1188 |
%doc %{buildoutputdir}/images/j2sdk-image/jre/ASSEMBLY_EXCEPTION |
1189 |
%doc %{buildoutputdir}/images/j2sdk-image/jre/LICENSE |
1190 |
%doc %{buildoutputdir}/images/j2sdk-image/jre/THIRD_PARTY_README |
1191 |
%dir %{_jvmdir}/%{sdkdir} |
1192 |
%{_jvmdir}/%{jrelnk} |
1193 |
%{_jvmjardir}/%{jrelnk} |
1194 |
%{_jvmprivdir}/* |
1195 |
%{jvmjardir} |
1196 |
%dir %{_jvmdir}/%{jredir}/lib/security |
1197 |
%{_jvmdir}/%{jredir}/lib/security/cacerts |
1198 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/US_export_policy.jar |
1199 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/local_policy.jar |
1200 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.policy |
1201 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security |
1202 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklisted.certs |
1203 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/logging.properties |
1204 |
%{_mandir}/man1/java-%{uniquesuffix}.1* |
1205 |
%{_mandir}/man1/jjs-%{uniquesuffix}.1* |
1206 |
%{_mandir}/man1/keytool-%{uniquesuffix}.1* |
1207 |
%{_mandir}/man1/orbd-%{uniquesuffix}.1* |
1208 |
%{_mandir}/man1/pack200-%{uniquesuffix}.1* |
1209 |
%{_mandir}/man1/rmid-%{uniquesuffix}.1* |
1210 |
%{_mandir}/man1/rmiregistry-%{uniquesuffix}.1* |
1211 |
%{_mandir}/man1/servertool-%{uniquesuffix}.1* |
1212 |
%{_mandir}/man1/tnameserv-%{uniquesuffix}.1* |
1213 |
%{_mandir}/man1/unpack200-%{uniquesuffix}.1* |
1214 |
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/nss.cfg |
1215 |
%{_jvmdir}/%{jredir}/lib/audio/ |
1216 |
%ifarch %{jit_arches} |
1217 |
%attr(664, root, root) %ghost %{_jvmdir}/%{jredir}/lib/%{archinstall}/server/classes.jsa |
1218 |
%attr(664, root, root) %ghost %{_jvmdir}/%{jredir}/lib/%{archinstall}/client/classes.jsa |
1219 |
%endif |
1220 |
|
1221 |
%{_jvmdir}/%{jredir}/lib/%{archinstall}/server/ |
1222 |
%{_jvmdir}/%{jredir}/lib/%{archinstall}/client/ |
1223 |
|
1224 |
%files devel |
1225 |
%defattr(-,root,root,-) |
1226 |
%doc %{buildoutputdir}/images/j2sdk-image/ASSEMBLY_EXCEPTION |
1227 |
%doc %{buildoutputdir}/images/j2sdk-image/LICENSE |
1228 |
%doc %{buildoutputdir}/images/j2sdk-image/THIRD_PARTY_README |
1229 |
%dir %{_jvmdir}/%{sdkdir}/bin |
1230 |
%dir %{_jvmdir}/%{sdkdir}/include |
1231 |
%dir %{_jvmdir}/%{sdkdir}/lib |
1232 |
%if %{with_systemtap} |
1233 |
%dir %{_jvmdir}/%{sdkdir}/tapset |
1234 |
%endif |
1235 |
%{_jvmdir}/%{sdkdir}/bin/* |
1236 |
%{_jvmdir}/%{sdkdir}/include/* |
1237 |
%{_jvmdir}/%{sdkdir}/lib/* |
1238 |
%if %{with_systemtap} |
1239 |
%{_jvmdir}/%{sdkdir}/tapset/*.stp |
1240 |
%endif |
1241 |
%{_jvmjardir}/%{sdkdir} |
1242 |
%{_datadir}/applications/*jconsole.desktop |
1243 |
%{_mandir}/man1/appletviewer-%{uniquesuffix}.1* |
1244 |
%{_mandir}/man1/extcheck-%{uniquesuffix}.1* |
1245 |
%{_mandir}/man1/idlj-%{uniquesuffix}.1* |
1246 |
%{_mandir}/man1/jar-%{uniquesuffix}.1* |
1247 |
%{_mandir}/man1/jarsigner-%{uniquesuffix}.1* |
1248 |
%{_mandir}/man1/javac-%{uniquesuffix}.1* |
1249 |
%{_mandir}/man1/javadoc-%{uniquesuffix}.1* |
1250 |
%{_mandir}/man1/javah-%{uniquesuffix}.1* |
1251 |
%{_mandir}/man1/javap-%{uniquesuffix}.1* |
1252 |
%{_mandir}/man1/jconsole-%{uniquesuffix}.1* |
1253 |
%{_mandir}/man1/jcmd-%{uniquesuffix}.1* |
1254 |
%{_mandir}/man1/jdb-%{uniquesuffix}.1* |
1255 |
%{_mandir}/man1/jdeps-%{uniquesuffix}.1* |
1256 |
%{_mandir}/man1/jhat-%{uniquesuffix}.1* |
1257 |
%{_mandir}/man1/jinfo-%{uniquesuffix}.1* |
1258 |
%{_mandir}/man1/jmap-%{uniquesuffix}.1* |
1259 |
%{_mandir}/man1/jps-%{uniquesuffix}.1* |
1260 |
%{_mandir}/man1/jrunscript-%{uniquesuffix}.1* |
1261 |
%{_mandir}/man1/jsadebugd-%{uniquesuffix}.1* |
1262 |
%{_mandir}/man1/jstack-%{uniquesuffix}.1* |
1263 |
%{_mandir}/man1/jstat-%{uniquesuffix}.1* |
1264 |
%{_mandir}/man1/jstatd-%{uniquesuffix}.1* |
1265 |
%{_mandir}/man1/native2ascii-%{uniquesuffix}.1* |
1266 |
%{_mandir}/man1/policytool-%{uniquesuffix}.1* |
1267 |
%{_mandir}/man1/rmic-%{uniquesuffix}.1* |
1268 |
%{_mandir}/man1/schemagen-%{uniquesuffix}.1* |
1269 |
%{_mandir}/man1/serialver-%{uniquesuffix}.1* |
1270 |
%{_mandir}/man1/wsgen-%{uniquesuffix}.1* |
1271 |
%{_mandir}/man1/wsimport-%{uniquesuffix}.1* |
1272 |
%{_mandir}/man1/xjc-%{uniquesuffix}.1* |
1273 |
%if %{with_systemtap} |
1274 |
%{tapsetroot} |
1275 |
%endif |
1276 |
|
1277 |
%files demo -f %{name}-demo.files |
1278 |
%defattr(-,root,root,-) |
1279 |
%doc %{buildoutputdir}/images/j2sdk-image/jre/LICENSE |
1280 |
|
1281 |
%files src |
1282 |
%defattr(-,root,root,-) |
1283 |
%doc README.src |
1284 |
%{_jvmdir}/%{sdkdir}/src.zip |
1285 |
|
1286 |
%files javadoc |
1287 |
%defattr(-,root,root,-) |
1288 |
%doc %{_javadocdir}/%{uniquejavadocdir} |
1289 |
%doc %{buildoutputdir}/images/j2sdk-image/jre/LICENSE |
1290 |
|
1291 |
%files accessibility |
1292 |
%{_jvmdir}/%{jredir}/lib/%{archinstall}/libatk-wrapper.so |
1293 |
%{_jvmdir}/%{jredir}/lib/ext/java-atk-wrapper.jar |
1294 |
%{_jvmdir}/%{jredir}/lib/accessibility.properties |
1295 |
|