From 17ad8c05331b88a3c2bb03d27a2944a6777b1980 Mon Sep 17 00:00:00 2001 From: Jacek Konieczny Date: Tue, 20 Mar 2012 14:35:15 +0000 Subject: [PATCH] - Version: 1.9.13 Changed files: icedtea6-build.patch -> 1.2 icedtea6-ecj_single_thread.patch -> 1.2 icedtea6-libpath.patch -> 1.2 icedtea6-no_dtdtype_patch.patch -> 1.2 icedtea6-rpath.patch -> 1.2 icedtea6-system_tray.patch -> 1.2 icedtea6.spec -> 1.81 openjdk-__LEAF.patch -> 1.1 --- icedtea6-build.patch | 83 ------- icedtea6-ecj_single_thread.patch | 10 - icedtea6-libpath.patch | 28 +-- icedtea6-no_dtdtype_patch.patch | 14 -- icedtea6-rpath.patch | 6 +- icedtea6-system_tray.patch | 364 ------------------------------- icedtea6.spec | 84 +++---- openjdk-__LEAF.patch | 216 ++++++++++++++++++ 8 files changed, 275 insertions(+), 530 deletions(-) delete mode 100644 icedtea6-build.patch delete mode 100644 icedtea6-ecj_single_thread.patch delete mode 100644 icedtea6-no_dtdtype_patch.patch delete mode 100644 icedtea6-system_tray.patch create mode 100644 openjdk-__LEAF.patch diff --git a/icedtea6-build.patch b/icedtea6-build.patch deleted file mode 100644 index b98545b..0000000 --- a/icedtea6-build.patch +++ /dev/null @@ -1,83 +0,0 @@ ---- openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp.org 2012-02-11 15:04:57.730027726 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp 2012-02-11 15:05:11.420335355 +0100 -@@ -46,7 +46,7 @@ - } - }; - --// InterfaceSupport provides functionality used by the __LEAF and __ENTRY -+// InterfaceSupport provides functionality used by the __JDK_LEAF and __ENTRY - // macros. These macros are used to guard entry points into the VM and - // perform checks upon leave of the VM. - -@@ -391,7 +391,7 @@ - - // LEAF routines do not lock, GC or throw exceptions - --#define __LEAF(result_type, header) \ -+#define __JDK_LEAF(result_type, header) \ - TRACE_CALL(result_type, header) \ - debug_only(NoHandleMark __hm;) \ - /* begin of body */ -@@ -427,7 +427,7 @@ - - #define IRT_LEAF(result_type, header) \ - result_type header { \ -- __LEAF(result_type, header) \ -+ __JDK_LEAF(result_type, header) \ - debug_only(No_Safepoint_Verifier __nspv(true);) - - -@@ -461,7 +461,7 @@ - - #define JRT_LEAF(result_type, header) \ - result_type header { \ -- __LEAF(result_type, header) \ -+ __JDK_LEAF(result_type, header) \ - debug_only(JRT_Leaf_Verifier __jlv;) - - -@@ -521,7 +521,7 @@ - result_type JNICALL header { \ - JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ - assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ -- __LEAF(result_type, header) -+ __JDK_LEAF(result_type, header) - - - // Close the routine and the extern "C" -@@ -562,7 +562,7 @@ - extern "C" { \ - result_type JNICALL header { \ - VM_Exit::block_if_vm_exited(); \ -- __LEAF(result_type, header) -+ __JDK_LEAF(result_type, header) - - - #define JVM_END } } ---- openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c.org 2012-02-11 15:20:11.416431939 +0100 -+++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c 2012-02-11 15:26:24.905098592 +0100 -@@ -36,7 +36,7 @@ - { - png_uint_32 check; - -- SplashStream * stream = (SplashStream*)png_ptr->io_ptr; -+ SplashStream * stream = (SplashStream*)png_get_io_ptr(png_ptr); - check = stream->read(stream, data, length); - if (check != length) - png_error(png_ptr, "Read Error"); -@@ -71,12 +71,12 @@ - goto done; - } - -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - goto done; - } - -- png_ptr->io_ptr = io_ptr; -- png_ptr->read_data_fn = read_func; -+ png_get_io_ptr(png_ptr); -+ png_set_read_fn(png_ptr, NULL, read_func); - - png_set_sig_bytes(png_ptr, SIG_BYTES); /* we already read the 8 signature bytes */ - diff --git a/icedtea6-ecj_single_thread.patch b/icedtea6-ecj_single_thread.patch deleted file mode 100644 index 368c707..0000000 --- a/icedtea6-ecj_single_thread.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- icedtea6-1.8/javac.in.orig 2010-03-25 15:10:41.000000000 +0100 -+++ icedtea6-1.8/javac.in 2010-04-16 18:23:37.258022591 +0200 -@@ -36,6 +36,6 @@ - @ECJ@ -1.5 -nowarn $bcoption $NEW_ARGS - else - CLASSPATH=@ECJ_JAR@${CLASSPATH:+:}$CLASSPATH \ -- @JAVA@ org.eclipse.jdt.internal.compiler.batch.Main -1.5 -nowarn $bcoption $NEW_ARGS -+ @JAVA@ -Djdt.compiler.useSingleThread=true org.eclipse.jdt.internal.compiler.batch.Main -1.5 -nowarn $bcoption $NEW_ARGS - fi - diff --git a/icedtea6-libpath.patch b/icedtea6-libpath.patch index 66bab4e..1096ad0 100644 --- a/icedtea6-libpath.patch +++ b/icedtea6-libpath.patch @@ -1,14 +1,14 @@ ---- icedtea6-1.8/patches/hotspot/original/icedtea-6778662-lib64.patch.orig 2010-06-07 11:05:44.906948049 +0200 -+++ icedtea6-1.8/patches/hotspot/original/icedtea-6778662-lib64.patch 2010-06-07 11:06:24.229865044 +0200 -@@ -7,9 +7,9 @@ - -#define DEFAULT_LIBPATH "/lib:/usr/lib" - + - +#if defined(AMD64) || defined(_LP64) && (defined(PPC) || defined(S390)) --+#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib" -++#define DEFAULT_LIBPATH "/usr/lib64/java:/usr/lib64:/lib64:/lib:/usr/lib" - +#else --+#define DEFAULT_LIBPATH "/lib:/usr/lib" -++#define DEFAULT_LIBPATH "/usr/lib/java:/lib:/usr/lib" - +#endif - - #define EXTENSIONS_DIR "/lib/ext" +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig 2012-03-20 14:24:27.002521200 +0100 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2012-03-20 14:24:59.150654944 +0100 +@@ -286,9 +286,9 @@ + * 7: The default directories, normally /lib and /usr/lib. + */ + #if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390)) +-#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib" ++#define DEFAULT_LIBPATH "/usr/lib64/java:/usr/lib64:/lib64:/lib:/usr/lib" + #else +-#define DEFAULT_LIBPATH "/lib:/usr/lib" ++#define DEFAULT_LIBPATH "/usr/lib/java:/lib:/usr/lib" + #endif + + #define EXTENSIONS_DIR "/lib/ext" diff --git a/icedtea6-no_dtdtype_patch.patch b/icedtea6-no_dtdtype_patch.patch deleted file mode 100644 index 2456479..0000000 --- a/icedtea6-no_dtdtype_patch.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- icedtea6-1.8/Makefile.am.orig 2010-04-12 23:55:51.000000000 +0200 -+++ icedtea6-1.8/Makefile.am 2010-04-16 19:40:57.496933541 +0200 -@@ -408,11 +408,6 @@ - patches/ecj/getannotation-cast.patch \ - patches/ecj/override.patch - --if DTDTYPE_QNAME --ICEDTEA_ECJ_PATCHES += \ -- patches/ecj/icedtea-jaxws-getdtdtype.patch --endif -- - ICEDTEA_ECJ_PATCHES += $(DISTRIBUTION_ECJ_PATCHES) - - # OpenJDK build environment. diff --git a/icedtea6-rpath.patch b/icedtea6-rpath.patch index df30de3..2430b85 100644 --- a/icedtea6-rpath.patch +++ b/icedtea6-rpath.patch @@ -1,6 +1,6 @@ ---- icedtea6-1.8/Makefile.am~ 2010-04-12 23:55:51.754838172 +0200 -+++ icedtea6-1.8/Makefile.am 2010-04-18 20:37:41.955980316 +0200 -@@ -1546,6 +1546,7 @@ +--- icedtea6-1.9.13/Makefile.am.orig 2012-02-10 14:53:28.000000000 +0100 ++++ icedtea6-1.9.13/Makefile.am 2012-03-20 14:20:43.542323616 +0100 +@@ -1703,6 +1703,7 @@ $(GLIB_LIBS) \ $(GTK_LIBS) \ $(MOZILLA_LIBS)\ diff --git a/icedtea6-system_tray.patch b/icedtea6-system_tray.patch deleted file mode 100644 index 4a0cb00..0000000 --- a/icedtea6-system_tray.patch +++ /dev/null @@ -1,364 +0,0 @@ -diff -durN -x '*~' -x '*.orig' -x '*.rej' openjdk.orig/jdk/src/share/classes/java/awt/SystemTray.java openjdk/jdk/src/share/classes/java/awt/SystemTray.java ---- openjdk.orig/jdk/src/share/classes/java/awt/SystemTray.java 2010-02-17 04:14:21.000000000 +0100 -+++ openjdk/jdk/src/share/classes/java/awt/SystemTray.java 2010-11-27 19:29:43.661160073 +0100 -@@ -125,6 +125,8 @@ - - transient private SystemTrayPeer peer; - -+ private static final TrayIcon[] EMPTY_TRAY_ARRAY = new TrayIcon[0]; -+ - /** - * Private SystemTray constructor. - * -@@ -164,16 +166,14 @@ - if (GraphicsEnvironment.isHeadless()) { - throw new HeadlessException(); - } -+ -+ initializeSystemTrayIfNeeded(); -+ - if (!isSupported()) { - throw new UnsupportedOperationException( - "The system tray is not supported on the current platform."); - } - -- synchronized (SystemTray.class) { -- if (systemTray == null) { -- systemTray = new SystemTray(); -- } -- } - return systemTray; - } - -@@ -203,15 +203,18 @@ - * functionality is supported for the current platform - */ - public static boolean isSupported() { -- if (Toolkit.getDefaultToolkit() instanceof SunToolkit) { -- -- return ((SunToolkit)Toolkit.getDefaultToolkit()).isTraySupported(); -- -- } else if (Toolkit.getDefaultToolkit() instanceof HeadlessToolkit) { -- -- return ((HeadlessToolkit)Toolkit.getDefaultToolkit()).isTraySupported(); -+ Toolkit toolkit = Toolkit.getDefaultToolkit(); -+ if (toolkit instanceof SunToolkit) { -+ // connecting tray to native resource -+ initializeSystemTrayIfNeeded(); -+ return ((SunToolkit)toolkit).isTraySupported(); -+ } else if (toolkit instanceof HeadlessToolkit) { -+ // skip initialization as the init routine -+ // throws HeadlessException -+ return ((HeadlessToolkit)toolkit).isTraySupported(); -+ } else { -+ return false; - } -- return false; - } - - /** -@@ -323,7 +326,7 @@ - if (icons != null) { - return (TrayIcon[])icons.toArray(new TrayIcon[icons.size()]); - } -- return new TrayIcon[0]; -+ return EMPTY_TRAY_ARRAY; - } - - /** -@@ -343,19 +346,32 @@ - } - - /** -- * Adds a {@code PropertyChangeListener} to the listener list for a -- * specific property. Currently supported property: -- * -- *

-+ * Adds a {@code PropertyChangeListener} to the list of listeners for the -+ * specific property. The following properties are currently supported: -+ *

-+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ *
PropertyDescription
{@code trayIcons}The {@code SystemTray}'s array of {@code TrayIcon} objects. -+ * The array is accessed via the {@link #getTrayIcons} method.
-+ * This property is changed when a tray icon is added to (or removed -+ * from) the system tray.
For example, this property is changed -+ * when the system tray becomes unavailable on the desktop
-+ * and the tray icons are automatically removed.
{@code systemTray}This property contains {@code SystemTray} instance when the system tray -+ * is available or null otherwise.
This property is changed -+ * when the system tray becomes available or unavailable on the desktop.
-+ * The property is accessed by the {@link #getSystemTray} method.
-+ *

- * The {@code listener} listens to property changes only in this context. - *

- * If {@code listener} is {@code null}, no exception is thrown -@@ -462,7 +478,12 @@ - - synchronized void addNotify() { - if (peer == null) { -- peer = ((SunToolkit)Toolkit.getDefaultToolkit()).createSystemTray(this); -+ Toolkit toolkit = Toolkit.getDefaultToolkit(); -+ if (toolkit instanceof SunToolkit) { -+ peer = ((SunToolkit)Toolkit.getDefaultToolkit()).createSystemTray(this); -+ } else if (toolkit instanceof HeadlessToolkit) { -+ peer = ((HeadlessToolkit)Toolkit.getDefaultToolkit()).createSystemTray(this); -+ } - } - } - -@@ -472,4 +493,12 @@ - security.checkPermission(SecurityConstants.ACCESS_SYSTEM_TRAY_PERMISSION); - } - } -+ -+ private static void initializeSystemTrayIfNeeded() { -+ synchronized (SystemTray.class) { -+ if (systemTray == null) { -+ systemTray = new SystemTray(); -+ } -+ } -+ } - } -diff -durN -x '*~' -x '*.orig' -x '*.rej' openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XMSelection.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XMSelection.java ---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XMSelection.java 2010-02-17 04:14:46.000000000 +0100 -+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XMSelection.java 2010-11-27 19:29:43.661160073 +0100 -@@ -254,7 +254,7 @@ - } - - public synchronized void removeSelectionListener(XMSelectionListener listener) { -- if (listeners == null) { -+ if (listeners != null) { - listeners.remove(listener); - } - } -diff -durN -x '*~' -x '*.orig' -x '*.rej' openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java ---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java 2010-02-17 04:14:46.000000000 +0100 -+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java 2010-11-27 19:29:43.661160073 +0100 -@@ -27,47 +27,94 @@ - - import java.awt.*; - import java.awt.peer.SystemTrayPeer; -+import java.lang.reflect.Method; -+import java.lang.reflect.InvocationTargetException; -+import java.util.logging.Logger; -+import sun.awt.SunToolkit; -+import sun.awt.AppContext; -+ -+public class XSystemTrayPeer implements SystemTrayPeer, XMSelectionListener { -+ private static final Logger log = Logger.getLogger("sun.awt.X11.XSystemTrayPeer"); - --public class XSystemTrayPeer implements SystemTrayPeer { - SystemTray target; -- long tray_owner; - static XSystemTrayPeer peerInstance; // there is only one SystemTray peer per application - -- final static XAtom _NET_SYSTEM_TRAY = XAtom.get("_NET_SYSTEM_TRAY_S0"); -- final static XAtom _XEMBED_INFO = XAtom.get("_XEMBED_INFO"); -- final static XAtom _NET_SYSTEM_TRAY_OPCODE = XAtom.get("_NET_SYSTEM_TRAY_OPCODE"); -- final static XAtom _NET_WM_ICON = XAtom.get("_NET_WM_ICON"); -- final static long SYSTEM_TRAY_REQUEST_DOCK = 0; -+ private volatile boolean available; -+ private final XMSelection selection = new XMSelection("_NET_SYSTEM_TRAY"); -+ -+ private static final Method firePropertyChangeMethod = -+ XToolkit.getMethod(SystemTray.class, "firePropertyChange", new Class[] {String.class, Object.class, Object.class}); -+ private static final Method addNotifyMethod = XToolkit.getMethod(TrayIcon.class, "addNotify", null); -+ private static final Method removeNotifyMethod = XToolkit.getMethod(TrayIcon.class, "removeNotify", null); -+ -+ private static final int SCREEN = 0; -+ private static final String SYSTEM_TRAY_PROPERTY_NAME = "systemTray"; -+ private static final XAtom _NET_SYSTEM_TRAY = XAtom.get("_NET_SYSTEM_TRAY_S" + SCREEN); -+ private static final XAtom _XEMBED_INFO = XAtom.get("_XEMBED_INFO"); -+ private static final XAtom _NET_SYSTEM_TRAY_OPCODE = XAtom.get("_NET_SYSTEM_TRAY_OPCODE"); -+ private static final XAtom _NET_WM_ICON = XAtom.get("_NET_WM_ICON"); -+ private static final long SYSTEM_TRAY_REQUEST_DOCK = 0; - - XSystemTrayPeer(SystemTray target) { - this.target = target; - peerInstance = this; - -- XToolkit.awtLock(); -- try { -- tray_owner = XlibWrapper.XGetSelectionOwner(XToolkit.getDisplay(), _NET_SYSTEM_TRAY.getAtom()); -- } finally { -- XToolkit.awtUnlock(); -+ selection.addSelectionListener(this); -+ -+ long selection_owner = selection.getOwner(SCREEN); -+ available = (selection_owner != XConstants.None); -+ -+ log.fine(" check if system tray is available. selection owner: " + selection_owner); -+ } -+ -+ public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) { -+ if (screen != SCREEN) { -+ return; -+ } -+ if (!available) { -+ available = true; -+ firePropertyChange(SYSTEM_TRAY_PROPERTY_NAME, null, target); -+ } else { -+ removeTrayPeers(); - } -+ createTrayPeers(); -+ } -+ -+ public void ownerDeath(int screen, XMSelection sel, long deadOwner) { -+ if (screen != SCREEN) { -+ return; -+ } -+ if (available) { -+ available = false; -+ firePropertyChange(SYSTEM_TRAY_PROPERTY_NAME, target, null); -+ removeTrayPeers(); -+ } -+ } -+ -+ public void selectionChanged(int screen, XMSelection sel, long owner, XPropertyEvent event) { - } - - public Dimension getTrayIconSize() { - return new Dimension(XTrayIconPeer.TRAY_ICON_HEIGHT, XTrayIconPeer.TRAY_ICON_WIDTH); - } - -+ boolean isAvailable() { -+ return available; -+ } -+ -+ void dispose() { -+ selection.removeSelectionListener(this); -+ } -+ - // *********************************************************************** - // *********************************************************************** - - void addTrayIcon(XTrayIconPeer tiPeer) throws AWTException { -- tray_owner = 0; -- XToolkit.awtLock(); -- try { -- tray_owner = XlibWrapper.XGetSelectionOwner(XToolkit.getDisplay(), _NET_SYSTEM_TRAY.getAtom()); -- } finally { -- XToolkit.awtUnlock(); -- } -+ long selection_owner = selection.getOwner(SCREEN); - -- if (tray_owner == 0) { -+ log.fine(" send SYSTEM_TRAY_REQUEST_DOCK message to owner: " + selection_owner); -+ -+ if (selection_owner == XConstants.None) { - throw new AWTException("TrayIcon couldn't be displayed."); - } - -@@ -77,7 +124,7 @@ - - _XEMBED_INFO.setAtomData(tray_window, data_ptr, data.length); - -- sendMessage(tray_owner, SYSTEM_TRAY_REQUEST_DOCK, tray_window, 0, 0); -+ sendMessage(selection_owner, SYSTEM_TRAY_REQUEST_DOCK, tray_window, 0, 0); - } - - void sendMessage(long win, long msg, long data1, long data2, long data3) { -@@ -109,4 +156,51 @@ - static XSystemTrayPeer getPeerInstance() { - return peerInstance; - } -+ -+ private void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) { -+ Runnable runnable = new Runnable() { -+ public void run() { -+ Object[] args = new Object[] {propertyName, oldValue, newValue}; -+ invokeMethod(firePropertyChangeMethod, target, args); -+ } -+ }; -+ invokeOnEachAppContext(runnable); -+ } -+ -+ private void createTrayPeers() { -+ invokeOnEachTrayIcon(addNotifyMethod); -+ } -+ -+ private void removeTrayPeers() { -+ invokeOnEachTrayIcon(removeNotifyMethod); -+ } -+ -+ private void invokeOnEachTrayIcon(final Method method) { -+ Runnable runnable = new Runnable() { -+ public void run() { -+ TrayIcon[] icons = target.getTrayIcons(); -+ for (TrayIcon ti : icons) { -+ invokeMethod(method, ti, (Object[]) null); -+ } -+ } -+ }; -+ invokeOnEachAppContext(runnable); -+ } -+ -+ private void invokeMethod(Method method, Object obj, Object[] args) { -+ try{ -+ method.invoke(obj, args); -+ } catch (InvocationTargetException e){ -+ e.printStackTrace(); -+ } catch (IllegalAccessException e) { -+ e.printStackTrace(); -+ } -+ } -+ -+ private void invokeOnEachAppContext(Runnable runnable) { -+ for (AppContext appContext : AppContext.getAppContexts()) { -+ SunToolkit.invokeLaterOnAppContext(appContext, runnable); -+ } -+ } -+ - } -diff -durN -x '*~' -x '*.orig' -x '*.rej' openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java ---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java 2010-11-27 18:09:50.051823664 +0100 -+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java 2010-11-27 19:30:50.372032878 +0100 -@@ -300,6 +300,14 @@ - } - } - }); -+ Runtime.getRuntime().addShutdownHook(new Thread() { -+ public void run() { -+ XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance(); -+ if (peer != null) { -+ peer.dispose(); -+ } -+ } -+ }); - } - - static String getCorrectXIDString(String val) { -@@ -1066,10 +1074,9 @@ - } - - public boolean isTraySupported() { -- int wm = XWM.getWMID(); -- if (wm == XWM.METACITY_WM || wm == XWM.KDE2_WM) -- { -- return true; -+ XSystemTrayPeer peer = XSystemTrayPeer.getPeerInstance(); -+ if (peer != null) { -+ return peer.isAvailable(); - } - return false; - } diff --git a/icedtea6.spec b/icedtea6.spec index 81aa8f9..e437bb1 100644 --- a/icedtea6.spec +++ b/icedtea6.spec @@ -1,10 +1,12 @@ # TODO: # - install .ttf fonts (same as in sun-java-base-jre-X11 package) or configure # it to use system fonts (is it possible?). +# - prepare the icedtea-web package to provide the plugin and WebStart %bcond_with bootstrap # don't use gcj, use an installed icedtea6 instead -%bcond_without plugin # don't build browser plugin -%bcond_without nss # don't use NSS +%bcond_with plugin # build browser plugin (icedtea-web is recommended instead) +%bcond_with webstart # build webstart (icedtea-web is recommended instead) +%bcond_without nss # don't use NSS %if %{with bootstrap} %define use_jdk java-gcj-compat @@ -20,29 +22,27 @@ Summary: OpenJDK and GNU Classpath code Summary(pl.UTF-8): Kod OpenJDK i GNU Classpath Name: icedtea6 -Version: 1.8.3 -Release: 7 +Version: 1.9.13 +Release: 0.1 License: GPL v2 Group: Development/Languages/Java Source0: http://icedtea.classpath.org/download/source/%{name}-%{version}.tar.gz -# Source0-md5: 879bdc0160da9e0d0210bda75c8f6054 +# Source0-md5: 6a5c0d0ad2fe4bdb6cd851bcc24eac31 # following sources should match those in Makefile.am -Source1: http://download.java.net/openjdk/jdk6/promoted/b18/openjdk-6-src-b18-16_feb_2010.tar.gz -# Source1-md5: 94db01691ab38f98b7d42b2ebf4d5c0b -Source2: http://kenai.com/projects/jdk6-drops/downloads/download/jdk6-jaxws-2009_10_27.zip -# Source2-md5: 3ea5728706169498b722b898a1008acf -Source3: http://kenai.com/projects/jdk6-drops/downloads/download/jdk6-jaf-2009_10_27.zip -# Source3-md5: 7a50bb540a27cdd0001885630088b758 -Source4: https://jaxp.dev.java.net/files/documents/913/147329/jdk6-jaxp-2009_10_13.zip -# Source4-md5: a2f7b972124cd776ff71e7754eb9a429 +Source1: http://download.java.net/openjdk/jdk6/promoted/b20/openjdk-6-src-b20-21_jun_2010.tar.gz +# Source1-md5: 0b36adbf67e4f261e1b827ed4be4f447 +Source2: http://icedtea.classpath.org/download/drops/jdk6-jaxws-b20.zip +# Source2-md5: 91adfd41e6f001add4f92ae31216b1e3 +Source3: http://icedtea.classpath.org/download/drops/jdk6-jaf-b20.zip +# Source3-md5: bc95c133620bd68c161cac9891592901 +Source4: http://icedtea.classpath.org/download/drops/jdk6-jaxp-b20.zip +# Source4-md5: 22e95fbdb9fb7d8b6b6fc0a1d76d1fbd Patch0: %{name}-i486.patch -Patch1: %{name}-ecj_single_thread.patch -Patch2: %{name}-no_dtdtype_patch.patch -Patch3: %{name}-rpath.patch -Patch4: %{name}-libpath.patch -Patch5: %{name}-system_tray.patch -Patch6: %{name}-xul.patch -Patch7: %{name}-build.patch +Patch1: %{name}-rpath.patch +Patch2: %{name}-xul.patch +Patch3: %{name}-libpath.patch +# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7103224 +Patch4: openjdk-__LEAF.patch URL: http://icedtea.classpath.org/wiki/Main_Page BuildRequires: alsa-lib-devel BuildRequires: ant-nodeps @@ -399,24 +399,14 @@ Wtyczka z obsługą Javy dla przeglądarek WWW. %setup -q %patch0 -p1 - -# workaround for an ECJ bug -#%patch1 -p1 - -%patch2 -p1 - # rpath so IcedTeaPlugin.so can find libxul.so and libxpcom.so -%patch3 -p1 - -%patch4 -p1 +%patch1 -p1 +%patch2 -p1 # patches to applied to the extracted sources mkdir -p pld-patches -cp "%{PATCH5}" pld-patches - -%patch6 -p1 - -cp "%{PATCH7}" pld-patches +cp "%{PATCH3}" pld-patches +cp "%{PATCH4}" pld-patches # let the build system extract the sources where it wants them mkdir drops @@ -424,6 +414,7 @@ ln -s %{SOURCE1} . ln -s %{SOURCE2} drops ln -s %{SOURCE3} drops ln -s %{SOURCE4} drops +ln -s %{SOURCE5} drops %build # Make sure we have /proc mounted - otherwise idlc will fail later. @@ -451,6 +442,11 @@ export PATH="$JAVA_HOME/bin:$PATH" --enable-plugin \ %else --disable-plugin \ +%endif +%if %{with webstart} + --enable-webstart \ +%else + --disable-webstart \ %endif %{!?with_nss:--disable-nss} \ --with-xalan2-jar=%{_javadir}/xalan.jar \ @@ -480,7 +476,7 @@ install -d $RPM_BUILD_ROOT{%{_bindir},%{dstdir},%{_mandir}/ja,%{_browserpluginsd $RPM_BUILD_ROOT%{_sysconfdir}/%{name} # install the 'JDK image', it contains the JRE too -cp -a openjdk/build/linux-*/j2sdk-image/* $RPM_BUILD_ROOT%{dstdir} +cp -a openjdk.build/j2sdk-image/* $RPM_BUILD_ROOT%{dstdir} # convenience symlinks without version number ln -s %{dstreldir} $RPM_BUILD_ROOT%{_jvmdir}/%{name} @@ -636,8 +632,8 @@ rm -rf $RPM_BUILD_ROOT %files jdk-base %defattr(644,root,root,755) -%doc openjdk/build/linux-*/j2sdk-image/THIRD_PARTY_README -%doc openjdk/build/linux-*/j2sdk-image/ASSEMBLY_EXCEPTION +%doc openjdk.build/j2sdk-image/THIRD_PARTY_README +%doc openjdk.build/j2sdk-image/ASSEMBLY_EXCEPTION %dir %{dstdir} %{_jvmdir}/%{name} %attr(755,root,root) %{dstdir}/bin/appletviewer @@ -686,7 +682,7 @@ rm -rf $RPM_BUILD_ROOT %files jre %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/java -%attr(755,root,root) %{_bindir}/javaws +%{?with_webstart:%attr(755,root,root) %{_bindir}/javaws} %attr(755,root,root) %{_bindir}/keytool %attr(755,root,root) %{_bindir}/orbd %attr(755,root,root) %{_bindir}/pack200 @@ -696,7 +692,7 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{_bindir}/tnameserv %attr(755,root,root) %{_bindir}/unpack200 %{_mandir}/man1/java.1* -%{_mandir}/man1/javaws.1* +%{?with_webstart:%{_mandir}/man1/javaws.1*} %{_mandir}/man1/keytool.1* %{_mandir}/man1/orbd.1* %{_mandir}/man1/pack200.1* @@ -707,7 +703,7 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/unpack200.1* %lang(ja) %{_mandir}/ja/man1/java.1* %ifnarch x86_64 -%lang(ja) %{_mandir}/ja/man1/javaws.1* +%{?with_webstart:%lang(ja) %{_mandir}/ja/man1/javaws.1*} %endif %lang(ja) %{_mandir}/ja/man1/keytool.1* %lang(ja) %{_mandir}/ja/man1/orbd.1* @@ -720,8 +716,8 @@ rm -rf $RPM_BUILD_ROOT %files jre-base %defattr(644,root,root,755) -%doc openjdk/build/linux-*/j2sdk-image/THIRD_PARTY_README -%doc openjdk/build/linux-*/j2sdk-image/ASSEMBLY_EXCEPTION +%doc openjdk.build/j2sdk-image/THIRD_PARTY_README +%doc openjdk.build/j2sdk-image/ASSEMBLY_EXCEPTION %dir %{_sysconfdir}/%{name} %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/* %dir %{dstdir} @@ -731,8 +727,10 @@ rm -rf $RPM_BUILD_ROOT %dir %{dstdir}/bin %attr(755,root,root) %{jredir}/bin/java %attr(755,root,root) %{dstdir}/bin/java +%if %{with webstart} %attr(755,root,root) %{jredir}/bin/javaws %attr(755,root,root) %{dstdir}/bin/javaws +%endif %attr(755,root,root) %{jredir}/bin/keytool %attr(755,root,root) %{dstdir}/bin/keytool %attr(755,root,root) %{jredir}/bin/orbd @@ -804,8 +802,10 @@ rm -rf $RPM_BUILD_ROOT %{jredir}/lib/security %{jredir}/lib/zi # +%if %{with webstart} %{jredir}/lib/about.jar %{jredir}/lib/about.jnlp +%endif %{jredir}/lib/calendars.properties %{jredir}/lib/charsets.jar %{jredir}/lib/classlist diff --git a/openjdk-__LEAF.patch b/openjdk-__LEAF.patch new file mode 100644 index 0000000..6baace1 --- /dev/null +++ b/openjdk-__LEAF.patch @@ -0,0 +1,216 @@ + +7103224: collision between __LEAF define in interfaceSupport.hpp and /usr/include/sys/cdefs.h with gcc +Reviewed-by: never +Contributed-by: Omair Majid + +--- openjdk.orig/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -107,7 +107,7 @@ extern "C" { + if (env != xenv) { \ + NativeReportJNIFatalError(thr, warn_wrong_jnienv); \ + } \ +- __ENTRY(result_type, header, thr) ++ VM_ENTRY_BASE(result_type, header, thr) + + + #define UNCHECKED() (unchecked_jni_NativeInterface) +--- openjdk.orig/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 08:17:15 2011 -0700 +@@ -426,7 +426,7 @@ struct jvmtiInterface_1_ jvmti + ThreadInVMfromNative __tiv(current_thread); + +- __ENTRY(jvmtiError, ++ VM_ENTRY_BASE(jvmtiError, + + , current_thread) + +--- openjdk.orig/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -173,7 +173,7 @@ JvmtiEnv::GetThreadLocalStorage(jthread + // from native so as to resolve the jthread. + + ThreadInVMfromNative __tiv(current_thread); +- __ENTRY(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread) ++ VM_ENTRY_BASE(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread) + debug_only(VMNativeEntryWrapper __vew;) + + oop thread_oop = JNIHandles::resolve_external_guard(thread); +--- openjdk.orig/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 08:17:15 2011 -0700 +@@ -373,7 +373,7 @@ JvmtiExport::get_jvmti_interface(JavaVM + JavaThread* current_thread = (JavaThread*) ThreadLocalStorage::thread(); + // transition code: native to VM + ThreadInVMfromNative __tiv(current_thread); +- __ENTRY(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread) ++ VM_ENTRY_BASE(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread) + debug_only(VMNativeEntryWrapper __vew;) + + JvmtiEnv *jvmti_env = JvmtiEnv::create_a_jvmti(version); +--- openjdk.orig/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 04:07:20 2011 -0700 ++++ openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 08:17:15 2011 -0700 +@@ -72,9 +72,9 @@ class HandleMarkCleaner: public StackObj + } + }; + +-// InterfaceSupport provides functionality used by the __LEAF and __ENTRY +-// macros. These macros are used to guard entry points into the VM and +-// perform checks upon leave of the VM. ++// InterfaceSupport provides functionality used by the VM_LEAF_BASE and ++// VM_ENTRY_BASE macros. These macros are used to guard entry points into ++// the VM and perform checks upon leave of the VM. + + + class InterfaceSupport: AllStatic { +@@ -433,7 +433,7 @@ class RuntimeHistogramElement : public H + + // LEAF routines do not lock, GC or throw exceptions + +-#define __LEAF(result_type, header) \ ++#define VM_LEAF_BASE(result_type, header) \ + TRACE_CALL(result_type, header) \ + debug_only(NoHandleMark __hm;) \ + /* begin of body */ +@@ -441,7 +441,7 @@ class RuntimeHistogramElement : public H + + // ENTRY routines may lock, GC and throw exceptions + +-#define __ENTRY(result_type, header, thread) \ ++#define VM_ENTRY_BASE(result_type, header, thread) \ + TRACE_CALL(result_type, header) \ + HandleMarkCleaner __hm(thread); \ + Thread* THREAD = thread; \ +@@ -450,7 +450,7 @@ class RuntimeHistogramElement : public H + + // QUICK_ENTRY routines behave like ENTRY but without a handle mark + +-#define __QUICK_ENTRY(result_type, header, thread) \ ++#define VM_QUICK_ENTRY_BASE(result_type, header, thread) \ + TRACE_CALL(result_type, header) \ + debug_only(NoHandleMark __hm;) \ + Thread* THREAD = thread; \ +@@ -463,20 +463,20 @@ class RuntimeHistogramElement : public H + #define IRT_ENTRY(result_type, header) \ + result_type header { \ + ThreadInVMfromJava __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + + #define IRT_LEAF(result_type, header) \ + result_type header { \ +- __LEAF(result_type, header) \ ++ VM_LEAF_BASE(result_type, header) \ + debug_only(No_Safepoint_Verifier __nspv(true);) + + + #define IRT_ENTRY_NO_ASYNC(result_type, header) \ + result_type header { \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + // Another special case for nmethod_entry_point so the nmethod that the +@@ -487,7 +487,7 @@ class RuntimeHistogramElement : public H + result_type header { \ + nmethodLocker _nmlock(nm); \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + #define IRT_END } + +@@ -497,20 +497,20 @@ class RuntimeHistogramElement : public H + #define JRT_ENTRY(result_type, header) \ + result_type header { \ + ThreadInVMfromJava __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + + #define JRT_LEAF(result_type, header) \ + result_type header { \ +- __LEAF(result_type, header) \ ++ VM_LEAF_BASE(result_type, header) \ + debug_only(JRT_Leaf_Verifier __jlv;) + + + #define JRT_ENTRY_NO_ASYNC(result_type, header) \ + result_type header { \ + ThreadInVMfromJavaNoAsyncException __tiv(thread); \ +- __ENTRY(result_type, header, thread) \ ++ VM_ENTRY_BASE(result_type, header, thread) \ + debug_only(VMEntryWrapper __vew;) + + // Same as JRT Entry but allows for return value after the safepoint +@@ -543,11 +543,11 @@ extern "C" { + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + // Ensure that the VMNativeEntryWrapper constructor, which can cause +-// a GC, is called outside the NoHandleMark (set via __QUICK_ENTRY). ++// a GC, is called outside the NoHandleMark (set via VM_QUICK_ENTRY_BASE). + #define JNI_QUICK_ENTRY(result_type, header) \ + extern "C" { \ + result_type JNICALL header { \ +@@ -555,7 +555,7 @@ extern "C" { + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __QUICK_ENTRY(result_type, header, thread) ++ VM_QUICK_ENTRY_BASE(result_type, header, thread) + + + #define JNI_LEAF(result_type, header) \ +@@ -563,7 +563,7 @@ extern "C" { + result_type JNICALL header { \ + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \ +- __LEAF(result_type, header) ++ VM_LEAF_BASE(result_type, header) + + + // Close the routine and the extern "C" +@@ -579,7 +579,7 @@ extern "C" { + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + #define JVM_ENTRY_NO_ENV(result_type, header) \ +@@ -588,7 +588,7 @@ extern "C" { + JavaThread* thread = (JavaThread*)ThreadLocalStorage::thread(); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __ENTRY(result_type, header, thread) ++ VM_ENTRY_BASE(result_type, header, thread) + + + #define JVM_QUICK_ENTRY(result_type, header) \ +@@ -597,14 +597,14 @@ extern "C" { + JavaThread* thread=JavaThread::thread_from_jni_environment(env); \ + ThreadInVMfromNative __tiv(thread); \ + debug_only(VMNativeEntryWrapper __vew;) \ +- __QUICK_ENTRY(result_type, header, thread) ++ VM_QUICK_ENTRY_BASE(result_type, header, thread) + + + #define JVM_LEAF(result_type, header) \ + extern "C" { \ + result_type JNICALL header { \ + VM_Exit::block_if_vm_exited(); \ +- __LEAF(result_type, header) ++ VM_LEAF_BASE(result_type, header) + + + #define JVM_END } } + -- 2.44.0