Skip to content

build dist for x86_64-pc-solaris and sparcv9-sun-solaris #138699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

psumbera
Copy link
Contributor

FIx for #126025

Note that this needs Nix with following commit:
nix-rust/nix@0f45593
Unfortunatelly there is no new release.

And for sparcv9 it needs also:
tov/libffi-rs#103

For now it therefore uses cargo patch infrastructure for these.

@rustbot
Copy link
Collaborator

rustbot commented Mar 19, 2025

r? @marcoieni

rustbot has assigned @marcoieni.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Mar 19, 2025
@rustbot
Copy link
Collaborator

rustbot commented Mar 19, 2025

rust-analyzer is developed in its own repository. If possible, consider making this change to rust-lang/rust-analyzer instead.

cc @rust-lang/rust-analyzer

These commits modify the Cargo.lock file. Unintentional changes to Cargo.lock can be introduced when switching branches and rebasing PRs.

If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.

@rust-log-analyzer

This comment has been minimized.

@psumbera psumbera force-pushed the solaris-ci-build3 branch from 3b9fbda to 0deec39 Compare March 19, 2025 11:00
@rust-log-analyzer

This comment has been minimized.

@jieyouxu
Copy link
Member

(That being said, thank you for investigating fixes for the Solaris CI)

@bors
Copy link
Collaborator

bors commented Apr 15, 2025

☔ The latest upstream changes (presumably #139826) made this pull request unmergeable. Please resolve the merge conflicts.

@psumbera psumbera force-pushed the solaris-ci-build3 branch from 0deec39 to f556156 Compare April 16, 2025 10:15
@marcoieni
Copy link
Member

Is this ready for review? 👀

@psumbera psumbera mentioned this pull request Apr 17, 2025
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Apr 17, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 18, 2025
Rollup merge of rust-lang#139969 - psumbera:libc-rust-analyzer, r=lnicola

update libc

This is needed for rust-lang#138699 (comment)
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Apr 18, 2025
@psumbera psumbera force-pushed the solaris-ci-build3 branch from f556156 to 7152b36 Compare April 18, 2025 05:49
github-actions bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Apr 19, 2025
@jieyouxu jieyouxu removed the T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) label Apr 22, 2025
BINUTILS_URL="https://ftp.gnu.org/gnu/binutils/$BINUTILS_TAR"


download_file() {
Copy link
Member

@marcoieni marcoieni Apr 22, 2025

Choose a reason for hiding this comment

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

I saw this function is duplicated from illuminos-toolchain.sh
Can you move it to a shared script file or similar and source the file? so that we avoid having duplicate code.

Same is true for other parts of the scripts which are very similar

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I saw this function is duplicated from illuminos-toolchain.sh Can you move it to a shared script file or similar and source the file? so that we avoid having duplicate code.

I have moved it into shared.sh.

Same is true for other parts of the scripts which are very similar

There are no other common functions. While the structure looks similiar I don't think it's good to connect these two more.

@marcoieni
Copy link
Member

marcoieni commented Apr 22, 2025

Sorry for the wait, I'm having a look now. I'm familiar with the Rust CI in general but not with solaris specifically, so please don't assume I'm familiar with the scripts you edited 👍

From what I can see you are extracting the build of x86_64-solaris and sparcv9-solaris from the dist-various-2 job.
My first question is: why? What's the advantage with respect to keeping these jobs in the dist-various-2 job?

The second question is: the dockerfile of dist-various-2 uses ubuntu:22.04. Why are you using ubuntu:18.04 for the new dockerfiles? Is it possible to use newer ubuntu images?
Same for older software like python2. Previously python2 wasn't needed in dist-various-2, why do we need it now?

Also can you explain how this PR fixes the issue you linked?

@psumbera psumbera force-pushed the solaris-ci-build3 branch from 7152b36 to d5925a8 Compare April 24, 2025 07:10
@psumbera
Copy link
Contributor Author

From what I can see you are extracting the build of x86_64-solaris and sparcv9-solaris from the dist-various-2 job. My first question is: why? What's the advantage with respect to keeping these jobs in the dist-various-2 job?

dist-various-2 was generating just standard library for Solaris. Now also host tools are generated. So I think it's correct to move it outside of dist-various-2 job and have separate job like Illumos or BSDs.

The second question is: the dockerfile of dist-various-2 uses ubuntu:22.04. Why are you using ubuntu:18.04 for the new dockerfiles? Is it possible to use newer ubuntu images? Same for older software like python2. Previously python2 wasn't needed in dist-various-2, why do we need it now?

I have updated change to use ubuntu:22.04 and python3.

Also can you explain how this PR fixes the issue you linked?

I was asked in #126025 to do clean up. I decided to clean it up by compleltely removing all Solaris related stuff from dist-various-2 and have bright new build job for Solaris :-)

Copy link
Member

@marcoieni marcoieni left a comment

Choose a reason for hiding this comment

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

A few minor comments.
@Kobzol can you have a look at this PR as well?

FROM ubuntu:22.04

# Enable source repositories, which are disabled by default on Ubuntu >= 18.04
RUN sed -i 's/^# deb-src/deb-src/' /etc/apt/sources.list
Copy link
Member

Choose a reason for hiding this comment

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

is this still needed for ubuntu 22?
Same comment for the other dockerfile

COPY scripts/cross-apt-packages.sh /tmp/
RUN bash /tmp/cross-apt-packages.sh

# Required for cross-build gcc, and we install python3 to test general compatibility.
Copy link
Member

Choose a reason for hiding this comment

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

Required for cross-build gcc

What's required for cross-build among the packages we install?

and we install python3 to test general compatibility.

What do you mean?

Same comment for the other dockerfile


#
# The illumos and the Solaris build both use the same GCC-level host triple,
# though different versions of GCC are used and with different configure
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
# though different versions of GCC are used and with different configure
# though different versions of GCC are used and with different configuration

I'm not native english speaker, so correct me if I'm wrong

SYSROOT_VER='2025-02-21'
SYSROOT_SUM='e82b78c14464cc2dc71f3cdab312df3dd63441d7c23eeeaf34d41d8b947688d3'
SYSROOT_TAR="solaris-11.4.42.111.0-i386-sysroot-v$SYSROOT_VER.tar.bz2"
SYSROOT_URL="https://github.com/psumbera/solaris-sysroot/releases/download/v$SYSROOT_VER/"
Copy link
Member

Choose a reason for hiding this comment

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

the variables SYSROOT_VER and SYSROOT_URL can be moved outside of the if, because they are the same for both branches.

SYSROOT_VER='2025-02-21'
SYSROOT_SUM='e249a7ef781b9b3297419bd014fa0574800703981d84e113d6af3a897a8b4ffc'
SYSROOT_TAR="solaris-11.4.42.111.0-sparc-sysroot-v$SYSROOT_VER.tar.bz2"
SYSROOT_URL="https://github.com/psumbera/solaris-sysroot/releases/download/v$SYSROOT_VER/"
Copy link
Member

Choose a reason for hiding this comment

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

for security and availability reasons, we probably prefer to download artifacts from our ci-mirrors.

Can you add this to https://github.com/rust-lang/ci-mirrors/tree/main/files ?

BINUTILS_SUM='f66390a661faa117d00fab2e79cf2dc9d097b42cc296bf3f8677d1e7b452dc3a'
BINUTILS_BASE="binutils-$BINUTILS_VERSION"
BINUTILS_TAR="$BINUTILS_BASE.tar.bz2"
BINUTILS_URL="https://ftp.gnu.org/gnu/binutils/$BINUTILS_TAR"
Copy link
Member

Choose a reason for hiding this comment

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

for security and availability reasons, we probably prefer to download artifacts from our ci-mirrors.

Can you add this to https://github.com/rust-lang/ci-mirrors/tree/main/files ?

Comment on lines +128 to +132
download_file "/tmp/$GCC_TAR" "$GCC_URL" "$GCC_SUM"
mkdir -p /ws/src/gcc
cd /ws/src/gcc
tar -xJf "/tmp/$GCC_TAR"
rm -f "/tmp/$GCC_TAR"
Copy link
Member

Choose a reason for hiding this comment

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

this pattern is duplicated at line 78 and 86, can we extract it into a function?

mkdir -p "$PREFIX"
make install

cd /
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
cd /
cd -

Why do you cd into root? Is going to the previous directory more correct in your opinion?
Same at line 171

<<: *job-linux-4c

- name: dist-sparcv9-solaris
<<: *job-linux-4c
Copy link
Member

@marcoieni marcoieni Apr 24, 2025

Choose a reason for hiding this comment

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

can you run [at]bors try?
Otherwise I can do it for you to test this PR 👍

EOF
expand -t 4 binutils-2.44/bfd/elflink.c > binutils-2.44/bfd/elflink.c.exp
mv binutils-2.44/bfd/elflink.c.exp binutils-2.44/bfd/elflink.c
patch binutils-2.44/bfd/elflink.c < binutils.patch
Copy link
Member

Choose a reason for hiding this comment

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

2.44 is duplicated in this file, I wonder if we can extract this version number into a variable?

@nikic
Copy link
Contributor

nikic commented Apr 24, 2025

dist-various-2 was generating just standard library for Solaris. Now also host tools are generated. So I think it's correct to move it outside of dist-various-2 job and have separate job like Illumos or BSDs.

To clarify, you are promoting Solaris targets from Tier 2 to Tier 2 with host tools?

There should be an update to the platform support pages and a compiler MCP for the promotion (https://doc.rust-lang.org/nightly/rustc/target-tier-policy.html#tier-2-with-host-tools).

@Kobzol
Copy link
Contributor

Kobzol commented Apr 24, 2025

Yeah, just wanted to post this, this seems like it moves the Solaris target between tiers, so it should go through an MCP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants