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

[WIP] Bootstrappable FCMP++ #9440

Draft
wants to merge 186 commits into
base: master
Choose a base branch
from
Draft

Conversation

tobtoht
Copy link
Collaborator

@tobtoht tobtoht commented Aug 17, 2024

This is a WIP draft PR for reproducible release builds with Rust FFI.

Based on #9436 (FCMP++ integration).

Tools

  • Binutils 2.41
  • LLVM 17.0.6
  • Rust 1.82.0

Sub PRs

To-do (incomplete):

  • Fix non-determinism on aarch64
  • Vendor Rust deps in release source archive
  • Split out Guix and FFI
  • Test all builds
Target Builds Reproducible Bootstrappable Tested
x86_64-linux-gnu 🮱 🮱 🮱
arm-linux-gnueabihf 🮱 🮱 🮱
aarch64-linux-gnu 🮱 🮱 🮱
riscv64-linux-gnu 🮱 🮱 🮱
i686-linux-gnu 🮱 🮱 🮱
i686-w64-mingw32 🮱 🮱 🮱
x86_64-w64-mingw32 🮱 🮱 🮱
x86_64-unknown-freebsd 🮱 🮱 🮱 [1]
x86_64-apple-darwin 🮱 🮱 🮱 [2]
aarch64-apple-darwin 🮱 🮱 🮱 [2]
arm-linux-androideabi 🮱 🮱 ❌ [3]
aarch64-linux-android 🮱 🮱 ❌ [3]

[1] = links against precompiled freebsd system libraries
[2] = links against precompiled libraries from the darwin SDK
[3] = built with a precompiled toolchain from the Android NDK (there is currently no way around this)

Guix

Changes to the build environment

Includes packages that are available in the guix container that we use to build Monero.

package old new
llvm n/a 17.0.6
rust n/a 1.82.0

Changes to transitive build dependencies

Includes (transitive) build dependencies that are not included in the build environment.

package old new
gdb n/a 12.1
libomp 11.1.0 17.0.6
procps n/a 4.0.3

@tobtoht tobtoht mentioned this pull request Aug 17, 2024
@kayabaNerve
Copy link

Rust 1.69 is being used within Monero for its LLVM/ld compatibility. There's no need to go newer and that may be simpler.

@tobtoht
Copy link
Collaborator Author

tobtoht commented Aug 17, 2024

In this case, newer is easier. Guix only supports the latest version of Rust (that it has available).

This PR currently uses binutils 2.38, llvm 17.0.6. Will see if I run into problems with windows targets.

@MrCyjaneK
Copy link

MrCyjaneK commented Aug 21, 2024

Hey - I've seen that NDK task is unchecked, you can grab latest NDK patch from here: https://github.com/MrCyjaneK/monero_c/blob/master/patches/monero/0013-android-ndk-version-bump.patch and https://github.com/MrCyjaneK/monero_c/blob/master/patches/monero/0013-rename-arm-armv7a.patch it cointains some hacks - but hopefully will be useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants