From 87ef686c02821dc4d79f0162bf28737911a49418 Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Thu, 20 Sep 2018 02:26:10 +0200 Subject: [PATCH] rust: Try some more work --- disabled-packages/rust/build.sh | 29 +- disabled-packages/rust/config.toml | 448 +---------------------------- 2 files changed, 42 insertions(+), 435 deletions(-) diff --git a/disabled-packages/rust/build.sh b/disabled-packages/rust/build.sh index 2326943fb..acb248a5f 100644 --- a/disabled-packages/rust/build.sh +++ b/disabled-packages/rust/build.sh @@ -28,6 +28,7 @@ termux_step_extract_package() { } termux_step_configure() { + termux_setup_cmake termux_setup_rust sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" \ @@ -36,13 +37,37 @@ termux_step_configure() { | sed "s%\@CC\@%${CC}%g" - \ | sed "s%\@CXX\@%${CXX}%g" - \ | sed "s%\@AR\@%${AR}%g" - \ + | sed "s%\@CARGO_PATH\@%$HOME/.cargo%g" - \ > ./config.toml + + if [ $TERMUX_ARCH = "aarch64" ]; then + CARCH=AARCH64 + elif [ $TERMUX_ARCH = "i686" ]; then + CARCH=I686 + elif [ $TERMUX_ARCH = "x86_64" ]; then + CARCH=X86_64 + fi + + local ENV_SUFFIX=${CARGO_TARGET_NAME//-/_} + + export CFLAGS_$ENV_SUFFIX="$CFLAGS" + export CXXFLAGS_$ENV_SUFFIX="$CXXFLAGS" + export LDFLAGS_$ENV_SUFFIX="$LDFLAGS" + export LD_$ENV_SUFFIX="$LD" + export ${CARCH}_LINUX_ANDROID_OPENSSL_INCLUDE_DIR=$TERMUX_PREFIX/include + export ${CARCH}_LINUX_ANDROID_OPENSSL_LIB_DIR=$TERMUX_PREFIX/lib + + unset CFLAGS CXXFLAGS LDFLAGS CC CXX LD CPP CPPFLAGS PREFIX } termux_step_make() { - $TERMUX_PKG_SRCDIR/x.py build + $TERMUX_PKG_SRCDIR/x.py \ + --jobs $TERMUX_MAKE_PROCESSES \ + --target $CARGO_TARGET_NAME \ + dist } termux_step_make_install() { - $TERMUX_PKG_SRCDIR/x.py install + : + #$TERMUX_PKG_SRCDIR/x.py install } diff --git a/disabled-packages/rust/config.toml b/disabled-packages/rust/config.toml index 698e1dee8..3f2675966 100644 --- a/disabled-packages/rust/config.toml +++ b/disabled-packages/rust/config.toml @@ -1,456 +1,38 @@ -# Sample TOML configuration file for building Rust. -# -# To configure rustbuild, copy this file to the directory from which you will be -# running the build, and name it config.toml. -# -# All options are commented out by default in this file, and they're commented -# out with their default values. The build system by default looks for -# `config.toml` in the current directory of a build for build configuration, but -# a custom configuration file can also be specified with `--config` to the build -# system. +# See documentation at +# https://github.com/rust-lang/rust/blob/master/config.toml.example -# ============================================================================= -# Tweaking how LLVM is compiled -# ============================================================================= [llvm] - -# Indicates whether rustc will support compilation with LLVM -# note: rustc does not compile without LLVM at the moment -#enabled = true - -# Indicates whether the LLVM build is a Release or Debug build -#optimize = true - -# Indicates whether an LLVM Release build should include debug info -#release-debuginfo = false - -# Indicates whether the LLVM assertions are enabled or not -#assertions = false - -# Indicates whether ccache is used when building LLVM -#ccache = false -# or alternatively ... -#ccache = "/path/to/ccache" - -# If an external LLVM root is specified, we automatically check the version by -# default to make sure it's within the range that we're expecting, but setting -# this flag will indicate that this version check should not be done. -#version-check = true - -# Link libstdc++ statically into the librustc_llvm instead of relying on a -# dynamic version to be available. -#static-libstdcpp = false - -# Tell the LLVM build system to use Ninja instead of the platform default for -# the generated build system. This can sometimes be faster than make, for -# example. -#ninja = false - -# LLVM targets to build support for. -# Note: this is NOT related to Rust compilation targets. However, as Rust is -# dependent on LLVM for code generation, turning targets off here WILL lead to -# the resulting rustc being unable to compile for the disabled architectures. -# Also worth pointing out is that, in case support for new targets are added to -# LLVM, enabling them here doesn't mean Rust is automatically gaining said -# support. You'll need to write a target specification at least, and most -# likely, teach rustc about the C ABI of the target. Get in touch with the -# Rust team and file an issue if you need assistance in porting! -#targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX;Hexagon" - -# LLVM experimental targets to build support for. These targets are specified in -# the same format as above, but since these targets are experimental, they are -# not built by default and the experimental Rust compilation targets that depend -# on them will not work unless the user opts in to building them. By default the -# `WebAssembly` target is enabled when compiling LLVM from scratch. -#experimental-targets = "WebAssembly" - -# Cap the number of parallel linker invocations when compiling LLVM. -# This can be useful when building LLVM with debug info, which significantly -# increases the size of binaries and consequently the memory required by -# each linker process. -# If absent or 0, linker invocations are treated like any other job and -# controlled by rustbuild's -j parameter. -#link-jobs = 0 - -# When invoking `llvm-config` this configures whether the `--shared` argument is -# passed to prefer linking to shared libraries. link-shared = true -# On MSVC you can compile LLVM with clang-cl, but the test suite doesn't pass -# with clang-cl, so this is special in that it only compiles LLVM with clang-cl -#clang-cl = '/path/to/clang-cl.exe' - -# ============================================================================= -# General build configuration options -# ============================================================================= [build] - -# Build triple for the original snapshot compiler. This must be a compiler that -# nightlies are already produced for. The current platform must be able to run -# binaries of this build triple and the nightly will be used to bootstrap the -# first compiler. -#build = "x86_64-unknown-linux-gnu" # defaults to your host platform - -# In addition to the build triple, other triples to produce full compiler -# toolchains for. Each of these triples will be bootstrapped from the build -# triple and then will continue to bootstrap themselves. This platform must -# currently be able to run all of the triples provided here. host = ["@CARGO_TARGET_NAME@"] - -# In addition to all host triples, other triples to produce the standard library -# for. Each host triple will be used to produce a copy of the standard library -# for each target triple. target = ["@CARGO_TARGET_NAME@"] +cargo = "@CARGO_PATH@/bin/cargo" +rustc = "@CARGO_PATH@/bin/rustc" +docs = false +#extended = true -# Instead of downloading the src/stage0.txt version of Cargo specified, use -# this Cargo binary instead to build all Rust code -cargo = "/home/builder/.cargo/bin/cargo" - -# Instead of downloading the src/stage0.txt version of the compiler -# specified, use this rustc binary instead as the stage0 snapshot compiler. -rustc = "/home/builder/.cargo/bin/rustc" - -# Flag to specify whether any documentation is built. If false, rustdoc and -# friends will still be compiled but they will not be used to generate any -# documentation. -#docs = true - -# Indicate whether the compiler should be documented in addition to the standard -# library and facade crates. -#compiler-docs = false - -# Indicate whether submodules are managed and updated automatically. -#submodules = true - -# Update submodules only when the checked out commit in the submodules differs -# from what is committed in the main rustc repo. -#fast-submodules = true - -# The path to (or name of) the GDB executable to use. This is only used for -# executing the debuginfo test suite. -#gdb = "gdb" - -# The node.js executable to use. Note that this is only used for the emscripten -# target when running tests, otherwise this can be omitted. -#nodejs = "node" - -# Python interpreter to use for various tasks throughout the build, notably -# rustdoc tests, the lldb python interpreter, and some dist bits and pieces. -# Note that Python 2 is currently required. -#python = "python2.7" - -# Force Cargo to check that Cargo.lock describes the precise dependency -# set that all the Cargo.toml files create, instead of updating it. -#locked-deps = false - -# Indicate whether the vendored sources are used for Rust dependencies or not -#vendor = false - -# Typically the build system will build the rust compiler twice. The second -# compiler, however, will simply use its own libraries to link against. If you -# would rather to perform a full bootstrap, compiling the compiler three times, -# then you can set this option to true. You shouldn't ever need to set this -# option to true. -#full-bootstrap = false - -# Enable a build of the extended rust tool set which is not only the compiler -# but also tools such as Cargo. This will also produce "combined installers" -# which are used to install Rust and Cargo together. This is disabled by -# default. -#extended = false - -# Installs chosen set of extended tools if enables. By default builds all. -# If chosen tool failed to build the installation fails. -#tools = ["cargo", "rls", "rustfmt", "analysis", "src"] - -# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose -#verbose = 0 - -# Build the sanitizer runtimes -#sanitizers = false - -# Build the profiler runtime -#profiler = false - -# Indicates whether the OpenSSL linked into Cargo will be statically linked or -# not. If static linkage is specified then the build system will download a -# known-good version of OpenSSL, compile it, and link it to Cargo. -#openssl-static = false - -# Run the build with low priority, by setting the process group's "nice" value -# to +10 on Unix platforms, and by using a "low priority" job object on Windows. -#low-priority = false - -# Arguments passed to the `./configure` script, used during distcheck. You -# probably won't fill this in but rather it's filled in by the `./configure` -# script. -#configure-args = [] - -# Indicates that a local rebuild is occurring instead of a full bootstrap, -# essentially skipping stage0 as the local compiler is recompiling itself again. -#local-rebuild = false - -# Print out how long each rustbuild step took (mostly intended for CI and -# tracking over time) -#print-step-timings = false - -# ============================================================================= -# General install configuration options -# ============================================================================= [install] - -# Instead of installing to /usr/local, install to this path instead. prefix = "@TERMUX_PREFIX@" -# Where to install system configuration files -# If this is a relative path, it will get installed in `prefix` above -#sysconfdir = "/etc" - -# Where to install documentation in `prefix` above -#docdir = "share/doc/rust" - -# Where to install binaries in `prefix` above -#bindir = "bin" - -# Where to install libraries in `prefix` above -#libdir = "lib" - -# Where to install man pages in `prefix` above -#mandir = "share/man" - -# Where to install data in `prefix` above (currently unused) -#datadir = "share" - -# Where to install additional info in `prefix` above (currently unused) -#infodir = "share/info" - -# Where to install local state (currently unused) -# If this is a relative path, it will get installed in `prefix` above -#localstatedir = "/var/lib" - -# ============================================================================= -# Options for compiling Rust code itself -# ============================================================================= [rust] - -# Indicates that the build should be optimized for debugging Rust. Note that -# this is typically not what you want as it takes an incredibly large amount of -# time to have a debug-mode rustc compile any code (notably libstd). If this -# value is set to `true` it will affect a number of configuration options below -# as well, if unconfigured. -#debug = false - -# Whether or not to optimize the compiler and standard library -# Note: the slowness of the non optimized compiler compiling itself usually -# outweighs the time gains in not doing optimizations, therefore a -# full bootstrap takes much more time with optimize set to false. -#optimize = true - -# Number of codegen units to use for each compiler invocation. A value of 0 -# means "the number of cores on this machine", and 1+ is passed through to the -# compiler. -#codegen-units = 1 - -# Whether or not debug assertions are enabled for the compiler and standard -# library. Also enables compilation of debug! and trace! logging macros. -#debug-assertions = false - -# Whether or not debuginfo is emitted -#debuginfo = false - -# Whether or not line number debug information is emitted -#debuginfo-lines = false - -# Whether or not to only build debuginfo for the standard library if enabled. -# If enabled, this will not compile the compiler with debuginfo, just the -# standard library. -#debuginfo-only-std = false - -# Enable debuginfo for the extended tools: cargo, rls, rustfmt -# Adding debuginfo makes them several times larger. -#debuginfo-tools = false - -# Whether or not jemalloc is built and enabled use-jemalloc = false +channel = "stable" +optimize-tests = false +debuginfo-tests = false +codegen-tests = false +codegen-units = 0 +deny-warnings = false -# Whether or not jemalloc is built with its debug option set -#debug-jemalloc = false - -# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE) -#backtrace = true - -# Whether to always use incremental compilation when building rustc -#incremental = false - -# Build rustc with experimental parallelization -#experimental-parallel-queries = false - -# The default linker that will be hard-coded into the generated compiler for -# targets that don't specify linker explicitly in their target specifications. -# Note that this is not the linker used to link said compiler. -#default-linker = "cc" - -# The "channel" for the Rust build to produce. The stable/beta channels only -# allow using stable features, whereas the nightly and dev channels allow using -# nightly features -#channel = "dev" - -# By default the `rustc` executable is built with `-Wl,-rpath` flags on Unix -# platforms to ensure that the compiler is usable by default from the build -# directory (as it links to a number of dynamic libraries). This may not be -# desired in distributions, for example. -#rpath = true - -# Emits extraneous output from tests to ensure that failures of the test -# harness are debuggable just from logfiles. -#verbose-tests = false - -# Flag indicating whether tests are compiled with optimizations (the -O flag) or -# with debuginfo (the -g flag) -#optimize-tests = true -#debuginfo-tests = true - -# Flag indicating whether codegen tests will be run or not. If you get an error -# saying that the FileCheck executable is missing, you may want to disable this. -#codegen-tests = true - -# Flag indicating whether git info will be retrieved from .git automatically. -# Having the git information can cause a lot of rebuilds during development. -# Note: If this attribute is not explicitly set (e.g. if left commented out) it -# will default to true if channel = "dev", but will default to false otherwise. -#ignore-git = true - -# When creating source tarballs whether or not to create a source tarball. -#dist-src = false - -# Whether to also run the Miri tests suite when running tests. -# As a side-effect also generates MIR for all libraries. -#test-miri = false - -# After building or testing extended tools (e.g. clippy and rustfmt), append the -# result (broken, compiling, testing) into this JSON file. -#save-toolstates = "/path/to/toolstates.json" +[target.x86_64-unknown-linux-gnu] +llvm-config = "/usr/bin/llvm-config" -# This is an array of the codegen backends that will be compiled for the rustc -# that's being compiled. The default is to only build the LLVM codegen backend, -# but you can also optionally enable the "emscripten" backend for asm.js or -# make this an empty array (but that probably won't get too far in the -# bootstrap) -#codegen-backends = ["llvm"] - -# This is the name of the directory in which codegen backends will get installed -#codegen-backends-dir = "codegen-backends" - -# Flag indicating whether `libstd` calls an imported function to handle basic IO -# when targeting WebAssembly. Enable this to debug tests for the `wasm32-unknown-unknown` -# target, as without this option the test output will not be captured. -#wasm-syscall = false - -# Indicates whether LLD will be compiled and made available in the sysroot for -# rustc to execute. -#lld = false - -# Indicates whether some LLVM tools, like llvm-objdump, will be made available in the -# sysroot. -#llvm-tools = false - -# Whether to deny warnings in crates -#deny-warnings = true - -# Print backtrace on internal compiler errors during bootstrap -#backtrace-on-ice = false - -# Whether to verify generated LLVM IR -#verify-llvm-ir = false - -# ============================================================================= -# Options for specific targets -# -# Each of the following options is scoped to the specific target triple in -# question and is used for determining how to compile each target. -# ============================================================================= [target.@CARGO_TARGET_NAME@] - -# C compiler to be used to compiler C code. Note that the -# default value is platform specific, and if not specified it may also depend on -# what platform is crossing to what platform. cc = "@CC@" - -# C++ compiler to be used to compiler C++ code (e.g. LLVM and our LLVM shims). -# This is only used for host targets. cxx = "@CXX@" - -# Archiver to be used to assemble static libraries compiled from C/C++ code. -# Note: an absolute path should be used, otherwise LLVM build will break. ar = "@AR@" - -# Linker to be used to link Rust code. Note that the -# default value is platform specific, and if not specified it may also depend on -# what platform is crossing to what platform. linker = "@CC@" - -# Path to the `llvm-config` binary of the installation of a custom LLVM to link -# against. Note that if this is specified we don't compile LLVM at all for this -# target. llvm-config = "@TERMUX_PREFIX@/bin/llvm-config" -# Path to the custom jemalloc static library to link into the standard library -# by default. This is only used if jemalloc is still enabled above -#jemalloc = "/path/to/jemalloc/libjemalloc_pic.a" - -# If this target is for Android, this option will be required to specify where -# the NDK for the target lives. This is used to find the C compiler to link and -# build native code. -#android-ndk = "/path/to/ndk" - -# Force static or dynamic linkage of the standard library for this target. If -# this target is a host for rustc, this will also affect the linkage of the -# compiler itself. This is useful for building rustc on targets that normally -# only use static libraries. If unset, the target's default linkage is used. -crt-static = false - -# The root location of the MUSL installation directory. The library directory -# will also need to contain libunwind.a for an unwinding implementation. Note -# that this option only makes sense for MUSL targets that produce statically -# linked binaries -#musl-root = "..." - -# Used in testing for configuring where the QEMU images are located, you -# probably don't want to use this. -#qemu-rootfs = "..." - -# ============================================================================= -# Distribution options -# -# These options are related to distribution, mostly for the Rust project itself. -# You probably won't need to concern yourself with any of these options -# ============================================================================= [dist] - -# This is the folder of artifacts that the build system will sign. All files in -# this directory will be signed with the default gpg key using the system `gpg` -# binary. The `asc` and `sha256` files will all be output into the standard dist -# output folder (currently `build/dist`) -# -# This folder should be populated ahead of time before the build system is -# invoked. -#sign-folder = "path/to/folder/to/sign" - -# This is a file which contains the password of the default gpg key. This will -# be passed to `gpg` down the road when signing all files in `sign-folder` -# above. This should be stored in plaintext. -#gpg-password-file = "path/to/gpg/password" - -# The remote address that all artifacts will eventually be uploaded to. The -# build system generates manifests which will point to these urls, and for the -# manifests to be correct they'll have to have the right URLs encoded. -# -# Note that this address should not contain a trailing slash as file names will -# be appended to it. -#upload-addr = "https://example.com/folder" - -# Whether to build a plain source tarball to upload -# We disable that on Windows not to override the one already uploaded on S3 -# as the one built on Windows will contain backslashes in paths causing problems -# on linux -#src-tarball = true +src-tarball = false