Commit graph

5020 commits

Author SHA1 Message Date
onur-ozkan
71bc63c396 remove outdated bootstrap FIXME
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-12 00:34:09 +03:00
Vadim Petrochenkov
b563595c6e linker: Remove -Zgcc-ld option
It is subsumed by `-Clinker-flavor=*-lld-cc -Clink-self-contained=+linker` options now
2023-10-08 10:05:25 +03:00
Joseph Ryan
f55c879669 bootstrap: make copying linker binaries conditional 2023-10-03 11:25:07 -07:00
onur-ozkan
2c8759ef8a ensure the parent path's existence on x install
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-02 20:48:53 +03:00
bors
b0889cb4ed Auto merge of #116276 - lqd:lld-sysroot, r=onur-ozkan
bootstrap: copy self-contained linking components to `stage0-sysroot`

I hit this issue while trying to bootstrap using a rustc where `rust-lld` is used by default: this was the cause of the failure to profile rustc-perf's bootstrap benchmark in https://github.com/rust-lang/rust/pull/113382.

`stage0-sysroot` currently only has libs and self-contained objects, not the other self-contained linking components yet. Most notably, it does not contain the linker and wrappers that we build, and that rustup distributes.

If you try to bootstrap using the bootstrap compiler's `rust-lld`, it will fail to link std at stage0 because `rust-lld` and the `gcc-ld` wrappers, will not be found in `stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/bin`.

This PR copies the `bin` directory next to the `lib` directory when `rust.lld` is enabled in the config (though maybe it could be done unconditionally, the fact that we need it to link does not necessarily mean that we'd want to build and provide it at stage1).

cc `@Kobzol` who also encountered this issue while using lld during bootstrap.
2023-10-02 09:41:42 +00:00
bors
781ebbec8a Auto merge of #115898 - onur-ozkan:config-change-tracking, r=Mark-Simulacrum
bootstrap major change detection implementation

The use of `changelog-seen` and `bootstrap/CHANGELOG.md` has not been functional in any way for many years. We often do major/breaking changes but never update the changelog file or the `changelog-seen`. This is an alternative method for tracking major or breaking changes and informing developers when such changes occur.

Example output when bootstrap detects a major change:
![image](https://github.com/rust-lang/rust/assets/39852038/ee802dfa-a02b-488b-a433-f853ce079b8a)
2023-10-02 07:41:52 +00:00
onur-ozkan
78eed2dfe1 add Changelog topic to bootstrap/README.md
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-01 16:55:27 +03:00
onur-ozkan
957de61594 implement major change tracking for the bootstrap configuration
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-01 16:54:52 +03:00
Rémy Rakic
82d23a6275 bootstrap: copy self-contained linking components to stage0-sysroot
otherwise bootstrap will fail to link the stdlib on a target using the
self-contained linker: rust-lld will not be found since it's currently
not in the stage0-sysroot.
2023-10-01 10:35:30 +00:00
Matthias Krüger
cb4e2994c2
Rollup merge of #116292 - onur-ozkan:warn-wrong-sources, r=clubby789
warn if source is not either a git clone or a dist tarball

When the repository is downloaded directly via HTTP(as in #115041), builds may fail due to missing submodules.

This PR adds a check that warns people in such cases.
2023-10-01 12:18:11 +02:00
bors
b11431edc1 Auto merge of #116108 - onur-ozkan:support-make-jobs-flag, r=Mark-Simulacrum
Pass `-jN` from Make to `BOOTSTRAP_ARGS`

Enables the same functionality as `x -jN` in Make by passing the `-jN` arg from Make to the `BOOTSTRAP_ARGS` if it is specified.
2023-10-01 00:25:26 +00:00
bors
bb6c66be37 Auto merge of #116127 - onur-ozkan:sanity-checks-on-install, r=Mark-Simulacrum
add sanity checks for user write access on `x install`

Resolves #113580
2023-09-30 18:00:23 +00:00
onur-ozkan
88e7718ec3 warn if source is not either a git clone or a dist tarball
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-30 20:03:26 +03:00
Matthias Krüger
f777e8cf22
Rollup merge of #116133 - pouriya:refactor-bootstrap.py, r=albertlarsan68
ref(bootstrap.py): add `eprint` function

Implemented a 3-line function called `eprint` which is just like `print` but for `stderr`. So each `print(..., file=sys.stderr)` becomes `eprint(...)`.

<br/>

Testing `eprint` function:
```sh
$ cat eprint.py
```
```python
import sys

def eprint(*args, **kwargs):
	kwargs['file'] = sys.stderr
	print(*args, **kwargs)

eval('eprint({})'.format(sys.argv[1]))
```
```sh
$ python3 eprint.py '"hello"'
hello
$
```
```sh
$ python3 eprint.py '"hello"' 2>/dev/null
$
```
```sh
$ python3 eprint.py '"hello", "world", flush=True, file=sys.stdout'
hello world
$
```
```sh
$ python3 eprint.py '"hello", "world", flush=True, file=sys.stdout' 2>/dev/null
$
```
2023-09-29 10:11:12 +02:00
Oli Scherer
a38e98371b Split out the stable part of smir into its own crate to prevent accidental usage of forever unstable things 2023-09-25 14:38:27 +00:00
Pouriya Jahanbakhsh
598f11a1ee ref(bootstrap.py): add eprint function
just like `print` but for `stderr`
2023-09-25 06:57:13 +03:30
onur-ozkan
350ead8720 add sanity checks for user write access on x install
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-25 01:59:51 +03:00
bors
c7224e3c95 Auto merge of #105861 - Ayush1325:uefi-std-minimial, r=workingjubilee
Add Minimal Std implementation for UEFI

# Implemented modules:
1. alloc
2. os_str
3. env
4. math

# Related Links
Tracking Issue: https://github.com/rust-lang/rust/issues/100499
API Change Proposal: https://github.com/rust-lang/libs-team/issues/87

# Additional Information
This was originally part of https://github.com/rust-lang/rust/pull/100316. Since that PR was becoming too unwieldy and cluttered, and with suggestion from `@dvdhrm,` I have extracted a minimal std implementation to this PR.

The example in `src/doc/rustc/src/platform-support/unknown-uefi.md` has been tested for `x86_64-unknown-uefi` and `i686-unknown-uefi` in OVMF. It would be great if someone more familiar with AARCH64 can help with testing for that target.

Signed-off-by: Ayush Singh <ayushsingh1325@gmail.com>
2023-09-24 09:47:30 +00:00
bors
42ca6e4e57 Auto merge of #104385 - BlackHoleFox:apple-minimum-bumps, r=petrochenkov
Raise minimum supported Apple OS versions

This implements the proposal to raise the minimum supported Apple OS versions as laid out in the now-completed MCP (https://github.com/rust-lang/compiler-team/issues/556).

As of this PR, rustc and the stdlib now support these versions as the baseline:
- macOS: 10.12 Sierra
- iOS: 10
- tvOS: 10
- watchOS: 5 (Unchanged)

In addition to everything this breaks indirectly, these changes also erase the `armv7-apple-ios` target (currently tier 3) because the oldest supported iOS device now uses ARMv7s. Not sure what the policy around tier3 target removal is but shimming it is not an option due to the linker refusing.

[Per comment](https://github.com/rust-lang/compiler-team/issues/556#issuecomment-1297175073), this requires a FCP to merge. cc `@wesleywiser.`
2023-09-24 02:35:05 +00:00
BlackHoleFox
3b52befdce Raise minimum supported iOS version to 10.0
Drop the armv7-apple-ios target too because its no longer supported
with the hardware iOS 10 requires.
2023-09-23 19:14:25 -05:00
onur-ozkan
863d2fddd7 Pass -jN from Make to BOOTSTRAP_ARGS
Enables the same functionality as `x -jN` in Make by
passing the `-jN` arg from Make to the `BOOTSTRAP_ARGS` args
if it is specified.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-23 23:58:43 +03:00
Ayush Singh
48c6ae0611
Add Minimal Std implementation for UEFI
Implemented modules:
1. alloc
2. os_str
3. env
4. math

Tracking Issue: https://github.com/rust-lang/rust/issues/100499
API Change Proposal: https://github.com/rust-lang/libs-team/issues/87

This was originally part of https://github.com/rust-lang/rust/pull/100316. Since
that PR was becoming too unwieldy and cluttered, and with suggestion
from @dvdhrm, I have extracted a minimal std implementation to this PR.

Signed-off-by: Ayush Singh <ayushsingh1325@gmail.com>
2023-09-22 17:23:30 +05:30
bors
f73d376fb6 Auto merge of #115230 - Vtewari2311:mod-hurd-latest, r=b-naber
added support for GNU/Hurd

adding support for i686-unknown-hurd-gnu
2023-09-21 19:24:01 +00:00
Samuel Thibault
dcea7709f2 added support for GNU/Hurd 2023-09-21 17:31:25 +02:00
Guillaume Gomez
c5f215af33
Rollup merge of #115957 - cuishuang:master, r=GuillaumeGomez
fix mismatched symbols
2023-09-19 20:23:20 +02:00
cui fliter
0944860f35 fix mismatched symbols
Signed-off-by: cui fliter <imcusg@gmail.com>
2023-09-19 18:01:32 +08:00
bors
ae9c330629 Auto merge of #104101 - betrusted-io:xous-libstd-initial, r=bjorn3
Add initial libstd support for Xous

This patchset adds some minimal support to the tier-3 target `riscv32imac-unknown-xous-elf`. The following features are supported:

* alloc
* thread creation and joining
* thread sleeping
* thread_local
* panic_abort
* mutex
* condvar
* stdout

Additionally, internal support for the various Xous primitives surrounding IPC have been added as part of the Xous FFI. These may be exposed as part of `std::os::xous::ffi` in the future, however for now they are not public.

This represents the minimum viable product. A future patchset will add support for networking and filesystem support.
2023-09-19 07:38:20 +00:00
bors
19dd953540 Auto merge of #115644 - danakj:catalyst-asan, r=cjgillot,thomcc
Enable ASAN/LSAN/TSAN for *-apple-ios-macabi

The -macabi targets are iOS running on MacOS, and they use the runtime libraries for MacOS, thus they have the same sanitizers available as the *-apple-darwin targets.

This is based on the work of aacf3213b1.

Closes #113935.
2023-09-19 01:47:23 +00:00
danakj
b7e98e13cd Document that the macabi sanitizers are shared with darwin
Do not rename and resign the darwin sanitizers a second time for
macabi.
2023-09-18 09:38:12 -04:00
danakj
4eb1b52794 Enable ASAN/LSAN/TSAN for *-apple-ios-macabi
The -macabi targets are iOS running on MacOS, and they use the runtime
libraries for MacOS, thus they have the same sanitizers available as the
*-apple-darwin targets.
2023-09-18 09:38:12 -04:00
Matthias Krüger
c843ac2ad9
Rollup merge of #115811 - bzEq:make-aix-known, r=Mark-Simulacrum
Make AIX known by bootstrap

Use `x.py` to build rustc on AIX directly is failing
```
unknown OS type: AIX
Build completed unsuccessfully in 0:00:00
```
If kernel is `AIX`, we should return default triple `powerpc64-ibm-aix` for current rustc.
2023-09-18 13:02:18 +02:00
bors
cdd182cbb2 Auto merge of #115514 - onur-ozkan:bootstrap-codebase-improvements, r=albertlarsan68
optimize and cleanup bootstrap source

I suggest reviewing this commit by commit.
2023-09-17 08:11:41 +00:00
onur-ozkan
9971008b8d micro-level optimizations for bootstrap
Overall optimizations for bootstrap on conditions, assertions,
trait implementations, etc.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-17 07:50:28 +03:00
onur-ozkan
12b1784b0b update the beginning part of bootstrap/README.md
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-17 07:50:18 +03:00
Matthias Krüger
edea0d5179
Rollup merge of #115836 - RalfJung:rust_analyzer_settings.json, r=compiler-errors
update rust_analyzer_settings.json

This works around https://github.com/rust-lang/rust-analyzer/issues/15595, and avoids relying on the unspecified working directory of this command.
2023-09-16 23:20:41 +02:00
onur-ozkan
90348db550 create helper module to be embedded for the bootstrap binaries
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-16 14:32:25 +03:00
Michael Howell
7e86fd61e8 rustdoc: merge theme css into rustdoc.css
Based on
https://github.com/rust-lang/rust/pull/115812#issuecomment-1717960119

Having them in separate files used to make more sense, before the
migration to CSS variables made the theme files as small as they are
nowadays. This is already how docs.rs and mdBook do it.
2023-09-15 07:40:17 -07:00
Ralf Jung
9af39a69ac update SETTINGS_HASHES 2023-09-14 10:39:37 +02:00
Kai Luo
122d1cc8c3 Adjust comment 2023-09-13 16:10:26 +08:00
Kai Luo
5049a7167c Adjust comment 2023-09-13 16:08:23 +08:00
Kai Luo
fc17e09029 Add comment to elaborate 2023-09-13 16:05:50 +08:00
Kai Luo
2962528b4a Make AIX known by bootstrap 2023-09-13 15:04:34 +08:00
Matthias Krüger
0a7451033b
Rollup merge of #115440 - RalfJung:bootstrap-fmt, r=Mark-Simulacrum
bootstrap/format: remove unnecessary paths.push

Cc https://github.com/rust-lang/rust/pull/106415#pullrequestreview-1606367042
I verified that this still formats all fileds when `get_modified_rs_files` is made to return an error.

r? ``@Nilstrieb``
2023-09-11 17:03:30 +02:00
bjorn3
238d8e3ec7 Allow testing cg_clif using ./x.py test 2023-09-10 15:56:56 +00:00
Guillaume Gomez
dcb465995d
Rollup merge of #115088 - LuuuXXX:issue-112009, r=albertlarsan68
Fix Step Skipping Caused by Using the `--exclude` Option

The original code was overreacting to the `--exclude` option,
eadf69a6c6/src/bootstrap/builder.rs (L257-L260)
For example:
When `x test --exclude alloc` or `x test --exclude library/alloc` is passed, the entire libraray test is skipped.

Related issues:
https://github.com/rust-lang/rust/issues/112009
2023-09-08 14:10:50 +02:00
LuuuX
45abd8caf2 Fix Issue 112009
modify fuction clond() -> cloned()

optimize the code

Handle the problem that the pathset is empty and modify the judgment of the builder::tests::test_exclude_kind

Delete unnecessary judegment conditions

skip test for library/std duo to OOM in benches as library/alloc

Add FIXME for WASM32
2023-09-08 17:10:32 +08:00
Goldstein
e0593f30fb
fix log formatting in bootstrap 2023-09-06 10:14:09 +03:00
bors
ab45885dec Auto merge of #114843 - Zalathar:test-coverage-map, r=oli-obk
coverage: Explicitly test the coverage maps produced by codegen/LLVM

Our existing coverage tests verify the output of end-to-end coverage reports, but we don't have any way to test the specific mapping information (code regions and their associated counters) that are emitted by `rustc_codegen_llvm` and LLVM. That makes it harder to to be confident in changes that would modify those mappings (whether deliberately or accidentally).

This PR addresses that by adding a new `coverage-map` test suite that does the following:
- Compiles test files to LLVM IR assembly (`.ll`)
- Feeds those IR files to a custom tool (`src/tools/coverage-dump`) that extracts and decodes coverage mappings, and prints them in a more human-readable format
- Checks the output of that tool against known-good snapshots

---

I recommend excluding the last commit while reviewing the main changes, because that last commit is just ~40 test files copied over from `tests/run-coverage`, plus their blessed coverage-map snapshots and a readme file. Those snapshots aren't really intended to be checked by hand; they're mostly there to increase the chances that an unintended change to coverage maps will be observable (even if it requires relatively specific circumstances to manifest).
2023-09-05 15:30:59 +00:00
bors
b402182d4e Auto merge of #115544 - onur-ozkan:patch-binaries-for-nix-configure, r=albertlarsan68
support `{disable,enable}-patch-binaries-for-nix` in configure.py

Provide the control of `patch-binaries-for-nix` flag from configure.py without requiring manual editing.

It's useful when:

bf1e3f31f9/src/bootstrap/bootstrap.py (L661-L667)
2023-09-05 11:52:21 +00:00
onur-ozkan
d454cab405 support {disable,enable}-patch-binaries-for-nix in configure.py
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-09-05 13:19:08 +03:00