From bd084d46eece7b8f1d00b825bbedd624b37b3dd9 Mon Sep 17 00:00:00 2001 From: Bo YU Date: Tue, 10 Sep 2024 07:35:55 +0000 Subject: [PATCH] Add support for Linux on riscv64 --- Jenkinsfile | 12 +++++++ .../.project | 22 ++++++++++++ .../META-INF/MANIFEST.MF | 10 ++++++ .../about.html | 36 +++++++++++++++++++ .../build.properties | 26 ++++++++++++++ .../launcher.gtk.linux.riscv64.properties | 16 +++++++++ .../nativetest.a1/META-INF/MANIFEST.MF | 4 +++ .../nativetest.a2/META-INF/MANIFEST.MF | 4 +++ .../nativetest.b1/META-INF/MANIFEST.MF | 4 +++ .../nativetest.b2/META-INF/MANIFEST.MF | 4 +++ .../osgi/internal/framework/processor.aliases | 5 +-- .../build.properties | 3 ++ .../feature.xml | 7 ++++ .../library/gtk/build.sh | 4 +++ .../pom.xml | 15 ++++++++ .../resources/build.properties | 3 ++ .../resources/build.xml | 9 +++++ pom.xml | 1 + 18 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/.project create mode 100644 bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/META-INF/MANIFEST.MF create mode 100644 bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/about.html create mode 100644 bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/build.properties create mode 100644 bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/launcher.gtk.linux.riscv64.properties diff --git a/Jenkinsfile b/Jenkinsfile index 0dfaabdae23..b07bce612cd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -47,6 +47,17 @@ def getNativeJdkUrl(String os, String arch) { // To update the used JDK version """ } return "file://${WORKSPACE}/repackage-win32.aarch64-jdk/jdk.tar.gz" + } else if ('linux'.equals(os) && 'riscv64'.equals(arch)) { + // Downloading jdk and renew it for riscv64 architecture on Linux + dir("${WORKSPACE}/repackage-linux.riscv64-jdk") { + sh """ + curl -L 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_riscv64_linux_hotspot_17.0.12_7.tar.gz' > jdk.tar.gz + tar -xzf jdk.tar.gz jdk-17.0.12+7/include/ jdk-17.0.12+7/lib/ + cd jdk-17.0.12+7 + tar -czf ../jdk.tar.gz include/ lib/ + """ + } + return "file://${WORKSPACE}/repackage-linux.riscv64-jdk/jdk.tar.gz" } return "https://download.eclipse.org/justj/jres/17/downloads/20230428_1804/org.eclipse.justj.openjdk.hotspot.jre.minimal.stripped-17.0.7-${os}-${arch}.tar.gz" } @@ -174,6 +185,7 @@ pipeline { 'cocoa.macosx.x86_64' ,\ 'gtk.linux.aarch64' ,\ 'gtk.linux.ppc64le' ,\ + 'gtk.linux.riscv64',\ 'gtk.linux.x86_64' ,\ 'win32.win32.aarch64' ,\ 'win32.win32.x86_64' diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/.project b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/.project new file mode 100644 index 00000000000..a919234491b --- /dev/null +++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/.project @@ -0,0 +1,22 @@ + + + org.eclipse.equinox.launcher.gtk.linux.riscv64 + + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + + diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..fe2c8e213f3 --- /dev/null +++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-Vendor: %providerName +Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.riscv64;singleton:=true +Bundle-Version: 1.2.1200.qualifier +Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.6.0,1.7.0)" +Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=riscv64)) +Bundle-Localization: launcher.gtk.linux.riscv64 +Eclipse-BundleShape: dir diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/about.html b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/about.html new file mode 100644 index 00000000000..164f781a8fd --- /dev/null +++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/about.html @@ -0,0 +1,36 @@ + + + + +About + + +

About This Content

+ +

November 30, 2017

+

License

+ +

+ The Eclipse Foundation makes available all content in this plug-in + ("Content"). Unless otherwise indicated below, the Content + is provided to you under the terms and conditions of the Eclipse + Public License Version 2.0 ("EPL"). A copy of the EPL is + available at http://www.eclipse.org/legal/epl-2.0. + For purposes of the EPL, "Program" will mean the Content. +

+ +

+ If you did not receive this Content directly from the Eclipse + Foundation, the Content is being redistributed by another party + ("Redistributor") and different terms and conditions may + apply to your use of any object code in the Content. Check the + Redistributor's license that was provided with the Content. If no such + license exists, contact the Redistributor. Unless otherwise indicated + below, the terms and conditions of the EPL still apply to any source + code in the Content and such source code may be obtained at http://www.eclipse.org. +

+ + + \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/build.properties b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/build.properties new file mode 100644 index 00000000000..20a03dfc6cb --- /dev/null +++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/build.properties @@ -0,0 +1,26 @@ +############################################################################### +# Copyright (c) 2024 ISCAS(PLCT Lab). and others. +# +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License 2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Bo YU . +# CHEN Xuan - initial API and implementation +############################################################################### +bin.includes = META-INF/,\ + launcher.gtk.linux.riscv64.properties,\ + about.html + +generateSourceBundle=false +binaryTag=LBv1-1904 + +# Maven properties, see https://github.com/eclipse/tycho/wiki/Tycho-Pomless +tycho.pomless.parent = ../../launcher-binary-parent +pom.model.property.os = linux +pom.model.property.ws = gtk +pom.model.property.arch = riscv64 diff --git a/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/launcher.gtk.linux.riscv64.properties b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/launcher.gtk.linux.riscv64.properties new file mode 100644 index 00000000000..eab68fbc567 --- /dev/null +++ b/bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64/launcher.gtk.linux.riscv64.properties @@ -0,0 +1,16 @@ +############################################################################### +# Copyright (c) 2024 ISCAS(PLCT Lab). and others. +# +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License 2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Bo YU . +# CHEN Xuan . - initial API and implementation +############################################################################### +pluginName = Equinox Launcher Linux RISCV64 Fragment +providerName = Eclipse.org - Equinox diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF index 33659117d9e..4b408fe90b7 100644 --- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF @@ -31,6 +31,10 @@ Bundle-NativeCode: nativefile1.txt; processor=loongarch; osname=Linux, nativefile1.txt; + processor=riscv64; + processor=riscv; + osname=Linux, + nativefile1.txt; processor=s390; processor=s390x; osname=Linux, diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF index d471ccfb48f..fca5e1a071a 100644 --- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF @@ -35,6 +35,10 @@ Bundle-NativeCode: nativefile2.txt; processor=loongarch; osname=Linux, nativefile2.txt; + processor=riscv64; + processor=riscv; + osname=Linux, + nativefile2.txt; processor=Sparc; osname=Solaris; osname=SunOS, diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF index 65f1c762855..a7dd7609929 100644 --- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF @@ -35,6 +35,10 @@ Bundle-NativeCode: nativefile.txt; processor=loongarch; osname=Linux, nativefile.txt; + processor=riscv64; + processor=riscv; + osname=Linux, + nativefile.txt; processor=Sparc; osname=Solaris; osname=SunOS, diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF index 5068e95b585..130c69162f3 100644 --- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF @@ -35,6 +35,10 @@ Bundle-NativeCode: nativefile.txt; processor=loongarch; osname=Linux, nativefile.txt; + processor=riscv64; + processor=riscv; + osname=Linux, + nativefile.txt; processor=Sparc; osname=Solaris; osname=SunOS, diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/processor.aliases b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/processor.aliases index 8e2d55f7b90..29ea24a08da 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/processor.aliases +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/framework/processor.aliases @@ -18,7 +18,7 @@ 68k # Motorola 68000 and up ARM # Intel Strong ARM -aarch64 arm64 +aarch64 arm64 # 64 bit ARM architecture Alpha # Compaq (ex DEC) Ignite psc1k # PTSC Mips # SGI @@ -29,7 +29,8 @@ PowerPC-64-LE ppc64le # IBM Power PC 64-bit Little Endian Sparc # SUN x86 pentium i386 i486 i586 i686 # Intel s390 # IBM System 390 -s390x # IBM System 390 (64-bit) +s390x # IBM System 390 (64-bit) v850e # NEC V850E x86-64 amd64 em64t x86_64 # 64 bit x86 architecture loongarch64 LoongArch64 # 64 bit loongarch architecture +riscv64 # 64 bit RISC-V architecture diff --git a/features/org.eclipse.equinox.executable.feature/build.properties b/features/org.eclipse.equinox.executable.feature/build.properties index 639806cc8b1..a39676fe381 100644 --- a/features/org.eclipse.equinox.executable.feature/build.properties +++ b/features/org.eclipse.equinox.executable.feature/build.properties @@ -41,3 +41,6 @@ root.macosx.cocoa.aarch64.permissions.755=Eclipse.app/Contents/MacOS/launcher root.linux.gtk.x86_64=bin/gtk/linux/x86_64,gtk_root root.linux.gtk.x86_64.permissions.755=launcher + +root.linux.gtk.riscv64=bin/gtk/linux/riscv64,gtk_root +root.linux.gtk.riscv64.permissions.755=launcher diff --git a/features/org.eclipse.equinox.executable.feature/feature.xml b/features/org.eclipse.equinox.executable.feature/feature.xml index 09b4c6321b5..948bee8349d 100755 --- a/features/org.eclipse.equinox.executable.feature/feature.xml +++ b/features/org.eclipse.equinox.executable.feature/feature.xml @@ -58,6 +58,13 @@ arch="x86_64" version="0.0.0"/> + + " ;; diff --git a/features/org.eclipse.equinox.executable.feature/pom.xml b/features/org.eclipse.equinox.executable.feature/pom.xml index b648502224d..fe42d4ad31f 100644 --- a/features/org.eclipse.equinox.executable.feature/pom.xml +++ b/features/org.eclipse.equinox.executable.feature/pom.xml @@ -91,6 +91,20 @@ + + + org.eclipse.tycho + target-platform-configuration + + + + linux + gtk + riscv64 + + + + @@ -124,6 +138,7 @@ + diff --git a/features/org.eclipse.equinox.executable.feature/resources/build.properties b/features/org.eclipse.equinox.executable.feature/resources/build.properties index b938365beef..c1233014b23 100644 --- a/features/org.eclipse.equinox.executable.feature/resources/build.properties +++ b/features/org.eclipse.equinox.executable.feature/resources/build.properties @@ -37,3 +37,6 @@ root.linux.gtk.x86_64.permissions.755=libcairo-swt.so root.linux.gtk.loongarch64=bin/gtk/linux/loongarch64,gtk_root root.linux.gtk.loongarch64.permissions.755=launcher + +root.linux.gtk.riscv64=bin/gtk/linux/riscv64,gtk_root +root.linux.gtk.riscv64.permissions.755=launcher diff --git a/features/org.eclipse.equinox.executable.feature/resources/build.xml b/features/org.eclipse.equinox.executable.feature/resources/build.xml index ecf01b4fd0d..0be2df1c88b 100644 --- a/features/org.eclipse.equinox.executable.feature/resources/build.xml +++ b/features/org.eclipse.equinox.executable.feature/resources/build.xml @@ -126,6 +126,14 @@ + + + + + + + + @@ -168,6 +176,7 @@ + diff --git a/pom.xml b/pom.xml index 5c2ba8607c5..e4e0459b2b6 100644 --- a/pom.xml +++ b/pom.xml @@ -217,6 +217,7 @@ bundles/org.eclipse.equinox.launcher.cocoa.macosx.aarch64 bundles/org.eclipse.equinox.launcher.gtk.linux.aarch64 bundles/org.eclipse.equinox.launcher.gtk.linux.ppc64le + bundles/org.eclipse.equinox.launcher.gtk.linux.riscv64 bundles/org.eclipse.equinox.launcher.gtk.linux.x86_64 bundles/org.eclipse.equinox.launcher.win32.win32.aarch64 bundles/org.eclipse.equinox.launcher.win32.win32.x86_64