如何在Fedora/RHEL/CentOS上编译OpenJ9?

如何在Fedora/RHEL/CentOS上编译OpenJ9?,j9,J9,默认使用Docker,但我希望编译时不使用Docker;具体来说,在RHEL 7.3上。我通过查看并对基于Fedora的系统进行一些更改,实现了这一点: sudo yum install autoconf ca-certificates ccache cpio file gcc-c++ gcc git \ git-core alsa-lib-devel cups-devel elfutils-devel \ freetype-d

默认使用Docker,但我希望编译时不使用Docker;具体来说,在RHEL 7.3上。

我通过查看并对基于Fedora的系统进行一些更改,实现了这一点:

sudo yum install autoconf ca-certificates ccache cpio file gcc-c++ gcc git \
                 git-core alsa-lib-devel cups-devel elfutils-devel \
                 freetype-devel numactl-devel libX11-devel libXext-devel \
                 libXrender-devel libXt-devel libXtst-devel make \
                 java-1.8.0-openjdk-devel pkgconfig coreutils \
                 openssh-clients unzip wget zip
# Put java-1.8.0-openjdk-devel at the front of the PATH; for example:
export PATH=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/bin/:${PATH}
cd ~/
wget https://sourceforge.net/projects/freemarker/files/freemarker/2.3.8/freemarker-2.3.8.tar.gz/download -O freemarker.tgz
tar -xzf freemarker.tgz freemarker-2.3.8/lib/freemarker.jar --strip=2
rm -f freemarker.tgz
git clone https://github.com/ibmruntimes/openj9-openjdk-jdk9
cd openj9-openjdk-jdk9
bash ./get_source.sh
# I'm on RHEL 7.3 with git 1.8 which doesn't support -C ${DIR}, so that
# needs to change to --work-tree=${DIR} --git-dir=${DIR}/.git
# Apply the patch at the bottom of this answer now before continuing.
bash ./configure --with-freemarker-jar=~/freemarker.jar
make all
[…]
已完成在配置“linux-x86_64-normal-server-release”中构建目标“all”

openjdk版本“9-internal”
OpenJDK运行时环境(build 9-internal+0-adhoc.kevin.openj9-OpenJDK-jdk9)
Eclipse OpenJ9虚拟机(构建2.9,JRE 9 Linux amd64-64压缩参考20170915_u000000(启用JIT,启用AOT)
J9VM-ead54ef
JIT-ead54ef
OMR-617de12
OpenJDK-f38f4d6(基于jdk-9+181)

旧版Git 1.8的修补程序:

diff --git a/closed/OpenJ9.gmk b/closed/OpenJ9.gmk
index 977fb40..2d19477 100755
--- a/closed/OpenJ9.gmk
+++ b/closed/OpenJ9.gmk
@@ -27,8 +27,8 @@ ifeq (,$(BUILD_ID))
  BUILD_ID := 000000
endif

-OPENJ9_SHA    := $(shell git -C $(OPENJ9_TOPDIR)    rev-parse --short HEAD)
-OPENJ9OMR_SHA := $(shell git -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
+OPENJ9_SHA    := $(shell git --work-tree=$(OPENJ9_TOPDIR) --git-dir=$(OPENJ9_TOPDIR)/.git    rev-parse --short HEAD)
+OPENJ9OMR_SHA := $(shell git --work-tree=$(OPENJ9OMR_TOPDIR) --git-dir=$(OPENJ9OMR_TOPDIR)/.git rev-parse --short HEAD)
ifeq (,$(OPENJ9_SHA))
  $(error Could not determine OpenJ9 SHA)
endif
diff --git a/closed/autoconf/custom-hook.m4 b/closed/autoconf/custom-hook.m4
index 30d8a98..ed8e6af 100644
--- a/closed/autoconf/custom-hook.m4
+++ b/closed/autoconf/custom-hook.m4
@@ -127,8 +127,8 @@ AC_DEFUN_ONCE([OPENJ9_PLATFORM_SETUP],

AC_DEFUN_ONCE([OPENJDK_VERSION_DETAILS],
[
-  OPENJDK_SHA=`git -C $SRC_ROOT rev-parse --short HEAD`
-  OPENJDK_TAG=`git -C $SRC_ROOT describe --abbrev=0 --tags`
+  OPENJDK_SHA=`git --work-tree=$SRC_ROOT --git-dir=$SRC_ROOT/.git rev-parse --short HEAD`
+  OPENJDK_TAG=`git --work-tree=$SRC_ROOT --git-dir=$SRC_ROOT/.git describe --abbrev=0 --tags`
  AC_SUBST(OPENJDK_SHA)
  AC_SUBST(OPENJDK_TAG)
])
diff --git a/closed/make/ReleaseFile.gmk b/closed/make/ReleaseFile.gmk
index d6be94c..2feca5b 100644
--- a/closed/make/ReleaseFile.gmk
+++ b/closed/make/ReleaseFile.gmk
@@ -16,8 +16,8 @@
# 2 along with this work; if not, see <http://www.gnu.org/licenses/>.
# 
# ===========================================================================
-
-COMPANY_NAME := Eclipse OpenJ9
-OPENJ9OMR_SHA := $(shell git -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
-OPENJ9_SHA  := $(shell git -C $(OPENJ9_TOPDIR)  rev-parse --short HEAD)
-SOURCE_REVISION = OpenJDK:$(OPENJDK_SHA) OpenJ9:$(OPENJ9_SHA) OMR:$(OPENJ9OMR_SHA)
+
+COMPANY_NAME := Eclipse OpenJ9
+OPENJ9OMR_SHA := $(shell git --work-tree=$(OPENJ9OMR_TOPDIR) --git-dir=$(OPENJ9OMR_TOPDIR)/.git rev-parse --short HEAD)
+OPENJ9_SHA  := $(shell git --work-tree=$(OPENJ9_TOPDIR) --git-dir=$(OPENJ9_TOPDIR)/.git  rev-parse --short HEAD)
+SOURCE_REVISION = OpenJDK:$(OPENJDK_SHA) OpenJ9:$(OPENJ9_SHA) OMR:$(OPENJ9OMR_SHA)
diff--git a/closed/OpenJ9.gmk b/closed/OpenJ9.gmk
索引977fb40..2d19477 100755
---a/closed/OpenJ9.gmk
+++b/closed/OpenJ9.gmk
@@-27,8+27,8@@ifeq(,$(构建ID))
生成ID:=000000
恩迪夫
-OPENJ9_-SHA:=$(shell git-C$(OPENJ9_-TOPDIR)rev parse——短头)
-OPENJ9OMR\u SHA:=$(shell git-C$(OPENJ9OMR\u TOPDIR)rev parse——短头)
+OPENJ9\u SHA:=$(shell git--工作树=$(OPENJ9\u TOPDIR)--git dir=$(OPENJ9\u TOPDIR)/.git rev parse--短头)
+OPENJ9OMR\u SHA:=$(shell git--工作树=$(OPENJ9OMR\u TOPDIR)--git dir=$(OPENJ9OMR\u TOPDIR)/.git rev parse--短头)
ifeq(,$(OPENJ9_SHA))
$(错误无法确定OpenJ9 SHA)
恩迪夫
diff——git a/closed/autoconf/custom-hook.m4 b/closed/autoconf/custom-hook.m4
索引30d8a98..ed8e6af 100644
---a/closed/autoconf/custom-hook.m4
+++b/closed/autoconf/custom-hook.m4
@@-127,8+127,8@@AC_DEFUN_一次([OPENJ9_平台设置],
AC_DEFUN_一次([OPENJDK_版本详细信息],
[
-OPENJDK_SHA=`git-C$SRC_ROOT rev parse--short HEAD`
-OPENJDK_TAG=`git-C$SRC_ROOT descripe--abbrev=0--tags`
+OPENJDK_SHA=`git--worktree=$SRC_ROOT--git dir=$SRC_ROOT/.git rev parse--short HEAD`
+OPENJDK_TAG=`git--worktree=$SRC_ROOT--git dir=$SRC_ROOT/.git description--abbrev=0--tags`
AC_SUBST(OPENJDK_SHA)
AC_SUBST(OPENJDK_标记)
])
diff--git a/closed/make/ReleaseFile.gmk b/closed/make/ReleaseFile.gmk
索引d6be94c..2feca5b 100644
---a/closed/make/ReleaseFile.gmk
+++b/closed/make/ReleaseFile.gmk
@@ -16,8 +16,8 @@
#2与本工作同时进行;如果没有,请参阅。
# 
# ===========================================================================
-
-公司名称:=EclipseOpenJ9
-OPENJ9OMR\u SHA:=$(shell git-C$(OPENJ9OMR\u TOPDIR)rev parse——短头)
-OPENJ9_-SHA:=$(shell git-C$(OPENJ9_-TOPDIR)rev parse——短头)
-SOURCE\u REVISION=OpenJDK:$(OpenJDK\u SHA)OpenJ9:$(OpenJ9\u SHA)OMR:$(OPENJ9OMR\u SHA)
+
+公司名称:=EclipseOpenJ9
+OPENJ9OMR\u SHA:=$(shell git--工作树=$(OPENJ9OMR\u TOPDIR)--git dir=$(OPENJ9OMR\u TOPDIR)/.git rev parse--短头)
+OPENJ9\u SHA:=$(shell git--工作树=$(OPENJ9\u TOPDIR)--git dir=$(OPENJ9\u TOPDIR)/.git rev parse--短头)
+SOURCE\u REVISION=OpenJDK:$(OpenJDK\u SHA)OpenJ9:$(OpenJ9\u SHA)OMR:$(OPENJ9OMR\u SHA)

RHEL 7(或CentOS)上的构建说明应该与带有HotSpot的OpenJDK非常相似

我有一个基于CentOS 7创建OpenJ9开发环境的应用程序。但是,如果要手动创建环境,请执行以下操作:

  • 获取编译OpenJDK的生成依赖项
    yum builddep java-1.8.0-OpenJDK

  • 获取未安装在最小centos映像中的其余构建依赖项

    • java-1.8.0-openjdk-devel用于“引导”JDK
    • hg,file,解压后用于编译
    • J9 numa支持需要numactl-devel
      yum安装java-1.8.0-openjdk-devel-make文件,用于解压缩hg-numactl-devel
  • 从WANDisco获取git 2软件包:
    rpm-U&&yum安装-y git

    • 当然,您可以按照建议修改构建文件,使其与Git1.7一起工作
  • 下载freemarker并将位置放入./configure


Wow,我已经使用
yum
很多年了,我从来都不知道
builddep
!回答得很好,谢谢。
diff --git a/closed/OpenJ9.gmk b/closed/OpenJ9.gmk
index 977fb40..2d19477 100755
--- a/closed/OpenJ9.gmk
+++ b/closed/OpenJ9.gmk
@@ -27,8 +27,8 @@ ifeq (,$(BUILD_ID))
  BUILD_ID := 000000
endif

-OPENJ9_SHA    := $(shell git -C $(OPENJ9_TOPDIR)    rev-parse --short HEAD)
-OPENJ9OMR_SHA := $(shell git -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
+OPENJ9_SHA    := $(shell git --work-tree=$(OPENJ9_TOPDIR) --git-dir=$(OPENJ9_TOPDIR)/.git    rev-parse --short HEAD)
+OPENJ9OMR_SHA := $(shell git --work-tree=$(OPENJ9OMR_TOPDIR) --git-dir=$(OPENJ9OMR_TOPDIR)/.git rev-parse --short HEAD)
ifeq (,$(OPENJ9_SHA))
  $(error Could not determine OpenJ9 SHA)
endif
diff --git a/closed/autoconf/custom-hook.m4 b/closed/autoconf/custom-hook.m4
index 30d8a98..ed8e6af 100644
--- a/closed/autoconf/custom-hook.m4
+++ b/closed/autoconf/custom-hook.m4
@@ -127,8 +127,8 @@ AC_DEFUN_ONCE([OPENJ9_PLATFORM_SETUP],

AC_DEFUN_ONCE([OPENJDK_VERSION_DETAILS],
[
-  OPENJDK_SHA=`git -C $SRC_ROOT rev-parse --short HEAD`
-  OPENJDK_TAG=`git -C $SRC_ROOT describe --abbrev=0 --tags`
+  OPENJDK_SHA=`git --work-tree=$SRC_ROOT --git-dir=$SRC_ROOT/.git rev-parse --short HEAD`
+  OPENJDK_TAG=`git --work-tree=$SRC_ROOT --git-dir=$SRC_ROOT/.git describe --abbrev=0 --tags`
  AC_SUBST(OPENJDK_SHA)
  AC_SUBST(OPENJDK_TAG)
])
diff --git a/closed/make/ReleaseFile.gmk b/closed/make/ReleaseFile.gmk
index d6be94c..2feca5b 100644
--- a/closed/make/ReleaseFile.gmk
+++ b/closed/make/ReleaseFile.gmk
@@ -16,8 +16,8 @@
# 2 along with this work; if not, see <http://www.gnu.org/licenses/>.
# 
# ===========================================================================
-
-COMPANY_NAME := Eclipse OpenJ9
-OPENJ9OMR_SHA := $(shell git -C $(OPENJ9OMR_TOPDIR) rev-parse --short HEAD)
-OPENJ9_SHA  := $(shell git -C $(OPENJ9_TOPDIR)  rev-parse --short HEAD)
-SOURCE_REVISION = OpenJDK:$(OPENJDK_SHA) OpenJ9:$(OPENJ9_SHA) OMR:$(OPENJ9OMR_SHA)
+
+COMPANY_NAME := Eclipse OpenJ9
+OPENJ9OMR_SHA := $(shell git --work-tree=$(OPENJ9OMR_TOPDIR) --git-dir=$(OPENJ9OMR_TOPDIR)/.git rev-parse --short HEAD)
+OPENJ9_SHA  := $(shell git --work-tree=$(OPENJ9_TOPDIR) --git-dir=$(OPENJ9_TOPDIR)/.git  rev-parse --short HEAD)
+SOURCE_REVISION = OpenJDK:$(OPENJDK_SHA) OpenJ9:$(OPENJ9_SHA) OMR:$(OPENJ9OMR_SHA)