[java-1.7.0-openjdk/f19] Adapted to aarch64 (zero) and added java-1.7.0-openjdk symlinks/alternatives

jiri vanek jvanek at fedoraproject.org
Wed Jul 24 10:28:31 UTC 2013


commit 96c908dba2da6d386afbf88084be0a979bc8eab5
Author: Jiri Vanek <jvanek at jvanek.redhat>
Date:   Wed Jul 24 12:27:49 2013 +0200

    Adapted to aarch64 (zero) and added java-1.7.0-openjdk symlinks/alternatives

 aarch64.patch           |  133 +++++++++++++++++++++++++++++++++++++++++++++++
 java-1.7.0-openjdk.spec |   61 +++++++++++++++++-----
 2 files changed, 181 insertions(+), 13 deletions(-)
---
diff --git a/aarch64.patch b/aarch64.patch
new file mode 100644
index 0000000..91a99bf
--- /dev/null
+++ b/aarch64.patch
@@ -0,0 +1,133 @@
+diff --git a/openjdk/corba/make/common/shared/Defs-java.gmk b/openjdk/corba/make/common/shared/Defs-java.gmk
+index f45a7a1..45ebe30 100644
+--- a/openjdk/corba/make/common/shared/Defs-java.gmk
++++ b/openjdk/corba/make/common/shared/Defs-java.gmk
+@@ -81,7 +81,7 @@ JAVAC_JVM_FLAGS =
+ ifeq ($(ARCH_DATA_MODEL), 32)
+   JAVAC_JVM_FLAGS    += -J-XX:ThreadStackSize=768
+ 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/openjdk/hotspot/src/os/linux/vm/os_linux.cpp b/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+index 2cb95f0..730dfd3 100644
+--- a/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
++++ b/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+@@ -387,7 +387,7 @@ void os::init_system_properties_values() {
+  *        ...
+  *        7: The default directories, normally /lib and /usr/lib.
+  */
+-#if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390))
++#if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390) || defined(AARCH64))
+ #define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
+ #else
+ #define DEFAULT_LIBPATH "/lib:/usr/lib"
+@@ -5393,8 +5393,12 @@ int os::fork_and_exec(char* cmd) {
+   // separate process to execve. Make a direct syscall to fork process.
+   // On IA64 there's no fork syscall, we have to use fork() and hope for
+   // the best...
++#ifdef __aarch64__
++  pid_t pid = vfork();
++#else
+   pid_t pid = NOT_IA64(syscall(__NR_fork);)
+               IA64_ONLY(fork();)
++#endif
+ 
+   if (pid < 0) {
+     // fork failed
+diff --git a/openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp b/openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
+index d952cb7..57c4900 100644
+--- a/openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
++++ b/openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
+@@ -32,7 +32,7 @@
+ //
+ 
+ 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);
+ #else
+diff --git a/openjdk/hotspot/src/share/vm/utilities/macros.hpp b/openjdk/hotspot/src/share/vm/utilities/macros.hpp
+index 5950702..2db1334 100644
+--- a/openjdk/hotspot/src/share/vm/utilities/macros.hpp
++++ b/openjdk/hotspot/src/share/vm/utilities/macros.hpp
+@@ -260,6 +260,14 @@
+ #define NOT_ARM(code) code
+ #endif
+ 
++#ifdef AARCH64
++#define AARCH64_ONLY(code) code
++#define NOT_AARCH64(code)
++#else
++#define AARCH64_ONLY(code)
++#define NOT_AARCH64(code) code
++#endif
++
+ #ifdef JAVASE_EMBEDDED
+ #define EMBEDDED_ONLY(code) code
+ #define NOT_EMBEDDED(code)
+diff --git a/openjdk/jdk/make/common/shared/Defs-java.gmk b/openjdk/jdk/make/common/shared/Defs-java.gmk
+index 986bea6..d0b5659 100644
+--- a/openjdk/jdk/make/common/shared/Defs-java.gmk
++++ b/openjdk/jdk/make/common/shared/Defs-java.gmk
+@@ -90,7 +90,7 @@ JAVAC_JVM_FLAGS =
+ ifeq ($(ARCH_DATA_MODEL), 32)
+   JAVAC_JVM_FLAGS    += -J-XX:ThreadStackSize=768
+ 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/openjdk/jdk/make/javax/sound/SoundDefs.gmk b/openjdk/jdk/make/javax/sound/SoundDefs.gmk
+index 0bb59e1..16650ea 100644
+--- a/openjdk/jdk/make/javax/sound/SoundDefs.gmk
++++ b/openjdk/jdk/make/javax/sound/SoundDefs.gmk
+@@ -118,6 +118,10 @@ else
+     CPPFLAGS += -DX_ARCH=X_SPARCV9
+   endif # ARCH sparcv9
+ 
++  ifeq ($(ARCH), aarch64)
++    CPPFLAGS += -DX_ARCH=X_AARCH64
++  endif # ARCH aarch64
++
+   ifeq ($(ARCH), amd64)
+     CPPFLAGS += -DX_ARCH=X_AMD64
+   endif # ARCH amd64
+diff --git a/openjdk/jdk/make/jdk_generic_profile.sh b/openjdk/jdk/make/jdk_generic_profile.sh
+index 7e0b8de..d27129f 100644
+--- a/openjdk/jdk/make/jdk_generic_profile.sh
++++ b/openjdk/jdk/make/jdk_generic_profile.sh
+@@ -269,7 +269,7 @@ if [ "${ZERO_BUILD}" = true ] ; then
+     i386|ppc|s390|sparc|arm|sh)
+       ARCH_DATA_MODEL=32
+       ;;
+-    amd64|ppc64|s390x|sparcv9|ia64|alpha)
++    amd64|ppc64|s390x|sparcv9|ia64|alpha|aarch64)
+       ARCH_DATA_MODEL=64
+       ;;
+     *)
+@@ -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|aarch64)
+       ZERO_ENDIANNESS=little
+       ;;
+     ppc*|s390*|sparc*|alpha)
+diff --git a/openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h b/openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h
+index ff6729f..9c5ddf6 100644
+--- a/openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h
++++ b/openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h
+@@ -51,6 +51,7 @@
+ #define X_S390          14
+ #define X_S390X         15
+ #define X_SH            16
++#define X_AARCH64       17
+ 
+ // **********************************
+ // Make sure you set X_PLATFORM and X_ARCH defines correctly.
diff --git a/java-1.7.0-openjdk.spec b/java-1.7.0-openjdk.spec
index 1e5f6bc..14bbc0d 100644
--- a/java-1.7.0-openjdk.spec
+++ b/java-1.7.0-openjdk.spec
@@ -4,12 +4,10 @@
 %global icedtea_version 2.3.10
 %global hg_tag icedtea-{icedtea_version}
 
-%global multilib_arches ppc64 sparc64 x86_64
+%global aarch64			aarch64 arm64 armv8
+%global multilib_arches %{power64} sparc64 x86_64 %{aarch64}
+%global jit_arches		%{ix86} x86_64 sparcv9 sparc64
 
-%global jit_arches %{ix86} x86_64 sparcv9 sparc64
-#this is even greater restriction then jit archs. It should have all modifications 
-#as jit_archs, and as addition also using 2.1 source
-%global arm_arches armv5tel armv7hl
 
 %ifarch x86_64
 %global archbuild amd64
@@ -20,7 +18,7 @@
 %global archinstall ppc
 %global archdef PPC
 %endif
-%ifarch ppc64
+%ifarch %{power64}
 %global archbuild ppc64
 %global archinstall ppc64
 %global archdef PPC
@@ -48,6 +46,11 @@
 %global archinstall arm
 %global archdef ARM
 %endif
+%ifarch %{aarch64}
+%global archbuild aarch64
+%global archinstall aarch64
+%global archdef AARCH64
+%endif
 # 32 bit sparc, optimized for v9
 %ifarch sparcv9
 %global archbuild sparc
@@ -136,7 +139,7 @@
 
 Name:    java-%{javaver}-%{origin}
 Version: %{javaver}.%{buildver}
-Release: %{icedtea_version}.10%{?dist}
+Release: %{icedtea_version}.11%{?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
@@ -267,6 +270,8 @@ Patch401: 657854-openjdk7.patch
 #Workaround RH902004
 Patch402: gstackbounds.patch
 Patch403: PStack-808293.patch
+
+Patch404: aarch64.patch
 # End of tmp patches
 
 BuildRequires: autoconf
@@ -316,7 +321,7 @@ BuildRequires: libffi-devel >= 3.0.10
 BuildRequires: openssl
 # execstack build requirement.
 # no prelink on ARM yet
-%ifnarch %{arm}
+%ifnarch %{arm} %{aarch64}
 BuildRequires: prelink
 %endif
 %ifarch %{jit_arches}
@@ -442,7 +447,7 @@ Although working pretty fine, there are known issues with accessibility on, so d
 
 %prep
 
-%ifarch %{arm_arches}
+%ifarch %{arm}
 %global source_num 100
 %else
 %global source_num 0
@@ -454,7 +459,7 @@ cp %{SOURCE2} .
 # OpenJDK patches
 
 # Rhino patch -- one default version (100) and one specific to 2.1.1 (400)
-%ifarch %{arm_arches}
+%ifarch %{arm}
 %patch400
 %else
 %patch100
@@ -541,13 +546,22 @@ tar xzf %{SOURCE7}
 %patch403
 %endif
 
+%ifarch %{aarch64}
+%patch404 -p1
+%endif
+
 %build
 # How many cpu's do we have?
+%ifarch aarch64
+# temporary until real hardware lands
+export NUM_PROC=1
+%else
 export NUM_PROC=`/usr/bin/getconf _NPROCESSORS_ONLN 2> /dev/null || :`
 export NUM_PROC=${NUM_PROC:-1}
+%endif
 
 # Build IcedTea and OpenJDK.
-%ifarch s390x sparc64 alpha ppc64
+%ifarch s390x sparc64 alpha %{power64} %{aarch64}
 export ARCH_DATA_MODEL=64
 %endif
 %ifarch alpha
@@ -608,7 +622,7 @@ make \
   ANT="/usr/bin/ant" \
   DISTRO_NAME="Fedora" \
   DISTRO_PACKAGE_VERSION="fedora-%{release}-%{_arch}" \
-%ifarch %{arm_arches}
+%ifarch %{arm}
   JDK_UPDATE_VERSION="03" \
 %else
   JDK_UPDATE_VERSION=`printf "%02d" %{buildver}` \
@@ -845,6 +859,9 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
     echo "" >> accessibility.properties
   popd
 
+#f19 only backward compatibility link
+ln -s  %{_jvmdir}/java-%{javaver}-%{origin} %{_jvmdir}/java-%{javaver}-%{origin}.%{_arch}
+
 
 # FIXME: identical binaries are copied, not linked. This needs to be
 # fixed upstream.
@@ -946,6 +963,9 @@ for X in %{origin} %{javaver} ; do
   fi
 done
 
+update-alternatives --install %{_jvmdir}/jre-%{javaver}_%{origin} jre_%{javaver}_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \
+--slave %{_jvmjardir}/jre-%{javaver}       jre_%{javaver}_%{origin}_exports      %{_jvmjardir}/%{uniquesuffix}
+
 update-desktop-database %{_datadir}/applications &> /dev/null || :
 
 /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
@@ -1121,6 +1141,9 @@ for X in %{origin} %{javaver} ; do
   fi
 done
 
+update-alternatives --install %{_jvmdir}/java-%{javaver}-%{origin} java_sdk_%{javaver}_%{origin} %{_jvmdir}/%{sdklnk} %{priority} \
+--slave %{_jvmjardir}/java-%{javaver}-%{origin}       java_sdk_%{javaver}_%{origin}_exports      %{_jvmjardir}/%{sdkdir}
+
 
 exit 0
 
@@ -1204,6 +1227,7 @@ exit 0
 %{_jvmdir}/%{jredir}/lib/%{archinstall}/client/
 %{_sysconfdir}/.java/
 %{_sysconfdir}/.java/.systemPrefs
+%{_jvmdir}/java-%{javaver}-%{origin}.%{_arch}
 
 
 %files devel
@@ -1237,7 +1261,7 @@ exit 0
 %{_mandir}/man1/javah-%{uniquesuffix}.1*
 %{_mandir}/man1/javap-%{uniquesuffix}.1*
 %{_mandir}/man1/jconsole-%{uniquesuffix}.1*
-%ifnarch %{arm_arches} # Only in u4+
+%ifnarch %{arm} # Only in u4+
 %{_mandir}/man1/jcmd-%{uniquesuffix}.1*
 %endif
 %{_mandir}/man1/jdb-%{uniquesuffix}.1*
@@ -1282,6 +1306,17 @@ exit 0
 %{_jvmdir}/%{jredir}/lib/accessibility.properties
 
 %changelog
+* Wed Jul 24 2013 Jiri Vanek <jvanek at redhat.com> - 1.7.0.25-2.3.10.11.f19
+- added support for aarch64
+ - aarch64 variable to be used in conditions where necessary
+ - patch404  aarch64.patch (author: msalter) to add aarch64 support to makefiles
+ (needs more tweeking!)
+- added new alternatives jre-1.7.0-openjd and java-1.7.0-openjdk to keep
+ backward comaptibility after uniquesuffix and add/remove alternatives approach
+- removed arm_arches variable in favour of standart arm one
+- added java-1.7.0-openjdk.arch symlink for backward-backward compatibility.
+ - _jvmdir/java-javaver-origin._arch
+
 * Mon Jul 22 2013 Jiri Vanek <jvanek at redhat.com> - 1.7.0.25-2.3.10.10.f19
 - removed _jvmdir/sdkdir from devel files
 


More information about the scm-commits mailing list