2018-07-05 14:53:56 +00:00
|
|
|
SUMMARY="Modern and safe systems programming language"
|
|
|
|
DESCRIPTION="Rust is a systems programming language that runs blazingly fast, \
|
|
|
|
prevents almost all crashes*, and eliminates data races."
|
|
|
|
HOMEPAGE="https://www.rust-lang.org/"
|
|
|
|
COPYRIGHT="2018 The Rust Project Developers"
|
|
|
|
LICENSE="MIT"
|
2020-04-11 21:32:56 +00:00
|
|
|
REVISION="2"
|
2018-07-05 14:53:56 +00:00
|
|
|
cargoVersion="0.28.0"
|
|
|
|
rlsVersion="0.127.0"
|
|
|
|
rustfmtVersion="0.6.1"
|
|
|
|
SOURCE_URI="https://github.com/rust-lang/rust/archive/$portVersion.tar.gz"
|
|
|
|
CHECKSUM_SHA256="0bbca54761be5302efc6e6fdb5f4dab4e0dec24458ca7c13538b7259885f9457"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME="rust-$portVersion.tar.gz"
|
|
|
|
srcGitRev_2="7243155b1c3da0a980c868a87adebf00e0b33989"
|
|
|
|
SOURCE_URI_2="https://github.com/rust-lang/llvm/archive/$srcGitRev_2.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_2="ba1578c156e8f10a9330f8d2b8514987c74a2babaea845ac4c4a1d2d5ef379ec"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_2="rust-$portVersion-llvm-$srcGitRev_2.tar.gz"
|
|
|
|
srcGitRev_3="118e078c5badd520d18b92813fd88789c8d341ab"
|
|
|
|
SOURCE_URI_3="https://github.com/rust-lang/rust-installer/archive/$srcGitRev_3.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_3="34fd6dd8f8e5943be3ab022cd7d0ca792ea2cfe6fb21e06d6054134fc6441892"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_3="rust-$portVersion-rust-installer-$srcGitRev_3.tar.gz"
|
|
|
|
srcGitRev_4="c5fb6dbe8154732b2af8367c75a9b079b2951154"
|
|
|
|
SOURCE_URI_4="https://github.com/rust-lang/libc/archive/$srcGitRev_4.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_4="aa083022606be28922dfd94606dc27da11f9f397ed732d93fd70fd6a8fa82594"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_4="rust-$portVersion-libc-$srcGitRev_4.tar.gz"
|
|
|
|
srcGitRev_5="748a5e6742db4a21c4c630a58087f818828e8a0a"
|
|
|
|
SOURCE_URI_5="https://github.com/rust-lang-nursery/nomicon/archive/$srcGitRev_5.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_5="abf8866307d51259e55fef461e7954d05cf3169001069dc9ed4ab5eb40a73abd"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_5="rust-$portVersion-nomicon-$srcGitRev_5.tar.gz"
|
|
|
|
SOURCE_URI_6="https://github.com/rust-lang/cargo/archive/$cargoVersion.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_6="62f4269af6cd168c91a6b10ef845e6dc0f1c211605bd13d155a6a001ade026a1"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_6="rust-$portVersion-cargo-$cargoVersion.tar.gz"
|
|
|
|
srcGitRev_7="134f419ee62714590b04712fe6072253bc2a7822"
|
|
|
|
SOURCE_URI_7="https://github.com/rust-lang-nursery/reference/archive/$srcGitRev_7.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_7="9e54405f4a6c487cba04d2e25e7026b86581038a88741ce5757b38ddfab4cb07"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_7="rust-$portVersion-reference-$srcGitRev_7.tar.gz"
|
|
|
|
srcGitRev_8="f51127530d46b9acbf4747c859da185e771cfcf3"
|
|
|
|
SOURCE_URI_8="https://github.com/rust-lang/book/archive/$srcGitRev_8.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_8="a18b090a3a29313a9e68dbef0ca4a5e0ecb36d9eb0f244a1e6cbd33989546989"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_8="rust-$portVersion-book-$srcGitRev_8.tar.gz"
|
|
|
|
srcGitRev_9="d2ade31a52a417257742de72c5936a8a342a34b5"
|
|
|
|
SOURCE_URI_9="https://github.com/rust-lang-nursery/rls/archive/$srcGitRev_9.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_9="5ca89b25cf636b018cb1e9862cf2272e1295874c712db23178e36a3b2dded892"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_9="rust-$portVersion-rls-$rlsVersion.tar.gz"
|
|
|
|
srcGitRev_10="2a2f6d96c8dc578d2474742f14c9bab0b36b0408"
|
|
|
|
SOURCE_URI_10="https://github.com/rust-lang-nursery/compiler-builtins/archive/$srcGitRev_10.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_10="cebece5392d3990a4ed06af378f1e44daea0c30d1d348d1cefb7dae9a4f56bbb"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_10="rust-$portVersion-compiler-builtins-$srcGitRev_10.tar.gz"
|
|
|
|
srcGitRev_11="dfd960b5f1a1751b22738fa34fd27b583f4618db"
|
|
|
|
SOURCE_URI_11="https://github.com/rust-lang/compiler-rt/archive/$srcGitRev_11.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_11="7384b3592a4b05857fbf4e54ff5f0ac17bb8bd982b428f348ae2cc4afd9a552c"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_11="rust-$portVersion-compiler-rt-$srcGitRev_11.tar.gz"
|
|
|
|
srcGitRev_12="49279d715bc9bc979313e7c1056ada821ddc3ee2"
|
|
|
|
SOURCE_URI_12="https://github.com/rust-lang-nursery/rustfmt/archive/$srcGitRev_12.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_12="9708789d175ce1dd43e1623c1373629d26d583022e9e826d768d9270c4304f36"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_12="rust-$portVersion-rustfmt-$rustfmtVersion.tar.gz"
|
|
|
|
srcGitRev_13="f48fed70d4447445b586a35c4ae88683542ffc72"
|
|
|
|
SOURCE_URI_13="https://github.com/solson/miri/archive/$srcGitRev_13.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_13="7ab3a7345cc98e96a223b92653374fe1cae2c81f90afb745e933f02eacbf7390"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_13="rust-$portVersion-miri-$srcGitRev_13.tar.gz"
|
|
|
|
srcGitRev_14="eebda16e4b45f2eed4310cf7b9872cc752278163"
|
|
|
|
SOURCE_URI_14="https://github.com/rust-lang/rust-by-example/archive/$srcGitRev_14.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_14="be12b7ba065470a046f7e2ba3f76abd3fd6028b24393eba292d024de8164b630"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_14="rust-$portVersion-rust-by-example-$srcGitRev_14.tar.gz"
|
|
|
|
srcGitRev_15="a19ca1cd91cf97777af8268a6136bd2e4648e189"
|
|
|
|
SOURCE_URI_15="https://github.com/rust-lang-nursery/stdsimd/archive/$srcGitRev_15.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_15="ddfb9831e8cb439545ce8180a958e57877a0cd9fc3f54305b38679f2b0dd2f68"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_15="rust-$portVersion-stdsimd-$srcGitRev_15.tar.gz"
|
|
|
|
srcGitRev_16="1742229ebb7843a65c05ee495d8de5366fcc5567"
|
|
|
|
SOURCE_URI_16="https://github.com/rust-lang-nursery/rust-clippy/archive/$srcGitRev_16.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
CHECKSUM_SHA256_16="e5b04a1dfeab2d89fc5ee4509711c381bcdca53586b73a999102e14ac8748c23"
|
2018-08-07 08:27:11 +00:00
|
|
|
SOURCE_FILENAME_16="rust-$portVersion-clippy-$srcGitRev_16.tar.gz"
|
2018-07-05 14:53:56 +00:00
|
|
|
PATCHES="rust-$portVersion.patchset"
|
|
|
|
PATCHES_2="rust-llvm-$portVersion.patchset"
|
|
|
|
|
2021-09-15 19:40:18 +00:00
|
|
|
ARCHITECTURES="?all !x86_gcc2"
|
2018-07-05 14:53:56 +00:00
|
|
|
SECONDARY_ARCHITECTURES="?x86"
|
|
|
|
|
|
|
|
PROVIDES="
|
|
|
|
rust$secondaryArchSuffix = $portVersion
|
|
|
|
cmd:cargo$secondaryArchSuffix = $cargoVersion
|
|
|
|
cmd:cargo_fmt = $cargoVersion
|
|
|
|
cmd:rls = $rlsVersion
|
2018-08-08 14:18:18 +00:00
|
|
|
cmd:rust_gdb = $portVersion
|
|
|
|
cmd:rust_lldb = $portVersion
|
|
|
|
cmd:rustc = $portVersion
|
|
|
|
cmd:rustdoc = $portVersion
|
2018-07-05 14:53:56 +00:00
|
|
|
cmd:rustfmt = $rustfmtVersion
|
|
|
|
"
|
|
|
|
REQUIRES="
|
|
|
|
haiku$secondaryArchSuffix
|
|
|
|
lib:libcrypto$secondaryArchSuffix
|
|
|
|
lib:libcurl$secondaryArchSuffix
|
|
|
|
lib:libssl$secondaryArchSuffix
|
|
|
|
lib:libz$secondaryArchSuffix
|
|
|
|
"
|
|
|
|
|
|
|
|
BUILD_REQUIRES="
|
|
|
|
haiku${secondaryArchSuffix}_devel
|
|
|
|
devel:libcurl$secondaryArchSuffix
|
|
|
|
devel:libssl$secondaryArchSuffix
|
|
|
|
devel:libz$secondaryArchSuffix
|
|
|
|
"
|
|
|
|
BUILD_PREREQUIRES="
|
|
|
|
cmd:cargo$secondaryArchSuffix == $cargoVersion
|
|
|
|
cmd:cmake
|
|
|
|
cmd:cmp
|
|
|
|
cmd:file
|
|
|
|
cmd:find
|
|
|
|
cmd:gcc$secondaryArchSuffix
|
2018-08-08 14:18:18 +00:00
|
|
|
cmd:git
|
2018-07-05 14:53:56 +00:00
|
|
|
cmd:grep
|
|
|
|
cmd:ld$secondaryArchSuffix
|
|
|
|
cmd:make
|
|
|
|
cmd:pkg_config$secondaryArchSuffix
|
|
|
|
cmd:python
|
|
|
|
cmd:rustc == $portVersion
|
|
|
|
cmd:sed
|
|
|
|
cmd:tar
|
|
|
|
cmd:which
|
|
|
|
cmd:xargs
|
|
|
|
"
|
|
|
|
|
|
|
|
BUILD()
|
|
|
|
{
|
|
|
|
# Set up the source tree with all the proper submodules
|
|
|
|
rm -rf src/llvm src/tools/rust-installer src/liblibc src/doc/nomicon \
|
|
|
|
src/tools/cargo src/doc/reference src/doc/book src/tools/rls \
|
|
|
|
src/libcompiler_builtins src/tools/rustfmt src/tools/miri \
|
|
|
|
src/doc/rust-by-example src/stdsimd src/tools/clippy
|
|
|
|
|
2018-08-07 08:27:11 +00:00
|
|
|
ln -s $sourceDir2/llvm-$srcGitRev_2 src/llvm
|
|
|
|
ln -s $sourceDir3/rust-installer-$srcGitRev_3 src/tools/rust-installer
|
|
|
|
ln -s $sourceDir4/libc-$srcGitRev_4 src/liblibc
|
|
|
|
ln -s $sourceDir5/nomicon-$srcGitRev_5 src/doc/nomicon
|
2018-07-05 14:53:56 +00:00
|
|
|
ln -s $sourceDir6/cargo-$cargoVersion src/tools/cargo
|
2018-08-07 08:27:11 +00:00
|
|
|
ln -s $sourceDir7/reference-$srcGitRev_7 src/doc/reference
|
|
|
|
ln -s $sourceDir8/book-$srcGitRev_8 src/doc/book
|
|
|
|
ln -s $sourceDir9/rls-$srcGitRev_9 src/tools/rls
|
|
|
|
ln -s $sourceDir10/compiler-builtins-$srcGitRev_10 src/libcompiler_builtins
|
2018-07-05 14:53:56 +00:00
|
|
|
rm -rf src/libcompiler_builtins/compiler-rt
|
2018-08-07 08:27:11 +00:00
|
|
|
ln -s $sourceDir11/compiler-rt-$srcGitRev_11 src/libcompiler_builtins/compiler-rt
|
|
|
|
ln -s $sourceDir12/rustfmt-$srcGitRev_12 src/tools/rustfmt
|
|
|
|
ln -s $sourceDir13/miri-$srcGitRev_13 src/tools/miri
|
|
|
|
ln -s $sourceDir14/rust-by-example-$srcGitRev_14 src/doc/rust-by-example
|
|
|
|
ln -s $sourceDir15/stdsimd-$srcGitRev_15 src/stdsimd
|
|
|
|
ln -s $sourceDir16/rust-clippy-$srcGitRev_16 src/tools/clippy
|
2018-07-05 14:53:56 +00:00
|
|
|
|
|
|
|
# write the build configuration
|
|
|
|
tr -d '\t' >config.toml <<- EOL
|
|
|
|
[llvm]
|
|
|
|
targets = "X86"
|
|
|
|
experimental-targets = ""
|
|
|
|
|
|
|
|
[build]
|
|
|
|
cargo = "/$relativeBinDir/cargo"
|
|
|
|
rustc = "/boot/system/bin/rustc"
|
|
|
|
submodules = false
|
|
|
|
extended = true
|
|
|
|
tools = ["cargo", "rls", "rustfmt", "analysis"]
|
|
|
|
|
|
|
|
[install]
|
|
|
|
prefix = "$prefix"
|
|
|
|
libdir = "$relativeLibDir"
|
|
|
|
mandir = "$relativeManDir"
|
|
|
|
docdir = "$relativeDevelopDocDir"
|
|
|
|
sysconfdir = "$relativeDataDir"
|
|
|
|
|
|
|
|
[rust]
|
|
|
|
channel = "stable"
|
|
|
|
use-jemalloc = false
|
|
|
|
rpath = false
|
|
|
|
deny-warnings = false
|
|
|
|
dist-src = false
|
|
|
|
|
|
|
|
[dist]
|
|
|
|
src-tarball = false
|
|
|
|
EOL
|
|
|
|
# Disable ASLR: compiling stage 1 rustc requires a lot of RAM (about 1.5
|
|
|
|
# GB). Haiku has a per-process limit of 2GB on 32 bit systems. ASLR makes
|
|
|
|
# the available space even smaller. Disabling it will give us the space to
|
|
|
|
# compile Rust
|
|
|
|
export DISABLE_ASLR=1
|
|
|
|
|
|
|
|
# now build rust and cargo
|
|
|
|
./x.py dist
|
|
|
|
}
|
|
|
|
|
|
|
|
INSTALL()
|
|
|
|
{
|
|
|
|
# we will manually invoke the install scripts
|
|
|
|
if [ $effectiveTargetArchitecture = x86 ]; then
|
|
|
|
architecture="i686-unknown-haiku"
|
|
|
|
fi
|
|
|
|
if [ $effectiveTargetArchitecture = x86_64 ]; then
|
|
|
|
architecture="x86_64-unknown-haiku"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# let's install the packages one by one
|
|
|
|
cd $sourceDir/build/tmp/dist/
|
|
|
|
for module in "rust-docs-$srcGitRev-$architecture" \
|
|
|
|
"rust-std-$srcGitRev-$architecture" \
|
|
|
|
"rustc-$srcGitRev-$architecture" \
|
|
|
|
"rust-analysis-$srcGitRev-$architecture" \
|
|
|
|
"cargo-$cargoVersion-$architecture" \
|
|
|
|
"rls-$rlsVersion-$architecture" \
|
|
|
|
"rustfmt-$rustfmtVersion-$architecture"
|
|
|
|
do
|
|
|
|
./$module/install.sh \
|
|
|
|
--prefix=$prefix \
|
|
|
|
--docdir=$developDocDir \
|
|
|
|
--libdir=$libDir \
|
|
|
|
--mandir=$manDir \
|
|
|
|
--sysconfdir=$dataDir \
|
|
|
|
--disable-ldconfig
|
|
|
|
done
|
|
|
|
|
|
|
|
# move the cargo and binaries (in case of a secondary arch)
|
|
|
|
if [ -n "$secondaryArchSuffix" ]; then
|
|
|
|
mkdir -p $binDir
|
|
|
|
mv $prefix/bin/cargo $binDir/cargo
|
|
|
|
fi
|
|
|
|
|
|
|
|
# remove zsh data, it is not used on Haiku anyway
|
|
|
|
rm -rf $prefix/share
|
|
|
|
|
|
|
|
# move the `rustlib` folder to the developLibDirs (as it is a framework of sorts)
|
|
|
|
# do create a link in $prefix/lib as that is where rustc expects things to live
|
|
|
|
# Note; this actually seems to be a bug in the Rust build system. The path
|
|
|
|
# to rustlib is hardcoded in the rustc binary, but it does allow it to be
|
|
|
|
# set to libdir_relative (see config.rs in the bootstrap tool). This variable
|
|
|
|
# is only set when the configure script is used to generate the config, not
|
|
|
|
# with config.toml
|
|
|
|
mkdir -p $developLibDir
|
|
|
|
mv $libDir/rustlib $developLibDir
|
|
|
|
ln -r -s $developLibDir/rustlib $prefix/lib/rustlib
|
|
|
|
|
|
|
|
# clean out unneccesary files created by the rust installer
|
|
|
|
rm $developLibDir/rustlib/components
|
|
|
|
rm $developLibDir/rustlib/install.log
|
|
|
|
rm $developLibDir/rustlib/manifest-*
|
|
|
|
rm $developLibDir/rustlib/rust-installer-version
|
|
|
|
rm $developLibDir/rustlib/uninstall.sh
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST()
|
|
|
|
{
|
|
|
|
./x.py test
|
|
|
|
}
|