Skip to content

Commit

Permalink
fix: broken nightly builds
Browse files Browse the repository at this point in the history
In recent versions of the nightly / beta compilers, the use of linkme
causes linker errors. (dtolnay/linkme#94) This
is due to the new linker set as default in these versions.

Add linker flags to nightly builds to revert to the old linker
behaviour.

See:

- dtolnay/linkme#88
- https://blog.rust-lang.org/2024/05/17/enabling-rust-lld-on-linux.html

Signed-off-by: Niklas Dewally <[email protected]>
  • Loading branch information
niklasdewally committed Jun 25, 2024
1 parent 1cc0853 commit b36f502
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .github/workflows/code-coverage-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ jobs:
- name: Install rust ${{ env.rust_release }}
run: rustup update ${{ env.rust_release }} && rustup default ${{ env.rust_release }}

- name: Disable rust-lld (to fix linkme)
run: echo RUSTFLAGS=${RUSTFLAGS}\ -Zlinker-features=-lld >> $GITHUB_ENV
run: echo RUSTDOCFLAGS=${RUSTDOCFLAGS}\ -Zlinker-features=-lld >> $GITHUB_ENV
if: matrix.rust_release == 'nightly'

- uses: ./.github/actions/install-conjure
with:
os_arch: linux
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/code-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ jobs:

- name: Install rust ${{ env.rust_release }}
run: rustup update ${{ env.rust_release }} && rustup default ${{ env.rust_release }}

- name: Disable rust-lld (to fix linkme)
run: echo RUSTFLAGS=${RUSTFLAGS}\ -Zlinker-features=-lld >> $GITHUB_ENV
run: echo RUSTDOCFLAGS=${RUSTDOCFLAGS}\ -Zlinker-features=-lld >> $GITHUB_ENV
if: matrix.rust_release == 'nightly'

- uses: ./.github/actions/install-conjure
with:
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ on:
env:
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
SCCACHE_GHA_VERSION: 2
SCCACHE_GHA_VERSION: 4

jobs:
build-and-test:
Expand Down Expand Up @@ -54,6 +54,11 @@ jobs:
- name: Run sccache-cache
uses: mozilla-actions/[email protected]

- name: Disable rust-lld (to fix linkme)
run: echo RUSTFLAGS=${RUSTFLAGS}\ -Zlinker-features=-lld >> $GITHUB_ENV
run: echo RUSTDOCFLAGS=${RUSTDOCFLAGS}\ -Zlinker-features=-lld >> $GITHUB_ENV
if: matrix.rust_release == 'nightly'

- run: rustup update ${{ matrix.rust_release }} && rustup default ${{ matrix.rust_release }}

- run: cargo build -vv --workspace
Expand Down
15 changes: 15 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@ This repository hosts the following projects:
This project is being produced by staff and students of University of St
Andrews, and is licenced under the [MPL 2.0](./LICENCE).

## Rust Nightly Support

The following compiler flags are required for Conjure-Oxide to work with
Nightly Rust:

```sh
export RUSTFLAGS="-Zlinker-features=-lld"
export RUSTDOCFLAGS="-Zlinker-features=-lld"
cargo build <...>
```

This is because of current incompatibilities with linkme and the new default
linker ([link](https://github.com/dtolnay/linkme/issues/94)).


## Documentation

API documentation can be found [here](https://conjure-cp.github.io/conjure-oxide/docs/).
Expand Down

0 comments on commit b36f502

Please sign in to comment.