eosnetworkfoundation / mandel

Obsolete. Use https://github.com/AntelopeIO/leap instead.
Other
87 stars 30 forks source link

Reconsider appbase version string for more reproducible binary builds #812

Closed arhag closed 2 years ago

arhag commented 2 years ago

The appbase submodule uses git describe --tags --dirty to get a hard-coded string for appbase_version_string which is based on tags in the repo. This is compiled into the nodeos executable.

Nodeos doesn't actually use this hard-coded string because it has its own version library which determines the version using version parameters included in the root CMakeLists.txt file as well as the full commit hash (determined with git rev-parse HEAD) and then sets this version into appbase at startup.

Not only is the value of appbase_version_string unnecessary for nodeos, but it can also potentially act as a source of difference in the compiled binaries depending on the state of the repo even if the exact same commit hash was used to build the code.

It is probably best to rethink the appbase_version_string so that nodeos does not maintain this potential source of breaking reproducible binary builds.

spoonincode commented 2 years ago

That shouldn't have happened. That behavior is configurable https://github.com/eosnetworkfoundation/mandel-appbase/blob/b1065a79a103b5d50552da8389c4dcb9e3984488/CMakeLists.txt#L56-L59 (I defaulted it to ON to maintain backwards compatibility for external users), but we turn it off in mandel https://github.com/eosnetworkfoundation/mandel/blob/1f1243de18f0cd88983351d40e62240ce8074c7a/libraries/CMakeLists.txt#L17

spoonincode commented 2 years ago

ah, the above didn't make it to 3.1.x, but it's in main

arhag commented 2 years ago

Ah. In that case, this issue has already been resolved by https://github.com/eosnetworkfoundation/mandel/issues/442 (which is included in 3.2) and this can be considered a duplicate. I'll close this issue.