From 5ff7eb07e15ad9a43fb137c68350687d388d3b63 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sun, 3 Mar 2024 17:21:52 +0900 Subject: [PATCH] dev --- .github/workflows/base.yml | 2 +- .github/workflows/ci.yml | 124 +++++++++--------- README.md | 118 ++++++++--------- docker/base/linux-musl-hexagon.Dockerfile | 4 +- docker/base/windows-gnu-gcc-mingw-i686.diff | 109 +++++++++++---- docker/base/windows-gnu.Dockerfile | 2 +- .../std+hexagon-unknown-linux-musl.diff | 24 ++++ docker/test/test.sh | 12 +- docker/windows-gnu.Dockerfile | 25 ++-- docker/windows-gnullvm.Dockerfile | 2 +- tools/target-list-shared.sh | 2 +- 11 files changed, 254 insertions(+), 170 deletions(-) create mode 100644 docker/test-base/patches/std+hexagon-unknown-linux-musl.diff diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml index 5c991c4..7cb3b52 100644 --- a/.github/workflows/base.yml +++ b/.github/workflows/base.yml @@ -69,7 +69,7 @@ jobs: - target: x86_64-unknown-illumos # Windows (MinGW) - # - target: i686-pc-windows-gnu # TODO + - target: i686-pc-windows-gnu - target: x86_64-pc-windows-gnu - target: x86_64-pc-windows-gnu host: aarch64 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33c1fbd..2d16afe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,32 +33,32 @@ jobs: fail-fast: false matrix: include: - - target: linux-gnu - - target: linux-gnu - host: aarch64 - # TODO(linux-musl): https://github.com/rust-lang/rust/pull/107129/ + # - target: linux-gnu + # - target: linux-gnu + # host: aarch64 + # # TODO(linux-musl): https://github.com/rust-lang/rust/pull/107129/ + # # - target: linux-musl + # # musl: '1.1' # - target: linux-musl - # musl: '1.1' - - target: linux-musl - musl: '1.2' - - target: linux-uclibc - - target: android - - target: freebsd - - target: netbsd - - target: openbsd - - target: dragonfly - - target: solaris - - target: illumos - - target: redox - # - target: fuchsia - - target: wasi - - target: emscripten + # musl: '1.2' + # - target: linux-uclibc + # - target: android + # - target: freebsd + # - target: netbsd + # - target: openbsd + # - target: dragonfly + # - target: solaris + # - target: illumos + # - target: redox + # # - target: fuchsia + # - target: wasi + # - target: emscripten - target: windows-gnu - target: windows-gnu host: aarch64 - - target: none - - target: none - host: aarch64 + # - target: none + # - target: none + # host: aarch64 runs-on: ubuntu-latest timeout-minutes: 150 permissions: @@ -77,45 +77,45 @@ jobs: HOST_ARCH: ${{ matrix.host }} MUSL_VERSION: ${{ matrix.musl }} - manifest: - if: github.repository_owner == 'taiki-e' && github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) - needs: build - runs-on: ubuntu-latest - timeout-minutes: 60 - permissions: - contents: read - packages: write - steps: - - uses: taiki-e/github-actions/checkout@main - - run: | - echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin - echo "PUSH_TO_GHCR=1" >>"${GITHUB_ENV}" - if: github.repository_owner == 'taiki-e' && (github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') - - run: tools/docker-manifest.sh + # manifest: + # if: github.repository_owner == 'taiki-e' && github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) + # needs: build + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # permissions: + # contents: read + # packages: write + # steps: + # - uses: taiki-e/github-actions/checkout@main + # - run: | + # echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin + # echo "PUSH_TO_GHCR=1" >>"${GITHUB_ENV}" + # if: github.repository_owner == 'taiki-e' && (github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') + # - run: tools/docker-manifest.sh - codegen: - runs-on: ubuntu-latest - timeout-minutes: 60 - permissions: - contents: write - pull-requests: write - steps: - - uses: taiki-e/github-actions/checkout@main - - name: Install Rust - run: rustup toolchain add nightly --no-self-update && rustup default nightly - - run: tools/gen.sh - - id: diff - run: tools/ci/gen.sh - if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') - - uses: peter-evans/create-pull-request@v6 - with: - title: Update generated code - body: | - Auto-generated by [create-pull-request][1] - [Please close and immediately reopen this pull request to run CI.][2] + # codegen: + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # permissions: + # contents: write + # pull-requests: write + # steps: + # - uses: taiki-e/github-actions/checkout@main + # - name: Install Rust + # run: rustup toolchain add nightly --no-self-update && rustup default nightly + # - run: tools/gen.sh + # - id: diff + # run: tools/ci/gen.sh + # if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') + # - uses: peter-evans/create-pull-request@v6 + # with: + # title: Update generated code + # body: | + # Auto-generated by [create-pull-request][1] + # [Please close and immediately reopen this pull request to run CI.][2] - [1]: https://github.com/peter-evans/create-pull-request - [2]: https://github.com/peter-evans/create-pull-request/blob/HEAD/docs/concepts-guidelines.md#workarounds-to-trigger-further-workflow-runs - branch: update-generated-code - if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false' - - run: git add -N . && git diff --exit-code + # [1]: https://github.com/peter-evans/create-pull-request + # [2]: https://github.com/peter-evans/create-pull-request/blob/HEAD/docs/concepts-guidelines.md#workarounds-to-trigger-further-workflow-runs + # branch: update-generated-code + # if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false' + # - run: git add -N . && git diff --exit-code diff --git a/README.md b/README.md index 1870fa2..814996a 100644 --- a/README.md +++ b/README.md @@ -41,37 +41,37 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t | target | glibc | GCC | host | | ------ | ----- | --- | ---- | -| `aarch64-unknown-linux-gnu` | 2.27 (x86_64 host) / host (aarch64 host) | 7.4.0 (x86_64 host) / host (aarch64 host) | x86_64 linux (glibc 2.27+) | -| `aarch64_be-unknown-linux-gnu` (tier3) | 2.31 | 10.2.1 | x86_64 linux (glibc 2.27+) | -| `arm-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `arm-unknown-linux-gnueabihf` | 2.24 | 9.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `armeb-unknown-linux-gnueabi` (tier3) | 2.25 | 7.5.0 | x86_64 linux (glibc 2.27+) | -| `armv5te-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `armv7-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `armv7-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `i586-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `i686-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `loongarch64-unknown-linux-gnu` | 2.36 | 13.0.0 | x86_64 linux (any libc) | -| `mips-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `mips64-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `mips64el-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `mipsel-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `mipsisa32r6-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) | -| `mipsisa32r6el-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) | -| `mipsisa64r6-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) | -| `mipsisa64r6el-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) | -| `powerpc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `powerpc-unknown-linux-gnuspe` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `powerpc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `powerpc64le-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `riscv32gc-unknown-linux-gnu` (tier3) | 2.33 | 11.1.0 | x86_64 linux (glibc 2.27+) | -| `riscv64gc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `s390x-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `sparc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `sparc-unknown-linux-gnu` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) | -| `thumbv7neon-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | -| `x86_64-unknown-linux-gnu` | host (x86_64 host) / 2.27 (aarch64 host) | host (x86_64 host) / 7.4.0 (aarch64 host) | x86_64/aarch64 linux (glibc 2.27+) | -| `x86_64-unknown-linux-gnux32` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) | +| `aarch64-unknown-linux-gnu` | 2.27 (x86_64 host) / host (aarch64 host) | 7.4.0 (x86_64 host) / host (aarch64 host) | x86_64 Linux (glibc 2.27+) | +| `aarch64_be-unknown-linux-gnu` (tier3) | 2.31 | 10.2.1 | x86_64 Linux (glibc 2.27+) | +| `arm-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `arm-unknown-linux-gnueabihf` | 2.24 | 9.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `armeb-unknown-linux-gnueabi` (tier3) | 2.25 | 7.5.0 | x86_64 Linux (glibc 2.27+) | +| `armv5te-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `armv7-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `armv7-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `i586-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `i686-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `loongarch64-unknown-linux-gnu` | 2.36 | 13.0.0 | x86_64 Linux (any libc) | +| `mips-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `mips64-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `mips64el-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `mipsel-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `mipsisa32r6-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) | +| `mipsisa32r6el-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) | +| `mipsisa64r6-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) | +| `mipsisa64r6el-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) | +| `powerpc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `powerpc-unknown-linux-gnuspe` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `powerpc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `powerpc64le-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `riscv32gc-unknown-linux-gnu` (tier3) | 2.33 | 11.1.0 | x86_64 Linux (glibc 2.27+) | +| `riscv64gc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `s390x-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `sparc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `sparc-unknown-linux-gnu` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) | +| `thumbv7neon-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | +| `x86_64-unknown-linux-gnu` | host (x86_64 host) / 2.27 (aarch64 host) | host (x86_64 host) / 7.4.0 (aarch64 host) | x86_64/aarch64 Linux (glibc 2.27+) | +| `x86_64-unknown-linux-gnux32` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) | [1] [Since nightly-2023-07-05](https://github.com/rust-lang/compiler-team/issues/648), mips{,el}-unknown-linux-gnu requires release mode for building std
@@ -82,7 +82,7 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t | musl 1.2.3 | 9.4.0 [1] | [2] | ✓ (libstdc++) [1] | ✓ (qemu) [3] | [4] | [1] Except for hexagon-unknown-linux-musl
-[2] 16.0.5 for hexagon-unknown-linux-musl, otherwise host
+[2] 17.0.0-rc3 for hexagon-unknown-linux-musl, otherwise host
[3] hexagon-unknown-linux-musl requires release mode for building test
[4] See target list below for details
@@ -92,30 +92,30 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t | target | host | | ------ | ---- | -| `aarch64-unknown-linux-musl` | x86_64 linux (any libc) | -| `arm-unknown-linux-musleabi` | x86_64 linux (any libc) | -| `arm-unknown-linux-musleabihf` | x86_64 linux (any libc) | -| `armv5te-unknown-linux-musleabi` | x86_64 linux (any libc) | -| `armv7-unknown-linux-musleabi` | x86_64 linux (any libc) | -| `armv7-unknown-linux-musleabihf` | x86_64 linux (any libc) | -| `hexagon-unknown-linux-musl` (tier3) | x86_64 linux (glibc 2.27+) | -| `i586-unknown-linux-musl` | x86_64 linux (any libc) | -| `i686-unknown-linux-musl` | x86_64 linux (any libc) | -| `mips-unknown-linux-musl` | x86_64 linux (any libc) | -| `mips64-unknown-linux-muslabi64` | x86_64 linux (any libc) | -| `mips64el-unknown-linux-muslabi64` | x86_64 linux (any libc) | -| `mipsel-unknown-linux-musl` | x86_64 linux (any libc) | -| `powerpc-unknown-linux-musl` (tier3) | x86_64 linux (any libc) | -| `powerpc64le-unknown-linux-musl` (tier3) | x86_64 linux (any libc) | -| `s390x-unknown-linux-musl` (tier3) | x86_64 linux (any libc) | -| `thumbv7neon-unknown-linux-musleabihf` (tier3) | x86_64 linux (any libc) | -| `x86_64-unknown-linux-musl` | x86_64 linux (any libc) | +| `aarch64-unknown-linux-musl` | x86_64 Linux (any libc) | +| `arm-unknown-linux-musleabi` | x86_64 Linux (any libc) | +| `arm-unknown-linux-musleabihf` | x86_64 Linux (any libc) | +| `armv5te-unknown-linux-musleabi` | x86_64 Linux (any libc) | +| `armv7-unknown-linux-musleabi` | x86_64 Linux (any libc) | +| `armv7-unknown-linux-musleabihf` | x86_64 Linux (any libc) | +| `hexagon-unknown-linux-musl` (tier3) | x86_64 Linux (glibc 2.27+) | +| `i586-unknown-linux-musl` | x86_64 Linux (any libc) | +| `i686-unknown-linux-musl` | x86_64 Linux (any libc) | +| `mips-unknown-linux-musl` | x86_64 Linux (any libc) | +| `mips64-unknown-linux-muslabi64` | x86_64 Linux (any libc) | +| `mips64el-unknown-linux-muslabi64` | x86_64 Linux (any libc) | +| `mipsel-unknown-linux-musl` | x86_64 Linux (any libc) | +| `powerpc-unknown-linux-musl` (tier3) | x86_64 Linux (any libc) | +| `powerpc64le-unknown-linux-musl` (tier3) | x86_64 Linux (any libc) | +| `s390x-unknown-linux-musl` (tier3) | x86_64 Linux (any libc) | +| `thumbv7neon-unknown-linux-musleabihf` (tier3) | x86_64 Linux (any libc) | +| `x86_64-unknown-linux-musl` | x86_64 Linux (any libc) | ### Linux (uClibc) | libc | GCC | clang | C++ | test | host | | ---- | --- | ----- | --- | ---- | ---- | -| uClibc-ng 1.0.34 | 10.2.0 | host | ✓ (libstdc++) | ✓ (qemu) | x86_64 linux (glibc 2.17+) | +| uClibc-ng 1.0.34 | 10.2.0 | host | ✓ (libstdc++) | ✓ (qemu) | x86_64 Linux (glibc 2.17+) | ([Dockerfile](docker/linux-uclibc.Dockerfile)) @@ -133,7 +133,7 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t | libc | GCC | clang | C++ | test | host | | ---- | --- | ----- | --- | ---- | ---- | -| [1] | N/A | 14.0.6 | ? (libc++) | ✓ (qemu) | x86_64 linux (glibc 2.17+) | +| [1] | N/A | 14.0.6 | ? (libc++) | ✓ (qemu) | x86_64 Linux (glibc 2.17+) | [1] See target list below for details
@@ -275,10 +275,10 @@ https://gitlab.redox-os.org/redox-os/redox/-/releases | libc | GCC | clang | C++ | test | host | | ---- | --- | ----- | --- | ---- | ---- | -| wasi-sdk 20 (wasi-libc 1dfe5c3) | N/A | 16.0.0 | ? (libc++) | ✓ (wasmtime) | x86_64 linux (glibc 2.27+) | +| wasi-sdk 21 (wasi-libc c5264e2) | N/A | 17.0.6 | ? (libc++) | ✓ (wasmtime) | x86_64 linux (glibc 2.27+) | ([Dockerfile](docker/wasi.Dockerfile)) @@ -303,11 +303,11 @@ clang version and wasi-libc hash can be found here: https://github.com/WebAssemb | libc | GCC | clang | C++ | test | host | | ---- | --- | ----- | --- | ---- | ---- | -| Mingw-w64 7.0.0 | 9.3.0 | host | ✓ (libstdc++) | ✓ (wine) | [1] | +| Mingw-w64 8.0.0 | 10.3.0 | host | ✓ (libstdc++) | ✓ (wine) | [1] | [1] See target list below for details
@@ -318,8 +318,8 @@ GCC version: https://packages.ubuntu.com/en/focal/gcc-mingw-w64-base | target | host | | ------ | ---- | -| `x86_64-pc-windows-gnu` | x86_64/aarch64 linux (glibc 2.31+) | -| `i686-pc-windows-gnu` | x86_64 linux (glibc 2.31+) | +| `x86_64-pc-windows-gnu` | x86_64/aarch64 linux (glibc 2.35+) | +| `i686-pc-windows-gnu` | x86_64 linux (glibc 2.35+) | ### Windows (LLVM MinGW) diff --git a/docker/base/linux-musl-hexagon.Dockerfile b/docker/base/linux-musl-hexagon.Dockerfile index ac0b6a0..e380ede 100644 --- a/docker/base/linux-musl-hexagon.Dockerfile +++ b/docker/base/linux-musl-hexagon.Dockerfile @@ -13,8 +13,8 @@ ARG RUST_TARGET ARG TOOLCHAIN_DIR=/toolchain/x86_64-linux-gnu RUN mkdir -p /toolchain # https://codelinaro.jfrog.io/ui/native/codelinaro-toolchain-for-hexagon -ARG LLVM_VERSION=16.0.6 -RUN curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/v${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-cross-${RUST_TARGET}.tar.xz" \ +ARG LLVM_VERSION=17.0.0-rc3 +RUN curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-cross-hexagon-unknown-linux-musl.tar.xz" \ | tar xJf - --strip-components 1 -C /toolchain RUN < - -Package: @@PACKAGE@@-mingw-w64-x86-64 --Architecture: any --Depends: @@DEPENDS64@@, +-Architecture: all +-Depends: @@PACKAGE@@-mingw-w64-x86-64-posix, +- @@PACKAGE@@-mingw-w64-x86-64-win32, +- ${misc:Depends} +-Built-Using: gcc-@@VERSION@@ (= ${gcc:Version}) +-Description: GNU @@LANGUAGE@@ compiler for MinGW-w64 targeting Win64 +- MinGW-w64 provides a development and runtime environment for 32- and +- 64-bit (x86 and x64) Windows applications using the Windows API and +- the GNU Compiler Collection (gcc). +- . +- This metapackage provides the @@LANGUAGE@@ compiler, supporting +- cross-compiling to 64-bit MinGW-w64 targets. +-Build-Profiles: +- +-Package: @@PACKAGE@@-mingw-w64-x86-64-posix +-Architecture: @@ARCH@@ +-Depends: @@DEPENDS64P@@, - ${misc:Depends}, - ${shlibs:Depends} -Suggests: gcc-@@VERSION@@-locales (>= ${local:Version}) @@ -25,37 +40,59 @@ index 5c80a28..eb85d4b 100644 -Conflicts: @@CONFLICTS64@@ -Replaces: @@REPLACES64@@ -Built-Using: gcc-@@VERSION@@ (= ${gcc:Version}) --Description: GNU @@LANGUAGE@@ compiler for MinGW-w64 targeting Win64 +-Description: GNU @@LANGUAGE@@ compiler for MinGW-w64, Win64/POSIX - MinGW-w64 provides a development and runtime environment for 32- and - 64-bit (x86 and x64) Windows applications using the Windows API and - the GNU Compiler Collection (gcc). - . - This package contains the @@LANGUAGE@@ compiler, supporting -- cross-compiling to 64-bit MinGW-w64 targets. +- cross-compiling to 64-bit MinGW-w64 targets, using the POSIX +- threading model. +-Build-Profiles: +- +-Package: @@PACKAGE@@-mingw-w64-x86-64-win32 +-Architecture: @@ARCH@@ +-Depends: @@DEPENDS64W@@, +- ${misc:Depends}, +- ${shlibs:Depends} +-Suggests: gcc-@@VERSION@@-locales (>= ${local:Version}) +-Breaks: @@BREAKS64@@ +-Conflicts: @@CONFLICTS64@@ +-Replaces: @@REPLACES64@@ +-Built-Using: gcc-@@VERSION@@ (= ${gcc:Version}) +-Description: GNU @@LANGUAGE@@ compiler for MinGW-w64, Win64/Win32 +- MinGW-w64 provides a development and runtime environment for 32- and +- 64-bit (x86 and x64) Windows applications using the Windows API and +- the GNU Compiler Collection (gcc). +- . +- This package contains the @@LANGUAGE@@ compiler, supporting +- cross-compiling to 64-bit MinGW-w64 targets, using the Win32 +- threading model. -Build-Profiles: diff --git a/debian/rules b/debian/rules -index 9e7e40c..082ce5a 100755 +index cfba9e6..ecabb89 100755 --- a/debian/rules +++ b/debian/rules -@@ -58,7 +58,7 @@ ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),) +@@ -25,8 +25,7 @@ export NO_PKG_MANGLE=1 + + target_version := 10 + target32 := i686-w64-mingw32 +-target64 := x86_64-w64-mingw32 +-targets := $(target32) $(target64) ++targets := $(target32) + threads := posix win32 + gnat_arches := alpha amd64 arm64 armel armhf hppa i386 mips64el mipsel ppc64 ppc64el riscv64 s390x sh4 sparc64 x32 + +@@ -67,7 +66,7 @@ ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),) INSTALL_TARGET := install-gcc else # Build the full GCC. -- languages := c,c++,fortran,objc,obj-c++,ada +- languages := c,c++,fortran,objc,obj-c++ + languages := c,c++ - BUILD_TARGET := - INSTALL_TARGET := install install-lto-plugin + ifneq ($(filter $(DEB_HOST_ARCH),$(gnat_arches)),) + languages := $(languages),ada endif -@@ -86,7 +86,7 @@ control-stamp: - for file in debian/*.in; do sed 'sX@@WARNING@@XThis file is generated using debian/rules control, do not editXg;s/@@VERSION@@/$(target_version)/g;s/@@BASEVERSION@@/$(base_version)/g' < $$file > $${file%%.in}; chmod --reference=$$file $${file%%.in}; done - touch $@ - --targets := i686-w64-mingw32 x86_64-w64-mingw32 -+targets := i686-w64-mingw32 - threads := posix win32 - - # Hardening on the host, none on the target -@@ -220,6 +220,10 @@ CONFFLAGS += \ +@@ -246,6 +245,10 @@ CONFFLAGS += \ # Enable libatomic CONFFLAGS += \ --enable-libatomic @@ -66,3 +103,29 @@ index 9e7e40c..082ce5a 100755 # Enable experimental::filesystem and std::filesystem CONFFLAGS += \ --enable-libstdcxx-filesystem-ts=yes +@@ -314,11 +317,6 @@ ifeq ($(filter stage1,$(DEB_BUILD_PROFILES)),) + -B$(build_dir)/$(target32)-$$threads \ + -D$(upstream_dir) -- \ + $(CONFFLAGS) --disable-sjlj-exceptions --with-dwarf2; \ +- target=$(target64); \ +- dh_auto_configure \ +- -B$(build_dir)/$(target64)-$$threads \ +- -D$(upstream_dir) -- \ +- $(CONFFLAGS); \ + done + else + set -e; \ +@@ -326,12 +324,7 @@ else + dh_auto_configure \ + -B$(build_dir)/$(target32) \ + -D$(upstream_dir) -- \ +- $(CONFFLAGS) --disable-sjlj-exceptions --with-dwarf2; \ +- target=$(target64); \ +- dh_auto_configure \ +- -B$(build_dir)/$(target64) \ +- -D$(upstream_dir) -- \ +- $(CONFFLAGS) ++ $(CONFFLAGS) --disable-sjlj-exceptions --with-dwarf2; + endif + touch $@ + diff --git a/docker/base/windows-gnu.Dockerfile b/docker/base/windows-gnu.Dockerfile index d357a2d..627cbdc 100644 --- a/docker/base/windows-gnu.Dockerfile +++ b/docker/base/windows-gnu.Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # SPDX-License-Identifier: Apache-2.0 OR MIT -ARG UBUNTU_VERSION=20.04 +ARG UBUNTU_VERSION=22.04 FROM ghcr.io/taiki-e/build-base:ubuntu-"${UBUNTU_VERSION}" as builder SHELL ["/bin/bash", "-eEuxo", "pipefail", "-c"] diff --git a/docker/test-base/patches/std+hexagon-unknown-linux-musl.diff b/docker/test-base/patches/std+hexagon-unknown-linux-musl.diff new file mode 100644 index 0000000..a681c20 --- /dev/null +++ b/docker/test-base/patches/std+hexagon-unknown-linux-musl.diff @@ -0,0 +1,24 @@ +diff --git a/src/sys/pal/unix/thread.rs b/src/sys/pal/unix/thread.rs +index 2af6382..acf3ecb 100644 +--- a/src/sys/pal/unix/thread.rs ++++ b/src/sys/pal/unix/thread.rs +@@ -225,7 +225,9 @@ pub fn set_name(_name: &CStr) { + // Newlib, Emscripten, and VxWorks have no way to set a thread name. + } + +- #[cfg(target_os = "linux")] ++ // Qualcomm fork of musl doesn't have pthread_getname_np. ++ // https://github.com/quic/musl/blob/7243e0d3a9d7e0f08d21fc194a05749e0bb26725/include/pthread.h ++ #[cfg(all(target_os = "linux", not(target_arch = "hexagon")))] + pub fn get_name() -> Option { + const TASK_COMM_LEN: usize = 16; + let mut name = vec![0u8; TASK_COMM_LEN]; +@@ -253,7 +255,7 @@ pub fn get_name() -> Option { + } + + #[cfg(not(any( +- target_os = "linux", ++ all(target_os = "linux", not(target_arch = "hexagon")), + target_os = "macos", + target_os = "ios", + target_os = "tvos", diff --git a/docker/test/test.sh b/docker/test/test.sh index 03e7e05..f487f45 100755 --- a/docker/test/test.sh +++ b/docker/test/test.sh @@ -265,10 +265,6 @@ case "${RUST_TARGET}" in # TODO(riscv32gc-unknown-linux-gnu): libstd's io-related feature on riscv32 linux is broken: https://github.com/rust-lang/rust/issues/88995 # TODO(x86_64-unknown-linux-gnux32): Invalid ELF image for this architecture riscv32gc-unknown-linux-gnu | x86_64-unknown-linux-gnux32) ;; - # TODO(windows-gnu): https://github.com/rust-lang/rust/pull/121317 - # wine: Call from 00006FFFFFC4FCF8 to unimplemented function KERNEL32.dll.WaitOnAddress, aborting - # wine: Call from 00006FFFFFC4FCF8 to unimplemented function KERNEL32.dll.WakeByAddressSingle, aborting - x86_64-pc-windows-gnu) ;; # TODO(redox): *-unknown-linux-* | *-android* | *-wasi* | *-emscripten* | *-windows-gnu*) no_run="" ;; esac @@ -384,8 +380,8 @@ EOF case "${RUST_TARGET}" in hexagon-*) cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib"/{libc.a,Scrt1.o,crt1.o,crti.o,crtn.o,rcrt1.o} "${self_contained}" - cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib/linux"/clang_rt.crtbegin-hexagon.o "${self_contained}"/crtbegin.o - cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib/linux"/clang_rt.crtend-hexagon.o "${self_contained}"/crtend.o + cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib"/clang_rt.crtbegin-hexagon.o "${self_contained}"/crtbegin.o + cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib"/clang_rt.crtend-hexagon.o "${self_contained}"/crtend.o ;; *) cp -f "${toolchain_dir}/${RUST_TARGET}/lib"/{libc.a,Scrt1.o,crt1.o,crti.o,crtn.o,rcrt1.o} "${self_contained}" @@ -1081,9 +1077,7 @@ case "${RUST_TARGET}" in assert_file_info 'for MS Windows' "${bin}" else case "${RUST_TARGET}" in - # TODO: on ubuntu 22.04+ - # aarch64-*) assert_file_info 'Aarch64 COFF object file' "${bin}" ;; - aarch64-*) assert_file_info 'data' "${bin}" ;; + aarch64-*) assert_file_info 'Aarch64 COFF object file' "${bin}" ;; i686-*) assert_file_info 'Intel 80386 COFF object file' "${bin}" ;; x86_64*) assert_file_info 'Intel amd64 COFF object file' "${bin}" ;; *) bail "unrecognized target '${RUST_TARGET}'" ;; diff --git a/docker/windows-gnu.Dockerfile b/docker/windows-gnu.Dockerfile index 5db9033..a34c09c 100644 --- a/docker/windows-gnu.Dockerfile +++ b/docker/windows-gnu.Dockerfile @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 OR MIT ARG RUST_TARGET -ARG UBUNTU_VERSION=20.04 +ARG UBUNTU_VERSION=22.04 ARG TOOLCHAIN_TAG=dev ARG HOST_ARCH=amd64 @@ -29,14 +29,15 @@ for tool in "${RUST_TARGET}"-*-posix "$(