레이블이 Unknown and unsupported build architecture인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Unknown and unsupported build architecture인 게시물을 표시합니다. 모든 게시물 표시

2018년 5월 14일 월요일

Redhat ppc64le 환경에서 OpenJFX build하기 (OpenJDK 8)

먼저, 이 posting은 아래 OpenJFX install guide를 기본으로 따라한 것입니다.   저 link에 있는 좀 더 최신 버전의 JFX는 java 9을 필요로 하더군요.  아마 아직 Java 9보다는 java 8이 표준인 것 같아 OpenJDK 8 기준으로 이걸 작성했습니다.   OpenJDK 8을 지원하는 JFX는 8u 버전이며, 이는 또 gradle 버전 1.8만 지원합니다. 

https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX#BuildingOpenJFX-OracleEnterpriseLinux7andFedora21

먼저 필요 fileset들을 설치합니다.

[ibm@centos01 ~]$ sudo yum install mercurial bison flex gperf ksh pkgconfig libpng12-devel libjpeg-devel libxml2-devel libxslt-devel systemd-devel glib2-devel  gtk2-devel pango-devel freetype-devel ant alsa-lib-devel freetype-devel cups-devel libXtst-devel libXt-devel libXrender-devel libXi-devel libX11-devel libXext-devel libffi-devel ccache make gcc gcc-c++ libstdc++-devel giflib-devel curl rpm-build gpg rpmbuild rpm-sign

gradle 1.8을 download 합니다.

[ibm@centos01 files]$ wget https://services.gradle.org/distributions/gradle-1.8-all.zip

[ibm@centos01 files]$ unzip gradle-1.8-all.zip

[ibm@centos01 files]$ export PATH=~/files/gradle-1.8/bin:$PATH

[ibm@centos01 files]$ which gradle
~/files/gradle-1.8/bin/gradle

이제 source code를 download 받습니다.

[ibm@centos01 files]$ git clone https://github.com/javafxports/openjdk-jfx.git

[ibm@centos01 files]$ cd openjdk-jfx

그리고 OpenJDK 8을 지원하는 버전 중 비교적 최신인 8u51-b09로 checkout 합니다.

[ibm@centos01 openjdk-jfx]$ git checkout tags/8u51-b09

이제 gradle을 이용하여 JFX를 build합니다.  그러나 첫 시도는 아래와 같이 error로 끝납니다.

[ibm@centos01 openjdk-jfx]$ gradle
...
FAILURE: Build failed with an exception.

* Where:
Build file '/home/ibm/files/openjdk-jfx/build.gradle' line: 250

* What went wrong:
A problem occurred evaluating root project 'openjdk-jfx'.
> FAIL: Unknown and unsupported build architecture: ppc64le

이는 다음과 같이 ppc64le일 경우도 그냥 build하도록 308번째 line을 바꿔주면 해결됩니다.


[ibm@centos01 openjdk-jfx]$ vi /home/ibm/files/openjdk-jfx/build.gradle
...
// } else if (IS_LINUX && OS_ARCH != "i386" && OS_ARCH != "amd64") {
} else if (IS_LINUX && OS_ARCH != "ppc64le" && OS_ARCH != "amd64") {
    fail("Unknown and unsupported build architecture: $OS_ARCH")
}

이제 다시 gradle을 수행합니다.   다음과 같이 잘 됩니다.

[ibm@centos01 openjdk-jfx]$ gradle
...
:swt:assemble
:systemTests:compileJava UP-TO-DATE
:systemTests:processResources UP-TO-DATE
:systemTests:classes UP-TO-DATE
:systemTests:jar
:systemTests:assemble
:web:assemble
:jfxrtLinux
:jfxrtIndexLinux
:jfxswtLinux
:jfxswtIndexLinux
:jmxLinux
:copySources SKIPPED
:zipSources SKIPPED
:src SKIPPED
:sdkLinux
modules/graphics/build/libs/font/linux/libjavafx_font.so
modules/graphics/build/libs/prism/linux/libprism_common.so
modules/graphics/build/libs/prismSW/linux/libprism_sw.so
modules/graphics/build/libs/prismES2/linux/libprism_es2.so
modules/graphics/build/libs/glass/linux/libglass.so
modules/graphics/build/libs/iio/linux/libjavafx_iio.so
modules/graphics/build/libs/fontFreetype/linux/libjavafx_font_freetype.so
modules/graphics/build/libs/fontPango/linux/libjavafx_font_pango.so
:sdk

BUILD SUCCESSFUL

Total time: 3 mins 44.846 secs

이렇게 build된 binary들은 build/sdk에 생성되며, 물론 ppc64le용으로 만들어진 것입니다.

[ibm@centos01 openjdk-jfx]$ ls build/sdk
bin  lib  man  rt

[ibm@centos01 openjdk-jfx]$ ls build/sdk/bin
javafxpackager  javapackager

[ibm@centos01 openjdk-jfx]$ file build/sdk/rt/lib/ppc64le/libglass.so
build/sdk/rt/lib/ppc64le/libglass.so: ELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=aba660bd5a3247c07b783eeede8ea6ce685f9070, not stripped

저 build directory를 통째로 tar로 말아 둡니다.

[ibm@centos01 openjdk-jfx]$ tar -zcvf openjdk-jfx.tgz build

[ibm@centos01 openjdk-jfx]$ ls -l openjdk-jfx.tgz
-rw-rw-r--. 1 ibm ibm 15540240 May 14 17:10 openjdk-jfx.tgz

위 파일을 아래 google drive에 올려두었습니다.

https://drive.google.com/open?id=19yjDL37nI-UecGaPirkwOSTws4fBgwJT