Skip to content

Commit 7980c8c

Browse files
committed
add Solaris support
1 parent 5cc2286 commit 7980c8c

File tree

12 files changed

+78
-4
lines changed

12 files changed

+78
-4
lines changed

.github/workflows/ci.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,8 @@ jobs:
558558
- armv7-unknown-linux-gnueabihf
559559
- aarch64-linux-android
560560
- aarch64-unknown-linux-gnu
561+
- x86_64-pc-solaris
562+
- sparcv9-sun-solaris
561563
include:
562564
- target: x86_64-unknown-linux-gnu
563565
run_tests: YES
@@ -725,6 +727,8 @@ jobs:
725727
- armv7-unknown-linux-gnueabihf
726728
- aarch64-linux-android
727729
- aarch64-unknown-linux-gnu
730+
- x86_64-pc-solaris
731+
- sparcv9-sun-solaris
728732
- powerpc64-unknown-linux-gnu # skip-pr
729733
- x86_64-unknown-linux-musl # skip-pr
730734
include:
@@ -894,6 +898,8 @@ jobs:
894898
- armv7-unknown-linux-gnueabihf
895899
- aarch64-linux-android
896900
- aarch64-unknown-linux-gnu
901+
- x86_64-pc-solaris
902+
- sparcv9-sun-solaris
897903
- aarch64-unknown-linux-musl # skip-pr skip-master
898904
- powerpc64-unknown-linux-gnu # skip-pr
899905
- x86_64-unknown-linux-musl # skip-pr

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ jobs: # skip-master skip-pr skip-stable
2323
- armv7-unknown-linux-gnueabihf
2424
- aarch64-linux-android
2525
- aarch64-unknown-linux-gnu
26+
- x86_64-pc-solaris
27+
- sparcv9-sun-solaris
2628
- aarch64-unknown-linux-musl # skip-pr skip-master
2729
- powerpc64-unknown-linux-gnu # skip-pr
2830
- x86_64-unknown-linux-musl # skip-pr

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 Solaris 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 Solaris 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,10 +159,14 @@ 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)
165167
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-linux-android/rustup-init.sha256)
168+
- [x86_64-pc-solaris](https://static.rust-lang.org/rustup/dist/x86_64-pc-solaris/rustup-init)
169+
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-pc-solaris/rustup-init.sha256)
166170
- [x86_64-pc-windows-gnu](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe)[^msys2]
167171
- [sha256 file](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe.sha256)
168172
- [x86_64-pc-windows-msvc](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe)[^msvc]

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: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ impl TargetTriple {
497497
let mut sys_info;
498498
let (sysname, machine) = 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

@@ -507,7 +507,7 @@ impl TargetTriple {
507507
)
508508
};
509509

510-
#[cfg(not(target_os = "android"))]
510+
#[cfg(not(any(target_os = "android", target_os = "illumos", target_os = "solaris")))]
511511
let host_triple = match (sysname, machine) {
512512
(b"Linux", b"x86_64") => Some(TRIPLE_X86_64_UNKNOWN_LINUX),
513513
(b"Linux", b"i686") => Some("i686-unknown-linux-gnu"),
@@ -532,7 +532,6 @@ impl TargetTriple {
532532
(b"NetBSD", b"x86_64") => Some("x86_64-unknown-netbsd"),
533533
(b"NetBSD", b"i686") => Some("i686-unknown-netbsd"),
534534
(b"DragonFly", b"x86_64") => Some("x86_64-unknown-dragonfly"),
535-
(b"SunOS", b"i86pc") => Some("x86_64-unknown-illumos"),
536535
_ => None,
537536
};
538537

@@ -547,6 +546,19 @@ impl TargetTriple {
547546
_ => None,
548547
};
549548

549+
#[cfg(target_os = "illumos")]
550+
let host_triple = match (sysname, machine) {
551+
(b"SunOS", b"i86pc") => Some("x86_64-unknown-illumos"),
552+
_ => None,
553+
};
554+
555+
#[cfg(target_os = "solaris")]
556+
let host_triple = match (sysname, machine) {
557+
(b"SunOS", b"i86pc") => Some("x86_64-pc-solaris"),
558+
(b"SunOS", b"sun4v") => Some("sparcv9-sun-solaris"),
559+
_ => None,
560+
};
561+
550562
host_triple.map(TargetTriple::new)
551563
}
552564

0 commit comments

Comments
 (0)