Skip to content

Commit 46d7454

Browse files
committed
Add support for linux riscv64 platform
Close #2341 Signed-off-by: Levi Zim <[email protected]>
1 parent 3fe2946 commit 46d7454

File tree

16 files changed

+90
-7
lines changed

16 files changed

+90
-7
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1111
- Update API of Message in index to add the timestamp for lag calculation in ingestion polling ([#17977](https://github.com/opensearch-project/OpenSearch/pull/17977/))
1212
- Add composite directory factory ([#17988](https://github.com/opensearch-project/OpenSearch/pull/17988))
1313
- Add pull-based ingestion error metrics and make internal queue size configurable ([#18088](https://github.com/opensearch-project/OpenSearch/pull/18088))
14+
- Add support for linux riscv64 platform ([#18156](https://github.com/opensearch-project/OpenSearch/pull/18156))
1415

1516
### Changed
1617

buildSrc/src/main/java/org/opensearch/gradle/Architecture.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public enum Architecture {
3737
X64,
3838
ARM64,
3939
S390X,
40-
PPC64LE;
40+
PPC64LE,
41+
RISCV64;
4142

4243
public static Architecture current() {
4344
final String architecture = System.getProperty("os.arch", "");
@@ -51,6 +52,8 @@ public static Architecture current() {
5152
return S390X;
5253
case "ppc64le":
5354
return PPC64LE;
55+
case "riscv64":
56+
return RISCV64;
5457
default:
5558
throw new IllegalArgumentException("can not determine architecture from [" + architecture + "]");
5659
}

buildSrc/src/main/java/org/opensearch/gradle/DistributionDownloadPlugin.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ private String dependencyNotation(OpenSearchDistribution distribution) {
244244
case PPC64LE:
245245
classifier = ":" + distribution.getPlatform() + "-ppc64le";
246246
break;
247+
case RISCV64:
248+
classifier = ":" + distribution.getPlatform() + "-riscv64";
249+
break;
247250
default:
248251
throw new IllegalArgumentException("Unsupported architecture: " + distribution.getArchitecture());
249252
}

buildSrc/src/main/java/org/opensearch/gradle/JavaVariant.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
abstract class JavaVariant implements Buildable, Iterable<File> {
2626

2727
private static final List<String> ALLOWED_ARCHITECTURES = Collections.unmodifiableList(
28-
Arrays.asList("aarch64", "x64", "s390x", "ppc64le")
28+
Arrays.asList("aarch64", "x64", "s390x", "ppc64le", "riscv64")
2929
);
3030
private static final List<String> ALLOWED_VENDORS = Collections.unmodifiableList(Arrays.asList("adoptium", "adoptopenjdk", "openjdk"));
3131
private static final List<String> ALLOWED_PLATFORMS = Collections.unmodifiableList(

buildSrc/src/main/java/org/opensearch/gradle/VersionProperties.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public static Map<String, String> getVersions() {
9898
private static final String bundledJdkLinux_x64;
9999
private static final String bundledJdkLinux_s390x;
100100
private static final String bundledJdkLinux_ppc64le;
101+
private static final String bundledJdkLinux_riscv64;
101102
private static final String bundledJdkVendor;
102103
private static final Map<String, String> versions = new HashMap<String, String>();
103104

@@ -117,6 +118,7 @@ public static Map<String, String> getVersions() {
117118
bundledJdkLinux_x64 = props.getProperty("bundled_jdk_linux_x64", bundledJdkLinux);
118119
bundledJdkLinux_s390x = props.getProperty("bundled_jdk_linux_s390x", bundledJdkLinux);
119120
bundledJdkLinux_ppc64le = props.getProperty("bundled_jdk_linux_ppc64le", bundledJdkLinux);
121+
bundledJdkLinux_riscv64 = props.getProperty("bundled_jdk_linux_riscv64", bundledJdkLinux);
120122

121123
for (String property : props.stringPropertyNames()) {
122124
versions.put(property, props.getProperty(property));
@@ -155,6 +157,8 @@ private static String getBundledJdkLinux(String arch) {
155157
return bundledJdkLinux_s390x;
156158
case "ppc64le":
157159
return bundledJdkLinux_ppc64le;
160+
case "riscv64":
161+
return bundledJdkLinux_riscv64;
158162
default:
159163
throw new IllegalArgumentException("unknown platform [" + arch + "] for 'linux' platform");
160164
}

buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ private static List<DistributionProject> resolveArchiveProjects(File checkoutDir
166166
"linux-arm64-tar",
167167
"linux-ppc64le-tar",
168168
"linux-s390x-tar",
169+
"linux-riscv64-tar",
169170
"windows-zip"
170171
)
171172
);

buildSrc/src/test/java/org/opensearch/gradle/ArchitectureTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public void testCurrentArchitecture() {
2020
assertEquals(Architecture.ARM64, currentArchitecture("aarch64"));
2121
assertEquals(Architecture.S390X, currentArchitecture("s390x"));
2222
assertEquals(Architecture.PPC64LE, currentArchitecture("ppc64le"));
23+
assertEquals(Architecture.RISCV64, currentArchitecture("riscv64"));
2324
}
2425

2526
public void testInvalidCurrentArchitecture() {

buildSrc/src/test/java/org/opensearch/gradle/JdkDownloadPluginTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public void testUnknownArchitecture() {
110110
"11.0.2+33",
111111
"linux",
112112
"unknown",
113-
"unknown architecture [unknown] for jdk [testjdk], must be one of [aarch64, x64, s390x, ppc64le]"
113+
"unknown architecture [unknown] for jdk [testjdk], must be one of [aarch64, x64, s390x, ppc64le, riscv64]"
114114
);
115115
}
116116

distribution/archives/build.gradle

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,20 @@ distribution_archives {
208208
}
209209
}
210210

211+
linuxRiscv64Tar {
212+
archiveClassifier = 'linux-riscv64'
213+
content {
214+
archiveFiles(modulesFiles('linux-riscv64'), 'tar', 'linux', 'riscv64', JavaPackageType.JDK)
215+
}
216+
}
217+
218+
noJdkLinuxRiscv64Tar {
219+
archiveClassifier = 'no-jdk-linux-riscv64'
220+
content {
221+
archiveFiles(modulesFiles('linux-riscv64'), 'tar', 'linux', 'riscv64', JavaPackageType.NONE)
222+
}
223+
}
224+
211225
windowsZip {
212226
archiveClassifier = 'windows-x64'
213227
content {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*
8+
* Modifications Copyright OpenSearch Contributors. See
9+
* GitHub history for details.
10+
*/
11+
12+
// This file is intentionally blank. All configuration of the
13+
// distribution is done in the parent project.
14+
15+
// See please https://docs.gradle.org/8.5/userguide/upgrading_version_8.html#deprecated_missing_project_directory
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*
8+
* Modifications Copyright OpenSearch Contributors. See
9+
* GitHub history for details.
10+
*/
11+
12+
// This file is intentionally blank. All configuration of the
13+
// distribution is done in the parent project.
14+
15+
// See please https://docs.gradle.org/8.5/userguide/upgrading_version_8.html#deprecated_missing_project_directory

distribution/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) {
282282
// Setup all required JDKs
283283
project.jdks {
284284
['darwin', 'linux', 'windows'].each { platform ->
285-
(platform == 'linux' || platform == 'darwin' ? ['x64', 'aarch64', 's390x', 'ppc64le'] : ['x64']).each { architecture ->
285+
(platform == 'linux' || platform == 'darwin' ? ['x64', 'aarch64', 's390x', 'ppc64le', 'riscv64'] : ['x64']).each { architecture ->
286286
"bundled_jdk_${platform}_${architecture}" {
287287
it.platform = platform
288288
it.version = VersionProperties.getBundledJdk(platform, architecture)
@@ -296,7 +296,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) {
296296
// Setup all required JREs
297297
project.jres {
298298
['darwin', 'linux', 'windows'].each { platform ->
299-
(platform == 'linux' || platform == 'darwin' ? ['x64', 'aarch64', 's390x', 'ppc64le'] : ['x64']).each { architecture ->
299+
(platform == 'linux' || platform == 'darwin' ? ['x64', 'aarch64', 's390x', 'ppc64le', 'riscv64'] : ['x64']).each { architecture ->
300300
"bundled_jre_${platform}_${architecture}" {
301301
it.platform = platform
302302
it.version = VersionProperties.getBundledJre(platform, architecture)
@@ -381,7 +381,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) {
381381
}
382382
}
383383
def buildModules = buildModulesTaskProvider
384-
List excludePlatforms = ['darwin-x64', 'freebsd-x64', 'linux-x64', 'linux-arm64', 'linux-s390x', 'linux-ppc64le', 'windows-x64', 'darwin-arm64']
384+
List excludePlatforms = ['darwin-x64', 'freebsd-x64', 'linux-x64', 'linux-arm64', 'linux-s390x', 'linux-ppc64le', 'linux-riscv64', 'windows-x64', 'darwin-arm64']
385385
if (platform != null) {
386386
excludePlatforms.remove(excludePlatforms.indexOf(platform))
387387
} else {
@@ -395,7 +395,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) {
395395
if (BuildParams.isSnapshotBuild()) {
396396
from(buildExternalTestModulesTaskProvider)
397397
}
398-
if (project.path.startsWith(':distribution:packages') || ['freebsd-x64','linux-x64', 'linux-arm64'].contains(platform)) {
398+
if (project.path.startsWith(':distribution:packages') || ['freebsd-x64','linux-x64', 'linux-arm64', 'linux-riscv64'].contains(platform)) {
399399
from(buildSystemdModuleTaskProvider)
400400
}
401401
}

distribution/docker/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ configurations {
2929
arm64DockerSource
3030
s390xDockerSource
3131
ppc64leDockerSource
32+
riscv64DockerSource
3233
dockerSource
3334
}
3435

@@ -37,6 +38,7 @@ dependencies {
3738
arm64DockerSource project(path: ":distribution:archives:linux-arm64-tar", configuration:"default")
3839
s390xDockerSource project(path: ":distribution:archives:linux-s390x-tar", configuration:"default")
3940
ppc64leDockerSource project(path: ":distribution:archives:linux-ppc64le-tar", configuration:"default")
41+
riscv64DockerSource project(path: ":distribution:archives:linux-riscv64-tar", configuration:"default")
4042
dockerSource project(path: ":distribution:archives:linux-tar", configuration:"default")
4143
}
4244

@@ -51,6 +53,8 @@ ext.expansions = { Architecture architecture, DockerBase base, boolean local ->
5153
classifier = "linux-s390x"
5254
} else if (architecture == Architecture.PPC64LE) {
5355
classifier = "linux-ppc64le"
56+
} else if (architecture == Architecture.RISCV64) {
57+
classifier = "linux-riscv64"
5458
} else {
5559
throw new IllegalArgumentException("Unsupported architecture [" + architecture + "]")
5660
}
@@ -96,6 +100,7 @@ private static String buildPath(Architecture architecture, DockerBase base) {
96100
(architecture == Architecture.ARM64 ? 'arm64-' : '') +
97101
(architecture == Architecture.S390X ? 's390x-' : '') +
98102
(architecture == Architecture.PPC64LE ? 'ppc64le-' : '') +
103+
(architecture == Architecture.RISCV64 ? 'riscv64-' : '') +
99104
'docker'
100105
}
101106

@@ -104,6 +109,7 @@ private static String taskName(String prefix, Architecture architecture, DockerB
104109
(architecture == Architecture.ARM64 ? 'Arm64' : '') +
105110
(architecture == Architecture.S390X ? 'S390x' : '') +
106111
(architecture == Architecture.PPC64LE ? 'Ppc64le' : '') +
112+
(architecture == Architecture.RISCV64 ? 'Riscv64' : '') +
107113
suffix
108114
}
109115

@@ -144,6 +150,8 @@ void addCopyDockerContextTask(Architecture architecture, DockerBase base) {
144150
from configurations.s390xDockerSource
145151
} else if (architecture == Architecture.PPC64LE) {
146152
from configurations.ppc64leDockerSource
153+
} else if (architecture == Architecture.RISCV64) {
154+
from configurations.riscv64DockerSource
147155
} else {
148156
from configurations.dockerSource
149157
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* The OpenSearch Contributors require contributions made to
6+
* this file be licensed under the Apache-2.0 license or a
7+
* compatible open source license.
8+
*
9+
*/
10+
11+
// This file is intentionally blank. All configuration of the
12+
// export is done in the parent project.
13+
14+
// See please https://docs.gradle.org/8.5/userguide/upgrading_version_8.html#deprecated_missing_project_directory

server/src/main/java/org/opensearch/bootstrap/SystemCallFilter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ static class Arch {
261261
m.put("aarch64", new Arch(0xC00000B7, 0xFFFFFFFF, 1079, 1071, 221, 281, 277));
262262
m.put("s390x", new Arch(0x80000016, 0xFFFFFFFF, 2, 190, 11, 354, 348));
263263
m.put("ppc64le", new Arch(0xC0000015, 0xFFFFFFFF, 2, 189, 11, 362, 358));
264+
m.put("riscv64", new Arch(0xC00000F3, 0xFFFFFFFF, 1079, 1071, 221, 281, 277));
264265
ARCHITECTURES = Collections.unmodifiableMap(m);
265266
}
266267

settings.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ List projects = [
4848
'distribution:archives:linux-s390x-tar',
4949
'distribution:archives:linux-ppc64le-tar',
5050
'distribution:archives:no-jdk-linux-ppc64le-tar',
51+
'distribution:archives:linux-riscv64-tar',
52+
'distribution:archives:no-jdk-linux-riscv64-tar',
5153
'distribution:archives:linux-tar',
5254
'distribution:archives:no-jdk-linux-tar',
5355
'distribution:archives:jre-linux-tar',
@@ -56,6 +58,7 @@ List projects = [
5658
'distribution:docker:docker-arm64-export',
5759
'distribution:docker:docker-s390x-export',
5860
'distribution:docker:docker-ppc64le-export',
61+
'distribution:docker:docker-riscv64-export',
5962
'distribution:docker:docker-build-context',
6063
'distribution:docker:docker-export',
6164
'distribution:packages:arm64-deb',

0 commit comments

Comments
 (0)