void-packages/srcpkgs/firefox/patches/rust-configure.patch

97 lines
3.3 KiB
Diff

Mozilla rustc check does not support crossbuild: let's remove it
Remove calls to unwrap_rustup, they fail if rustup isn't present
Do not try to figure out the rust target as it is broken on musl
instead use what is set in RUST_TARGET
Skip extra checks on cross builds (broken for arm*)
--- build/moz.configure/rust.configure.orig 2019-10-17 04:19:59.000000000 +0700
+++ build/moz.configure/rust.configure 2019-10-22 11:48:55.616022140 +0700
@@ -81,9 +81,6 @@
return unwrap
-rustc = unwrap_rustup(rustc, 'rustc')
-cargo = unwrap_rustup(cargo, 'cargo')
-
set_config('CARGO', cargo)
set_config('RUSTC', rustc)
@@ -225,7 +222,9 @@
data.setdefault(key, []).append(namespace(rust_target=t, target=info))
return data
-
+@imports('os')
+@imports(_from='mozbuild.util', _import='ensure_unicode')
+@imports(_from='mozbuild.util', _import='system_encoding')
def detect_rustc_target(host_or_target, compiler_info, arm_target, rust_supported_targets):
# Rust's --target options are similar to, but not exactly the same
# as, the autoconf-derived targets we use. An example would be that
@@ -340,13 +339,13 @@
return None
- rustc_target = find_candidate(candidates)
+ rustc_target = os.environ['RUST_TARGET']
if rustc_target is None:
die("Don't know how to translate {} for rustc".format(
host_or_target.alias))
- return rustc_target
+ return ensure_unicode(rustc_target, system_encoding)
@imports('os')
@@ -369,26 +368,6 @@
os.write(in_fd, ensure_binary(source))
os.close(in_fd)
-
- cmd = [
- rustc,
- '--crate-type', 'staticlib',
- target_arg,
- '-o', out_path,
- in_path,
- ]
-
- def failed():
- die(dedent('''\
- Cannot compile for {} with {}
- The target may be unsupported, or you may not have
- a rust std library for that target installed. Try:
-
- rustup target add {}
- '''.format(host_or_target.alias, rustc, rustc_target)))
- check_cmd_output(*cmd, onerror=failed)
- if not os.path.exists(out_path) or os.path.getsize(out_path) == 0:
- failed()
finally:
os.remove(in_path)
os.remove(out_path)
@@ -403,20 +382,7 @@
rustc_target = detect_rustc_target(host, compiler_info, arm_target,
rust_supported_targets)
if rustc_target != rustc_host:
- if host.alias == rustc_target:
- configure_host = host.alias
- else:
- configure_host = '{}/{}'.format(host.alias, rustc_target)
- die(dedent('''\
- The rust compiler host ({rustc}) is not suitable for the configure host ({configure}).
-
- You can solve this by:
- * Set your configure host to match the rust compiler host by editing your
- mozconfig and adding "ac_add_options --host={rustc}".
- * Or, install the rust toolchain for {configure}, if supported, by running
- "rustup default stable-{rustc_target}"
- '''.format(rustc=rustc_host, configure=configure_host, rustc_target=rustc_target)))
- assert_rust_compile(host, rustc_target, rustc)
+ return rustc_host
return rustc_target
@depends(rustc, target, c_compiler, rust_supported_targets, arm_target, when=rust_compiler)