[java-1.7.0-openjdk] Adapted to aarch64 (zero) and added java-1.7.0-openjdk symlinks/alternatives
jiri vanek
jvanek at fedoraproject.org
Wed Jul 24 10:29:07 UTC 2013
commit 3b1a44d76013a4897f7b84c3db8b8942c2504410
Author: Jiri Vanek <jvanek at jvanek.redhat>
Date: Wed Jul 24 12:28:48 2013 +0200
Adapted to aarch64 (zero) and added java-1.7.0-openjdk symlinks/alternatives
aarch64.patch | 133 +++++++++++++++++++++++++++++++++++++++++++++++
java-1.7.0-openjdk.spec | 55 +++++++++++++++-----
2 files changed, 175 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 f135f5e..277c658 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
@@ -315,7 +320,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}
@@ -441,7 +446,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
@@ -453,7 +458,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
@@ -540,13 +545,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
@@ -607,7 +621,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}` \
@@ -945,6 +959,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 || :
@@ -1120,6 +1137,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
@@ -1236,7 +1256,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*
@@ -1281,6 +1301,15 @@ 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.f20
+- 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
+
* Mon Jul 22 2013 Jiri Vanek <jvanek at redhat.com> - 1.7.0.25-2.3.10.10.f20
- removed _jvmdir/sdkdir from devel files
More information about the scm-commits
mailing list