Skip to content

feat(24.04): add gcc slices for s390x and ppc64le - #1092

Merged
lczyk merged 16 commits into
canonical:ubuntu-24.04from
alesancor1:feat/gcc-s390x-ppc64le-24.04
Jul 30, 2026
Merged

lczyk merged 16 commits into
canonical:ubuntu-24.04from
alesancor1:feat/gcc-s390x-ppc64le-24.04

Conversation

@alesancor1

@alesancor1 alesancor1 commented Jul 25, 2026 •

Copy link
Copy Markdown
Member

Proposed changes

  • Add gcc slices for s390x and ppc64le

Related issues/PRs

Part of:

Checklist

@github-actions

github-actions Bot commented Jul 25, 2026 •

Copy link
Copy Markdown

Test Coverage

Average Total Coverage: 66.67%


Arch: aarch64

Coverage: 66.67%

gcc: 🌂 66.67% (1 missing)
gcc_gcc-13
gcc-13: 🌂 66.67% (1 missing)
gcc-13_gcc
gcc-13-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-aarch64-linux-gnu_gcc
gcc-13-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-powerpc64le-linux-gnu_gcc
gcc-13-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-s390x-linux-gnu_gcc
gcc-13-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-x86-64-linux-gnu_gcc
gcc-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-aarch64-linux-gnu_gcc-13
gcc-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-powerpc64le-linux-gnu_gcc-13
gcc-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-s390x-linux-gnu_gcc-13
gcc-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-x86-64-linux-gnu_gcc-13

Arch: ppc64le

Coverage: 66.67%

gcc: 🌂 66.67% (1 missing)
gcc_gcc-13
gcc-13: 🌂 66.67% (1 missing)
gcc-13_gcc
gcc-13-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-aarch64-linux-gnu_gcc
gcc-13-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-powerpc64le-linux-gnu_gcc
gcc-13-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-s390x-linux-gnu_gcc
gcc-13-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-x86-64-linux-gnu_gcc
gcc-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-aarch64-linux-gnu_gcc-13
gcc-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-powerpc64le-linux-gnu_gcc-13
gcc-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-s390x-linux-gnu_gcc-13
gcc-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-x86-64-linux-gnu_gcc-13

Arch: s390x

Coverage: 66.67%

gcc: 🌂 66.67% (1 missing)
gcc_gcc-13
gcc-13: 🌂 66.67% (1 missing)
gcc-13_gcc
gcc-13-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-aarch64-linux-gnu_gcc
gcc-13-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-powerpc64le-linux-gnu_gcc
gcc-13-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-s390x-linux-gnu_gcc
gcc-13-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-x86-64-linux-gnu_gcc
gcc-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-aarch64-linux-gnu_gcc-13
gcc-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-powerpc64le-linux-gnu_gcc-13
gcc-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-s390x-linux-gnu_gcc-13
gcc-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-x86-64-linux-gnu_gcc-13

Arch: x86_64

Coverage: 66.67%

gcc: 🌂 66.67% (1 missing)
gcc_gcc-13
gcc-13: 🌂 66.67% (1 missing)
gcc-13_gcc
gcc-13-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-aarch64-linux-gnu_gcc
gcc-13-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-powerpc64le-linux-gnu_gcc
gcc-13-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-s390x-linux-gnu_gcc
gcc-13-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-13-x86-64-linux-gnu_gcc
gcc-aarch64-linux-gnu: 🌂 66.67% (1 missing)
gcc-aarch64-linux-gnu_gcc-13
gcc-powerpc64le-linux-gnu: 🌂 66.67% (1 missing)
gcc-powerpc64le-linux-gnu_gcc-13
gcc-s390x-linux-gnu: 🌂 66.67% (1 missing)
gcc-s390x-linux-gnu_gcc-13
gcc-x86-64-linux-gnu: 🌂 66.67% (1 missing)
gcc-x86-64-linux-gnu_gcc-13

@alesancor1
alesancor1 marked this pull request as ready for review July 25, 2026 13:50

@zhijie-yang zhijie-yang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall good. Just a nitpick on the test coverage regarding the unversioned symlink.

@alesancor1
alesancor1 requested review from lczyk and zhijie-yang July 29, 2026 15:14
@lczyk lczyk removed the Blocked label Jul 29, 2026
lczyk added 4 commits July 29, 2026 22:19
…390x-ppc64le-24.04

# Conflicts:
#	slices/cpp-13-powerpc64le-linux-gnu.yaml
#	slices/cpp-13-s390x-linux-gnu.yaml
/usr/share/doc/gcc symlinks to cpp-${ARCH_TRIPLET}, not to
cpp-13-${ARCH_TRIPLET}, so the copyright slice pulled a package that
never provides the link target and gcc_copyright left a dangling
symlink on every arch.
/usr/share/doc/gcc-13-${ARCH_TRIPLET} points at gcc-13-base only on the
native arch; on the others it points at gcc-13-${ARCH_TRIPLET}-base.
The flat essential left the symlink dangling when cross, same as the
cpp-13 slices before they were split.
errexit and xtrace were already on via the spread invocation, so this
only adds -u. Done at the invocation rather than as a set -eu line in
each of the 54 scripts.

@zhijie-yang zhijie-yang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with a non-blocking nit.

@lczyk
lczyk merged commit ed4e1e1 into canonical:ubuntu-24.04 Jul 30, 2026
30 checks passed
@lczyk

lczyk commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

merging (to unblock other work) with the gcc-13 forward ports tracked and coming soon

lczyk added a commit that referenced this pull request Oct 12, 2026
* feat(26.04): add cpp-13 slices for s390x and ppc64le

Forward port of #1091 from ubuntu-24.04, rewritten for chisel format v3.

The /usr/share/doc entry of a cpp-13-<triplet> package is a symlink whose
target depends on how that package was built: gcc-13-base for the native
build, gcc-13-<triplet>-base for the cross builds. The copyright slices
are keyed by architecture accordingly, and the four gcc-13-<triplet>-base
packages get copyright slices of their own.

* test(26.04): add integration tests for cpp-13 on s390x and ppc64le

The existing cpp-13 tests also learn about the two new spread runners, on
which they are cross-compilation cases.

* docs(26.04): mark cpp-13 copyright paths as symlinks

Matches the marker the binutils and cpp-15 slices carry, and makes it
clear the entry is not the directory it looks like.

* test(26.04): fix dynamic linker lookup in the cpp-13 tests

The ld-linux-*.so.* glob matches nothing on ppc64el and s390x, whose
loaders are ld64.so.2 and ld64.so.1. Use the same lookup #1090 gave the
binutils tests, so all four cpp-13 suites agree.

Nothing was failing: the value is only consumed on the native-architecture
path, which never runs on those two runners.

* fix(26.04): dangling gcc-13 copyright on cross arches

Same bug and same fix as the cpp-13 slices this branch builds on: the
/usr/share/doc entry of a gcc-13-<triplet> package is a symlink to
gcc-13-base for the native build and to gcc-13-<triplet>-base for the
cross builds, so pulling gcc-13-base unconditionally left it dangling
everywhere but on the native architecture.

Depends on the gcc-13-<triplet>-base slices added by the cpp-13 branch.

* test(26.04): run the gcc-13 tests on the s390x and ppc64le runners

Both suites bailed out with "Unsupported architecture" there, which fails
outright now that a change to these slices schedules them on all four
runners. The arch lists match what gcc-15 already carries.

* docs(26.04): align the gcc-13 slice notes with gcc-15

Three generations of these slices each spelled the same guidance
differently. Adopt the wording gcc-15 carries.

* feat(26.04): add gcc-13 slices for s390x and ppc64le

Forward port of the remaining half of #1092. The two new triplet slices
follow gcc-15's, including the per-architecture copyright split the rest of
this branch applies to the existing two.

gcc-13.yaml gains the matching cc1 and gcc-13 entries, so gcc-13_gcc-13 --
the architecture-independent slice that carries /usr/bin/gcc-13 along with
an assembler, a linker and cc1 -- resolves on all four architectures rather
than only amd64 and arm64.

* test(26.04): add integration tests for gcc-13 on s390x and ppc64le

Copies of the gcc-15 suites, which already cover these two runners.

* test(26.04): drop the chisel_arch workaround from the gcc-13 test

Obsolete since canonical/chisel#256, and its Unsupported architecture
fallback fails outright on the s390x and ppc64le runners -- which a change
to gcc-13.yaml now schedules. Same shape the gcc-15 test already has.
lczyk added a commit that referenced this pull request Oct 12, 2026
* feat(26.04): add cpp-13 slices for s390x and ppc64le

Forward port of #1091 from ubuntu-24.04, rewritten for chisel format v3.

The /usr/share/doc entry of a cpp-13-<triplet> package is a symlink whose
target depends on how that package was built: gcc-13-base for the native
build, gcc-13-<triplet>-base for the cross builds. The copyright slices
are keyed by architecture accordingly, and the four gcc-13-<triplet>-base
packages get copyright slices of their own.

* test(26.04): add integration tests for cpp-13 on s390x and ppc64le

The existing cpp-13 tests also learn about the two new spread runners, on
which they are cross-compilation cases.

* docs(26.04): mark cpp-13 copyright paths as symlinks

Matches the marker the binutils and cpp-15 slices carry, and makes it
clear the entry is not the directory it looks like.

* test(26.04): fix dynamic linker lookup in the cpp-13 tests

The ld-linux-*.so.* glob matches nothing on ppc64el and s390x, whose
loaders are ld64.so.2 and ld64.so.1. Use the same lookup #1090 gave the
binutils tests, so all four cpp-13 suites agree.

Nothing was failing: the value is only consumed on the native-architecture
path, which never runs on those two runners.

* fix(26.04): dangling gcc-13 copyright on cross arches

Same bug and same fix as the cpp-13 slices this branch builds on: the
/usr/share/doc entry of a gcc-13-<triplet> package is a symlink to
gcc-13-base for the native build and to gcc-13-<triplet>-base for the
cross builds, so pulling gcc-13-base unconditionally left it dangling
everywhere but on the native architecture.

Depends on the gcc-13-<triplet>-base slices added by the cpp-13 branch.

* test(26.04): run the gcc-13 tests on the s390x and ppc64le runners

Both suites bailed out with "Unsupported architecture" there, which fails
outright now that a change to these slices schedules them on all four
runners. The arch lists match what gcc-15 already carries.

* docs(26.04): align the gcc-13 slice notes with gcc-15

Three generations of these slices each spelled the same guidance
differently. Adopt the wording gcc-15 carries.

* feat(26.04): add gcc-13 slices for s390x and ppc64le

Forward port of the remaining half of #1092. The two new triplet slices
follow gcc-15's, including the per-architecture copyright split the rest of
this branch applies to the existing two.

gcc-13.yaml gains the matching cc1 and gcc-13 entries, so gcc-13_gcc-13 --
the architecture-independent slice that carries /usr/bin/gcc-13 along with
an assembler, a linker and cc1 -- resolves on all four architectures rather
than only amd64 and arm64.

* test(26.04): add integration tests for gcc-13 on s390x and ppc64le

Copies of the gcc-15 suites, which already cover these two runners.

* test(26.04): drop the chisel_arch workaround from the gcc-13 test

Obsolete since canonical/chisel#256, and its Unsupported architecture
fallback fails outright on the s390x and ppc64le runners -- which a change
to gcc-13.yaml now schedules. Same shape the gcc-15 test already has.
lczyk added a commit that referenced this pull request Oct 12, 2026
* feat(26.04): add cpp-14 slices for s390x and ppc64le

Same shape as the cpp-13 slices, one toolchain generation up.

The /usr/share/doc entry of a cpp-14-<triplet> package is a symlink whose
target depends on how that package was built: gcc-14-base for the native
build, gcc-14-<triplet>-base for the cross builds. The copyright slices
are keyed by architecture accordingly, and the four gcc-14-<triplet>-base
packages get copyright slices of their own.

* test(26.04): add integration tests for cpp-14 on s390x and ppc64le

The existing cpp-14 tests also learn about the two new spread runners, on
which they are cross-compilation cases.

* docs(26.04): mark cpp-14 copyright paths as symlinks

Matches the marker the binutils and cpp-15 slices carry, and makes it
clear the entry is not the directory it looks like.

* test(26.04): fix dynamic linker lookup in the cpp-14 tests

The ld-linux-*.so.* glob matches nothing on ppc64el and s390x, whose
loaders are ld64.so.2 and ld64.so.1. Use the same lookup #1090 gave the
binutils tests, so all four cpp-14 suites agree.

Nothing was failing: the value is only consumed on the native-architecture
path, which never runs on those two runners.

* fix(26.04): dangling gcc-14 copyright on cross arches

Same bug and same fix as the cpp-14 slices this branch builds on: the
/usr/share/doc entry of a gcc-14-<triplet> package is a symlink to
gcc-14-base for the native build and to gcc-14-<triplet>-base for the
cross builds, so pulling gcc-14-base unconditionally left it dangling
everywhere but on the native architecture.

Depends on the gcc-14-<triplet>-base slices added by the cpp-14 branch.

* test(26.04): run the gcc-14 tests on the s390x and ppc64le runners

Both suites bailed out with "Unsupported architecture" there, which fails
outright now that a change to these slices schedules them on all four
runners. The arch lists match what gcc-15 already carries.

* docs(26.04): correct and align the gcc-14 slice notes

The notes pointed at cpp-12-<triplet> for the cc1 compiler, two
generations off. They also carried a TODO saying the architecture-
independent gcc-14 slices do not exist yet, which slices/gcc-14.yaml has
since made untrue.

Replaced with the wording gcc-15 already carries, so the three generations
read the same.

* feat(26.04): add gcc-14 slices for s390x and ppc64le

The two new triplet slices follow gcc-15's, including the per-architecture
copyright split the rest of this branch applies to the existing two. Noble
has no gcc-14, so there is nothing to forward port from -- this is #1092
applied to a generation that release never carried.

gcc-14.yaml gains the matching cc1 and gcc-14 entries, so gcc-14_gcc-14 --
the architecture-independent slice that carries /usr/bin/gcc-14 along with
an assembler, a linker and cc1 -- resolves on all four architectures rather
than only amd64 and arm64.

* test(26.04): add integration tests for gcc-14 on s390x and ppc64le

Copies of the gcc-15 suites, which already cover these two runners.

* test(26.04): drop the chisel_arch workaround from the gcc-14 test

Obsolete since canonical/chisel#256, and its Unsupported architecture
fallback fails outright on the s390x and ppc64le runners -- which a change
to gcc-14.yaml now schedules. Same shape the gcc-15 test already has.
lczyk added a commit that referenced this pull request Oct 12, 2026
* feat(26.04): add cpp-14 slices for s390x and ppc64le

Same shape as the cpp-13 slices, one toolchain generation up.

The /usr/share/doc entry of a cpp-14-<triplet> package is a symlink whose
target depends on how that package was built: gcc-14-base for the native
build, gcc-14-<triplet>-base for the cross builds. The copyright slices
are keyed by architecture accordingly, and the four gcc-14-<triplet>-base
packages get copyright slices of their own.

* test(26.04): add integration tests for cpp-14 on s390x and ppc64le

The existing cpp-14 tests also learn about the two new spread runners, on
which they are cross-compilation cases.

* docs(26.04): mark cpp-14 copyright paths as symlinks

Matches the marker the binutils and cpp-15 slices carry, and makes it
clear the entry is not the directory it looks like.

* test(26.04): fix dynamic linker lookup in the cpp-14 tests

The ld-linux-*.so.* glob matches nothing on ppc64el and s390x, whose
loaders are ld64.so.2 and ld64.so.1. Use the same lookup #1090 gave the
binutils tests, so all four cpp-14 suites agree.

Nothing was failing: the value is only consumed on the native-architecture
path, which never runs on those two runners.

* fix(26.04): dangling gcc-14 copyright on cross arches

Same bug and same fix as the cpp-14 slices this branch builds on: the
/usr/share/doc entry of a gcc-14-<triplet> package is a symlink to
gcc-14-base for the native build and to gcc-14-<triplet>-base for the
cross builds, so pulling gcc-14-base unconditionally left it dangling
everywhere but on the native architecture.

Depends on the gcc-14-<triplet>-base slices added by the cpp-14 branch.

* test(26.04): run the gcc-14 tests on the s390x and ppc64le runners

Both suites bailed out with "Unsupported architecture" there, which fails
outright now that a change to these slices schedules them on all four
runners. The arch lists match what gcc-15 already carries.

* docs(26.04): correct and align the gcc-14 slice notes

The notes pointed at cpp-12-<triplet> for the cc1 compiler, two
generations off. They also carried a TODO saying the architecture-
independent gcc-14 slices do not exist yet, which slices/gcc-14.yaml has
since made untrue.

Replaced with the wording gcc-15 already carries, so the three generations
read the same.

* feat(26.04): add gcc-14 slices for s390x and ppc64le

The two new triplet slices follow gcc-15's, including the per-architecture
copyright split the rest of this branch applies to the existing two. Noble
has no gcc-14, so there is nothing to forward port from -- this is #1092
applied to a generation that release never carried.

gcc-14.yaml gains the matching cc1 and gcc-14 entries, so gcc-14_gcc-14 --
the architecture-independent slice that carries /usr/bin/gcc-14 along with
an assembler, a linker and cc1 -- resolves on all four architectures rather
than only amd64 and arm64.

* test(26.04): add integration tests for gcc-14 on s390x and ppc64le

Copies of the gcc-15 suites, which already cover these two runners.

* test(26.04): drop the chisel_arch workaround from the gcc-14 test

Obsolete since canonical/chisel#256, and its Unsupported architecture
fallback fails outright on the s390x and ppc64le runners -- which a change
to gcc-14.yaml now schedules. Same shape the gcc-15 test already has.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants