Auto merge of #113049 - matthiaskrgr:rollup-41wo5w8, r=matthiaskrgr
Rollup of 6 pull requests Successful merges: - #111326 (Add support for NetBSD/aarch64-be (big-endian arm64).) - #112559 (Add esp-idf missing targets) - #112840 (doc: loongarch: Update maintainers) - #112955 (CI: cancel in-progress workflow runs after a push) - #112979 (Rewrite most diagnostics as translatable within resolve/imports) - #113034 (Switch some more Steps to `builder.msg`) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
27e10c5292
16 changed files with 338 additions and 105 deletions
24
.github/workflows/ci.yml
vendored
24
.github/workflows/ci.yml
vendored
|
|
@ -30,10 +30,11 @@ permissions:
|
|||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
concurrency:
|
||||
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}"
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
pr:
|
||||
permissions:
|
||||
actions: write
|
||||
name: "PR - ${{ matrix.name }}"
|
||||
env:
|
||||
CI_JOB_NAME: "${{ matrix.name }}"
|
||||
|
|
@ -84,11 +85,6 @@ jobs:
|
|||
- name: ensure the channel matches the target branch
|
||||
run: src/ci/scripts/verify-channel.sh
|
||||
if: success() && !env.SKIP_JOB
|
||||
- name: configure GitHub Actions to kill the build when outdated
|
||||
uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
|
||||
with:
|
||||
github_token: "${{ secrets.github_token }}"
|
||||
if: "success() && !env.SKIP_JOB && github.ref != 'refs/heads/try' && github.ref != 'refs/heads/try-perf'"
|
||||
- name: collect CPU statistics
|
||||
run: src/ci/scripts/collect-cpu-stats.sh
|
||||
if: success() && !env.SKIP_JOB
|
||||
|
|
@ -162,8 +158,6 @@ jobs:
|
|||
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
||||
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
||||
auto:
|
||||
permissions:
|
||||
actions: write
|
||||
name: "auto - ${{ matrix.name }}"
|
||||
env:
|
||||
CI_JOB_NAME: "${{ matrix.name }}"
|
||||
|
|
@ -496,11 +490,6 @@ jobs:
|
|||
- name: ensure the channel matches the target branch
|
||||
run: src/ci/scripts/verify-channel.sh
|
||||
if: success() && !env.SKIP_JOB
|
||||
- name: configure GitHub Actions to kill the build when outdated
|
||||
uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
|
||||
with:
|
||||
github_token: "${{ secrets.github_token }}"
|
||||
if: "success() && !env.SKIP_JOB && github.ref != 'refs/heads/try' && github.ref != 'refs/heads/try-perf'"
|
||||
- name: collect CPU statistics
|
||||
run: src/ci/scripts/collect-cpu-stats.sh
|
||||
if: success() && !env.SKIP_JOB
|
||||
|
|
@ -574,8 +563,6 @@ jobs:
|
|||
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
||||
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
||||
try:
|
||||
permissions:
|
||||
actions: write
|
||||
name: "try - ${{ matrix.name }}"
|
||||
env:
|
||||
DIST_TRY_BUILD: 1
|
||||
|
|
@ -623,11 +610,6 @@ jobs:
|
|||
- name: ensure the channel matches the target branch
|
||||
run: src/ci/scripts/verify-channel.sh
|
||||
if: success() && !env.SKIP_JOB
|
||||
- name: configure GitHub Actions to kill the build when outdated
|
||||
uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
|
||||
with:
|
||||
github_token: "${{ secrets.github_token }}"
|
||||
if: "success() && !env.SKIP_JOB && github.ref != 'refs/heads/try' && github.ref != 'refs/heads/try-perf'"
|
||||
- name: collect CPU statistics
|
||||
run: src/ci/scripts/collect-cpu-stats.sh
|
||||
if: success() && !env.SKIP_JOB
|
||||
|
|
|
|||
|
|
@ -44,13 +44,26 @@ resolve_binding_shadows_something_unacceptable =
|
|||
resolve_binding_shadows_something_unacceptable_suggestion =
|
||||
try specify the pattern arguments
|
||||
|
||||
resolve_cannot_be_reexported_crate_public =
|
||||
`{$ident}` is only public within the crate, and cannot be re-exported outside
|
||||
|
||||
resolve_cannot_be_reexported_private =
|
||||
`{$ident}` is private, and cannot be re-exported
|
||||
|
||||
resolve_cannot_capture_dynamic_environment_in_fn_item =
|
||||
can't capture dynamic environment in a fn item
|
||||
.help = use the `|| {"{"} ... {"}"}` closure form instead
|
||||
|
||||
resolve_cannot_determine_import_resolution =
|
||||
cannot determine resolution for the import
|
||||
.note = import resolution is stuck, try simplifying other imports
|
||||
|
||||
resolve_cannot_find_ident_in_this_scope =
|
||||
cannot find {$expected} `{$ident}` in this scope
|
||||
|
||||
resolve_cannot_glob_import_possible_crates =
|
||||
cannot glob-import all possible crates
|
||||
|
||||
resolve_cannot_use_self_type_here =
|
||||
can't use `Self` here
|
||||
|
||||
|
|
@ -60,6 +73,15 @@ resolve_change_import_binding =
|
|||
resolve_consider_adding_a_derive =
|
||||
consider adding a derive
|
||||
|
||||
resolve_consider_adding_macro_export =
|
||||
consider adding a `#[macro_export]` to the macro in the imported module
|
||||
|
||||
resolve_consider_declaring_with_pub =
|
||||
consider declaring type or module `{$ident}` with `pub`
|
||||
|
||||
resolve_consider_marking_as_pub =
|
||||
consider marking `{$ident}` as `pub` in the imported module
|
||||
|
||||
resolve_const_not_member_of_trait =
|
||||
const `{$const_}` is not a member of trait `{$trait_}`
|
||||
.label = not a member of trait `{$trait_}`
|
||||
|
|
@ -98,6 +120,9 @@ resolve_generic_params_from_outer_function =
|
|||
.label = use of generic parameter from outer function
|
||||
.suggestion = try using a local generic parameter instead
|
||||
|
||||
resolve_glob_import_doesnt_reexport =
|
||||
glob import doesn't reexport anything because no candidate is public enough
|
||||
|
||||
resolve_help_try_using_local_generic_param =
|
||||
try using a local generic parameter instead
|
||||
|
||||
|
|
@ -122,6 +147,13 @@ resolve_invalid_asm_sym =
|
|||
.label = is a local variable
|
||||
.help = `sym` operands must refer to either a function or a static
|
||||
|
||||
resolve_is_not_directly_importable =
|
||||
`{$target}` is not directly importable
|
||||
.label = cannot be imported directly
|
||||
|
||||
resolve_items_in_traits_are_not_importable =
|
||||
items in traits are not importable
|
||||
|
||||
resolve_label_with_similar_name_reachable =
|
||||
a label with a similar name is reachable
|
||||
|
||||
|
|
@ -176,6 +208,12 @@ resolve_parent_module_reset_for_binding =
|
|||
resolve_proc_macro_same_crate = can't use a procedural macro from the same crate that defines it
|
||||
.help = you can define integration tests in a directory named `tests`
|
||||
|
||||
resolve_reexport_of_crate_public =
|
||||
re-export of crate public `{$ident}`
|
||||
|
||||
resolve_reexport_of_private =
|
||||
re-export of private `{$ident}`
|
||||
|
||||
resolve_relative_2018 =
|
||||
relative paths are not supported in visibilities in 2018 edition or later
|
||||
.suggestion = try
|
||||
|
|
|
|||
|
|
@ -646,3 +646,84 @@ pub(crate) struct ConsiderAddingADerive {
|
|||
pub(crate) span: Span,
|
||||
pub(crate) suggestion: String,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_determine_import_resolution)]
|
||||
pub(crate) struct CannotDetermineImportResolution {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_private, code = "E0364")]
|
||||
pub(crate) struct CannotBeReexportedPrivate {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) ident: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_crate_public, code = "E0364")]
|
||||
pub(crate) struct CannotBeReexportedCratePublic {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) ident: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_private, code = "E0365")]
|
||||
#[note(resolve_consider_declaring_with_pub)]
|
||||
pub(crate) struct CannotBeReexportedPrivateNS {
|
||||
#[primary_span]
|
||||
#[label(resolve_reexport_of_private)]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) ident: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_crate_public, code = "E0365")]
|
||||
#[note(resolve_consider_declaring_with_pub)]
|
||||
pub(crate) struct CannotBeReexportedCratePublicNS {
|
||||
#[primary_span]
|
||||
#[label(resolve_reexport_of_crate_public)]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) ident: Ident,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic)]
|
||||
#[help(resolve_consider_adding_macro_export)]
|
||||
pub(crate) struct ConsiderAddingMacroExport {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic)]
|
||||
#[note(resolve_consider_marking_as_pub)]
|
||||
pub(crate) struct ConsiderMarkingAsPub {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) ident: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_glob_import_possible_crates)]
|
||||
pub(crate) struct CannotGlobImportAllCrates {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_items_in_traits_are_not_importable)]
|
||||
pub(crate) struct ItemsInTraitsAreNotImportable {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_is_not_directly_importable, code = "E0253")]
|
||||
pub(crate) struct IsNotDirectlyImportable {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) target: Ident,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,14 @@
|
|||
//! A bunch of methods and structures more or less related to resolving imports.
|
||||
|
||||
use crate::diagnostics::{import_candidates, DiagnosticMode, Suggestion};
|
||||
use crate::errors::{
|
||||
CannotBeReexportedCratePublic, CannotBeReexportedCratePublicNS, CannotBeReexportedPrivate,
|
||||
CannotBeReexportedPrivateNS, CannotDetermineImportResolution, CannotGlobImportAllCrates,
|
||||
ConsiderAddingMacroExport, ConsiderMarkingAsPub, IsNotDirectlyImportable,
|
||||
ItemsInTraitsAreNotImportable,
|
||||
};
|
||||
use crate::Determinacy::{self, *};
|
||||
use crate::Namespace::*;
|
||||
use crate::{fluent_generated as fluent, Namespace::*};
|
||||
use crate::{module_to_string, names_to_string, ImportSuggestion};
|
||||
use crate::{
|
||||
AmbiguityError, AmbiguityErrorMisc, AmbiguityKind, BindingKey, ModuleKind, ResolutionError,
|
||||
|
|
@ -774,9 +780,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
}
|
||||
source_binding @ (Ok(..) | Err(Determined)) => {
|
||||
if source_binding.is_ok() {
|
||||
let msg = format!("`{}` is not directly importable", target);
|
||||
struct_span_err!(this.tcx.sess, import.span, E0253, "{}", &msg)
|
||||
.span_label(import.span, "cannot be imported directly")
|
||||
this.tcx
|
||||
.sess
|
||||
.create_err(IsNotDirectlyImportable { span: import.span, target })
|
||||
.emit();
|
||||
}
|
||||
let key = BindingKey::new(target, ns);
|
||||
|
|
@ -825,9 +831,10 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
span_bug!(import.span, "inconsistent resolution for an import");
|
||||
}
|
||||
} else if self.privacy_errors.is_empty() {
|
||||
let msg = "cannot determine resolution for the import";
|
||||
let msg_note = "import resolution is stuck, try simplifying other imports";
|
||||
self.tcx.sess.struct_span_err(import.span, msg).note(msg_note).emit();
|
||||
self.tcx
|
||||
.sess
|
||||
.create_err(CannotDetermineImportResolution { span: import.span })
|
||||
.emit();
|
||||
}
|
||||
|
||||
module
|
||||
|
|
@ -938,8 +945,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
&& let Some(max_vis) = max_vis.get()
|
||||
&& !max_vis.is_at_least(import.expect_vis(), self.tcx)
|
||||
{
|
||||
let msg = "glob import doesn't reexport anything because no candidate is public enough";
|
||||
self.lint_buffer.buffer_lint(UNUSED_IMPORTS, id, import.span, msg);
|
||||
self.lint_buffer.buffer_lint(UNUSED_IMPORTS, id, import.span, fluent::resolve_glob_import_doesnt_reexport);
|
||||
}
|
||||
return None;
|
||||
}
|
||||
|
|
@ -1011,10 +1017,10 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
&& this.ambiguity_errors.is_empty()
|
||||
&& this.privacy_errors.is_empty()
|
||||
{
|
||||
let msg = "cannot determine resolution for the import";
|
||||
let msg_note =
|
||||
"import resolution is stuck, try simplifying other imports";
|
||||
this.tcx.sess.struct_span_err(import.span, msg).note(msg_note).emit();
|
||||
this.tcx
|
||||
.sess
|
||||
.create_err(CannotDetermineImportResolution { span: import.span })
|
||||
.emit();
|
||||
}
|
||||
}
|
||||
Err(..) => {
|
||||
|
|
@ -1172,46 +1178,43 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
msg,
|
||||
);
|
||||
} else {
|
||||
let error_msg = if crate_private_reexport {
|
||||
format!(
|
||||
"`{}` is only public within the crate, and cannot be re-exported outside",
|
||||
ident
|
||||
)
|
||||
} else {
|
||||
format!("`{}` is private, and cannot be re-exported", ident)
|
||||
};
|
||||
|
||||
if ns == TypeNS {
|
||||
let label_msg = if crate_private_reexport {
|
||||
format!("re-export of crate public `{}`", ident)
|
||||
let mut err = if crate_private_reexport {
|
||||
self.tcx.sess.create_err(CannotBeReexportedCratePublicNS {
|
||||
span: import.span,
|
||||
ident,
|
||||
})
|
||||
} else {
|
||||
format!("re-export of private `{}`", ident)
|
||||
self.tcx
|
||||
.sess
|
||||
.create_err(CannotBeReexportedPrivateNS { span: import.span, ident })
|
||||
};
|
||||
err.emit();
|
||||
} else {
|
||||
let mut err = if crate_private_reexport {
|
||||
self.tcx
|
||||
.sess
|
||||
.create_err(CannotBeReexportedCratePublic { span: import.span, ident })
|
||||
} else {
|
||||
self.tcx
|
||||
.sess
|
||||
.create_err(CannotBeReexportedPrivate { span: import.span, ident })
|
||||
};
|
||||
|
||||
struct_span_err!(self.tcx.sess, import.span, E0365, "{}", error_msg)
|
||||
.span_label(import.span, label_msg)
|
||||
.note(format!("consider declaring type or module `{}` with `pub`", ident))
|
||||
.emit();
|
||||
} else {
|
||||
let mut err =
|
||||
struct_span_err!(self.tcx.sess, import.span, E0364, "{error_msg}");
|
||||
match binding.kind {
|
||||
NameBindingKind::Res(Res::Def(DefKind::Macro(_), def_id))
|
||||
// exclude decl_macro
|
||||
if self.get_macro_by_def_id(def_id).macro_rules =>
|
||||
{
|
||||
err.span_help(
|
||||
binding.span,
|
||||
"consider adding a `#[macro_export]` to the macro in the imported module",
|
||||
);
|
||||
err.subdiagnostic(ConsiderAddingMacroExport {
|
||||
span: binding.span,
|
||||
});
|
||||
}
|
||||
_ => {
|
||||
err.span_note(
|
||||
import.span,
|
||||
format!(
|
||||
"consider marking `{ident}` as `pub` in the imported module"
|
||||
),
|
||||
);
|
||||
err.subdiagnostic(ConsiderMarkingAsPub {
|
||||
span: import.span,
|
||||
ident,
|
||||
});
|
||||
}
|
||||
}
|
||||
err.emit();
|
||||
|
|
@ -1317,12 +1320,14 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
let ImportKind::Glob { id, is_prelude, .. } = import.kind else { unreachable!() };
|
||||
|
||||
let ModuleOrUniformRoot::Module(module) = import.imported_module.get().unwrap() else {
|
||||
self.tcx.sess.span_err(import.span, "cannot glob-import all possible crates");
|
||||
self.tcx.sess.create_err(CannotGlobImportAllCrates {
|
||||
span: import.span,
|
||||
}).emit();
|
||||
return;
|
||||
};
|
||||
|
||||
if module.is_trait() {
|
||||
self.tcx.sess.span_err(import.span, "items in traits are not importable");
|
||||
self.tcx.sess.create_err(ItemsInTraitsAreNotImportable { span: import.span }).emit();
|
||||
return;
|
||||
} else if ptr::eq(module, import.parent_scope.module) {
|
||||
return;
|
||||
|
|
|
|||
17
compiler/rustc_target/src/spec/aarch64_be_unknown_netbsd.rs
Normal file
17
compiler/rustc_target/src/spec/aarch64_be_unknown_netbsd.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
use crate::abi::Endian;
|
||||
use crate::spec::{Target, TargetOptions};
|
||||
|
||||
pub fn target() -> Target {
|
||||
Target {
|
||||
llvm_target: "aarch64_be-unknown-netbsd".into(),
|
||||
pointer_width: 64,
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128".into(),
|
||||
arch: "aarch64".into(),
|
||||
options: TargetOptions {
|
||||
mcount: "__mcount".into(),
|
||||
max_atomic_width: Some(128),
|
||||
endian: Endian::Big,
|
||||
..super::netbsd_base::opts()
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -1194,6 +1194,7 @@ supported_targets! {
|
|||
("x86_64-unknown-openbsd", x86_64_unknown_openbsd),
|
||||
|
||||
("aarch64-unknown-netbsd", aarch64_unknown_netbsd),
|
||||
("aarch64_be-unknown-netbsd", aarch64_be_unknown_netbsd),
|
||||
("armv6-unknown-netbsd-eabihf", armv6_unknown_netbsd_eabihf),
|
||||
("armv7-unknown-netbsd-eabihf", armv7_unknown_netbsd_eabihf),
|
||||
("i686-unknown-netbsd", i686_unknown_netbsd),
|
||||
|
|
|
|||
|
|
@ -323,6 +323,7 @@ def default_build_triple(verbose):
|
|||
cputype_mapper = {
|
||||
'BePC': 'i686',
|
||||
'aarch64': 'aarch64',
|
||||
'aarch64eb': 'aarch64',
|
||||
'amd64': 'x86_64',
|
||||
'arm64': 'aarch64',
|
||||
'i386': 'i686',
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ impl Step for TheBook {
|
|||
let shared_assets = builder.ensure(SharedAssets { target });
|
||||
|
||||
// build the redirect pages
|
||||
builder.info(&format!("Documenting book redirect pages ({})", target));
|
||||
builder.msg_doc(compiler, "book redirect pages", target);
|
||||
for file in t!(fs::read_dir(builder.src.join(&relative_path).join("redirects"))) {
|
||||
let file = t!(file);
|
||||
let path = file.path();
|
||||
|
|
@ -306,7 +306,7 @@ impl Step for Standalone {
|
|||
fn run(self, builder: &Builder<'_>) {
|
||||
let target = self.target;
|
||||
let compiler = self.compiler;
|
||||
builder.info(&format!("Documenting standalone ({})", target));
|
||||
builder.msg_doc(compiler, "standalone", target);
|
||||
let out = builder.doc_out(target);
|
||||
t!(fs::create_dir_all(&out));
|
||||
|
||||
|
|
@ -562,7 +562,7 @@ fn doc_std(
|
|||
|
||||
let description =
|
||||
format!("library{} in {} format", crate_description(&requested_crates), format.as_str());
|
||||
let _guard = builder.msg(Kind::Doc, stage, &description, compiler.host, target);
|
||||
let _guard = builder.msg_doc(compiler, &description, target);
|
||||
|
||||
let target_doc_dir_name = if format == DocumentationFormat::JSON { "json-doc" } else { "doc" };
|
||||
let target_dir =
|
||||
|
|
@ -804,14 +804,7 @@ macro_rules! tool_doc {
|
|||
SourceType::Submodule
|
||||
};
|
||||
|
||||
builder.info(
|
||||
&format!(
|
||||
"Documenting stage{} {} ({})",
|
||||
stage,
|
||||
stringify!($tool).to_lowercase(),
|
||||
target,
|
||||
),
|
||||
);
|
||||
builder.msg_doc(compiler, stringify!($tool).to_lowercase(), target);
|
||||
|
||||
// Symlink compiler docs to the output directory of rustdoc documentation.
|
||||
let out_dirs = [
|
||||
|
|
|
|||
|
|
@ -1009,6 +1009,15 @@ impl Build {
|
|||
self.msg(Kind::Check, self.config.stage, what, self.config.build, target)
|
||||
}
|
||||
|
||||
fn msg_doc(
|
||||
&self,
|
||||
compiler: Compiler,
|
||||
what: impl Display,
|
||||
target: impl Into<Option<TargetSelection>> + Copy,
|
||||
) -> Option<gha::Group> {
|
||||
self.msg(Kind::Doc, compiler.stage, what, compiler.host, target.into())
|
||||
}
|
||||
|
||||
fn msg_build(
|
||||
&self,
|
||||
compiler: Compiler,
|
||||
|
|
|
|||
|
|
@ -1832,11 +1832,13 @@ note: if you're sure you want to do this, please open an issue as to why. In the
|
|||
builder,
|
||||
);
|
||||
|
||||
builder.info(&format!(
|
||||
"Check compiletest suite={} mode={} ({} -> {})",
|
||||
suite, mode, &compiler.host, target
|
||||
));
|
||||
let _time = util::timeit(&builder);
|
||||
let _group = builder.msg(
|
||||
Kind::Test,
|
||||
compiler.stage,
|
||||
&format!("compiletest suite={suite} mode={mode}"),
|
||||
compiler.host,
|
||||
target,
|
||||
);
|
||||
crate::render_tests::try_run_tests(builder, &mut cmd, false);
|
||||
|
||||
if let Some(compare_mode) = compare_mode {
|
||||
|
|
|
|||
|
|
@ -147,13 +147,6 @@ x--expand-yaml-anchors--remove:
|
|||
run: src/ci/scripts/verify-channel.sh
|
||||
<<: *step
|
||||
|
||||
- name: configure GitHub Actions to kill the build when outdated
|
||||
uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
|
||||
with:
|
||||
github_token: "${{ secrets.github_token }}"
|
||||
if: success() && !env.SKIP_JOB && github.ref != 'refs/heads/try' && github.ref != 'refs/heads/try-perf'
|
||||
<<: *step
|
||||
|
||||
- name: collect CPU statistics
|
||||
run: src/ci/scripts/collect-cpu-stats.sh
|
||||
<<: *step
|
||||
|
|
@ -305,10 +298,14 @@ defaults:
|
|||
# shell is PowerShell.)
|
||||
shell: bash
|
||||
|
||||
concurrency:
|
||||
# For a given workflow, if we push to the same PR, cancel all previous builds on that PR.
|
||||
# If the push is not attached to a PR, we will cancel all builds related to the same commit SHA.
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
pr:
|
||||
permissions:
|
||||
actions: write # for rust-lang/simpleinfra/github-actions/cancel-outdated-builds
|
||||
<<: *base-ci-job
|
||||
name: PR - ${{ matrix.name }}
|
||||
env:
|
||||
|
|
@ -331,8 +328,6 @@ jobs:
|
|||
<<: *job-linux-16c
|
||||
|
||||
auto:
|
||||
permissions:
|
||||
actions: write # for rust-lang/simpleinfra/github-actions/cancel-outdated-builds
|
||||
<<: *base-ci-job
|
||||
name: auto - ${{ matrix.name }}
|
||||
env:
|
||||
|
|
@ -734,8 +729,6 @@ jobs:
|
|||
<<: *job-windows-8c
|
||||
|
||||
try:
|
||||
permissions:
|
||||
actions: write # for rust-lang/simpleinfra/github-actions/cancel-outdated-builds
|
||||
<<: *base-ci-job
|
||||
name: try - ${{ matrix.name }}
|
||||
env:
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
- [riscv32imac-unknown-xous-elf](platform-support/riscv32imac-unknown-xous-elf.md)
|
||||
- [*-pc-windows-gnullvm](platform-support/pc-windows-gnullvm.md)
|
||||
- [\*-nto-qnx-\*](platform-support/nto-qnx.md)
|
||||
- [\*-unknown-netbsd\*](platform-support/netbsd.md)
|
||||
- [*-unknown-openbsd](platform-support/openbsd.md)
|
||||
- [\*-unknown-uefi](platform-support/unknown-uefi.md)
|
||||
- [wasm64-unknown-unknown](platform-support/wasm64-unknown-unknown.md)
|
||||
|
|
|
|||
|
|
@ -224,13 +224,14 @@ target | std | host | notes
|
|||
`aarch64-unknown-freebsd` | ✓ | ✓ | ARM64 FreeBSD
|
||||
`aarch64-unknown-hermit` | ✓ | | ARM64 HermitCore
|
||||
`aarch64-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (ILP32 ABI)
|
||||
`aarch64-unknown-netbsd` | ✓ | ✓ |
|
||||
[`aarch64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | ARM64 NetBSD
|
||||
[`aarch64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | ARM64 OpenBSD
|
||||
`aarch64-unknown-redox` | ? | | ARM64 Redox OS
|
||||
`aarch64-uwp-windows-msvc` | ? | |
|
||||
`aarch64-wrs-vxworks` | ? | |
|
||||
`aarch64_be-unknown-linux-gnu_ilp32` | ✓ | ✓ | ARM64 Linux (big-endian, ILP32 ABI)
|
||||
`aarch64_be-unknown-linux-gnu` | ✓ | ✓ | ARM64 Linux (big-endian)
|
||||
[`aarch64_be-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | ARM64 NetBSD (big-endian)
|
||||
[`arm64_32-apple-watchos`](platform-support/apple-watchos.md) | ✓ | | ARM Apple WatchOS 64-bit with 32-bit pointers
|
||||
[`armeb-unknown-linux-gnueabi`](platform-support/armeb-unknown-linux-gnueabi.md) | ✓ | ? | ARM BE8 the default ARM big-endian architecture since [ARMv6](https://developer.arm.com/documentation/101754/0616/armlink-Reference/armlink-Command-line-Options/--be8?lang=en).
|
||||
`armv4t-none-eabi` | * | | ARMv4T A32
|
||||
|
|
@ -238,7 +239,7 @@ target | std | host | notes
|
|||
[`armv5te-none-eabi`](platform-support/armv5te-none-eabi.md) | * | | ARMv5TE A32
|
||||
`armv5te-unknown-linux-uclibceabi` | ? | | ARMv5TE Linux with uClibc
|
||||
`armv6-unknown-freebsd` | ✓ | ✓ | ARMv6 FreeBSD
|
||||
`armv6-unknown-netbsd-eabihf` | ? | |
|
||||
[`armv6-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | ARMv6 NetBSD w/hard-float
|
||||
[`armv6k-nintendo-3ds`](platform-support/armv6k-nintendo-3ds.md) | ? | | ARMv6K Nintendo 3DS, Horizon (Requires devkitARM toolchain)
|
||||
`armv7-apple-ios` | ✓ | | ARMv7 iOS, Cortex-a8
|
||||
[`armv7-sony-vita-newlibeabihf`](platform-support/armv7-sony-vita-newlibeabihf.md) | ? | | ARM Cortex-A9 Sony PlayStation Vita (requires VITASDK toolchain)
|
||||
|
|
@ -246,7 +247,7 @@ target | std | host | notes
|
|||
[`armv7-unknown-linux-uclibceabi`](platform-support/armv7-unknown-linux-uclibceabi.md) | ✓ | ✓ | ARMv7 Linux with uClibc, softfloat
|
||||
[`armv7-unknown-linux-uclibceabihf`](platform-support/armv7-unknown-linux-uclibceabihf.md) | ✓ | ? | ARMv7 Linux with uClibc, hardfloat
|
||||
`armv7-unknown-freebsd` | ✓ | ✓ | ARMv7 FreeBSD
|
||||
`armv7-unknown-netbsd-eabihf` | ✓ | ✓ |
|
||||
[`armv7-unknown-netbsd-eabihf`](platform-support/netbsd.md) | ✓ | ✓ | ARMv7 NetBSD w/hard-float
|
||||
`armv7-wrs-vxworks-eabihf` | ? | |
|
||||
[`armv7a-kmc-solid_asp3-eabi`](platform-support/kmc-solid.md) | ✓ | | ARM SOLID with TOPPERS/ASP3
|
||||
[`armv7a-kmc-solid_asp3-eabihf`](platform-support/kmc-solid.md) | ✓ | | ARM SOLID with TOPPERS/ASP3, hardfloat
|
||||
|
|
@ -262,7 +263,7 @@ target | std | host | notes
|
|||
`i686-apple-darwin` | ✓ | ✓ | 32-bit macOS (10.7+, Lion+)
|
||||
`i686-pc-windows-msvc` | * | | 32-bit Windows XP support
|
||||
`i686-unknown-haiku` | ✓ | ✓ | 32-bit Haiku
|
||||
`i686-unknown-netbsd` | ✓ | ✓ | NetBSD/i386 with SSE2
|
||||
[`i686-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | NetBSD/i386 with SSE2
|
||||
[`i686-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | 32-bit OpenBSD
|
||||
`i686-uwp-windows-gnu` | ? | |
|
||||
`i686-uwp-windows-msvc` | ? | |
|
||||
|
|
@ -283,7 +284,7 @@ target | std | host | notes
|
|||
`msp430-none-elf` | * | | 16-bit MSP430 microcontrollers
|
||||
`powerpc-unknown-linux-gnuspe` | ✓ | | PowerPC SPE Linux
|
||||
`powerpc-unknown-linux-musl` | ? | |
|
||||
`powerpc-unknown-netbsd` | ✓ | ✓ |
|
||||
[`powerpc-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | NetBSD 32-bit powerpc systems
|
||||
`powerpc-unknown-openbsd` | ? | |
|
||||
`powerpc-wrs-vxworks-spe` | ? | |
|
||||
`powerpc-wrs-vxworks` | ? | |
|
||||
|
|
@ -307,7 +308,7 @@ target | std | host | notes
|
|||
[`riscv64gc-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | OpenBSD/riscv64
|
||||
`s390x-unknown-linux-musl` | | | S390x Linux (kernel 3.2, MUSL)
|
||||
`sparc-unknown-linux-gnu` | ✓ | | 32-bit SPARC Linux
|
||||
`sparc64-unknown-netbsd` | ✓ | ✓ | NetBSD/sparc64
|
||||
[`sparc64-unknown-netbsd`](platform-support/netbsd.md) | ✓ | ✓ | NetBSD/sparc64
|
||||
[`sparc64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | OpenBSD/sparc64
|
||||
`thumbv4t-none-eabi` | * | | ARMv4T T32
|
||||
[`thumbv5te-none-eabi`](platform-support/armv5te-none-eabi.md) | * | | ARMv5TE T32
|
||||
|
|
|
|||
|
|
@ -13,10 +13,12 @@ Targets for the [ESP-IDF](https://github.com/espressif/esp-idf) development fram
|
|||
|
||||
The target names follow this format: `$ARCH-esp-espidf`, where `$ARCH` specifies the target processor architecture. The following targets are currently defined:
|
||||
|
||||
| Target name | Target CPU(s) | Minimum ESP-IDF version |
|
||||
|--------------------------------|-----------------------|-------------------------|
|
||||
| `riscv32imc-esp-espidf` | [ESP32-C3](https://www.espressif.com/en/products/socs/esp32-c3) | `v4.3` |
|
||||
| `riscv32imac-esp-espidf` | [ESP32-C6](https://www.espressif.com/en/products/socs/esp32-c6) | `v5.1` |
|
||||
| Target name | Target CPU(s) | Minimum ESP-IDF version |
|
||||
| ------------------------ | --------------------------------------------------------------- | ----------------------- |
|
||||
| `riscv32imc-esp-espidf` | [ESP32-C2](https://www.espressif.com/en/products/socs/esp32-c2) | `v5.0` |
|
||||
| `riscv32imc-esp-espidf` | [ESP32-C3](https://www.espressif.com/en/products/socs/esp32-c3) | `v4.3` |
|
||||
| `riscv32imac-esp-espidf` | [ESP32-C6](https://www.espressif.com/en/products/socs/esp32-c6) | `v5.1` |
|
||||
| `riscv32imac-esp-espidf` | [ESP32-H2](https://www.espressif.com/en/products/socs/esp32-h2) | `v5.1` |
|
||||
|
||||
It is recommended to use the latest ESP-IDF stable release if possible.
|
||||
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ While the integer base ABI is implied by the machine field, the floating po
|
|||
|
||||
## Target maintainers
|
||||
|
||||
- [ZHAI Xiaojuan](https://github.com/zhaixiaojuan) `zhaixiaojuan@loongson.cn`
|
||||
- [WANG Rui](https://github.com/heiher) `wangrui@loongson.cn`
|
||||
- [ZHAI Xiang](https://github.com/xiangzhai) `zhaixiang@loongson.cn`
|
||||
- [ZHAI Xiaojuan](https://github.com/zhaixiaojuan) `zhaixiaojuan@loongson.cn`
|
||||
- [WANG Xuerui](https://github.com/xen0n) `git@xen0n.name`
|
||||
|
||||
## Requirements
|
||||
|
|
|
|||
107
src/doc/rustc/src/platform-support/netbsd.md
Normal file
107
src/doc/rustc/src/platform-support/netbsd.md
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
# \*-unknown-netbsd
|
||||
|
||||
**Tier: 3**
|
||||
|
||||
[NetBSD] multi-platform 4.4BSD-based UNIX-like operating system.
|
||||
|
||||
[NetBSD]: https://www.NetBSD.org/
|
||||
|
||||
The target names follow this format: `$ARCH-unknown-netbsd{-$SUFFIX}`,
|
||||
where `$ARCH` specifies the target processor architecture and
|
||||
`-$SUFFIX` (optional) might indicate the ABI. The following targets
|
||||
are currently defined running NetBSD:
|
||||
|
||||
| Target name | NetBSD Platform |
|
||||
|--------------------------------|-----------------|
|
||||
| `amd64-unknown-netbsd` | [amd64 / x86_64 systems](https://wiki.netbsd.org/ports/amd64/) |
|
||||
| `armv7-unknown-netbsd-eabihf` | [32-bit ARMv7 systems with hard-float](https://wiki.netbsd.org/ports/evbarm/) |
|
||||
| `armv6-unknown-netbsd-eabihf` | [32-bit ARMv6 systems with hard-float](https://wiki.netbsd.org/ports/evbarm/) |
|
||||
| `aarch64-unknown-netbsd` | [64-bit ARM systems, little-endian](https://wiki.netbsd.org/ports/evbarm/) |
|
||||
| `aarch64_be-unknown-netbsd` | [64-bit ARM systems, big-endian](https://wiki.netbsd.org/ports/evbarm/) |
|
||||
| `i586-unknown-netbsd` | [32-bit i386, restricted to Pentium](https://wiki.netbsd.org/ports/i386/) |
|
||||
| `i686-unknown-netbsd` | [32-bit i386 with SSE](https://wiki.netbsd.org/ports/i386/) |
|
||||
| `mipsel-unknown-netbsd` | [32-bit mips, requires mips32 cpu support](https://wiki.netbsd.org/ports/evbmips/) |
|
||||
| `powerpc-unknown-netbsd` | [Various 32-bit PowerPC systems, e.g. MacPPC](https://wiki.netbsd.org/ports/macppc/) |
|
||||
| `sparc64-unknown-netbsd` | [Sun UltraSPARC systems](https://wiki.netbsd.org/ports/sparc64/) |
|
||||
|
||||
All use the "native" `stdc++` library which goes along with the natively
|
||||
supplied GNU C++ compiler for the given OS version. Many of the bootstraps
|
||||
are built for NetBSD 9.x, although some exceptions exist (some
|
||||
are built for NetBSD 8.x but also work on newer OS versions).
|
||||
|
||||
|
||||
## Designated Developers
|
||||
|
||||
- [@he32](https://github.com/he32), `he@NetBSD.org`
|
||||
- [NetBSD/pkgsrc-wip's rust](https://github.com/NetBSD/pkgsrc-wip/blob/master/rust/Makefile) maintainer (see MAINTAINER variable). This package is part of "pkgsrc work-in-progress" and is used for deployment and testing of new versions of rust
|
||||
- [NetBSD's pkgsrc lang/rust](https://github.com/NetBSD/pkgsrc/tree/trunk/lang/rust) for the "proper" package in pkgsrc.
|
||||
- [NetBSD's pkgsrc lang/rust-bin](https://github.com/NetBSD/pkgsrc/tree/trunk/lang/rust-bin) which re-uses the bootstrap kit as a binary distribution and therefore avoids the rather protracted native build time of rust itself
|
||||
|
||||
Fallback to pkgsrc-users@NetBSD.org, or fault reporting via NetBSD's
|
||||
bug reporting system.
|
||||
|
||||
## Requirements
|
||||
|
||||
The `amd64-unknown-netbsd` artifacts is being distributed by the
|
||||
rust project.
|
||||
|
||||
The other targets are built by the designated developers (see above),
|
||||
and the targets are initially cross-compiled, but many if not most
|
||||
of them are also built natively as part of testing.
|
||||
|
||||
|
||||
## Building
|
||||
|
||||
The default build mode for the packages is a native build.
|
||||
|
||||
|
||||
## Cross-compilation
|
||||
|
||||
These targets can be cross-compiled, and we do that via the pkgsrc
|
||||
package(s).
|
||||
|
||||
Cross-compilation typically requires the "tools" and "dest" trees
|
||||
resulting from a normal cross-build of NetBSD itself, ref. our main
|
||||
build script, `build.sh`.
|
||||
|
||||
See e.g. [do-cross.mk
|
||||
Makefile](https://github.com/NetBSD/pkgsrc/tree/trunk/lang/rust/do-cross.mk)
|
||||
for the Makefile used to cross-build all the above NetBSD targets
|
||||
(except for the `amd64` target).
|
||||
|
||||
The major option for the rust build is whether to build rust with
|
||||
the LLVM rust carries in its distribution, or use the LLVM package
|
||||
installed from pkgsrc. The `PKG_OPTIONS.rust` option is
|
||||
`rust-internal-llvm`, ref. [the rust package's options.mk make
|
||||
fragment](https://github.com/NetBSD/pkgsrc/blob/trunk/lang/rust/options.mk).
|
||||
It defaults to being set for a few of the above platforms, for
|
||||
various reasons (see comments), but is otherwise unset and therefore
|
||||
indicates use of the pkgsrc LLVM.
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
The Rust testsuite could presumably be run natively.
|
||||
|
||||
For the systems where the maintainer can build natively, the rust
|
||||
compiler itself is re-built natively. This involves the rust compiler
|
||||
being re-built with the newly self-built rust compiler, so excercises
|
||||
the result quite extensively.
|
||||
|
||||
Additionally, for some systems we build `librsvg`, and for the more
|
||||
capable systems we build and test `firefox` (amd64, i386, aarch64).
|
||||
|
||||
|
||||
## Building Rust programs
|
||||
|
||||
Rust ships pre-compiled artifacts for the `amd64-unknown-netbsd`
|
||||
target.
|
||||
|
||||
For the other systems mentioned above, using the `pkgsrc` route is
|
||||
probably the easiest, possibly via the `rust-bin` package to save
|
||||
time, see the `RUST_TYPE` variable from the `rust.mk` Makefile
|
||||
fragment.
|
||||
|
||||
The pkgsrc rust package has a few files to assist with building
|
||||
pkgsrc packages written in rust, ref. the `rust.mk` and `cargo.mk`
|
||||
Makefile fragments in the `lang/rust` package.
|
||||
Loading…
Add table
Add a link
Reference in a new issue