Browse Source

build: Use mold linker with gcc instead of clang

Since the rust-stable Flatpak extension now supports it. This way we
don't need to depend on the llvm Flatpak extension, which simplifies
the configuration.
merge-requests/2136/head
Kévin Commaille 3 months ago
parent
commit
cc61e0d0bf
No known key found for this signature in database
GPG Key ID: F26F4BE20A08255B
  1. 2
      .gitlab-ci/test.yml
  2. 7
      .gitlab-ci/utils.yml
  3. 12
      CONTRIBUTING.md
  4. 11
      build-aux/org.gnome.Fractal.Devel.json

2
.gitlab-ci/test.yml

@ -59,6 +59,8 @@ build-docs:
# We want to use the nightly toolchain inside the build terminal. # We want to use the nightly toolchain inside the build terminal.
- sed -i 's|"org.freedesktop.Sdk.Extension.rust-stable"|"org.freedesktop.Sdk.Extension.rust-nightly"|g' ${MANIFEST_PATH} - sed -i 's|"org.freedesktop.Sdk.Extension.rust-stable"|"org.freedesktop.Sdk.Extension.rust-nightly"|g' ${MANIFEST_PATH}
- sed -i 's|/rust-stable/bin|/rust-nightly/extra/sdk/rust-nightly/bin|g' ${MANIFEST_PATH} - sed -i 's|/rust-stable/bin|/rust-nightly/extra/sdk/rust-nightly/bin|g' ${MANIFEST_PATH}
# Do not use the mold linker because it doesn't work with the rust-nightly extension at the moment
- sed -i 's|-C link-arg=-fuse-ld=mold||g' ${MANIFEST_PATH}
- flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH} - flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
- echo "ninja src/doc" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH} - echo "ninja src/doc" | flatpak-builder --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
- tar --auto-compress --create --file "${CI_PROJECT_DIR}/${CI_PROJECT_NAME}-docs.tar.gz" --directory ".flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/cargo-target/doc" . - tar --auto-compress --create --file "${CI_PROJECT_DIR}/${CI_PROJECT_NAME}-docs.tar.gz" --directory ".flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/cargo-target/doc" .

7
.gitlab-ci/utils.yml

@ -18,17 +18,12 @@
# Update the Flatpak manifest to use the latest stable GNOME runtime and use the corresponding # Update the Flatpak manifest to use the latest stable GNOME runtime and use the corresponding
# container image. # container image.
# #
# To get a list of available GNOME and LLVM versions, see: # To get a list of available GNOME versions, see:
# https://gitlab.gnome.org/GNOME/gnome-runtime-images/-/blob/master/.gitlab-ci.yml # https://gitlab.gnome.org/GNOME/gnome-runtime-images/-/blob/master/.gitlab-ci.yml
.stable_runtime: .stable_runtime:
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-${GNOME_STABLE_VERSION}' image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-${GNOME_STABLE_VERSION}'
variables: variables:
GNOME_STABLE_VERSION: "49" GNOME_STABLE_VERSION: "49"
FREEDESKTOP_RUNTIME_BRANCH: "25.08"
LLVM_NIGHTLY_VERSION: "20"
LLVM_STABLE_VERSION: "20"
before_script: before_script:
# We want to use the latest stable GNOME runtime instead of the nightly runtime. # We want to use the latest stable GNOME runtime instead of the nightly runtime.
- sed -i "s|master|${GNOME_STABLE_VERSION}|g" ${MANIFEST_PATH} - sed -i "s|master|${GNOME_STABLE_VERSION}|g" ${MANIFEST_PATH}
# We want to use the latest LLVM extension for the stable runtime.
- sed -i "s|llvm${LLVM_NIGHTLY_VERSION}|llvm${LLVM_STABLE_VERSION}|g" ${MANIFEST_PATH}

12
CONTRIBUTING.md

@ -22,16 +22,17 @@ can also provide general help about using Rust in GNOME.
### Prerequisites ### Prerequisites
Fractal is written in Rust, so you will need to have at least Rust 1.80 and Cargo available on your Fractal is written in Rust, so you will need to have at least Rust (the minimum required version is
system. You will also need to install the Rust nightly toolchain to be able to run our available in the `Cargo.toml` file as `package.rust-version`) and Cargo available on your system.
You will also need to install the Rust nightly toolchain to be able to run our
[pre-commit hook](#pre-commit), which can be done with: [pre-commit hook](#pre-commit), which can be done with:
```sh ```sh
rustup toolchain install nightly rustup toolchain install nightly
``` ```
If you're building Fractal with Flatpak (via GNOME Builder or the command line), you will need to If you are building Fractal with Flatpak (via GNOME Builder or the command line), you will need to
manually add the necessary remotes and install the required freedesktop.org extensions: manually add the necessary remotes and install the Rust freedesktop.org extension:
```sh ```sh
# Add Flathub and the gnome-nightly repo # Add Flathub and the gnome-nightly repo
@ -43,9 +44,6 @@ flatpak install --user gnome-nightly org.gnome.Sdk//master org.gnome.Platform//m
# Install the required rust-stable extension from Flathub # Install the required rust-stable extension from Flathub
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//25.08 flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//25.08
# Install the required llvm extension from Flathub
flatpak install --user flathub org.freedesktop.Sdk.Extension.llvm20//25.08
``` ```
If you are building the flatpak manually you will also need flatpak-builder on your system, or the If you are building the flatpak manually you will also need flatpak-builder on your system, or the

11
build-aux/org.gnome.Fractal.Devel.json

@ -4,8 +4,7 @@
"runtime-version": "master", "runtime-version": "master",
"sdk": "org.gnome.Sdk", "sdk": "org.gnome.Sdk",
"sdk-extensions": [ "sdk-extensions": [
"org.freedesktop.Sdk.Extension.rust-stable", "org.freedesktop.Sdk.Extension.rust-stable"
"org.freedesktop.Sdk.Extension.llvm20"
], ],
"command": "fractal", "command": "fractal",
"finish-args": [ "finish-args": [
@ -20,13 +19,9 @@
"--env=RUST_BACKTRACE=1" "--env=RUST_BACKTRACE=1"
], ],
"build-options": { "build-options": {
"append-ld-library-path": "/usr/lib/sdk/llvm20/lib", "append-path": "/usr/lib/sdk/rust-stable/bin",
"append-path": "/usr/lib/sdk/llvm20/bin:/usr/lib/sdk/rust-stable/bin",
"env": { "env": {
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER": "clang", "RUSTFLAGS": "-C link-arg=-fuse-ld=mold --cfg=ruma_identifiers_storage=\"Arc\""
"CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C force-frame-pointers=yes -C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\"",
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER": "clang",
"CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS": "-C force-frame-pointers=yes -C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold --cfg=ruma_identifiers_storage=\"Arc\""
}, },
"build-args": [ "build-args": [
"--share=network" "--share=network"

Loading…
Cancel
Save