diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 69bb80b40d7e7f21db21562e7aceb5a98706801f..8ac5eeb998f5102d5af9b2775a82093b6ea29858 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -299,8 +299,8 @@ jobs: CARGO_INCREMENTAL: 0 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }} - CC: clang - CXX: clang++ + CC: clang-18 + CXX: clang++-18 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 @@ -341,8 +341,8 @@ jobs: CARGO_INCREMENTAL: 0 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }} - CC: clang - CXX: clang++ + CC: clang-18 + CXX: clang++-18 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 diff --git a/.github/workflows/release_nightly.yml b/.github/workflows/release_nightly.yml index faf7788eeafa856985ba5bdf21a1a37c5fdd8506..7f243411b4f540d6c7bc611df4883f5341d6a83b 100644 --- a/.github/workflows/release_nightly.yml +++ b/.github/workflows/release_nightly.yml @@ -103,8 +103,8 @@ jobs: CARGO_INCREMENTAL: 0 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }} - CC: clang - CXX: clang++ + CC: clang-18 + CXX: clang++-18 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 @@ -151,8 +151,8 @@ jobs: CARGO_INCREMENTAL: 0 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }} - CC: clang - CXX: clang++ + CC: clang-18 + CXX: clang++-18 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 diff --git a/.github/workflows/run_bundling.yml b/.github/workflows/run_bundling.yml index 683d74a264e53e621e77730a91cdd01adff17316..7cb1665f9d0bd4fe3b0f3c05527bf39aab5f610a 100644 --- a/.github/workflows/run_bundling.yml +++ b/.github/workflows/run_bundling.yml @@ -19,8 +19,8 @@ jobs: CARGO_INCREMENTAL: 0 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }} - CC: clang - CXX: clang++ + CC: clang-18 + CXX: clang++-18 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 @@ -60,8 +60,8 @@ jobs: CARGO_INCREMENTAL: 0 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }} - CC: clang - CXX: clang++ + CC: clang-18 + CXX: clang++-18 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 diff --git a/crates/gpui_linux/src/linux/headless/client.rs b/crates/gpui_linux/src/linux/headless/client.rs index 6dbdc556751b27d144feb4a40c916910bc6ff5f7..56cc9e8df008abcb0904c7178e5b333eaade1d84 100644 --- a/crates/gpui_linux/src/linux/headless/client.rs +++ b/crates/gpui_linux/src/linux/headless/client.rs @@ -64,6 +64,7 @@ impl LinuxClient for HeadlessClient { None } + #[cfg(feature = "screen-capture")] fn screen_capture_sources( &self, ) -> futures::channel::oneshot::Receiver>>> diff --git a/script/bundle-linux b/script/bundle-linux index 4e58ac315bd231fd4ae9208abbc15007abc30631..c89d21082dd6c33a11ffcfc908ef87a91554dc18 100755 --- a/script/bundle-linux +++ b/script/bundle-linux @@ -71,7 +71,7 @@ if "$rustup_installed"; then rustup target add "$remote_server_triple" fi -export CC=$(which clang) +export CC=${CC:-$(which clang)} # Build binary in release mode export RUSTFLAGS="${RUSTFLAGS:-} -C link-args=-Wl,--disable-new-dtags,-rpath,\$ORIGIN/../lib" diff --git a/script/linux b/script/linux index 3f098ec21e3a84734d5f25c7b63b12d8588b8264..c20f154eaf2f7e6b79c7f8539e9e8c13271c3ecd 100755 --- a/script/linux +++ b/script/linux @@ -57,11 +57,21 @@ if [[ -n $apt ]]; then elif (grep -qP 'PRETTY_NAME="((Debian|Raspbian).+12|Linux Mint 21|.+22\.04)' /etc/os-release); then deps+=( mold libstdc++-12-dev ) elif (grep -qP 'PRETTY_NAME="((Debian|Raspbian).+11|Linux Mint 20|.+20\.04)' /etc/os-release); then - deps+=( libstdc++-10-dev ) + # Ubuntu 20.04 ships clang-10 and libstdc++-10 which lack adequate C++20 + # support for building webrtc-sys (requires -std=c++20, lambdas in + # unevaluated contexts from clang 17+, and working std::ranges in the + # stdlib). clang-18 is available in focal-security/universe as an official + # backport, and libstdc++-11-dev from the ubuntu-toolchain-r PPA provides + # headers with working pointer_traits/contiguous_range. + # Note: the prebuilt libwebrtc.a is compiled with libstdc++, so we must + # use libstdc++ (not libc++) to avoid ABI mismatches at link time. + $maysudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + deps+=( clang-18 libstdc++-11-dev ) fi $maysudo "$apt" update $maysudo "$apt" install -y "${deps[@]}" + finalize exit 0 fi diff --git a/tooling/xtask/src/tasks/workflows/run_bundling.rs b/tooling/xtask/src/tasks/workflows/run_bundling.rs index 2de7000360b2be564efb8107da47964dbab0ceb6..6b9d3b9e36c3ba3b3de4b02a53e83ee4faaa4785 100644 --- a/tooling/xtask/src/tasks/workflows/run_bundling.rs +++ b/tooling/xtask/src/tasks/workflows/run_bundling.rs @@ -4,9 +4,7 @@ use crate::tasks::workflows::{ nix_build::build_nix, release::ReleaseBundleJobs, runners::{Arch, Platform, ReleaseChannel}, - steps::{ - DEFAULT_REPOSITORY_OWNER_GUARD, FluentBuilder, NamedJob, dependant_job, named, use_clang, - }, + steps::{DEFAULT_REPOSITORY_OWNER_GUARD, FluentBuilder, NamedJob, dependant_job, named}, vars::{assets, bundle_envs}, }; @@ -145,22 +143,22 @@ pub(crate) fn bundle_linux( }; NamedJob { name: format!("bundle_linux_{arch}"), - job: use_clang( - bundle_job(deps) - .runs_on(arch.linux_bundler()) - .envs(bundle_envs(platform)), - ) - .add_step(steps::checkout_repo()) - .when_some(release_channel, |job, release_channel| { - job.add_step(set_release_channel(platform, release_channel)) - }) - .add_step(steps::setup_sentry()) - .map(steps::install_linux_dependencies) - .add_step(steps::script("./script/bundle-linux")) - .add_step(upload_artifact(&format!("target/release/{artifact_name}"))) - .add_step(upload_artifact(&format!( - "target/{remote_server_artifact_name}" - ))), + job: bundle_job(deps) + .runs_on(arch.linux_bundler()) + .envs(bundle_envs(platform)) + .add_env(Env::new("CC", "clang-18")) + .add_env(Env::new("CXX", "clang++-18")) + .add_step(steps::checkout_repo()) + .when_some(release_channel, |job, release_channel| { + job.add_step(set_release_channel(platform, release_channel)) + }) + .add_step(steps::setup_sentry()) + .map(steps::install_linux_dependencies) + .add_step(steps::script("./script/bundle-linux")) + .add_step(upload_artifact(&format!("target/release/{artifact_name}"))) + .add_step(upload_artifact(&format!( + "target/{remote_server_artifact_name}" + ))), } }