Skip to content

Commit 5cd50bd

Browse files
committed
add Solaris support
1 parent 5cc2286 commit 5cd50bd

File tree

12 files changed

+68
-4
lines changed

12 files changed

+68
-4
lines changed

.github/workflows/ci.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,13 +900,15 @@ jobs:
900900
- i686-unknown-linux-gnu # skip-pr skip-master
901901
- arm-unknown-linux-gnueabi # skip-pr skip-master
902902
- arm-unknown-linux-gnueabihf # skip-pr skip-master
903+
- x86_64-pc-solaris # skip-pr skip-master
903904
- x86_64-unknown-freebsd # skip-pr skip-master
904905
- x86_64-unknown-netbsd # skip-pr skip-master
905906
- x86_64-unknown-illumos # skip-pr skip-master
906907
- powerpc-unknown-linux-gnu # skip-pr skip-master
907908
- powerpc64le-unknown-linux-gnu # skip-pr skip-master
908909
- powerpc64le-unknown-linux-musl # skip-pr skip-master
909910
- s390x-unknown-linux-gnu # skip-pr skip-master
911+
- sparcv9-sun-solaris # skip-pr skip-master
910912
- arm-linux-androideabi # skip-pr skip-master
911913
- armv7-linux-androideabi # skip-pr skip-master
912914
- x86_64-linux-android # skip-pr skip-master

ci/actions-templates/linux-builds-template.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@ jobs: # skip-master skip-pr skip-stable
2929
- i686-unknown-linux-gnu # skip-pr skip-master
3030
- arm-unknown-linux-gnueabi # skip-pr skip-master
3131
- arm-unknown-linux-gnueabihf # skip-pr skip-master
32+
- x86_64-pc-solaris
3233
- x86_64-unknown-freebsd # skip-pr skip-master
3334
- x86_64-unknown-netbsd # skip-pr skip-master
3435
- x86_64-unknown-illumos # skip-pr skip-master
3536
- powerpc-unknown-linux-gnu # skip-pr skip-master
3637
- powerpc64le-unknown-linux-gnu # skip-pr skip-master
3738
- powerpc64le-unknown-linux-musl # skip-pr skip-master
3839
- s390x-unknown-linux-gnu # skip-pr skip-master
40+
- sparcv9-sun-solaris
3941
- arm-linux-androideabi # skip-pr skip-master
4042
- armv7-linux-androideabi # skip-pr skip-master
4143
- x86_64-linux-android # skip-pr skip-master

ci/cloudfront-invalidation.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,14 @@ rustup/dist/powerpc64le-unknown-linux-musl/rustup-init
5353
rustup/dist/powerpc64le-unknown-linux-musl/rustup-init.sha256
5454
rustup/dist/s390x-unknown-linux-gnu/rustup-init
5555
rustup/dist/s390x-unknown-linux-gnu/rustup-init.sha256
56+
rustup/dist/sparcv9-sun-solaris/rustup-init.exe
57+
rustup/dist/sparcv9-sun-solaris/rustup-init.exe.sha256
5658
rustup/dist/x86_64-apple-darwin/rustup-init
5759
rustup/dist/x86_64-apple-darwin/rustup-init.sha256
5860
rustup/dist/x86_64-linux-android/rustup-init
5961
rustup/dist/x86_64-linux-android/rustup-init.sha256
62+
rustup/dist/x86_64-pc-solaris/rustup-init.exe
63+
rustup/dist/x86_64-pc-solaris/rustup-init.exe.sha256
6064
rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe
6165
rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe.sha256
6266
rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
FROM rust-sparcv9_sun_solaris
2+
3+
# Building `aws-lc-rs` for Illumos on Linux depends on `gcc-multilib`, `libclang` and `bindgen`.
4+
# See: https://aws.github.io/aws-lc-rs/requirements/linux
5+
RUN apt-get update && apt-get install -qy gcc-multilib libclang-dev
6+
7+
ENV \
8+
AR_sparcv9_sun_solaris=sparcv9-solaris-ar \
9+
RANLIB_sparcv9_sun_solaris=sparcv9-solaris-ranlib \
10+
CC_sparcv9_sun_solaris=sparcv9-solaris-gcc \
11+
CXX_sparcv9_sun_solaris=sparcv9-solaris-g++ \
12+
CARGO_TARGET_SPARCV9_SUN_SOLARIS_LINKER=sparcv9-solaris-gcc
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
FROM rust-x86_64-pc-solaris
2+
3+
# Building `aws-lc-rs` for Illumos on Linux depends on `gcc-multilib`, `libclang` and `bindgen`.
4+
# See: https://aws.github.io/aws-lc-rs/requirements/linux
5+
RUN apt-get update && apt-get install -qy gcc-multilib libclang-dev
6+
7+
ENV \
8+
AR_x86_64_pc_solaris=x86_64-solaris-ar \
9+
RANLIB_x86_64_pc_solaris=x86_64-solaris-ranlib \
10+
CC_x86_64_pc_solaris=x86_64-solaris-gcc \
11+
CXX_x86_64_pc_solaris=x86_64-solaris-g++ \
12+
CARGO_TARGET_X86_64_PC_SOLARIS_LINKER=x86_64-solaris-gcc

ci/fetch-rust-docker.bash

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ case "$TARGET" in
3737
powerpc64le-unknown-linux-gnu) image=dist-powerpc64le-linux-gnu ;;
3838
powerpc64le-unknown-linux-musl) image=dist-powerpc64le-linux-musl ;;
3939
s390x-unknown-linux-gnu) image=dist-s390x-linux ;;
40+
sparcv9-sun-solaris) image=dist-sparcv9-solaris ;;
41+
x86_64-pc-solaris) image=dist-x86_64-solaris ;;
4042
x86_64-unknown-freebsd) image=dist-x86_64-freebsd ;;
4143
x86_64-unknown-illumos) image=dist-x86_64-illumos ;;
4244
x86_64-unknown-linux-gnu) image=dist-x86_64-linux ;;

ci/run.bash

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ case "$TARGET" in
3333
loongarch* ) ;;
3434
*netbsd* ) ;;
3535
*illumos* ) ;;
36+
*solaris* ) ;;
3637
# default case, build with rustls enabled
3738
* ) FEATURES+=('--features' 'reqwest-rustls-tls') ;;
3839
esac

doc/user-guide/src/installation/other.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ You can manually download `rustup-init` for a given target from
159159
- [sha256 file](https://static.rust-lang.org/rustup/dist/powerpc64le-unknown-linux-musl/rustup-init.sha256)
160160
- [s390x-unknown-linux-gnu](https://static.rust-lang.org/rustup/dist/s390x-unknown-linux-gnu/rustup-init)
161161
- [sha256 file](https://static.rust-lang.org/rustup/dist/s390x-unknown-linux-gnu/rustup-init.sha256)
162+
- [sparcv9-sun-solaris](https://static.rust-lang.org/rustup/dist/sparcv9-sun-solaris/rustup-init)
163+
- [sha256 file](https://static.rust-lang.org/rustup/dist/sparcv9-sun-solaris/rustup-init.sha256)
162164
- [x86_64-apple-darwin](https://static.rust-lang.org/rustup/dist/x86_64-apple-darwin/rustup-init)
163165
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-apple-darwin/rustup-init.sha256)
164166
- [x86_64-linux-android](https://static.rust-lang.org/rustup/dist/x86_64-linux-android/rustup-init)
@@ -167,6 +169,8 @@ You can manually download `rustup-init` for a given target from
167169
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe.sha256)
168170
- [x86_64-pc-windows-msvc](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe)[^msvc]
169171
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe.sha256)
172+
- [x86_64-pc-solaris](https://static.rust-lang.org/rustup/dist/x86_64-pc-solaris/rustup-init)
173+
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-pc-solaris/rustup-init.sha256)
170174
- [x86_64-unknown-freebsd](https://static.rust-lang.org/rustup/dist/x86_64-unknown-freebsd/rustup-init)
171175
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-unknown-freebsd/rustup-init.sha256)
172176
- [x86_64-unknown-illumos](https://static.rust-lang.org/rustup/dist/x86_64-unknown-illumos/rustup-init)

rustup-init.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,14 @@ get_architecture() {
414414
_ostype=unknown-illumos
415415
;;
416416

417+
SunOS)
418+
if [ "$_cputype" = sparcv9 ]; then
419+
_ostype=sun-solaris
420+
else
421+
_ostype=pc-solaris
422+
fi
423+
;;
424+
417425
MINGW* | MSYS* | CYGWIN* | Windows_NT)
418426
_ostype=pc-windows-gnu
419427
;;
@@ -491,6 +499,9 @@ get_architecture() {
491499
s390x)
492500
_cputype=s390x
493501
;;
502+
sparcv9)
503+
_cputype=sparcv9
504+
;;
494505
riscv64)
495506
_cputype=riscv64gc
496507
;;

src/dist/mod.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,15 +495,16 @@ impl TargetTriple {
495495
use std::mem;
496496

497497
let mut sys_info;
498-
let (sysname, machine) = unsafe {
498+
let (sysname, machine, version) = unsafe {
499499
sys_info = mem::zeroed();
500-
if libc::uname(&mut sys_info) != 0 {
500+
if libc::uname(&mut sys_info) == -1 {
501501
return None;
502502
}
503503

504504
(
505505
CStr::from_ptr(sys_info.sysname.as_ptr()).to_bytes(),
506506
CStr::from_ptr(sys_info.machine.as_ptr()).to_bytes(),
507+
CStr::from_ptr(sys_info.version.as_ptr()).to_bytes(),
507508
)
508509
};
509510

@@ -532,7 +533,12 @@ impl TargetTriple {
532533
(b"NetBSD", b"x86_64") => Some("x86_64-unknown-netbsd"),
533534
(b"NetBSD", b"i686") => Some("i686-unknown-netbsd"),
534535
(b"DragonFly", b"x86_64") => Some("x86_64-unknown-dragonfly"),
535-
(b"SunOS", b"i86pc") => Some("x86_64-unknown-illumos"),
536+
(b"SunOS", b"i86pc") => Some(if version.starts_with(b"11.4") {
537+
"x86_64-pc-solaris"
538+
} else {
539+
"x86_64-unknown-illumos"
540+
}),
541+
(b"SunOS", b"sun4v") => Some("sparcv9-sun-solaris"),
536542
_ => None,
537543
};
538544

src/test.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ pub fn this_host_triple() -> String {
157157
"powerpc64le"
158158
} else if cfg!(target_arch = "s390x") {
159159
"s390x"
160+
} else if cfg!(target_arch = "sparc64") {
161+
"sparcv9"
160162
} else {
161163
unimplemented!()
162164
};
@@ -168,6 +170,12 @@ pub fn this_host_triple() -> String {
168170
"unknown-illumos"
169171
} else if cfg!(target_os = "freebsd") {
170172
"unknown-freebsd"
173+
} else if cfg!(target_os = "solaris") {
174+
if cfg!(target_arch = "sparc64") {
175+
"sun-solaris"
176+
} else {
177+
"pc-solaris"
178+
}
171179
} else {
172180
unimplemented!()
173181
};

www/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ <h2>An installer for the systems programming language <a href="https://www.rust-
115115
<!-- unrecognized platform: ask for help -->
116116
<p>I don't recognize your platform.</p>
117117
<p>
118-
rustup runs on Windows, Linux, macOS, FreeBSD, NetBSD, and illumos. If
118+
rustup runs on Windows, Linux, macOS, FreeBSD, NetBSD, Solaris and illumos. If
119119
you are on one of these platforms and are seeing this then please
120120
<a href="https://github.com/rust-lang/rustup/issues/new">report an issue</a>,
121121
along with the following values:

0 commit comments

Comments
 (0)