Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support riscv64 platform #375

Merged
merged 44 commits into from
Dec 23, 2024
Merged
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
923b802
Support riscv64 platform
eschnett Apr 9, 2024
378423f
Merge branch 'master' into eschnett/riscv64
eschnett May 26, 2024
d9c2aa3
Merge branch 'master' into eschnett/riscv64
eschnett Dec 21, 2024
9a12f5f
Pirate Base.BinaryPlatform functions to add riscv64 support
eschnett Dec 21, 2024
edd904f
Add riscv64 artifacts
eschnett Dec 21, 2024
0d20e28
Add riscv64 artifacts
eschnett Dec 21, 2024
58cbd25
Bump version
eschnett Dec 21, 2024
8ee15f6
Overwrite more BinaryPlatform functions
eschnett Dec 21, 2024
5ee88e7
Overwrite more BinaryPlatform functions
eschnett Dec 21, 2024
b818c10
Overwrite more BinaryPlatform functions
eschnett Dec 21, 2024
87150ce
Overwrite more BinaryPlatform functions
eschnett Dec 21, 2024
23b2d8f
More riscv64 support
eschnett Dec 21, 2024
f08131b
More riscv64 support
eschnett Dec 21, 2024
a21f391
More riscv64 support
eschnett Dec 21, 2024
159eb63
More riscv64 support
eschnett Dec 21, 2024
beb0845
More riscv64 support
eschnett Dec 21, 2024
06cbd65
More riscv64 support
eschnett Dec 22, 2024
eb35103
More riscv64 support
eschnett Dec 22, 2024
b4884fb
More riscv64 support
eschnett Dec 22, 2024
83dc17d
More riscv64 support
eschnett Dec 22, 2024
4082a50
More riscv64 support
eschnett Dec 22, 2024
50133af
More riscv64 support
eschnett Dec 22, 2024
1dcf9d5
More riscv64 support
eschnett Dec 22, 2024
2bcd78b
More riscv64 support
eschnett Dec 22, 2024
77e8c6f
More riscv64 support
eschnett Dec 22, 2024
9973159
More riscv64 support
eschnett Dec 22, 2024
bba0066
More riscv64 support
eschnett Dec 22, 2024
486c2ea
More riscv64 support
eschnett Dec 22, 2024
d5a16e3
More riscv64 support
eschnett Dec 22, 2024
a08a941
More riscv64 support
eschnett Dec 22, 2024
c24a05a
More riscv64 support
eschnett Dec 22, 2024
fdff0c5
More riscv64 support
eschnett Dec 22, 2024
7564170
Update tests for riscv64
eschnett Dec 22, 2024
76c9967
Update tests for riscv64
eschnett Dec 22, 2024
6f037ad
Make changes requested in code review
eschnett Dec 22, 2024
b409474
Make changes requested in code review
eschnett Dec 22, 2024
52e5caa
Support riscv64 for Go
eschnett Dec 22, 2024
edd7907
Specify riscv64 ABI
eschnett Dec 22, 2024
aa9cd98
Don't use experimental platforms
eschnett Dec 22, 2024
83445ab
Correct doctests
eschnett Dec 22, 2024
3d13f99
Correct doctests
eschnett Dec 22, 2024
28c7be3
Update default riscv64 ABI
eschnett Dec 22, 2024
dafa993
Remove outdated and unnecessary artifacts
eschnett Dec 22, 2024
fc2baa2
Correct typo in comment
eschnett Dec 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
More riscv64 support
  • Loading branch information
eschnett committed Dec 21, 2024

Verified

This commit was signed with the committer’s verified signature.
jdabtieu Jonathan Wu
commit 23b2d8f56e3fc83c2ae50a6b3c94deb53e3d6fac
44 changes: 44 additions & 0 deletions Artifacts.toml
Original file line number Diff line number Diff line change
@@ -4101,6 +4101,50 @@ os = "linux"
sha256 = "91a599a698f8de58480c60b5b70c9be6e93a97936430b11a435f8955afae4cc4"
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/PlatformSupport-v2021.8.10/PlatformSupport-x86_64-apple-darwin14.v2021.8.10.x86_64-linux-musl.squashfs.tar.gz"

[["PlatformSupport-riscv64-linux-gnu.v2024.12.21.x86_64-linux-musl.squashfs"]]
arch = "x86_64"
git-tree-sha1 = "b176fca4332dbcd60e0f4195feafef712394be6d"
lazy = true
libc = "musl"
os = "linux"

[["PlatformSupport-riscv64-linux-gnu.v2024.12.21.x86_64-linux-musl.squashfs".download]]
sha256 = "6348339e933ca990739e4328a4bcf449cb2944feea590f84ca9b25a6dfba6cb4"
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/PlatformSupport-v2024.12.21/PlatformSupport-riscv64-linux-gnu.v2024.12.21.x86_64-linux-musl.squashfs.tar.gz"

[["PlatformSupport-riscv64-linux-gnu.v2024.12.21.x86_64-linux-musl.unpacked"]]
arch = "x86_64"
git-tree-sha1 = "5b9695b4efe229b51926b4c9ffb9a0c891e8ccdd"
lazy = true
libc = "musl"
os = "linux"

[["PlatformSupport-riscv64-linux-gnu.v2024.12.21.x86_64-linux-musl.unpacked".download]]
sha256 = "757fe58ba7561cb61051ef22e8a36f3066fb63b0978cf14ad276313368c43a5f"
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/PlatformSupport-v2024.12.21/PlatformSupport-riscv64-linux-gnu.v2024.12.21.x86_64-linux-musl.unpacked.tar.gz"

[["PlatformSupport-riscv64-linux-gnu.v2024.4.7.x86_64-linux-musl.squashfs"]]
arch = "x86_64"
git-tree-sha1 = "0e6ee4055c36b0931644528bf89ebfa74da8be6b"
lazy = true
libc = "musl"
os = "linux"

[["PlatformSupport-riscv64-linux-gnu.v2024.4.7.x86_64-linux-musl.squashfs".download]]
sha256 = "e691f0639f64304a78ea93e4bcf4e5e052538b85b5aaa9bcad8760e9732a1edc"
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/PlatformSupport-v2024.4.7/PlatformSupport-riscv64-linux-gnu.v2024.4.7.x86_64-linux-musl.squashfs.tar.gz"

[["PlatformSupport-riscv64-linux-gnu.v2024.4.7.x86_64-linux-musl.unpacked"]]
arch = "x86_64"
git-tree-sha1 = "5b9695b4efe229b51926b4c9ffb9a0c891e8ccdd"
lazy = true
libc = "musl"
os = "linux"

[["PlatformSupport-riscv64-linux-gnu.v2024.4.7.x86_64-linux-musl.unpacked".download]]
sha256 = "757fe58ba7561cb61051ef22e8a36f3066fb63b0978cf14ad276313368c43a5f"
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/PlatformSupport-v2024.4.7/PlatformSupport-riscv64-linux-gnu.v2024.4.7.x86_64-linux-musl.unpacked.tar.gz"

[["PlatformSupport-x86_64-apple-darwin14.v2021.8.10.x86_64-linux-musl.unpacked"]]
arch = "x86_64"
git-tree-sha1 = "597f3ec099059ced3acae4427576fedbaa3fd21c"
8 changes: 7 additions & 1 deletion src/Rootfs.jl
Original file line number Diff line number Diff line change
@@ -431,7 +431,8 @@ the only GCC versions available to be picked from are `4.8.5` and `5.2.0`, it
will return `4.8.5`, as binaries compiled with that version will run on this
platform, whereas binaries compiled with `5.2.0` may not.
"""
function gcc_version(p::AbstractPlatform,GCC_builds::Vector{GCCBuild},
function gcc_version(p::AbstractPlatform,
GCC_builds::Vector{GCCBuild},
compilers::Vector{Symbol}=[:c];
llvm_version::Union{Nothing,VersionNumber}=nothing)
# First, filter by libgfortran version.
@@ -471,6 +472,11 @@ function gcc_version(p::AbstractPlatform,GCC_builds::Vector{GCCBuild},
GCC_builds = filter(b -> getversion(b) ≥ v"7", GCC_builds)
end

# We only have GCC 13 or newer for RISC-V (this could be changed)
if arch(p) == "riscv64"
GCC_builds = filter(b -> getversion(b) ≥ v"13", GCC_builds)
end

# Rust on Windows requires binutils 2.25 (it invokes `ld` with `--high-entropy-va`),
# which we bundle with GCC 5.
if :rust in compilers && Sys.iswindows(p)
6 changes: 4 additions & 2 deletions src/Runner.jl
Original file line number Diff line number Diff line change
@@ -1286,10 +1286,12 @@ function platform_envs(platform::AbstractPlatform, src_name::AbstractString;
if libc(platform) === "glibc"
# This should be kept in sync with the version of glibc used in
# https://github.com/JuliaPackaging/Yggdrasil/blob/master/0_RootFS/gcc_sources.jl
if arch(platform) in ("armv7l", "aarch64")
if arch(platform) in ["armv7l", "aarch64"]
mapping["GNU_LIBC_VERSION"] = "glibc 2.19"
elseif arch(platform) in ("x86_64", "i686", "powerpc64le", "riscv64")
elseif arch(platform) in ["x86_64", "i686", "powerpc64le"]
mapping["GNU_LIBC_VERSION"] = "glibc 2.17"
elseif arch(platform) in ["riscv64"]
mapping["GNU_LIBC_VERSION"] = "glibc 2.28"
end
end