-
Notifications
You must be signed in to change notification settings - Fork 11
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
Release: binaries and release process #292
Comments
@zathras-crypto: average Joe on Reddit will tell you to use 2 factor authorization and no web wallets, otherwise you're risking to loose your coins. Average Joe will also tell you to not use closed source software. It's not far fetched, and you should not underestimate the average user. In the case of Gitian building GPG signing is part of the process, more or less. Upstream there is a whole repo for "Gitian build signatures" and GPG keys of developers are available in the main repo:
But you may also try Anyway, this is nice to have, but not strictly necessary, so let's focus on the goal:
In the other thread you mentioned the release is mostly overdue, but ping me, if you need support (e.g. how to sign commits, use Gitian, ...). |
Well, I have good and bad news. And the later is pretty frustrating. I'm pretty much done with the build guide, and anyone who likes to, can follow the guide step by step to build binaries for Windows: https://gist.github.com/dexX7/7bca4f21141acaa0ec65 But git cherry-pick/... commit hashes are not deterministic, so the initial route needs a refinement, and I did not notice the implications until now.. The relevant part: 11. Clone and prepare mastercore:git clone https://github.com/mastercoin-MSC/mastercore.git bitcoin Note: We are going to use a workaround to use Bitcoin Core's Gitian descriptors, so be sure you don't forget [image] Because Omni Core's binaries were renamed to Enter the following lines: cd bitcoin
git remote add workaround https://github.com/dexX7/bitcoin.git
git fetch workaround mscore-revert-rename
git cherry-pick 419045f8a022b9dfd482cd3245331fbe34aa6a24 [image] Then enter: git log Copy or write down the latest commit hash. It might be different from case to case, ... << ! Because that last commit hash is not deterministic, neither will be the build result. :( A fix for this, which would be another workaround, could be to merge the name revert commit into a special gitian-release-workaround branch and use that as basis for the Gitian builds instead of the current tip/0.0.9.1 release + file name workaround commit. |
On initial thought the workaround branch seems the most prudent, mainly because it's extremely easy (github provides the tools) to compare that workaround branch with the main branch to ensure there is only the file name workaround commit that differs. Certainly less than ideal, but at least it provides a deterministic and repeatable process - ideal we can work towards :) |
If this is an option, then it should definitely work. :) |
Alrighty, if you submit a pull against https://github.com/mastercoin-MSC/mastercore/tree/github-release-workaround I'll merge it :) We'll want the readme for that branch to reflect what it's for too... |
The branch should probably reflect the version. I'm going to update the guide tomorrow, and finalize it once the release is tagged, so we have some reference hashes. From this point on it should be pretty straight forward. |
Ah, I was thinking along the lines of that branch would always contain our last tagged/released version so the instructions can stay static and the user would thus always build the latest release. |
Ah, yeah, this should work as well. I assume there is going to be an explicit tag on that branch? |
@dexX7 this https://gist.github.com/dexX7/7bca4f21141acaa0ec65 is fantastic |
@CraigSellars: thanks! :) I tested the 32 bit build, and to my surprise it worked to some degree, but crashed around block height 301386 - not sure, if the results until then were correct or not, but I conclude we can only consider 64 bit builds as stable. I suggest to provide zipped packages, including:
... with a name such as
... where the file hashes are those of the build result. Once a release (in the Gitian branch) is tagged, everyone is welcomed to follow the build path, to compare results. From Given that bitcoin-spock is pretty easy to use from Windows (see #294 (comment)), this place might further be used to provide additional information, for example with a simple "How to test Omni Core" or "How to use Omni Core" guides. As alternative, instructions could be hosted on a website, e.g. omnilayer.org -- which should also be the "central location" where binaries are hosted (instead of GitHub). |
We weren’t planning on having 32-bit builds at this point in time anyway, so focusing on 64-bit is perfect. |
Also, with regards to instructions, we agreed during the all-hands that we’ll deep link from omnilayer.org to individual github pages |
I have some 0.0.9.1-rc1internal builds done outside gitian (mingw) but I'm wondering if we shouldn't just go straight to a tag and use gitian for this release (and skip a release candidate stage as I get the impression we won't have much of an audience until we release). What are your thoughts @dexX7 around tagging this as 0.0.9.1-rel and publishing, and then moving straight onto 0.0.10 (unless anything crucial comes up on the 9 branch where we need to issue a patch). |
I have no objection to this - I also have no objection with a public release of a release candidate, named as such. |
@zathras-crypto: sorry for the late response. If -rc1 was intended as internal release, and this step is done already, then the next one should be the release imho. There would also be not much harm in pushing a 0.0.9.2-rel, if there appears to be a flaw (which I hope is not ... :) Gitian can use either a release tag, branch name or commit hash:
It just needs to be decided what should be the reference build, so to speak, so results can be compared. Over 27 % of clients, according to https://getaddr.bitnodes.io/dashboard/?days=90, are using 0.10 already, so I think pushing in that direction should be aimed for. Edit: going with a specific commit hash is probably the way to go for maximum reproducibility. |
Gist updated. Due to the missing release tag, some parts are still missing and tagged as It now also includes instructions to produce file hash sum files and at least for the Windows part I consider it as final, once the missing pieces are filled. https://gist.github.com/dexX7/7bca4f21141acaa0ec65#16-prepare-package-of-omni-core-for-windows |
Well I didn't end up emailing out the rc1internal binaries because it seems our little merry band of men has a strong favouring for OSX (pretty much every one I planned to give it to runs a Mac). I'm sure we would have got a couple of windows VMs up and running, but I estimated the response to be small (if any) so thought I'd suggest going straight to the tag. As you say we can always do a 0.0.9.2 to fix something if needed. Since we all seem to be in agreement here I'll update the version and request @m21 puts in the 0.0.9.1 tag (I'm not 100% on the process there), then we can do binaries via gitian and add them to 'releases' on this repo. |
It would be extremely interesting to know, if Omni Core works on Mac. #203 tackles the topic, and I know at least in theory how it's done via Gitian, but it's nothing I can test. Two notes:
There is not strictly need of a tag/release and Gitian can be used with commit hashes, which is probably even more specific, so once 0.0.9.1 is considered as final, and no new commit is added, it's basically ready to go, I think and hope. |
I'm looking into that at the mo. Just piecing together a few changes which I'll PR against main repo and merge, then can ask @m21 to tag. https://github.com/mastercoin-MSC/mastercore/compare/mscore-0.0.9...zathras-crypto:0.0.9.1-Z?expand=1
Really didn't put too much thought into this, just followed your suggested "merge the name revert commit into a special gitian-release-workaround branch and use that". If there are more appropriate naming conventions I'm open to better nomenclature sure - suggest away :) Thanks |
Haha, I don't want to argue about the name. :) Just thinking: if for example the Edit: changelog looks good. :) |
Heh, no arguments from me I really don't have a preference :) I don't want to confuse people though so how about a simple |
I'd prefer something like |
Alright I'll call for |
It's at least an improvement. :) Also: users who download the binaries (if they are published and made public with some announcement), then it's not necessarily given that those users take a look at the readme here. Or do you plan to include the readme in the "binary package"? |
I would like to include a readme in the binary package, but I think perhaps tailored to the binaries (eg info on how to build is fairly pointless etc) |
OK ready for tag. Will add a custom readme with binaries as noted above. |
@zathras-crypto: if this is final, can you push it to the |
If we push to the new branch now (before the tag) will the tag come across to the new branch? |
What exactly do you have in mind? Say for example there is the branch When browsing the commit history of different branch, say When clicking on the tag icon, either from branch In this context: it should not make if difference, whether the other branch is pushed before tagging or after, because the relation is between commits and tags. And a tag |
This makes no sense in my opinon. One for each OS. :) When creating the archive, take a look at: It's probably an overkill to create deterministic archives, but please include the file with file hashes, which can be created with: sha256sum mastercore-cli.exe mastercored.exe mastercore-qt.exe > sha256sum.txt Make sure you copy/move the binaries before starting a new build, otherwise the results will be overwritten. I extended the guide to cover Linux building as well: https://gist.github.com/dexX7/7bca4f21141acaa0ec65#18-build-dependencies-for-linux I'll start building later, but within the next hours. |
Awesome thanks, i'll take a stab at linux via gitian tomorrow, thanks for the info :) On the windows side:
|
Wooho, this is a match! :) Edit: http://bitwatch.co/uploads/omnicore-v0.0.9.1-rel-win/omnicore-v0.0.9.1-rel-win.zip |
Well, no Gitian Linux binaries for now. There appears to be an incompability between Boost and QT: https://bugreports.qt.io/browse/QTBUG-22829 It can be solved, but this would come with removing all dependencies/includes of "toxic" Boost headers, and given all the cross-includes, this is not trivial, and it almost seems easier to move on to the next version and just provide source + Windows binaries for this one. |
I could do Linux binaries just via Ubuntu the same way I did for 0.0.9? |
Yup, sure. :) |
Sorry for delayed response mate, crazy busy weekend - yep cool I'll knock out the Ubuntu binaries today along with a suitable readme for binaries etc. |
OK, think these will go into the 'release' unless any objections - merged some doc into a readme and included a license, everything else as per your notes @dexX7 (thanks): http://omnichest.info/files/omnicore-v0.0.9.1-rel-linux-x64.zip |
Awesome, looks perfect! File hash sums are fine as well! :) Good to go imho! |
Alrighty here we go https://github.com/mastercoin-MSC/mastercore/releases |
Are you a time traveller? ;) Some nitpicking, but of course everything in my opinion: I started with a list, but figured it would be easier to just create an example: https://gist.github.com/dexX7/0dec2608c500b52b0d17 |
FYI https://docs.google.com/presentation/d/1kieBF4ObunFkyYy4SFMnBCNCZQMNpKbyTtRGyHvTn6c/ Looks like the reordered checks are stopping the UI from reindexing itself. |
I don't get the crash, but I do see this error if txindex=1 is not in the conf on a fresh install |
So looks like the first scenario has a bad flow here the rest seem OK. |
Looks like if we move this check
a bit further up (since we can know fTxIndex value well before we look at reindexing just by calling |
Hehe I think because I based the release on top of the tag, that it uses the tag date.
Let me diff those and see what you're suggesting :) |
I'll setup a fresh Windows VM in a few minutes, but I'm wondering: what's the relation between our init error and what's going on here? |
I'm even more surprised a dialog pops up asking to enable the txindex (which is not the one from us). |
It looks like I missed one of the default values: |
Flipping that value results in the expected situation where the Omni Core "txindex" warning is shown, but when confirming an app crash (BEX64/StackHash) appears nevertheless. Edit: might be related: bitcoin#3136 Edit: I'm able to trigger a similar app crash with Bitcoin Core 0.9.3:
Edit: Same issue can be reproduced with Bitcoin Core 0.10. OS tested: Windows 8.1 x64 |
Shoot, ideally would have caught that in testing but it's difficult without a larger test audience - since we're getting end users testing now I expect a few more of these types of things to crop up.
If we can figure that out perhaps we can push upstream. I think we'll see what crops up over the coming days and squeeze some minor fixes into a 0.0.9.2 branch without a huge amount of work. |
If you want to PR your fix here https://github.com/zathras-crypto/mastercore/tree/0.0.9.2-Z I'll merge it. Thanks |
Pushed. Unfortunally it looks like the error goes deeper:
However, when forcefully disabling the Data Execution Prevention/DEP via https://technet.microsoft.com/en-us/library/cc738483(v=ws.10).aspx |
It seems somehow be related to:
In particular and to confirm: when using
|
I located the problem and pushed a PR upstream: dexX7@317e66c You're welcome to test it. :) |
Re: txindex crash Fix was merged upstream: bitcoin#5877 |
Nicely done mate, nicely done :) |
This should be converted into a doc at some point, but given the release was done, this can be closed in my opinion. |
Ideally binaries would be created deterministically via Gitian, which is feasible to some degree.
Due to the rebranding from Bitcoin Core to Master/Omni Core, some adjustments need to be made though.
I basically see three options in general:
Option 1 would be anything but trivial (#289), and I really don't like option 3 for a lot of reasons, so I'm going to focus on 2, and how the release could be handled:
I'd prefer a release based on Bitcoin Core 0.9.4, especially because 0.9.3 misses the BIP 66 switch over logic etc. for the upcoming soft-fork, but this seems to be out of the scope of this issue.
Going this route would provide at least deterministically build binaries for Unix and Windows, and given that the UI release seems to target the end user base instead of integrators, stepping up here seems reasonable and justified to me.
@CraigSellars: I agree that option 2 is the most expedient/reasonable (and let’s use mastercoin-MSC/mastercore for this).
@zathras-crypto: Not sure where my notes ended up here - perhaps wrong thread or a missed click on comment :(
TL:DR; option 2 sounds most viable for me also. Had a few other comments, most not terribly important but one thing I was interested in is trust related to GPG keys - eg I have a GPG key I setup with Faiz a while ago, but how does Joe Q end user know it's my key?
The text was updated successfully, but these errors were encountered: