Skip to content

build: Further fixes for Cxx w/o stdlib. #65217

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

Merged
merged 1 commit into from
Apr 17, 2023

Conversation

drodriguez
Copy link
Contributor

In #65172 I tried to fix a problem when the Cxx module is enabled, but we are not building the stdlib. The fix work for swiftCxx, but I failed to to realize that swiftCxxStdlib overlay is also built, which needs parts of the stdlib.

The original #65055 only built the Cxx module when EXTRA_TOOLCHAIN_CONTENT was set, but #65122 changed so it was two independent checks. A more faithful fix will had been to nest the if as I am trying to do with this PR. Parts of #65172 are still necessary to build in every case, though: the swiftCxx target is dependent on the Clang headers and the legacy layouts. Those two pieces are normally in place because of other targets in upstream builds, but fail to materialize when the stdlib is trying to be built with the host compiler in isolation.

This one and #65172 will need to be cherry-picked to 5.9 because #65055 and #65122 where cherry-picked, so 5.9 is having the same problems as main.

In swiftlang#65172 I tried to fix a problem when the Cxx module is enabled, but
we are not building the stdlib. The fix work for `swiftCxx`, but failed
to to realize that `swiftCxxStdlib` overlay is also built, which needs
parts of the stdlib.

The original swiftlang#65055 only built the Cxx module when
`EXTRA_TOOLCHAIN_CONTENT` was set, but swiftlang#65122 changed so it was two
independent checks. A more faithful fix will had been to nest the `if`
as I am trying to do with this PR. Parts of swiftlang#65172 are still necessary
to build in every case, though: the `swiftCxx` target is dependent on
the Clang headers and the legacy layouts. Those two pieces are normally
in place because of other targets in upstream builds, but fail to
materialize when the stdlib is trying to be built with the host
compiler.

This one and swiftlang#65172 will need to be cherry-picked to 5.9 because swiftlang#65055
and swiftlang#65122 where cherry-picked, so 5.9 is having the same problems as
`main`.
@drodriguez
Copy link
Contributor Author

@swift-ci please test

Copy link
Member

@compnerd compnerd left a comment

Choose a reason for hiding this comment

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

Whoops, I must've missed that I had moved it out of that condition.

@drodriguez
Copy link
Contributor Author

@swift-ci please test macOS platform

@drodriguez drodriguez merged commit ccf57da into swiftlang:main Apr 17, 2023
drodriguez added a commit to drodriguez/swift that referenced this pull request Apr 17, 2023
In swiftlang#65172 I tried to fix a problem when the Cxx module is enabled, but
we are not building the stdlib. The fix work for `swiftCxx`, but failed
to to realize that `swiftCxxStdlib` overlay is also built, which needs
parts of the stdlib.

The original swiftlang#65055 only built the Cxx module when
`EXTRA_TOOLCHAIN_CONTENT` was set, but swiftlang#65122 changed so it was two
independent checks. A more faithful fix will had been to nest the `if`
as I am trying to do with this PR. Parts of swiftlang#65172 are still necessary
to build in every case, though: the `swiftCxx` target is dependent on
the Clang headers and the legacy layouts. Those two pieces are normally
in place because of other targets in upstream builds, but fail to
materialize when the stdlib is trying to be built with the host
compiler.

This one and swiftlang#65172 will need to be cherry-picked to 5.9 because swiftlang#65055
and swiftlang#65122 where cherry-picked, so 5.9 is having the same problems as
`main`.

(cherry picked from commit ccf57da)
@egorzhdan
Copy link
Contributor

Thanks @drodriguez for fixing this!

meg-gupta pushed a commit to meg-gupta/swift that referenced this pull request Apr 18, 2023
In swiftlang#65172 I tried to fix a problem when the Cxx module is enabled, but
we are not building the stdlib. The fix work for `swiftCxx`, but failed
to to realize that `swiftCxxStdlib` overlay is also built, which needs
parts of the stdlib.

The original swiftlang#65055 only built the Cxx module when
`EXTRA_TOOLCHAIN_CONTENT` was set, but swiftlang#65122 changed so it was two
independent checks. A more faithful fix will had been to nest the `if`
as I am trying to do with this PR. Parts of swiftlang#65172 are still necessary
to build in every case, though: the `swiftCxx` target is dependent on
the Clang headers and the legacy layouts. Those two pieces are normally
in place because of other targets in upstream builds, but fail to
materialize when the stdlib is trying to be built with the host
compiler.

This one and swiftlang#65172 will need to be cherry-picked to 5.9 because swiftlang#65055
and swiftlang#65122 where cherry-picked, so 5.9 is having the same problems as
`main`.
@drodriguez drodriguez deleted the isolated-stdlib-builds-2 branch July 12, 2023 15:51
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