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

ARM build not published #60

Closed
webmaster128 opened this issue Oct 1, 2021 · 6 comments
Closed

ARM build not published #60

webmaster128 opened this issue Oct 1, 2021 · 6 comments

Comments

@webmaster128
Copy link
Member

In 0.12.2 / #56 an ARM build of this project was created. This makes the CosmWasm development experience of ARM users much smother as the contract compilation does not need to go through an emulator. However, during our testing it was discovered that this ARM build produces different compilation results than the Intel build. As a consequence the build is not proproducible.

I see a few things to move forward:

  1. Ignore reproducible builds (probably bad)
  2. Find a way to ensure both images produce the same results
  3. Have different image names in order to make explicit on which system a contract is built on

Input welcome. For now, the ARM build is not published to DockerHub.

webmaster128 added a commit that referenced this issue Oct 1, 2021
@maurolacy
Copy link
Contributor

maurolacy commented Oct 1, 2021

This is probably obvious, but I would also list for completeness:

  1. Stick to using Intel emulation in ARM machines for reproducibility (and in spite of performance). We just document how to do it, and that's it.

@maurolacy
Copy link
Contributor

Related to 2.: Rust issues related to fully reproducible builds.

@maurolacy
Copy link
Contributor

maurolacy commented Oct 1, 2021

My impression is that it will be a really long shot to achieve reproducible wasm builds across different processor architectures. In fact, we're currently using docker as an "isolation chamber" to achieve reproducible builds in a single architecture. By fixing things like the OS, compiler, installed libs and their versions, etc. We are breaking some (if not all) of those when switching to a different arch.

What about
5. Publish the ARM build of rust-optimizer (let's say, as a tool for aiding testing / development), stating clearly that it does not produce the same builds than the Intel rust-optimizer. And, that for release / production use, only contracts built with the Intel one must be used.

Probably a recipe for trouble... perhaps your option 3., adding a suffix to ARM built artifacts, it's the best we can do for the moment.

@maurolacy
Copy link
Contributor

Created #63.

@maurolacy
Copy link
Contributor

maurolacy commented Oct 12, 2021

Perhaps we can close this with #64. And create another, to document progress in the "reproducibility" area.

Doing a diff -a between (optimized) Intel and Arm artifacts, they differ by intermediate objects suffixes (among other things).

Will check the same with un-optimized artifacts, and publish in a "reproducibility" branch.

@webmaster128
Copy link
Member Author

Based on #64, the following four images are published now:

# Default
cosmwasm/rust-optimizer:0.12.4
cosmwasm/workspace-optimizer:0.12.4

# ARM
cosmwasm/rust-optimizer-arm64:0.12.4
cosmwasm/workspace-optimizer-arm64:0.12.4

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

No branches or pull requests

2 participants