Skip to content

Bump celo-bls-go to v0.1.6#1089

Merged
bowd merged 1 commit intomasterfrom
bowd/bump-celo-bls-go
Jul 1, 2020
Merged

Bump celo-bls-go to v0.1.6#1089
bowd merged 1 commit intomasterfrom
bowd/bump-celo-bls-go

Conversation

@bowd
Copy link
Copy Markdown
Contributor

@bowd bowd commented Jun 30, 2020

Description

Bumps the celo-bls-go dependency to v0.1.6 which fixes a windows linking issue and allows celo-blockchain to compile and run on windows.

Other changes

I also ran a go mod tidy to clean up dependencies, that's the cause of most of the modifications. In my experience it works well but people don't feel comfortable running it because it introduces unrelated changes but the reverse of the coin is that a lot of noise builds up in the deps.

Tested

I have compiled celo-blockchain for windows with the bumped dependency and I'm syncing a node in a VM.

Related issues

Backwards compatibility

The change in celo-bls-go only affects the library on windows which wasn't linking at all before this change so it doesn't affect linux/darwin builds.

@bowd bowd requested review from asaj and timmoreton as code owners June 30, 2020 07:03
@bowd bowd requested a review from kobigurk June 30, 2020 07:03
@bowd bowd mentioned this pull request Jun 30, 2020
2 tasks
Copy link
Copy Markdown

@nategraf nategraf left a comment

Choose a reason for hiding this comment

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

Looks good to me 👍

@bowd bowd merged commit 394f63f into master Jul 1, 2020
@bowd bowd deleted the bowd/bump-celo-bls-go branch July 1, 2020 09:27
mergify Bot pushed a commit that referenced this pull request Jul 2, 2020
### Description

This PR includes the necessary bits to setup a CI pipeline that cross-compiles all geth tools into release binaries for the platforms we want/support. Currently these are:

- ✅Linux 32bit/64bit
- ✅Darwin 32bit/64bit (~pending on #1082~ merged!)
- ✅Windows 64bit (~pending on celo-bls-go v0.1.6 release~ ~pending on #1089~ merged!)

Elements of the PR:

- `Dockerfile.binaries` for the container where cross-compilation occurs. It's based on a [fork of xgo](https://github.com/techknowlogick/xgo), and includes some back-ported mingw packages for the windows build.


- Changes to the `geth` build scripts:
   - Introduce a new CI environment in `internal/build/env.go` which which can be used for Google Cloud Build.
   - Create a new ci task in `build/ci.go` that bundles the binaries into well named release archive


- `cloudbuild-binaries.yaml` which defines the CI pipeline. It should be used in conjunction with a trigger on `release/.*` and `master` branches and the trigger should have to variables:
  - `_BUCKET` with the name of the google cloud storage bucket where the artefacts will be stored
  - `_BUILD_TARGETS` comma-separated string of build targets. e.g. `linux/amd64,linux/386`

#### Shortcomings 

- 🔴 The geth `build.Environment` struct requires the commit timestamp, which is then passed to `main.gitDate` in the binaries that it builds. Usually this is extracted from the git but in Cloud Build in the CI steps the git data is stripped and all we have is what's passed through env vars. I have substituted the commit timestamp with the build timestamp instead.
- 🟡 The `xgo` image is really large (3gb) and adds about ~4minutes to the build time

#### Release artefacts

The pipeline outputs release artefacts into `<bucket>/<branch>/<file>`. For example here's the output of a test build:

<img width="553" alt="Screenshot 2020-06-29 at 11 41 00" src="https://user-images.githubusercontent.com/304771/85994959-1433eb00-b9fe-11ea-9180-22ea95cb774c.png">

A few things to notice here:

- The folder is `<bucket>/release/1.1` yet the version is `1.0.0-unstable` this is because there isn't any enforced relationship between the branch name and the version sourced from `params/version.go` which is the authoritative source. So in this case I just created the dummy `release/1.1` branch on my fork in order to play around. Because we're using the branch name in the path all "nightly" version will be stored in the `<bucket>/master` folder, if we setup the trigger on `master`.

- There are 2 archives per platform, one containing only `geth` and the other containing all binary tools located inside `cmd`, just like geth releases. ⚠️ The archives also contain the "COPYING" file, we need to decide if we want to make changes to that ⚠️
 

#### Post-merge TODOs:

- [x] Create a bucket and triggers in `celo-testnet` to start running the pipeline
- [x] Enable more build targets as they are unblocked 
 
### Tested

I have currently tested the CI pipeline in a personal google cloud project and tested the linux binaries in docker.

### Related issues

- Fixes #1073 

### Backwards compatibility

Changes are only related to tooling so no problem with compatibility.
@mcortesi mcortesi added this to the 1.0.2 milestone Sep 24, 2020
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

Successfully merging this pull request may close these issues.

3 participants