Skip to content
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

mosml: pass -fpermissive to C compiler #370050

Merged
merged 1 commit into from
Jan 2, 2025
Merged

Conversation

athas
Copy link
Contributor

@athas athas commented Jan 1, 2025

The MosML build system relies on some terrible C that GCC 14 now refuses to compile. This has supposedly been fixed in MosML upstream, but the fix is not yet in any released version. It is not so easy to simply cherry-pick the changes necessary to make GCC 14 work, since they seem spread over various different commits. The hacky solution in this PR serves to make this rather obscure derivation work for a little while longer.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

Copy link
Contributor

@paparodeo paparodeo left a comment

Choose a reason for hiding this comment

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

https://gcc.gnu.org/gcc-14/porting_to.html

add env.NIX_CFLAGS_COMPILE = "-fpermissive"; makes the build work with gcc-14. no need to pin to 13

perhaps better, only disable the new gcc-14 errors
  env.NIX_CFLAGS_COMPILE = toString (
    map (x: "-Wno-error=${x}") [
      "declaration-missing-parameter-type"
      "implicit-function-declaration"
      "implicit-int"
      "incompatible-pointer-types"
      "int-conversion"
      "return-mismatch"
    ]
  );

The MosML build system relies on some terrible C that GCC 14 now
refuses to compile. This has supposedly been fixed in MosML upstream,
but the fix is not yet in any released version. It is not so easy to
simply cherry-pick the changes necessary to make GCC 14 work, since
they seem spread over various different commits. This change serves to
make this rather obscure derivation work for a little while longer.
@athas athas changed the title mosml: always use gcc13 mosml: pass -fpermissive to C compiler Jan 2, 2025
@athas
Copy link
Contributor Author

athas commented Jan 2, 2025

I have updated the PR to use env.NIX_CFLAGS_COMPILE = "-fpermissive"; instead. I think it likely that future C compilers will find other parts of the ancient MosML code base objectionable.

@nix-owners nix-owners bot requested a review from vaibhavsagar January 2, 2025 20:10
@wegank wegank added the 12.approvals: 1 This PR was reviewed and approved by one reputable person label Jan 2, 2025
@ck3d ck3d merged commit 71557af into NixOS:master Jan 2, 2025
32 of 33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
10.rebuild-darwin: 1-10 10.rebuild-linux: 1-10 12.approvals: 1 This PR was reviewed and approved by one reputable person
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants