diff --git a/.gitignore b/.gitignore index e69de29..d942194 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,4 @@ +/class-rewriter.tar.gz +/desktop-files.tar.gz +/jdk8-b79.tar.gz +/systemtap-tapset.tar.gz diff --git a/README.src b/README.src new file mode 100644 index 0000000..b5f06d1 --- /dev/null +++ b/README.src @@ -0,0 +1,2 @@ +The java-1.8.0-openjdk-src subpackage contains the complete OpenJDK 8 +class library source code for use by IDE indexers and debuggers. diff --git a/TestCryptoLevel.java b/TestCryptoLevel.java new file mode 100644 index 0000000..b32b7ae --- /dev/null +++ b/TestCryptoLevel.java @@ -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 . +*/ + +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); + } + } +} diff --git a/disable-werror.patch b/disable-werror.patch new file mode 100644 index 0000000..175c4b4 --- /dev/null +++ b/disable-werror.patch @@ -0,0 +1,15 @@ +diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk +--- jdk8/jdk/makefiles/CompileNativeLibraries.gmk ++++ jdk8/jdk/makefiles/CompileNativeLibraries.gmk +@@ -1980,10 +1980,7 @@ + + ifneq ($(OPENJDK_TARGET_OS),macosx) + +- SCTP_WERROR := -Werror +- ifeq ($(OPENJDK_TARGET_CPU_ARCH), ppc) +- SCTP_WERROR := +- endif ++ SCTP_WERROR := + + $(eval $(call SetupNativeCompilation,BUILD_LIBSCTP,\ + LIBRARY:=sctp,\ diff --git a/dont-use-gstabs.patch b/dont-use-gstabs.patch new file mode 100644 index 0000000..922c76e --- /dev/null +++ b/dont-use-gstabs.patch @@ -0,0 +1,27 @@ +diff --git jdk8/hotspot/make/linux/makefiles/gcc.make jdk8/hotspot/make/linux/makefiles/gcc.make +--- jdk8/hotspot/make/linux/makefiles/gcc.make ++++ jdk8/hotspot/make/linux/makefiles/gcc.make +@@ -234,6 +234,7 @@ + # (warning: that could easily inflate libjvm.so to 150M!) + # Note: The Itanium gcc compiler crashes when using -gstabs. + DEBUG_CFLAGS/ia64 = -g ++ DEBUG_CFLAGS/i486 = -g + DEBUG_CFLAGS/amd64 = -g + DEBUG_CFLAGS/arm = -g + DEBUG_CFLAGS/ppc = -g +@@ -244,6 +245,7 @@ + + ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1) + FASTDEBUG_CFLAGS/ia64 = -g ++ FASTDEBUG_CFLAGS/i486 = -g + FASTDEBUG_CFLAGS/amd64 = -g + FASTDEBUG_CFLAGS/arm = -g + FASTDEBUG_CFLAGS/ppc = -g +@@ -253,6 +255,7 @@ + endif + + OPT_CFLAGS/ia64 = -g ++ OPT_CFLAGS/i486 = -g + OPT_CFLAGS/amd64 = -g + OPT_CFLAGS/arm = -g + OPT_CFLAGS/ppc = -g diff --git a/generate_source_tarball.sh b/generate_source_tarball.sh new file mode 100755 index 0000000..1463e97 --- /dev/null +++ b/generate_source_tarball.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +VERSION=$1 +REV=$2 +JDK8_URL=http://hg.openjdk.java.net/jdk8/jdk8 + +if test "x${VERSION}" = "x"; then + echo "No version specified. A version is of the form 'jdk8-bXX' (such as 'jdk8-b79')" + exit -1; +fi + +wget -O root.tar.gz ${JDK8_URL}/archive/${VERSION}.tar.gz +tar xzf root.tar.gz +rm -f root.tar.gz +mv jdk8-${VERSION} jdk8 +rm -f jdk8/.hg* +pushd jdk8 + +for repos in corba jaxp jaxws langtools hotspot jdk +do + wget -O $repos.tar.gz ${JDK8_URL}/${repos}/archive/${VERSION}.tar.gz + tar xzf $repos.tar.gz + rm -f $repos.tar.gz + mv $repos-${VERSION} $repos + rm -f $repos/.hg* +done + +rm -rvf jdk/src/share//native/sun/security/ec/impl + +popd +tar czf ${VERSION}.tar.gz jdk8 diff --git a/generate_tarballs.sh b/generate_tarballs.sh new file mode 100755 index 0000000..819e70c --- /dev/null +++ b/generate_tarballs.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +VERSION=3506c375241e +ICEDTEA_URL=http://icedtea.classpath.org/hg/icedtea7/ + +wget -O icedtea7.tar.gz ${ICEDTEA_URL}/archive/${VERSION}.tar.gz +tar xzf icedtea7.tar.gz +rm -f icedtea7.tar.gz +pushd icedtea7-${VERSION} + +# rewriter +tar cvzf class-rewriter.tar.gz rewriter +mv class-rewriter.tar.gz ../ + +# desktop files +tar cvzf desktop-files.tar.gz jconsole.desktop policytool.desktop +mv desktop-files.tar.gz ../ + +# tapsets +mv tapset/hotspot{,-1.8.0}.stp.in || exit 1 +mv tapset/hotspot_gc{,-1.8.0}.stp.in || exit 1 +mv tapset/hotspot_jni{,-1.8.0}.stp.in || exit 1 +mv tapset/jstack{,-1.8.0}.stp.in || exit 1 +tar cvzf systemtap-tapset.tar.gz tapset +mv systemtap-tapset.tar.gz ../ + +popd +rm -rf icedtea7-${VERSION} diff --git a/java-1.8.0-openjdk-accessible-toolkit.patch b/java-1.8.0-openjdk-accessible-toolkit.patch new file mode 100644 index 0000000..c177305 --- /dev/null +++ b/java-1.8.0-openjdk-accessible-toolkit.patch @@ -0,0 +1,16 @@ +diff -uNr openjdk-orig/jdk/src/share/classes/java/awt/Toolkit.java jdk8/jdk/src/share/classes/java/awt/Toolkit.java +--- openjdk-orig/jdk/src/share/classes/java/awt/Toolkit.java 2009-01-23 11:59:47.000000000 -0500 ++++ jdk8/jdk/src/share/classes/java/awt/Toolkit.java 2009-01-23 12:05:20.000000000 -0500 +@@ -871,7 +871,11 @@ + return null; + } + }); +- loadAssistiveTechnologies(); ++ try { ++ loadAssistiveTechnologies(); ++ } catch ( AWTError error) { ++ // ignore silently ++ } + } finally { + // Make sure to always re-enable the JIT. + java.lang.Compiler.enable(); diff --git a/java-1.8.0-openjdk-arm-fixes.patch b/java-1.8.0-openjdk-arm-fixes.patch new file mode 100644 index 0000000..de6cc2f --- /dev/null +++ b/java-1.8.0-openjdk-arm-fixes.patch @@ -0,0 +1,22 @@ +diff -up jdk8/jdk/make/jdk_generic_profile.sh.sav openjdk/jdk/make/jdk_generic_profile.sh +--- jdk8/jdk/make/jdk_generic_profile.sh.sav 2012-02-14 16:12:48.000000000 -0500 ++++ jdk8/jdk/make/jdk_generic_profile.sh 2012-03-07 17:31:26.154840740 -0500 +@@ -280,7 +280,7 @@ if [ "${ZERO_BUILD}" = true ] ; then + + # ZERO_ENDIANNESS is the endianness of the processor + case "${ZERO_LIBARCH}" in +- i386|amd64|ia64) ++ i386|amd64|ia64|arm) + ZERO_ENDIANNESS=little + ;; + ppc*|s390*|sparc*|alpha) +@@ -307,6 +307,9 @@ if [ "${ZERO_BUILD}" = true ] ; then + s390) + ZERO_ARCHFLAG="-m31" + ;; ++ arm) ++ ZERO_ARCHFLAG="-D_LITTLE_ENDIAN" ++ ;; + *) + ZERO_ARCHFLAG="-m${ARCH_DATA_MODEL}" + esac diff --git a/java-1.8.0-openjdk-bitmap.patch b/java-1.8.0-openjdk-bitmap.patch new file mode 100644 index 0000000..1b8cc6f --- /dev/null +++ b/java-1.8.0-openjdk-bitmap.patch @@ -0,0 +1,47 @@ +diff -up jdk8/hotspot/src/share/vm/utilities/bitMap.inline.hpp.s390 openjdk/hotspot/src/share/vm/utilities/bitMap.inline.hpp +--- jdk8/hotspot/src/share/vm/utilities/bitMap.inline.hpp.s390 2012-02-10 08:30:46.378435291 -0500 ++++ jdk8/hotspot/src/share/vm/utilities/bitMap.inline.hpp 2012-02-10 08:47:27.478427892 -0500 +@@ -52,16 +52,16 @@ inline void BitMap::clear_bit(idx_t bit) + + inline bool BitMap::par_set_bit(idx_t bit) { + verify_index(bit); +- volatile idx_t* const addr = word_addr(bit); +- const idx_t mask = bit_mask(bit); +- idx_t old_val = *addr; ++ volatile bm_word_t* const addr = word_addr(bit); ++ const bm_word_t mask = bit_mask(bit); ++ bm_word_t old_val = *addr; + + do { +- const idx_t new_val = old_val | mask; ++ const bm_word_t new_val = old_val | mask; + if (new_val == old_val) { + return false; // Someone else beat us to it. + } +- const idx_t cur_val = (idx_t) Atomic::cmpxchg_ptr((void*) new_val, ++ const bm_word_t cur_val = (bm_word_t) Atomic::cmpxchg_ptr((void*) new_val, + (volatile void*) addr, + (void*) old_val); + if (cur_val == old_val) { +@@ -73,16 +73,16 @@ inline bool BitMap::par_set_bit(idx_t bi + + inline bool BitMap::par_clear_bit(idx_t bit) { + verify_index(bit); +- volatile idx_t* const addr = word_addr(bit); +- const idx_t mask = ~bit_mask(bit); +- idx_t old_val = *addr; ++ volatile bm_word_t* const addr = word_addr(bit); ++ const bm_word_t mask = ~bit_mask(bit); ++ bm_word_t old_val = *addr; + + do { +- const idx_t new_val = old_val & mask; ++ const bm_word_t new_val = old_val & mask; + if (new_val == old_val) { + return false; // Someone else beat us to it. + } +- const idx_t cur_val = (idx_t) Atomic::cmpxchg_ptr((void*) new_val, ++ const bm_word_t cur_val = (bm_word_t) Atomic::cmpxchg_ptr((void*) new_val, + (volatile void*) addr, + (void*) old_val); + if (cur_val == old_val) { diff --git a/java-1.8.0-openjdk-freetype-check-fix.patch b/java-1.8.0-openjdk-freetype-check-fix.patch new file mode 100644 index 0000000..a671cce --- /dev/null +++ b/java-1.8.0-openjdk-freetype-check-fix.patch @@ -0,0 +1,22 @@ +diff -up jdk8/jdk/make/common/shared/Sanity.gmk.sav openjdk/jdk/make/common/shared/Sanity.gmk +--- jdk8/jdk/make/common/shared/Sanity.gmk.sav 2012-02-14 16:12:48.000000000 -0500 ++++ jdk8/jdk/make/common/shared/Sanity.gmk 2012-03-07 17:31:26.153840755 -0500 +@@ -814,12 +814,12 @@ ifdef OPENJDK + @(($(CD) $(BUILDDIR)/tools/freetypecheck && $(MAKE)) || \ + $(ECHO) "Failed to build freetypecheck." ) > $@ + +- sane-freetype: $(TEMPDIR)/freetypeinfo +- @if [ "`$(CAT) $< | $(GREP) Fail`" != "" ]; then \ +- $(ECHO) "ERROR: FreeType version " $(REQUIRED_FREETYPE_VERSION) \ +- " or higher is required. \n" \ +- "`$(CAT) $<` \n" >> $(ERROR_FILE) ; \ +- fi ++# sane-freetype: $(TEMPDIR)/freetypeinfo ++# @if [ "`$(CAT) $< | $(GREP) Fail`" != "" ]; then \ ++# $(ECHO) "ERROR: FreeType version " $(REQUIRED_FREETYPE_VERSION) \ ++# " or higher is required. \n" \ ++# "`$(CAT) $<` \n" >> $(ERROR_FILE) ; \ ++# fi + else + #do nothing (cross-compiling) + sane-freetype: diff --git a/java-1.8.0-openjdk-ppc-zero-corba.patch b/java-1.8.0-openjdk-ppc-zero-corba.patch new file mode 100644 index 0000000..c5b68c8 --- /dev/null +++ b/java-1.8.0-openjdk-ppc-zero-corba.patch @@ -0,0 +1,15 @@ +diff -up jdk8/corba/make/common/shared/Defs-java.gmk.ppc openjdk/corba/make/common/shared/Defs-java.gmk +--- jdk8/corba/make/common/shared/Defs-java.gmk.ppc 2012-03-24 11:44:34.450072733 +0100 ++++ jdk8/corba/make/common/shared/Defs-java.gmk 2012-03-24 11:44:53.300073137 +0100 +@@ -79,9 +79,9 @@ JAVAC_JVM_FLAGS = + + # 64-bit builds require a larger thread stack size. + ifeq ($(ARCH_DATA_MODEL), 32) +- JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=768 ++ JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1152 + else +- JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1536 ++ JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1664 + endif + JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%) + diff --git a/java-1.8.0-openjdk-ppc-zero-hotspot.patch b/java-1.8.0-openjdk-ppc-zero-hotspot.patch new file mode 100644 index 0000000..03b8aa1 --- /dev/null +++ b/java-1.8.0-openjdk-ppc-zero-hotspot.patch @@ -0,0 +1,17 @@ +--- jdk8/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp 2012-03-23 10:57:01.000000000 -0400 ++++ jdk8/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp 2012-03-23 10:57:00.000000000 -0400 +@@ -32,11 +32,11 @@ + // + + define_pd_global(bool, DontYieldALot, false); +-define_pd_global(intx, ThreadStackSize, 1536); ++define_pd_global(intx, ThreadStackSize, 1664); + #ifdef _LP64 +-define_pd_global(intx, VMThreadStackSize, 1024); ++define_pd_global(intx, VMThreadStackSize, 1664); + #else +-define_pd_global(intx, VMThreadStackSize, 512); ++define_pd_global(intx, VMThreadStackSize, 1152); + #endif // _LP64 + define_pd_global(intx, SurvivorRatio, 8); + define_pd_global(intx, CompilerThreadStackSize, 0); diff --git a/java-1.8.0-openjdk-ppc-zero-jdk.patch b/java-1.8.0-openjdk-ppc-zero-jdk.patch new file mode 100644 index 0000000..82026a9 --- /dev/null +++ b/java-1.8.0-openjdk-ppc-zero-jdk.patch @@ -0,0 +1,14 @@ +--- jdk8/jdk/make/common/shared/Defs-java.gmk 2012-03-23 10:56:45.000000000 -0400 ++++ jdk8/jdk/make/common/shared/Defs-java.gmk 2012-03-23 10:56:45.000000000 -0400 +@@ -83,9 +83,9 @@ + + # 64-bit builds require a larger thread stack size. + ifeq ($(ARCH_DATA_MODEL), 32) +- JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=768 ++ JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1152 + else +- JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1536 ++ JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1664 + endif + JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%) + diff --git a/java-1.8.0-openjdk-size_t.patch b/java-1.8.0-openjdk-size_t.patch new file mode 100644 index 0000000..38ab45f --- /dev/null +++ b/java-1.8.0-openjdk-size_t.patch @@ -0,0 +1,179 @@ +diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp +--- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ++++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp +@@ -2677,7 +2677,7 @@ + if (ResizeOldPLAB && CMSOldPLABResizeQuicker) { + size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks); + n_blks += CMSOldPLABReactivityFactor*multiple*n_blks; +- n_blks = MIN2(n_blks, CMSOldPLABMax); ++ n_blks = MIN2(n_blks, (size_t)CMSOldPLABMax); + } + assert(n_blks > 0, "Error"); + _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl); +diff --git a/src/share/vm/gc_implementation/g1/concurrentMark.cpp b/src/share/vm/gc_implementation/g1/concurrentMark.cpp +--- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp ++++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp +@@ -3538,7 +3538,7 @@ + // of things to do) or totally (at the very end). + size_t target_size; + if (partially) { +- target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize); ++ target_size = MIN2((size_t)(_task_queue->max_elems()/3), (size_t) GCDrainStackTargetSize); + } else { + target_size = 0; + } +@@ -4318,7 +4318,7 @@ + // The > 0 check is to deal with the prev and next live bytes which + // could be 0. + if (*hum_bytes > 0) { +- bytes = MIN2(HeapRegion::GrainBytes, *hum_bytes); ++ bytes = MIN2(HeapRegion::GrainBytes, (size_t)*hum_bytes); + *hum_bytes -= bytes; + } + return bytes; +diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +--- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ++++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +@@ -1700,7 +1700,7 @@ + + verify_region_sets_optional(); + +- size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes); ++ size_t expand_bytes = MAX2(word_size * HeapWordSize, (size_t)MinHeapDeltaBytes); + ergo_verbose1(ErgoHeapSizing, + "attempt heap expansion", + ergo_format_reason("allocation request failed") +diff --git a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp +--- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp ++++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp +@@ -840,7 +840,7 @@ + // This can be done by either mutator threads together with the + // concurrent refinement threads or GC threads. + int HeapRegionRemSet::num_par_rem_sets() { +- return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads); ++ return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads); + } + + HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa, +diff --git a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp +--- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ++++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp +@@ -188,7 +188,7 @@ + const size_t num_overflow_elems = of_stack->size(); + const size_t space_available = queue->max_elems() - queue->size(); + const size_t num_take_elems = MIN3(space_available / 4, +- ParGCDesiredObjsFromOverflowList, ++ (size_t)ParGCDesiredObjsFromOverflowList, + num_overflow_elems); + // Transfer the most recent num_take_elems from the overflow + // stack to our work queue. +diff --git a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp +--- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp ++++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp +@@ -69,7 +69,7 @@ + if (_virtual_space != NULL && _virtual_space->expand_by(bytes)) { + _region_start = covered_region.start(); + _region_size = covered_region.word_size(); +- idx_t* map = (idx_t*)_virtual_space->reserved_low_addr(); ++ BitMap::bm_word_t* map = (BitMap::bm_word_t*)_virtual_space->reserved_low_addr(); + _beg_bits.set_map(map); + _beg_bits.set_size(bits / 2); + _end_bits.set_map(map + words / 2); +diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp +--- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp ++++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp +@@ -357,7 +357,7 @@ + // generally small compared to the NewRatio calculation. + _min_gen0_size = NewSize; + desired_new_size = NewSize; +- max_new_size = MAX2(max_new_size, NewSize); ++ max_new_size = MAX2(max_new_size, (size_t)NewSize); + } else { + // For the case where NewSize is the default, use NewRatio + // to size the minimum and initial generation sizes. +@@ -365,10 +365,10 @@ + // NewRatio is overly large, the resulting sizes can be too + // small. + _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()), +- NewSize); ++ (size_t)NewSize); + desired_new_size = + MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()), +- NewSize); ++ (size_t)NewSize); + } + + assert(_min_gen0_size > 0, "Sanity check"); +@@ -423,14 +423,14 @@ + // Adjust gen0 down to accomodate OldSize + *gen0_size_ptr = heap_size - min_gen0_size; + *gen0_size_ptr = +- MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()), ++ MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()), + min_alignment()); + assert(*gen0_size_ptr > 0, "Min gen0 is too large"); + result = true; + } else { + *gen1_size_ptr = heap_size - *gen0_size_ptr; + *gen1_size_ptr = +- MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()), ++ MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()), + min_alignment()); + } + } +@@ -454,7 +454,7 @@ + // for setting the gen1 maximum. + _max_gen1_size = max_heap_byte_size() - _max_gen0_size; + _max_gen1_size = +- MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()), ++ MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()), + min_alignment()); + // If no explicit command line flag has been set for the + // gen1 size, use what is left for gen1. +@@ -468,11 +468,11 @@ + "gen0 has an unexpected minimum size"); + set_min_gen1_size(min_heap_byte_size() - min_gen0_size()); + set_min_gen1_size( +- MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()), ++ MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()), + min_alignment())); + set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size()); + set_initial_gen1_size( +- MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()), ++ MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()), + min_alignment())); + + } else { +diff --git a/src/share/vm/oops/objArrayKlass.inline.hpp b/src/share/vm/oops/objArrayKlass.inline.hpp +--- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp ++++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp +@@ -46,7 +46,7 @@ + const size_t beg_index = size_t(index); + assert(beg_index < len || len == 0, "index too large"); + +- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); ++ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); + const size_t end_index = beg_index + stride; + T* const base = (T*)a->base(); + T* const beg = base + beg_index; +@@ -80,7 +80,7 @@ + const size_t beg_index = size_t(index); + assert(beg_index < len || len == 0, "index too large"); + +- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride); ++ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride); + const size_t end_index = beg_index + stride; + T* const base = (T*)a->base(); + T* const beg = base + beg_index; +diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp +--- jdk8/hotspot/src/share/vm/runtime/arguments.cpp ++++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp +@@ -1209,7 +1209,7 @@ + // so it's NewRatio x of NewSize. + if (FLAG_IS_DEFAULT(OldSize)) { + if (max_heap > NewSize) { +- FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, max_heap - NewSize)); ++ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t)(NewRatio*NewSize), max_heap - NewSize)); + if (PrintGCDetails && Verbose) { + // Too early to use gclog_or_tty + tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize); diff --git a/java-1.8.0-openjdk.spec b/java-1.8.0-openjdk.spec new file mode 100644 index 0000000..f56e9dd --- /dev/null +++ b/java-1.8.0-openjdk.spec @@ -0,0 +1,969 @@ +# If debug is 1, OpenJDK is built with all debug info present. +%global debug 0 + +%global jdk8_version b79 +%global hg_tag jdk8-%{jdk8_version} + +%global multilib_arches ppc64 sparc64 x86_64 + +%global jit_arches %{ix86} x86_64 sparcv9 sparc64 + +%ifarch x86_64 +%global archbuild amd64 +%global archinstall amd64 +%endif +%ifarch ppc +%global archbuild ppc +%global archinstall ppc +%global archdef PPC +%endif +%ifarch ppc64 +%global archbuild ppc64 +%global archinstall ppc64 +%global archdef PPC +%endif +%ifarch %{ix86} +%global archbuild i586 +%global archinstall i386 +%endif +%ifarch ia64 +%global archbuild ia64 +%global archinstall ia64 +%endif +%ifarch s390 +%global archbuild s390 +%global archinstall s390 +%global archdef S390 +%endif +%ifarch s390x +%global archbuild s390x +%global archinstall s390x +%global archdef S390 +%endif +%ifarch %{arm} +%global archbuild arm +%global archinstall arm +%global archdef ARM +%endif +# 32 bit sparc, optimized for v9 +%ifarch sparcv9 +%global archbuild sparc +%global archinstall sparc +%endif +# 64 bit sparc +%ifarch sparc64 +%global archbuild sparcv9 +%global archinstall sparcv9 +%endif +%ifnarch %{jit_arches} +%global archbuild %{_arch} +%global archinstall %{_arch} +%endif + +%if %{debug} +%global debugbuild slowdebug +%else +%global debugbuild release +%endif + +%global buildoutputdir jdk8/build/jdk8.build + +%ifarch %{jit_arches} +%global with_systemtap 1 +%else +%global with_systemtap 0 +%endif + +# Convert an absolute path to a relative path. Each symbolic link is +# specified relative to the directory in which it is installed so that +# it will resolve properly within chrooted installations. +%global script 'use File::Spec; print File::Spec->abs2rel($ARGV[0], $ARGV[1])' +%global abs2rel %{__perl} -e %{script} + +# Hard-code libdir on 64-bit architectures to make the 64-bit JDK +# simply be another alternative. +%ifarch %{multilib_arches} +%global syslibdir %{_prefix}/lib64 +%global _libdir %{_prefix}/lib +%global archname %{name}.%{_arch} +%else +%global syslibdir %{_libdir} +%global archname %{name} +%endif + +# Standard JPackage naming and versioning defines. +%global origin openjdk +%global buildver 0 +# Keep priority on 5digits in case buildver>9 +%global priority 1800%{buildver} +%global javaver 1.8.0 + +# Standard JPackage directories and symbolic links. +# Make 64-bit JDKs just another alternative on 64-bit architectures. +%ifarch %{multilib_arches} +%global sdklnk java-%{javaver}-%{origin}.%{_arch} +%global jrelnk jre-%{javaver}-%{origin}.%{_arch} +%global sdkdir %{name}-%{version}.%{_arch} +%else +%global sdklnk java-%{javaver}-%{origin} +%global jrelnk jre-%{javaver}-%{origin} +%global sdkdir %{name}-%{version} +%endif +%global jredir %{sdkdir}/jre +%global sdkbindir %{_jvmdir}/%{sdklnk}/bin +%global jrebindir %{_jvmdir}/%{jrelnk}/bin +%ifarch %{multilib_arches} +%global jvmjardir %{_jvmjardir}/%{name}-%{version}.%{_arch} +%else +%global jvmjardir %{_jvmjardir}/%{name}-%{version} +%endif + +%ifarch %{jit_arches} +# Where to install systemtap tapset (links) +# We would like these to be in a package specific subdir, +# but currently systemtap doesn't support that, so we have to +# use the root tapset dir for now. To distinquish between 64 +# and 32 bit architectures we place the tapsets under the arch +# specific dir (note that systemtap will only pickup the tapset +# for the primary arch for now). Systemtap uses the machine name +# aka build_cpu as architecture specific directory name. +%global tapsetroot /usr/share/systemtap +%global tapsetdir %{tapsetroot}/tapset/%{_build_cpu} +%endif + +# Prevent brp-java-repack-jars from being run. +%global __jar_repack 0 + +Name: java-%{javaver}-%{origin} +Version: %{javaver}.%{buildver} +Release: 0.1.%{jdk8_version}%{?dist} +# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons, +# and this change was brought into RHEL-4. java-1.5.0-ibm packages +# also included the epoch in their virtual provides. This created a +# situation where in-the-wild java-1.5.0-ibm packages provided "java = +# 1:1.5.0". In RPM terms, "1.6.0 < 1:1.5.0" since 1.6.0 is +# interpreted as 0:1.6.0. So the "java >= 1.6.0" requirement would be +# satisfied by the 1:1.5.0 packages. Thus we need to set the epoch in +# JDK package >= 1.6.0 to 1, and packages referring to JDK virtual +# provides >= 1.6.0 must specify the epoch, "java >= 1:1.6.0". +Epoch: 1 +Summary: OpenJDK Runtime Environment +Group: Development/Languages + +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 +URL: http://openjdk.java.net/ + +# Source from upstrem OpenJDK8 project. Use +# './generate_source_tarball.sh %{hg_tag}' to generate. The script merges +# multiple tarballs into one and removes code not allowed in Fedora. +Source0: jdk8-%{jdk8_version}.tar.gz + +# Custom README for -src subpackage +Source2: README.src + +# Use 'generate_tarballs.sh' to generate the following tarballs +# They are based on code contained in the IcedTea7 project. + +# Class rewrite to rewrite rhino hierarchy +Source7: class-rewriter.tar.gz +# Systemtap tapsets. Zipped up to keep it small. +Source8: systemtap-tapset.tar.gz +# .desktop files. Zipped up to keep it small. +Source9: desktop-files.tar.gz + +# nss configuration file +Source10: nss.cfg + +# Removed libraries that we link instead +Source12: remove-intree-libraries.sh + +# Ensure we aren't using the limited crypto policy +Source13: TestCryptoLevel.java + +# RPM/distribution specific patches + +# Ignore AWTError when assistive technologies are loaded +Patch4: %{name}-accessible-toolkit.patch + +# +# OpenJDK specific patches +# + +# Add rhino support +Patch100: rhino.patch + +# Type fixing for s390 +Patch101: %{name}-bitmap.patch +Patch102: %{name}-size_t.patch + +# Patches for Arm +Patch103: %{name}-arm-fixes.patch + +# Patch for PPC/PPC64 +Patch104: %{name}-ppc-zero-jdk.patch +Patch105: %{name}-ppc-zero-hotspot.patch +Patch106: %{name}-ppc-zero-corba.patch + +Patch107: %{name}-freetype-check-fix.patch +Patch108: dont-use-gstabs.patch +Patch109: disable-werror.patch + +Patch200: system-giflib.patch +Patch201: system-libjpeg.patch +Patch202: system-libpng.patch +Patch203: system-lcms.patch + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: alsa-lib-devel +BuildRequires: cups-devel +BuildRequires: desktop-file-utils +BuildRequires: fontconfig +BuildRequires: freetype-devel +BuildRequires: giflib-devel +BuildRequires: gtk2-devel +BuildRequires: lcms2-devel +BuildRequires: libjpeg-devel +BuildRequires: libpng-devel +BuildRequires: libxslt +BuildRequires: libX11-devel +BuildRequires: libXi-devel +BuildRequires: libXinerama-devel +BuildRequires: libXt-devel +BuildRequires: libXtst-devel +BuildRequires: pkgconfig +BuildRequires: wget +BuildRequires: xorg-x11-proto-devel +BuildRequires: rhino +#BuildRequires: redhat-lsb +BuildRequires: zip +# OpenJDK X officially requires OpenJDK (X-1) to build +BuildRequires: java-1.7.0-openjdk-devel +# Zero-assembler build requirement. +%ifnarch %{jit_arches} +BuildRequires: libffi-devel +%endif + +# cacerts build requirement. +BuildRequires: openssl +# execstack build requirement. +# no prelink on ARM yet +%ifnarch %{arm} +BuildRequires: prelink +%endif +%ifarch %{jit_arches} +#systemtap build requirement. +BuildRequires: systemtap-sdt-devel +%endif + +Requires: rhino +# Require /etc/pki/java/cacerts. +Requires: ca-certificates +# Require jpackage-utils for ownership of /usr/lib/jvm/ +Requires: jpackage-utils +# Require zoneinfo data provided by tzdata-java subpackage. +Requires: tzdata-java +# Post requires alternatives to install tool alternatives. +Requires(post): %{_sbindir}/alternatives +# Postun requires alternatives to uninstall tool alternatives. +Requires(postun): %{_sbindir}/alternatives + +# Standard JPackage base provides. +Provides: jre8-%{javaver}-%{origin} = %{epoch}:%{version}-%{release} +Provides: jre8-%{origin} = %{epoch}:%{version}-%{release} +Provides: jre8-%{javaver} = %{epoch}:%{version}-%{release} +Provides: java8-%{javaver} = %{epoch}:%{version}-%{release} +Provides: jre8 = %{javaver} +Provides: java8-%{origin} = %{epoch}:%{version}-%{release} +Provides: java8 = %{epoch}:%{javaver} +# Standard JPackage extensions provides. +Provides: jndi8 = %{epoch}:%{version} +Provides: jndi8-ldap = %{epoch}:%{version} +Provides: jndi8-cos = %{epoch}:%{version} +Provides: jndi8-rmi = %{epoch}:%{version} +Provides: jndi8-dns = %{epoch}:%{version} +Provides: jaas8 = %{epoch}:%{version} +Provides: jsse8 = %{epoch}:%{version} +Provides: jce8 = %{epoch}:%{version} +Provides: jdbc8-stdext = 4.1 +Provides: java8-sasl = %{epoch}:%{version} +Provides: java8-fonts = %{epoch}:%{version} + +%description +The OpenJDK runtime environment. + +%package devel +Summary: OpenJDK Development Environment +Group: Development/Tools + +# Require base package. +Requires: %{name} = %{epoch}:%{version}-%{release} +# Post requires alternatives to install tool alternatives. +Requires(post): %{_sbindir}/alternatives +# Postun requires alternatives to uninstall tool alternatives. +Requires(postun): %{_sbindir}/alternatives + +# Standard JPackage devel provides. +Provides: java8-sdk-%{javaver}-%{origin} = %{epoch}:%{version} +Provides: java8-sdk-%{javaver} = %{epoch}:%{version} +Provides: java8-sdk-%{origin} = %{epoch}:%{version} +Provides: java8-sdk = %{epoch}:%{javaver} +Provides: java8-%{javaver}-devel = %{epoch}:%{version} +Provides: java8-devel-%{origin} = %{epoch}:%{version} +Provides: java8-devel = %{epoch}:%{javaver} + + +%description devel +The OpenJDK development tools. + +%package demo +Summary: OpenJDK Demos +Group: Development/Languages + +Requires: %{name} = %{epoch}:%{version}-%{release} + +%description demo +The OpenJDK demos. + +%package src +Summary: OpenJDK Source Bundle +Group: Development/Languages + +Requires: %{name} = %{epoch}:%{version}-%{release} + +%description src +The OpenJDK source bundle. + +%package javadoc +Summary: OpenJDK API Documentation +Group: Documentation +Requires: jpackage-utils +BuildArch: noarch + +# Post requires alternatives to install javadoc alternative. +Requires(post): %{_sbindir}/alternatives +# Postun requires alternatives to uninstall javadoc alternative. +Requires(postun): %{_sbindir}/alternatives + +# Standard JPackage javadoc provides. +Provides: java8-javadoc = %{epoch}:%{version}-%{release} +Provides: java8-%{javaver}-javadoc = %{epoch}:%{version}-%{release} + +%description javadoc +The OpenJDK API documentation. + +%prep + +%setup -q -c -n %{name} -T -a 0 +cp %{SOURCE2} . + +# OpenJDK patches +%patch108 +%patch109 + +# Rhino patch +%patch100 + +# Remove libraries that are linked +# disabled until 8 has all system library fixes upstream +sh %{SOURCE12} + +%patch200 +%patch201 +%patch202 +%patch203 + +%patch4 + +# Type fixes for s390 +%ifarch s390 s390x +%patch101 +%patch102 +%endif + +# Arm fixes +%ifarch %{arm} +%patch103 +%endif + +%patch107 + +%ifarch ppc ppc64 +# PPC fixes +%patch104 +%patch105 +%patch106 +%endif + + +# Copy jaxp, jaf and jaxws drops +mkdir drops/ + +# Extract the rewriter (to rewrite rhino classes) +tar xzf %{SOURCE7} + +# Extract systemtap tapsets +%if %{with_systemtap} + +tar xzf %{SOURCE8} + +for file in tapset/*.in; do + + OUTPUT_FILE=`echo $file | sed -e s:\.in$::g` + sed -e s:@ABS_SERVER_LIBJVM_SO@:%{_jvmdir}/%{sdkdir}/jre/lib/amd64/server/libjvm.so:g $file > $OUTPUT_FILE + sed -i -e '/@ABS_CLIENT_LIBJVM_SO@/d' $OUTPUT_FILE + sed -i -e s:@ABS_JAVA_HOME_DIR@:%{_jvmdir}/%{sdkdir}:g $OUTPUT_FILE + sed -i -e s:@INSTALL_ARCH_DIR@:%{archinstall}:g $OUTPUT_FILE + +done + +%endif + +# Extract desktop files +tar xzf %{SOURCE9} + +%build +# How many cpu's do we have? +export NUM_PROC=`/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :` +export NUM_PROC=${NUM_PROC:-1} + +# Build IcedTea and OpenJDK. +%ifarch s390x sparc64 alpha ppc64 +export ARCH_DATA_MODEL=64 +%endif +%ifarch alpha +export CFLAGS="$CFLAGS -mieee" +%endif +# Build the re-written rhino jar +mkdir -p rhino/{old,new} + +# Compile the rewriter +(cd rewriter + javac com/redhat/rewriter/ClassRewriter.java +) + +# Extract rhino.jar contents and rewrite +(cd rhino/old + jar xf /usr/share/java/rhino.jar +) + +java -cp rewriter com.redhat.rewriter.ClassRewriter \ + $PWD/rhino/old \ + $PWD/rhino/new \ + org.mozilla \ + sun.org.mozilla + +(cd rhino/old + for file in `find -type f -not -name '*.class'` ; do + new_file=../new/`echo $file | sed -e 's#org#sun/org#'` + mkdir -pv `dirname $new_file` + cp -v $file $new_file + sed -ie 's#org\.mozilla#sun.org.mozilla#g' $new_file + done +) + +(cd rhino/new + jar cfm ../rhino.jar META-INF/MANIFEST.MF sun +) + +(cd jdk8/common/autoconf + bash ./autogen.sh +) + +mkdir -p %{buildoutputdir} + +pushd %{buildoutputdir} + +bash ../../configure \ + --with-build-number=%{buildver} \ + --with-boot-jdk=/usr/lib/jvm/java-openjdk \ + --with-debug-level=%{debugbuild} \ + --enable-unlimited-crypto \ + --with-zlib=system \ + --with-giflib=system \ + --with-libpng=system \ + --with-lcms=system \ + --with-stdc++lib=dynamic \ + --with-num-cores="$NUM_PROC" + +make DISABLE_INTREE_EC=true LOG=trace all + +popd >& /dev/null + +export JAVA_HOME=$(pwd)/%{buildoutputdir}/images/j2sdk-image + +# Copy tz.properties +echo "sun.zoneinfo.dir=/usr/share/javazi" >> $JAVA_HOME/jre/lib/tz.properties + +# Check unlimited policy has been used +$JAVA_HOME/bin/javac -d . %{SOURCE13} +$JAVA_HOME/bin/java TestCryptoLevel + +%install +rm -rf $RPM_BUILD_ROOT +STRIP_KEEP_SYMTAB=libjvm* + +# Install symlink to default soundfont +install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/audio +pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/audio +ln -s %{_datadir}/soundfonts/default.sf2 +popd + +pushd %{buildoutputdir}/images/j2sdk-image + + # Install main files. + install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} + cp -a bin include lib src.zip $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} + install -d -m 755 $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} + cp -a jre/bin jre/lib $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} + +%ifarch %{jit_arches} + # Install systemtap support files. + install -dm 755 $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/tapset + cp -a $RPM_BUILD_DIR/%{name}/tapset/*.stp $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/tapset/ + install -d -m 755 $RPM_BUILD_ROOT%{tapsetdir} + pushd $RPM_BUILD_ROOT%{tapsetdir} + RELATIVE=$(%{abs2rel} %{_jvmdir}/%{sdkdir}/tapset %{tapsetdir}) + ln -sf $RELATIVE/*.stp . + popd +%endif + + # Install cacerts symlink. + rm -f $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/cacerts + pushd $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security + RELATIVE=$(%{abs2rel} %{_sysconfdir}/pki/java \ + %{_jvmdir}/%{jredir}/lib/security) + ln -sf $RELATIVE/cacerts . + popd + + # Install extension symlinks. + install -d -m 755 $RPM_BUILD_ROOT%{jvmjardir} + pushd $RPM_BUILD_ROOT%{jvmjardir} + RELATIVE=$(%{abs2rel} %{_jvmdir}/%{jredir}/lib %{jvmjardir}) + ln -sf $RELATIVE/jsse.jar jsse-%{version}.jar + ln -sf $RELATIVE/jce.jar jce-%{version}.jar + ln -sf $RELATIVE/rt.jar jndi-%{version}.jar + ln -sf $RELATIVE/rt.jar jndi-ldap-%{version}.jar + ln -sf $RELATIVE/rt.jar jndi-cos-%{version}.jar + ln -sf $RELATIVE/rt.jar jndi-rmi-%{version}.jar + ln -sf $RELATIVE/rt.jar jaas-%{version}.jar + ln -sf $RELATIVE/rt.jar jdbc-stdext-%{version}.jar + ln -sf jdbc-stdext-%{version}.jar jdbc-stdext-3.0.jar + ln -sf $RELATIVE/rt.jar sasl-%{version}.jar + for jar in *-%{version}.jar + do + if [ x%{version} != x%{javaver} ] + then + ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|-%{javaver}.jar|g") + fi + ln -sf $jar $(echo $jar | sed "s|-%{version}.jar|.jar|g") + done + popd + + # Install JCE policy symlinks. + install -d -m 755 $RPM_BUILD_ROOT%{_jvmprivdir}/%{archname}/jce/vanilla + + # Install versionless symlinks. + pushd $RPM_BUILD_ROOT%{_jvmdir} + ln -sf %{jredir} %{jrelnk} + ln -sf %{sdkdir} %{sdklnk} + popd + + pushd $RPM_BUILD_ROOT%{_jvmjardir} + ln -sf %{sdkdir} %{jrelnk} + ln -sf %{sdkdir} %{sdklnk} + popd + + # Remove javaws man page + rm -f man/man1/javaws* + + # Install man pages. + install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1 + for manpage in man/man1/* + do + # Convert man pages to UTF8 encoding. + iconv -f ISO_8859-1 -t UTF8 $manpage -o $manpage.tmp + mv -f $manpage.tmp $manpage + install -m 644 -p $manpage $RPM_BUILD_ROOT%{_mandir}/man1/$(basename \ + $manpage .1)-%{name}.1 + done + + # Install demos and samples. + cp -a demo $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} + mkdir -p sample/rmi + mv bin/java-rmi.cgi sample/rmi + cp -a sample $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir} + +popd + + +# Install nss.cfg +install -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_jvmdir}/%{jredir}/lib/security/ + + +# Install Javadoc documentation. +install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir} +cp -a %{buildoutputdir}/docs $RPM_BUILD_ROOT%{_javadocdir}/%{name} + +# Install icons and menu entries. +for s in 16 24 32 48 ; do + install -D -p -m 644 \ + jdk8/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/java-%{javaver}.png +done + +# Install desktop files. +install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/{applications,pixmaps} +for e in jconsole policytool ; do + desktop-file-install --vendor=%{name} --mode=644 \ + --dir=$RPM_BUILD_ROOT%{_datadir}/applications $e.desktop +done + +# Find JRE directories. +find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type d \ + | grep -v jre/lib/security \ + | sed 's|'$RPM_BUILD_ROOT'|%dir |' \ + > %{name}.files +# Find JRE files. +find $RPM_BUILD_ROOT%{_jvmdir}/%{jredir} -type f -o -type l \ + | grep -v jre/lib/security \ + | sed 's|'$RPM_BUILD_ROOT'||' \ + >> %{name}.files +# Find demo directories. +find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \ + $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample -type d \ + | sed 's|'$RPM_BUILD_ROOT'|%dir |' \ + > %{name}-demo.files + +# FIXME: remove SONAME entries from demo DSOs. See +# https://bugzilla.redhat.com/show_bug.cgi?id=436497 + +# Find non-documentation demo files. +find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \ + $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \ + -type f -o -type l | sort \ + | grep -v README \ + | sed 's|'$RPM_BUILD_ROOT'||' \ + >> %{name}-demo.files +# Find documentation demo files. +find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \ + $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/sample \ + -type f -o -type l | sort \ + | grep README \ + | sed 's|'$RPM_BUILD_ROOT'||' \ + | sed 's|^|%doc |' \ + >> %{name}-demo.files + +# FIXME: identical binaries are copied, not linked. This needs to be +# fixed upstream. +%post +ext=.gz +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}/pack200 pack200 %{jrebindir}/pack200 \ + --slave %{_bindir}/rmid rmid %{jrebindir}/rmid \ + --slave %{_bindir}/rmiregistry rmiregistry %{jrebindir}/rmiregistry \ + --slave %{_bindir}/servertool servertool %{jrebindir}/servertool \ + --slave %{_bindir}/tnameserv tnameserv %{jrebindir}/tnameserv \ + --slave %{_bindir}/unpack200 unpack200 %{jrebindir}/unpack200 \ + --slave %{_mandir}/man1/java.1$ext java.1$ext \ + %{_mandir}/man1/java-%{name}.1$ext \ + --slave %{_mandir}/man1/keytool.1$ext keytool.1$ext \ + %{_mandir}/man1/keytool-%{name}.1$ext \ + --slave %{_mandir}/man1/orbd.1$ext orbd.1$ext \ + %{_mandir}/man1/orbd-%{name}.1$ext \ + --slave %{_mandir}/man1/pack200.1$ext pack200.1$ext \ + %{_mandir}/man1/pack200-%{name}.1$ext \ + --slave %{_mandir}/man1/rmid.1$ext rmid.1$ext \ + %{_mandir}/man1/rmid-%{name}.1$ext \ + --slave %{_mandir}/man1/rmiregistry.1$ext rmiregistry.1$ext \ + %{_mandir}/man1/rmiregistry-%{name}.1$ext \ + --slave %{_mandir}/man1/servertool.1$ext servertool.1$ext \ + %{_mandir}/man1/servertool-%{name}.1$ext \ + --slave %{_mandir}/man1/tnameserv.1$ext tnameserv.1$ext \ + %{_mandir}/man1/tnameserv-%{name}.1$ext \ + --slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \ + %{_mandir}/man1/unpack200-%{name}.1$ext + +alternatives \ + --install %{_jvmdir}/jre-%{origin} \ + jre_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \ + --slave %{_jvmjardir}/jre-%{origin} \ + jre_%{origin}_exports %{_jvmjardir}/%{jrelnk} + +alternatives \ + --install %{_jvmdir}/jre-%{javaver} \ + jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \ + --slave %{_jvmjardir}/jre-%{javaver} \ + jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk} + +update-desktop-database %{_datadir}/applications &> /dev/null || : + +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ] ; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor +fi + +exit 0 + +%postun +if [ $1 -eq 0 ] +then + alternatives --remove java %{jrebindir}/java + alternatives --remove jre_%{origin} %{_jvmdir}/%{jrelnk} + alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk} +fi + +update-desktop-database %{_datadir}/applications &> /dev/null || : + +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ] ; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor +fi + +exit 0 + +%post devel +ext=.gz +alternatives \ + --install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \ + --slave %{_jvmdir}/java java_sdk %{_jvmdir}/%{sdklnk} \ + --slave %{_jvmjardir}/java java_sdk_exports %{_jvmjardir}/%{sdklnk} \ + --slave %{_bindir}/appletviewer appletviewer %{sdkbindir}/appletviewer \ + --slave %{_bindir}/extcheck extcheck %{sdkbindir}/extcheck \ + --slave %{_bindir}/idlj idlj %{sdkbindir}/idlj \ + --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}/jcmd jcmd %{sdkbindir}/jcmd \ + --slave %{_bindir}/jconsole jconsole %{sdkbindir}/jconsole \ + --slave %{_bindir}/jdb jdb %{sdkbindir}/jdb \ + --slave %{_bindir}/jhat jhat %{sdkbindir}/jhat \ + --slave %{_bindir}/jinfo jinfo %{sdkbindir}/jinfo \ + --slave %{_bindir}/jmap jmap %{sdkbindir}/jmap \ + --slave %{_bindir}/jps jps %{sdkbindir}/jps \ + --slave %{_bindir}/jrunscript jrunscript %{sdkbindir}/jrunscript \ + --slave %{_bindir}/jsadebugd jsadebugd %{sdkbindir}/jsadebugd \ + --slave %{_bindir}/jstack jstack %{sdkbindir}/jstack \ + --slave %{_bindir}/jstat jstat %{sdkbindir}/jstat \ + --slave %{_bindir}/jstatd jstatd %{sdkbindir}/jstatd \ + --slave %{_bindir}/native2ascii native2ascii %{sdkbindir}/native2ascii \ + --slave %{_bindir}/policytool policytool %{sdkbindir}/policytool \ + --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-%{name}.1$ext \ + --slave %{_mandir}/man1/extcheck.1$ext extcheck.1$ext \ + %{_mandir}/man1/extcheck-%{name}.1$ext \ + --slave %{_mandir}/man1/idlj.1$ext idlj.1$ext \ + %{_mandir}/man1/idlj-%{name}.1$ext \ + --slave %{_mandir}/man1/jar.1$ext jar.1$ext \ + %{_mandir}/man1/jar-%{name}.1$ext \ + --slave %{_mandir}/man1/jarsigner.1$ext jarsigner.1$ext \ + %{_mandir}/man1/jarsigner-%{name}.1$ext \ + --slave %{_mandir}/man1/javac.1$ext javac.1$ext \ + %{_mandir}/man1/javac-%{name}.1$ext \ + --slave %{_mandir}/man1/javadoc.1$ext javadoc.1$ext \ + %{_mandir}/man1/javadoc-%{name}.1$ext \ + --slave %{_mandir}/man1/javah.1$ext javah.1$ext \ + %{_mandir}/man1/javah-%{name}.1$ext \ + --slave %{_mandir}/man1/javap.1$ext javap.1$ext \ + %{_mandir}/man1/javap-%{name}.1$ext \ + --slave %{_mandir}/man1/jcmd.1$ext jcmd.1$ext \ + %{_mandir}/man1/jcmd-%{name}.1$ext \ + --slave %{_mandir}/man1/jconsole.1$ext jconsole.1$ext \ + %{_mandir}/man1/jconsole-%{name}.1$ext \ + --slave %{_mandir}/man1/jdb.1$ext jdb.1$ext \ + %{_mandir}/man1/jdb-%{name}.1$ext \ + --slave %{_mandir}/man1/jhat.1$ext jhat.1$ext \ + %{_mandir}/man1/jhat-%{name}.1$ext \ + --slave %{_mandir}/man1/jinfo.1$ext jinfo.1$ext \ + %{_mandir}/man1/jinfo-%{name}.1$ext \ + --slave %{_mandir}/man1/jmap.1$ext jmap.1$ext \ + %{_mandir}/man1/jmap-%{name}.1$ext \ + --slave %{_mandir}/man1/jps.1$ext jps.1$ext \ + %{_mandir}/man1/jps-%{name}.1$ext \ + --slave %{_mandir}/man1/jrunscript.1$ext jrunscript.1$ext \ + %{_mandir}/man1/jrunscript-%{name}.1$ext \ + --slave %{_mandir}/man1/jsadebugd.1$ext jsadebugd.1$ext \ + %{_mandir}/man1/jsadebugd-%{name}.1$ext \ + --slave %{_mandir}/man1/jstack.1$ext jstack.1$ext \ + %{_mandir}/man1/jstack-%{name}.1$ext \ + --slave %{_mandir}/man1/jstat.1$ext jstat.1$ext \ + %{_mandir}/man1/jstat-%{name}.1$ext \ + --slave %{_mandir}/man1/jstatd.1$ext jstatd.1$ext \ + %{_mandir}/man1/jstatd-%{name}.1$ext \ + --slave %{_mandir}/man1/native2ascii.1$ext native2ascii.1$ext \ + %{_mandir}/man1/native2ascii-%{name}.1$ext \ + --slave %{_mandir}/man1/policytool.1$ext policytool.1$ext \ + %{_mandir}/man1/policytool-%{name}.1$ext \ + --slave %{_mandir}/man1/rmic.1$ext rmic.1$ext \ + %{_mandir}/man1/rmic-%{name}.1$ext \ + --slave %{_mandir}/man1/schemagen.1$ext schemagen.1$ext \ + %{_mandir}/man1/schemagen-%{name}.1$ext \ + --slave %{_mandir}/man1/serialver.1$ext serialver.1$ext \ + %{_mandir}/man1/serialver-%{name}.1$ext \ + --slave %{_mandir}/man1/wsgen.1$ext wsgen.1$ext \ + %{_mandir}/man1/wsgen-%{name}.1$ext \ + --slave %{_mandir}/man1/wsimport.1$ext wsimport.1$ext \ + %{_mandir}/man1/wsimport-%{name}.1$ext \ + --slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \ + %{_mandir}/man1/xjc-%{name}.1$ext + +alternatives \ + --install %{_jvmdir}/java-%{origin} \ + java_sdk_%{origin} %{_jvmdir}/%{sdklnk} %{priority} \ + --slave %{_jvmjardir}/java-%{origin} \ + java_sdk_%{origin}_exports %{_jvmjardir}/%{sdklnk} + +alternatives \ + --install %{_jvmdir}/java-%{javaver} \ + java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} %{priority} \ + --slave %{_jvmjardir}/java-%{javaver} \ + java_sdk_%{javaver}_exports %{_jvmjardir}/%{sdklnk} + +exit 0 + +%postun devel +if [ $1 -eq 0 ] +then + alternatives --remove javac %{sdkbindir}/javac + alternatives --remove java_sdk_%{origin} %{_jvmdir}/%{sdklnk} + alternatives --remove java_sdk_%{javaver} %{_jvmdir}/%{sdklnk} +fi + +exit 0 + +%post javadoc +alternatives \ + --install %{_javadocdir}/java javadocdir %{_javadocdir}/%{name}/api \ + %{priority} + +exit 0 + +%postun javadoc +if [ $1 -eq 0 ] +then + alternatives --remove javadocdir %{_javadocdir}/%{name}/api +fi + +exit 0 + + +%files -f %{name}.files +%defattr(-,root,root,-) +%doc %{buildoutputdir}/images/j2sdk-image/jre/ASSEMBLY_EXCEPTION +%doc %{buildoutputdir}/images/j2sdk-image/jre/LICENSE +%doc %{buildoutputdir}/images/j2sdk-image/jre/THIRD_PARTY_README + +%dir %{_jvmdir}/%{sdkdir} +%{_jvmdir}/%{jrelnk} +%{_jvmjardir}/%{jrelnk} +%{_jvmprivdir}/* +%{jvmjardir} +%dir %{_jvmdir}/%{jredir}/lib/security +%{_jvmdir}/%{jredir}/lib/security/cacerts +%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.policy +%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security +%{_datadir}/icons/hicolor/*x*/apps/java-%{javaver}.png +%{_mandir}/man1/java-%{name}.1* +%{_mandir}/man1/keytool-%{name}.1* +%{_mandir}/man1/orbd-%{name}.1* +%{_mandir}/man1/pack200-%{name}.1* +%{_mandir}/man1/rmid-%{name}.1* +%{_mandir}/man1/rmiregistry-%{name}.1* +%{_mandir}/man1/servertool-%{name}.1* +%{_mandir}/man1/tnameserv-%{name}.1* +%{_mandir}/man1/unpack200-%{name}.1* +%{_jvmdir}/%{jredir}/lib/security/nss.cfg +%{_jvmdir}/%{jredir}/lib/audio/ +%{_jvmdir}/%{jredir}/lib/security/US_export_policy.jar +%{_jvmdir}/%{jredir}/lib/security/local_policy.jar + +%files devel +%defattr(-,root,root,-) +%doc %{buildoutputdir}/images/j2sdk-image/ASSEMBLY_EXCEPTION +%doc %{buildoutputdir}/images/j2sdk-image/LICENSE +%doc %{buildoutputdir}/images/j2sdk-image/THIRD_PARTY_README +%dir %{_jvmdir}/%{sdkdir}/bin +%dir %{_jvmdir}/%{sdkdir}/include +%dir %{_jvmdir}/%{sdkdir}/lib +%ifarch %{jit_arches} +%dir %{_jvmdir}/%{sdkdir}/tapset +%endif +%{_jvmdir}/%{sdkdir}/bin/* +%{_jvmdir}/%{sdkdir}/include/* +%{_jvmdir}/%{sdkdir}/lib/* +%ifarch %{jit_arches} +%{_jvmdir}/%{sdkdir}/tapset/*.stp +%endif +%{_jvmdir}/%{sdklnk} +%{_jvmjardir}/%{sdklnk} +%{_datadir}/applications/*jconsole.desktop +%{_datadir}/applications/*policytool.desktop +%{_mandir}/man1/appletviewer-%{name}.1* +%{_mandir}/man1/extcheck-%{name}.1* +%{_mandir}/man1/idlj-%{name}.1* +%{_mandir}/man1/jar-%{name}.1* +%{_mandir}/man1/jarsigner-%{name}.1* +%{_mandir}/man1/javac-%{name}.1* +%{_mandir}/man1/javadoc-%{name}.1* +%{_mandir}/man1/javah-%{name}.1* +%{_mandir}/man1/javap-%{name}.1* +%{_mandir}/man1/jconsole-%{name}.1* +%ifarch %{jit_arches} # Only in u4+ +%{_mandir}/man1/jcmd-%{name}.1* +%endif +%{_mandir}/man1/jdb-%{name}.1* +%{_mandir}/man1/jhat-%{name}.1* +%{_mandir}/man1/jinfo-%{name}.1* +%{_mandir}/man1/jmap-%{name}.1* +%{_mandir}/man1/jps-%{name}.1* +%{_mandir}/man1/jrunscript-%{name}.1* +%{_mandir}/man1/jsadebugd-%{name}.1* +%{_mandir}/man1/jstack-%{name}.1* +%{_mandir}/man1/jstat-%{name}.1* +%{_mandir}/man1/jstatd-%{name}.1* +%{_mandir}/man1/native2ascii-%{name}.1* +%{_mandir}/man1/policytool-%{name}.1* +%{_mandir}/man1/rmic-%{name}.1* +%{_mandir}/man1/schemagen-%{name}.1* +%{_mandir}/man1/serialver-%{name}.1* +%{_mandir}/man1/wsgen-%{name}.1* +%{_mandir}/man1/wsimport-%{name}.1* +%{_mandir}/man1/xjc-%{name}.1* +%ifarch %{jit_arches} +%{tapsetroot} +%endif + +%files demo -f %{name}-demo.files +%defattr(-,root,root,-) +%doc %{buildoutputdir}/images/j2sdk-image/jre/LICENSE + +%files src +%defattr(-,root,root,-) +%doc README.src +%{_jvmdir}/%{sdkdir}/src.zip + +%files javadoc +%defattr(-,root,root,-) +%doc %{_javadocdir}/%{name} +%doc %{buildoutputdir}/images/j2sdk-image/jre/LICENSE + +%changelog +* Tue Mar 12 2013 Omair Majid 1:1.8.0.0-0.1.b79.f19 +- Update to jdk8-b79 +- Initial version for Fedora 19 + +* Tue Sep 04 2012 Andrew John Hughes - 1:1.8.0.0-b53.1 +- Initial build from java-1.7.0-openjdk RPM diff --git a/nss.cfg b/nss.cfg new file mode 100644 index 0000000..c510dd0 --- /dev/null +++ b/nss.cfg @@ -0,0 +1,4 @@ +name = NSS +nssLibraryDirectory = +nssDbMode = noDb +attributes = compatibility diff --git a/remove-intree-libraries.sh b/remove-intree-libraries.sh new file mode 100644 index 0000000..76a4156 --- /dev/null +++ b/remove-intree-libraries.sh @@ -0,0 +1,127 @@ +#!/bin/sh + +ZIP_SRC=jdk8/jdk/src/share/native/java/util/zip/zlib-* +JPEG_SRC=jdk8/jdk/src/share/native/sun/awt/image/jpeg +GIF_SRC=jdk8/jdk/src/share/native/sun/awt/giflib +PNG_SRC=jdk8/jdk/src/share/native/sun/awt/libpng +LCMS_SRC=jdk8/jdk/src/share/native/sun/java2d/cmm/lcms + +echo "Removing built-in libs (they will be linked)" + +echo "Removing zlib" +if [ ! -d ${ZIP_SRC} ]; then + echo "${ZIP_SRC} does not exist. Refusing to proceed." + exit 1 +fi +rm -rvf ${ZIP_SRC} + +echo "Removing libjpeg" +if [ ! -f ${JPEG_SRC}/jdhuff.c ]; then # some file that sound definitely exist + echo "${JPEG_SRC} does not contain jpeg sources. Refusing to proceed." + exit 1 +fi + +rm -vf ${JPEG_SRC}/jcomapi.c +rm -vf ${JPEG_SRC}/jdapimin.c +rm -vf ${JPEG_SRC}/jdapistd.c +rm -vf ${JPEG_SRC}/jdcoefct.c +rm -vf ${JPEG_SRC}/jdcolor.c +rm -vf ${JPEG_SRC}/jdct.h +rm -vf ${JPEG_SRC}/jddctmgr.c +rm -vf ${JPEG_SRC}/jdhuff.c +rm -vf ${JPEG_SRC}/jdhuff.h +rm -vf ${JPEG_SRC}/jdinput.c +rm -vf ${JPEG_SRC}/jdmainct.c +rm -vf ${JPEG_SRC}/jdmarker.c +rm -vf ${JPEG_SRC}/jdmaster.c +rm -vf ${JPEG_SRC}/jdmerge.c +rm -vf ${JPEG_SRC}/jdphuff.c +rm -vf ${JPEG_SRC}/jdpostct.c +rm -vf ${JPEG_SRC}/jdsample.c +rm -vf ${JPEG_SRC}/jerror.c +rm -vf ${JPEG_SRC}/jerror.h +rm -vf ${JPEG_SRC}/jidctflt.c +rm -vf ${JPEG_SRC}/jidctfst.c +rm -vf ${JPEG_SRC}/jidctint.c +rm -vf ${JPEG_SRC}/jidctred.c +rm -vf ${JPEG_SRC}/jinclude.h +rm -vf ${JPEG_SRC}/jmemmgr.c +rm -vf ${JPEG_SRC}/jmemsys.h +rm -vf ${JPEG_SRC}/jmemnobs.c +rm -vf ${JPEG_SRC}/jmorecfg.h +rm -vf ${JPEG_SRC}/jpegint.h +rm -vf ${JPEG_SRC}/jpeglib.h +rm -vf ${JPEG_SRC}/jquant1.c +rm -vf ${JPEG_SRC}/jquant2.c +rm -vf ${JPEG_SRC}/jutils.c +rm -vf ${JPEG_SRC}/jcapimin.c +rm -vf ${JPEG_SRC}/jcapistd.c +rm -vf ${JPEG_SRC}/jccoefct.c +rm -vf ${JPEG_SRC}/jccolor.c +rm -vf ${JPEG_SRC}/jcdctmgr.c +rm -vf ${JPEG_SRC}/jchuff.c +rm -vf ${JPEG_SRC}/jchuff.h +rm -vf ${JPEG_SRC}/jcinit.c +rm -vf ${JPEG_SRC}/jconfig.h +rm -vf ${JPEG_SRC}/jcmainct.c +rm -vf ${JPEG_SRC}/jcmarker.c +rm -vf ${JPEG_SRC}/jcmaster.c +rm -vf ${JPEG_SRC}/jcparam.c +rm -vf ${JPEG_SRC}/jcphuff.c +rm -vf ${JPEG_SRC}/jcprepct.c +rm -vf ${JPEG_SRC}/jcsample.c +rm -vf ${JPEG_SRC}/jctrans.c +rm -vf ${JPEG_SRC}/jdtrans.c +rm -vf ${JPEG_SRC}/jfdctflt.c +rm -vf ${JPEG_SRC}/jfdctfst.c +rm -vf ${JPEG_SRC}/jfdctint.c +rm -vf ${JPEG_SRC}/jversion.h +rm -vf ${JPEG_SRC}/README + +echo "Removing giflib" +if [ ! -d ${GIF_SRC} ]; then + echo "${GIF_SRC} does not exist. Refusing to proceed." + exit 1 +fi +rm -rvf ${GIF_SRC} + +echo "Removing libpng" +if [ ! -d ${PNG_SRC} ]; then + echo "${PNG_SRC} does not exist. Refusing to proceed." + exit 1 +fi +rm -rvf ${PNG_SRC} + +echo "Removing lcms" +if [ ! -d ${LCMS_SRC} ]; then + echo "${LCMS_SRC} does not exist. Refusing to proceed." + exit 1 +fi +rm -vf ${LCMS_SRC}/cmscam02.c +rm -vf ${LCMS_SRC}/cmscgats.c +rm -vf ${LCMS_SRC}/cmscnvrt.c +rm -vf ${LCMS_SRC}/cmserr.c +rm -vf ${LCMS_SRC}/cmsgamma.c +rm -vf ${LCMS_SRC}/cmsgmt.c +rm -vf ${LCMS_SRC}/cmshalf.c +rm -vf ${LCMS_SRC}/cmsintrp.c +rm -vf ${LCMS_SRC}/cmsio0.c +rm -vf ${LCMS_SRC}/cmsio1.c +rm -vf ${LCMS_SRC}/cmslut.c +rm -vf ${LCMS_SRC}/cmsmd5.c +rm -vf ${LCMS_SRC}/cmsmtrx.c +rm -vf ${LCMS_SRC}/cmsnamed.c +rm -vf ${LCMS_SRC}/cmsopt.c +rm -vf ${LCMS_SRC}/cmspack.c +rm -vf ${LCMS_SRC}/cmspcs.c +rm -vf ${LCMS_SRC}/cmsplugin.c +rm -vf ${LCMS_SRC}/cmsps2.c +rm -vf ${LCMS_SRC}/cmssamp.c +rm -vf ${LCMS_SRC}/cmssm.c +rm -vf ${LCMS_SRC}/cmstypes.c +rm -vf ${LCMS_SRC}/cmsvirt.c +rm -vf ${LCMS_SRC}/cmswtpnt.c +rm -vf ${LCMS_SRC}/cmsxform.c +rm -vf ${LCMS_SRC}/lcms2.h +rm -vf ${LCMS_SRC}/lcms2_internal.h +rm -vf ${LCMS_SRC}/lcms2_plugin.h diff --git a/rhino.patch b/rhino.patch new file mode 100644 index 0000000..992a634 --- /dev/null +++ b/rhino.patch @@ -0,0 +1,157 @@ +diff --git a/make/com/sun/Makefile b/make/com/sun/Makefile +--- jdk8/jdk/make/com/sun/Makefile ++++ jdk8/jdk/make/com/sun/Makefile +@@ -31,13 +31,6 @@ + PRODUCT = sun + include $(BUILDDIR)/common/Defs.gmk + +-ifndef OPENJDK +- ORG_EXISTS := $(call DirExists,$(CLOSED_SRC)/share/classes/sun/org,,) +- ifneq ("$(ORG_EXISTS)", "") +- SCRIPT_SUBDIR = script +- endif +-endif +- + # jarsigner is part of JRE + SUBDIRS = java security net/ssl jarsigner + +@@ -45,7 +38,7 @@ + SUBDIRS_desktop = image + SUBDIRS_enterprise = crypto/provider jndi \ + org rowset net/httpserver +-SUBDIRS_misc = $(SCRIPT_SUBDIR) tracing servicetag nio demo ++SUBDIRS_misc = script tracing servicetag nio demo + + SUBDIRS_tools = tools + +diff --git a/make/com/sun/script/Makefile b/make/com/sun/script/Makefile +--- jdk8/jdk/make/com/sun/script/Makefile ++++ jdk8/jdk/make/com/sun/script/Makefile +@@ -31,6 +31,8 @@ + + AUTO_FILES_JAVA_DIRS = com/sun/script + ++OTHER_JAVACFLAGS = -classpath $(RHINO_JAR) ++ + # + # Files that need to be copied + # +diff --git a/make/common/Release.gmk b/make/common/Release.gmk +--- jdk8/jdk/make/common/Release.gmk ++++ jdk8/jdk/make/common/Release.gmk +@@ -813,6 +813,7 @@ + $(CP) $(RT_JAR) $(JRE_IMAGE_DIR)/lib/rt.jar + $(CP) $(RESOURCES_JAR) $(JRE_IMAGE_DIR)/lib/resources.jar + $(CP) $(JSSE_JAR) $(JRE_IMAGE_DIR)/lib/jsse.jar ++ $(CP) $(RHINO_JAR) $(JRE_IMAGE_DIR)/lib/rhino.jar + ifneq ($(JFR_JAR),) + $(CP) $(JFR_JAR) $(JRE_IMAGE_DIR)/lib/jfr.jar + endif +diff --git a/src/share/classes/com/sun/script/javascript/ExternalScriptable.java b/src/share/classes/com/sun/script/javascript/ExternalScriptable.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/ExternalScriptable.java +@@ -24,7 +24,7 @@ + */ + + package com.sun.script.javascript; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + import javax.script.*; + import java.util.*; + +diff --git a/src/share/classes/com/sun/script/javascript/JSAdapter.java b/src/share/classes/com/sun/script/javascript/JSAdapter.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/JSAdapter.java +@@ -25,7 +25,7 @@ + + package com.sun.script.javascript; + +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + import java.util.*; + + /** +diff --git a/src/share/classes/com/sun/script/javascript/JavaAdapter.java b/src/share/classes/com/sun/script/javascript/JavaAdapter.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/JavaAdapter.java +@@ -26,7 +26,7 @@ + package com.sun.script.javascript; + + import javax.script.Invocable; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + + /** + * This class implements Rhino-like JavaAdapter to help implement a Java +diff --git a/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java b/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoClassShutter.java +@@ -26,7 +26,7 @@ + package com.sun.script.javascript; + + import java.util.*; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + + /** + * This class prevents script access to certain sensitive classes. +diff --git a/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java b/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoCompiledScript.java +@@ -25,7 +25,7 @@ + + package com.sun.script.javascript; + import javax.script.*; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + + /** + * Represents compiled JavaScript code. +diff --git a/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java b/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java +@@ -26,7 +26,7 @@ + package com.sun.script.javascript; + import com.sun.script.util.*; + import javax.script.*; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + import java.lang.reflect.Method; + import java.io.*; + import java.util.*; +diff --git a/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java b/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoScriptEngineFactory.java +@@ -26,7 +26,7 @@ + package com.sun.script.javascript; + import javax.script.*; + import java.util.*; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + import com.sun.script.util.*; + + /** +diff --git a/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java b/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoTopLevel.java +@@ -25,7 +25,7 @@ + + package com.sun.script.javascript; + +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + import javax.script.*; + + /** +diff --git a/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java b/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java +--- jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java ++++ jdk8/jdk/src/share/classes/com/sun/script/javascript/RhinoWrapFactory.java +@@ -27,7 +27,7 @@ + + import java.lang.reflect.*; + import static sun.security.util.SecurityConstants.*; +-import sun.org.mozilla.javascript.internal.*; ++import sun.org.mozilla.javascript.*; + + /** + * This wrap factory is used for security reasons. JSR 223 script diff --git a/sources b/sources index e69de29..be5fdce 100644 --- a/sources +++ b/sources @@ -0,0 +1,4 @@ +53f5d8cfe1c1aa478cb0fb64ba149967 class-rewriter.tar.gz +e1d19c1a7e103b9b3c35a94628ded3b5 desktop-files.tar.gz +71577c85c00f488465e0732cdfee73a7 jdk8-b79.tar.gz +94ca5a45c3cb3b85c4577d0891166007 systemtap-tapset.tar.gz diff --git a/system-giflib.patch b/system-giflib.patch new file mode 100644 index 0000000..3a594de --- /dev/null +++ b/system-giflib.patch @@ -0,0 +1,104 @@ +diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4 +--- jdk8/common/autoconf/libraries.m4 ++++ jdk8/common/autoconf/libraries.m4 +@@ -499,11 +499,40 @@ + # Check for the gif library + # + +-USE_EXTERNAL_LIBJPEG=true +-AC_CHECK_LIB(gif, main, [], +- [ USE_EXTERNAL_LIBGIF=false +- AC_MSG_NOTICE([Will use gif decoder bundled with the OpenJDK source]) +- ]) ++AC_ARG_WITH(giflib, [AS_HELP_STRING([--with-giflib], ++ [use giflib from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) ++ ++AC_CHECK_LIB(gif, DGifGetCode, ++ [ GIFLIB_FOUND=yes ], ++ [ GIFLIB_FOUND=no ]) ++ ++AC_MSG_CHECKING([for which giflib to use]) ++ ++# default is bundled ++DEFAULT_GIFLIB=bundled ++ ++# ++# if user didn't specify, use DEFAULT_GIFLIB ++# ++if test "x${with_giflib}" = "x"; then ++ with_giflib=${DEFAULT_GIFLIB} ++fi ++ ++ ++if test "x${with_giflib}" = "xbundled"; then ++ USE_EXTERNAL_LIBGIF=false ++ AC_MSG_RESULT([bundled]) ++elif test "x${with_giflib}" = "xsystem"; then ++ if test "x${GIFLIB_FOUND}" = "xyes"; then ++ USE_EXTERNAL_LIBGIF=true ++ AC_MSG_RESULT([system]) ++ else ++ AC_MSG_RESULT([system not found]) ++ AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!]) ++ fi ++else ++ AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled']) ++fi + AC_SUBST(USE_EXTERNAL_LIBGIF) + + ############################################################################### +diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk +--- jdk8/jdk/makefiles/CompileNativeLibraries.gmk ++++ jdk8/jdk/makefiles/CompileNativeLibraries.gmk +@@ -2385,18 +2385,23 @@ + + ifndef BUILD_HEADLESS_ONLY + LIBSPLASHSCREEN_DIRS:=\ +- $(JDK_TOPDIR)/src/share/native/sun/awt/giflib \ + $(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) ++ LIBGIF := -lgif ++else ++ LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/giflib ++ LIBGIF_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib ++endif ++ + ifneq ($(OPENJDK_TARGET_OS), macosx) + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen + else + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/macosx/native/sun/awt/splashscreen + endif + +- + LIBSPLASHSCREEN_CFLAGS:=-DSPLASHSCREEN -DPNG_NO_MMX_CODE \ + $(foreach dir,$(LIBSPLASHSCREEN_DIRS),-I$(dir)) + +@@ -2448,11 +2453,11 @@ + EXCLUDE_FILES:=imageioJPEG.c jpegdecoder.c pngtest.c,\ + LANG:=C,\ + OPTIMIZATION:=LOW, \ +- CFLAGS:=$(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB),\ ++ CFLAGS:=$(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) -I$(LIBGIF_CFLAGS),\ + MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libsplashscreen/mapfile-vers, \ + LDFLAGS:=$(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN),\ +- LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ),\ ++ LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(LIBGIF),\ + LDFLAGS_SUFFIX_solaris:=-lc,\ + VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ + RC_FLAGS:=$(RC_FLAGS)\ +diff --git a/src/share/native/sun/awt/splashscreen/splashscreen_gif.c b/src/share/native/sun/awt/splashscreen/splashscreen_gif.c +--- jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c ++++ jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c +@@ -26,7 +26,7 @@ + #include "splashscreen_impl.h" + #include "splashscreen_gfx.h" + +-#include "../giflib/gif_lib.h" ++#include "gif_lib.h" + + #define GIF_TRANSPARENT 0x01 + #define GIF_USER_INPUT 0x02 diff --git a/system-lcms.patch b/system-lcms.patch new file mode 100644 index 0000000..ea8e94b --- /dev/null +++ b/system-lcms.patch @@ -0,0 +1,101 @@ +diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4 +--- jdk8/common/autoconf/libraries.m4 ++++ jdk8/common/autoconf/libraries.m4 +@@ -607,6 +607,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 zlib library + # + +diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk +--- jdk8/jdk/makefiles/CompileNativeLibraries.gmk ++++ jdk8/jdk/makefiles/CompileNativeLibraries.gmk +@@ -1213,8 +1213,8 @@ + + ifdef OPENJDK + # 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,\ +@@ -1232,18 +1232,18 @@ + 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,\ + 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,\ + DEBUG_SYMBOLS:=$(WINDOWS_ONLY))) + +- BUILD_LIBRARIES += $(BUILD_LIBLCMS) +- +- $(BUILD_LIBLCMS) : $(BUILD_LIBAWT) ++ BUILD_LIBRARIES += $(BUILD_LIBJAVALCMS) ++ ++ $(BUILD_LIBJAVALCMS) : $(BUILD_LIBAWT) + endif + + ########################################################################################## +diff --git a/src/share/classes/sun/java2d/cmm/lcms/LCMS.java b/src/share/classes/sun/java2d/cmm/lcms/LCMS.java +--- jdk8/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMS.java ++++ jdk8/jdk/src/share/classes/sun/java2d/cmm/lcms/LCMS.java +@@ -95,7 +95,7 @@ + * disposer frameworks + */ + System.loadLibrary("awt"); +- System.loadLibrary("lcms"); ++ System.loadLibrary("javalcms"); + return null; + } + } diff --git a/system-libjpeg.patch b/system-libjpeg.patch new file mode 100644 index 0000000..fba0a3a --- /dev/null +++ b/system-libjpeg.patch @@ -0,0 +1,207 @@ +diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4 +--- jdk8/common/autoconf/libraries.m4 ++++ jdk8/common/autoconf/libraries.m4 +@@ -487,11 +487,40 @@ + # Check for the jpeg library + # + +-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]) +- ]) ++AC_ARG_WITH(libjpeg, [AS_HELP_STRING([--with-libjpeg], ++ [use libjpeg from build system or OpenJDK sources (system, bundled) @<:@bundled@:>@])]) ++ ++AC_CHECK_LIB(jpeg, jpeg_destroy_compress, ++ [ LIBJPEG_FOUND=yes ], ++ [ LIBJPEG_FOUND=no ]) ++ ++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 ++ ++if test "x${with_libjpeg}" = "xbundled"; then ++ USE_EXTERNAL_LIBJPEG=false ++ AC_MSG_RESULT([bundled]) ++elif test "x${with_libjpeg}" = "xsystem"; then ++ if test "x${LIBJPEG_FOUND}" = "xyes"; then ++ USE_EXTERNAL_LIBJPEG=true ++ AC_MSG_RESULT([system]) ++ else ++ AC_MSG_RESULT([system not found]) ++ AC_MSG_ERROR([--with-libjpeg=system specified, but no libjpeg found]) ++ fi ++else ++ AC_MSG_ERROR([Invalid use of --with-libjpeg: ${with_libjpeg}, use 'system' or 'bundled']) ++fi ++ + AC_SUBST(USE_EXTERNAL_LIBJPEG) + + ############################################################################### +diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk +--- jdk8/jdk/makefiles/CompileNativeLibraries.gmk ++++ jdk8/jdk/makefiles/CompileNativeLibraries.gmk +@@ -1249,17 +1249,17 @@ + ########################################################################################## + + ifdef OPENJDK +- BUILD_LIBJPEG_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/mapfile-vers ++ BUILD_LIBJAVAJPEG_MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/mapfile-vers + else +- BUILD_LIBJPEG_MAPFILE:=$(JDK_TOPDIR)/makefiles/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)/makefiles/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)/makefiles/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU) ++ BUILD_LIBJAVAJPEG_REORDER:=$(JDK_TOPDIR)/makefiles/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU) + endif + endif + +@@ -1274,37 +1274,37 @@ + # $(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, \ ++$(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG,\ ++ LIBRARY:=javajpeg, \ + OUTPUT_DIR:=$(INSTALL_LIBRARIES_HERE),\ +- SRC:=$(BUILD_LIBJPEG_CLOSED_SRC) \ ++ SRC:=$(BUILD_LIBJAVAJPEG_CLOSED_SRC) \ + $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg,\ + LANG:=C,\ + OPTIMIZATION:=HIGHEST, \ + CFLAGS:=$(CFLAGS_JDKLIB) \ +- $(BUILD_LIBJPEG_CLOSED_INCLUDES) \ ++ $(BUILD_LIBJAVAJPEG_CLOSED_INCLUDES) \ + -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg,\ +- MAPFILE:=$(BUILD_LIBJPEG_MAPFILE), \ +- LDFLAGS:=$(LDFLAGS_JDKLIB) \ ++ MAPFILE:=$(BUILD_LIBJAVAJPEG_MAPFILE), \ ++ LDFLAGS:=$(LDFLAGS_JDKLIB) -ljpeg \ + $(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),\ +- OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjpeg,\ ++ REORDER:=$(BUILD_LIBJAVAJPEG_REORDER),\ ++ OBJECT_DIR:=$(JDK_OUTPUTDIR)/objs/libjavajpeg,\ + DEBUG_SYMBOLS:=$(WINDOWS_ONLY))) + +-$(BUILD_LIBJPEG) : $(BUILD_LIBJAVA) +- +-BUILD_LIBRARIES += $(BUILD_LIBJPEG) ++$(BUILD_LIBJAVAJPEG) : $(BUILD_LIBJAVA) ++ ++BUILD_LIBRARIES += $(BUILD_LIBJAVAJPEG) + + ########################################################################################## + +@@ -2441,7 +2441,7 @@ + -F/System/Library/Frameworks/JavaVM.framework/Frameworks \ + -framework JavaNativeFoundation + else ifneq ($(OPENJDK_TARGET_OS), windows) +- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread ++ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread -ljpeg + else # OPENJDK_TARGET_OS + LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll + endif # OPENJDK_TARGET_OS +@@ -2457,7 +2457,7 @@ + MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libsplashscreen/mapfile-vers, \ + LDFLAGS:=$(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN),\ +- LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(LIBGIF),\ ++ LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(LIBGIF) -ljpeg,\ + LDFLAGS_SUFFIX_solaris:=-lc,\ + VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ + RC_FLAGS:=$(RC_FLAGS)\ +diff --git a/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java b/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java +--- jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java ++++ jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java +@@ -89,7 +89,7 @@ + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Void run() { +- System.loadLibrary("jpeg"); ++ System.loadLibrary("javajpeg"); + return null; + } + }); +diff --git a/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java b/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java +--- jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java ++++ jdk8/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java +@@ -179,7 +179,7 @@ + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Void run() { +- System.loadLibrary("jpeg"); ++ System.loadLibrary("javajpeg"); + return null; + } + }); +diff --git a/src/share/classes/sun/awt/image/JPEGImageDecoder.java b/src/share/classes/sun/awt/image/JPEGImageDecoder.java +--- jdk8/jdk/src/share/classes/sun/awt/image/JPEGImageDecoder.java ++++ jdk8/jdk/src/share/classes/sun/awt/image/JPEGImageDecoder.java +@@ -56,7 +56,7 @@ + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction() { + public Void run() { +- System.loadLibrary("jpeg"); ++ System.loadLibrary("javajpeg"); + return null; + } + }); +diff --git a/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c b/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c +--- jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c ++++ jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_jpeg.c +@@ -25,7 +25,6 @@ + + #include "splashscreen_impl.h" + +-#include "jinclude.h" + #include "jpeglib.h" + #include "jerror.h" + +@@ -107,11 +106,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; diff --git a/system-libpng.patch b/system-libpng.patch new file mode 100644 index 0000000..2a2fc62 --- /dev/null +++ b/system-libpng.patch @@ -0,0 +1,83 @@ +diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4 +--- jdk8/common/autoconf/libraries.m4 ++++ jdk8/common/autoconf/libraries.m4 +@@ -566,6 +566,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 + # + +diff --git a/makefiles/CompileNativeLibraries.gmk b/makefiles/CompileNativeLibraries.gmk +--- jdk8/jdk/makefiles/CompileNativeLibraries.gmk ++++ jdk8/jdk/makefiles/CompileNativeLibraries.gmk +@@ -2386,7 +2386,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) +@@ -2457,7 +2456,7 @@ + MAPFILE:=$(JDK_TOPDIR)/makefiles/mapfiles/libsplashscreen/mapfile-vers, \ + LDFLAGS:=$(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN),\ +- LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(LIBGIF) -ljpeg,\ ++ LDFLAGS_SUFFIX:=$(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(LIBGIF) -ljpeg -lpng,\ + LDFLAGS_SUFFIX_solaris:=-lc,\ + VERSIONINFO_RESOURCE:=$(JDK_TOPDIR)/src/windows/resource/version.rc,\ + RC_FLAGS:=$(RC_FLAGS)\ +diff --git a/src/share/native/sun/awt/splashscreen/splashscreen_png.c b/src/share/native/sun/awt/splashscreen/splashscreen_png.c +--- jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c ++++ jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c +@@ -25,7 +25,7 @@ + + #include "splashscreen_impl.h" + +-#include "../libpng/png.h" ++#include + + #include +