diff --git a/.bintray.json b/.bintray.json new file mode 100644 index 000000000..953647582 --- /dev/null +++ b/.bintray.json @@ -0,0 +1,37 @@ +{ + "package": { + "name": "geth", + "repo": "quorum", + "subject": "_ORGANIZATION_", + "vcs_url": "https://github.com/jpmorganchase/quorum", + "licenses": [ + "LGPL-3.0" + ] + }, + "version": { + "name": "_TRAVIS_TAG_", + "desc": "Quorum: _TRAVIS_TAG_, Geth: _GETH_VERSION_, Commit: _TRAVIS_COMMIT_, Build Number: _TRAVIS_BUILD_NUMBER_", + "released": "_RELEASED_DATE_", + "vcs_tag": "_TRAVIS_TAG_", + "gpgSign": true, + "attributes": [ + { + "name": "Travis", + "values": [ + "_TRAVIS_JOB_WEB_URL_" + ], + "type": "string" + } + ] + }, + "files": [ + { + "includePattern": "/dist/(.*.tar.gz)", + "uploadPattern": "_TRAVIS_TAG_/$1", + "matrixParams": { + "override": 1 + } + } + ], + "publish": true +} diff --git a/.travis.yml b/.travis.yml index 4da5dc7a8..8aa041ef9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,27 +2,94 @@ language: go go_import_path: github.com/ethereum/go-ethereum -sudo: false +go: 1.11.x +sudo: true +branches: + only: + - /.*/ # everything including tags +env: + global: + - BINTRAY_ORGANIZATION=quorumengineering + - BINTRAY_USER=quorumbot + # Bintray API Key + - secure: "QHiPcd3zQoJEsT3VSpxoLVTYwbiYzS8H18EpY7Tk0EqCIfswS2AvRlyRXUxNvCf9ktzpaeXV4b5cPYJ67dwdp5V/O/ARaK5AL6ZjjrTPR1avPnmz/X2VeQEP0aWk1UGMs1nBUj5rzMbIIxlVhpbiITTLAI4Ao0+xRcBi215mDbv271Z7mACEZfXxjaoJA0/3IkbKz9pu1nC7bTjaaExCDAeLp2p8fHi2YQPnBll/7dkn/m1rnsIY9M3KWNCx6xBmQOr1hulrrB6tZoHwFBoDsVTFJFLckPfrWUZsYUgtfWJMQWc6ntv1gFl0f9x6s5fYEphCU2m1JYjEczlQ03B5ro9EyPGKjO7vQxAaFd5nVd2Xf34ZbssEIyXxlSnP/4Gv1GXl9L9aU1Hth9ckYvT5gYP5t/Nw3CDbKD0HelPBvkf8jZwfdlotzFPS2bOZNdl/rJLWgQrX18a/mC3BH9l4TSRz13tbRfo6YcC3Y/uOvG1n4GxzcVaWojAxn86SkknOczPTf2pk9F3JOcGVSYA2R4kGQAe+ErJH2X5g2sh1D5cCYDjQyl5rzWg6P3eK//HYW+mg2+TQ8k2iQVVSwFwrR0Yn4P+5cRDCW9mjtktgq1rTtslj41gSH49Avqr9oXGM2rqdcJPdN8dnmLMrAtmeSUNMMoexiRMmlF2OQKLrW3k=" matrix: include: - - os: linux - dist: trusty - sudo: required - go: 1.11.x + - if: tag IS blank + os: linux + dist: xenial script: - sudo modprobe fuse - sudo chmod 666 /dev/fuse - sudo chown root:$USER /etc/fuse.conf - go run build/ci.go install - go run build/ci.go test -coverage $TEST_PACKAGES - - - os: osx + - if: tag IS blank + os: osx osx_image: xcode9.2 # so we don't have to deal with Kernel Extension Consent UI which is never possible in CI - go: 1.11.x - sudo: required script: - brew update - brew install caskroom/cask/brew-cask - brew cask install osxfuse - go run build/ci.go install - go run build/ci.go test -coverage $TEST_PACKAGES + + - if: tag IS present + os: linux + dist: xenial + env: OUTPUT_FILE=geth_${TRAVIS_TAG}_linux_amd64.tar.gz + script: + - build/env.sh go run build/ci.go install ./cmd/geth + - sudo mkdir -p /dist + - cd build/bin + - sudo tar cfvz /dist/${OUTPUT_FILE} geth + - if: tag IS present + os: osx + osx_image: xcode9.2 + env: OUTPUT_FILE=geth_${TRAVIS_TAG}_darwin_amd64.tar.gz + script: + - build/env.sh go run build/ci.go install ./cmd/geth + - sudo mkdir -p /dist + - cd build/bin + - sudo tar cfvz /dist/${OUTPUT_FILE} geth + +before_deploy: + - | + echo "Prepare Bintray descriptor" + export GETH_VERSION=$(cat ${TRAVIS_BUILD_DIR}/VERSION) + export RELEASED_DATE=$(date +'%Y-%m-%d') + sed -e "s/_TRAVIS_TAG_/${TRAVIS_TAG}/g" \ + -e "s/_TRAVIS_BUILD_NUMBER_/${TRAVIS_BUILD_NUMBER}/g" \ + -e "s/_GETH_VERSION_/${GETH_VERSION}/g" \ + -e "s/_RELEASED_DATE_/${RELEASED_DATE}/g" \ + -e "s/_TRAVIS_COMMIT_/${TRAVIS_COMMIT}/g" \ + -e "s/_TRAVIS_JOB_WEB_URL_/${TRAVIS_JOB_WEB_URL//\//\\/}/g" \ + -e "s/_ORGANIZATION_/${BINTRAY_ORGANIZATION}/g" \ + ${TRAVIS_BUILD_DIR}/.bintray.json > /tmp/bintray.json +after_deploy: + - | + published="" + while [ "$published" == "" ]; do + echo "Sleep 5s to wait until ${OUTPUT_FILE} is published" + sleep 5 + result=$(curl -u ${BINTRAY_USER}:${BINTRAY_API_KEY} "https://api.bintray.com/packages/${BINTRAY_ORGANIZATION}/quorum/geth/versions/${TRAVIS_TAG}/files") + echo "$result" + if [[ "$result" == *"${OUTPUT_FILE}"* ]]; then + published="done" + fi + done + - | + echo "Add ${OUTPUT_FILE} to Download List" + curl -u ${BINTRAY_USER}:${BINTRAY_API_KEY} \ + -H "Content-type: application/json" \ + -X PUT \ + --data "{\"list_in_downloads\": true}" \ + https://api.bintray.com/file_metadata/${BINTRAY_ORGANIZATION}/quorum/${TRAVIS_TAG}/${OUTPUT_FILE} +deploy: + provider: bintray + file: /tmp/bintray.json + user: ${BINTRAY_USER} + key: ${BINTRAY_API_KEY} + skip_cleanup: true + on: + tags: true \ No newline at end of file diff --git a/README.md b/README.md index 5fa8f8612..1d3742a8c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ -# +# Quorum Slack [![Build Status](https://travis-ci.org/jpmorganchase/quorum.svg?branch=master)](https://travis-ci.org/jpmorganchase/quorum) +[![Download](https://api.bintray.com/packages/quorumengineering/quorum/geth/images/download.svg)](https://bintray.com/quorumengineering/quorum/geth/_latestVersion) Quorum is an Ethereum-based distributed ledger protocol with transaction/contract privacy and new consensus mechanisms. diff --git a/cmd/geth/consolecmd_test.go b/cmd/geth/consolecmd_test.go index 01b2f4576..508591523 100644 --- a/cmd/geth/consolecmd_test.go +++ b/cmd/geth/consolecmd_test.go @@ -86,6 +86,7 @@ func TestConsoleWelcome(t *testing.T) { geth.SetTemplateFunc("goarch", func() string { return runtime.GOARCH }) geth.SetTemplateFunc("gover", runtime.Version) geth.SetTemplateFunc("gethver", func() string { return params.Version }) + geth.SetTemplateFunc("quorumver", func() string { return params.QuorumVersion }) geth.SetTemplateFunc("niltime", func() string { return time.Unix(0, 0).Format(time.RFC1123) }) geth.SetTemplateFunc("apis", func() string { return ipcAPIs }) @@ -93,7 +94,7 @@ func TestConsoleWelcome(t *testing.T) { geth.Expect(` Welcome to the Geth JavaScript console! -instance: Geth/v{{gethver}}/{{goos}}-{{goarch}}/{{gover}} +instance: Geth/v{{gethver}}(quorum-v{{quorumver}})/{{goos}}-{{goarch}}/{{gover}} coinbase: {{.Etherbase}} at block: 0 ({{niltime}}) datadir: {{.Datadir}} @@ -179,6 +180,7 @@ func testAttachWelcome(t *testing.T, geth *testgeth, endpoint, apis string) { attach.SetTemplateFunc("goarch", func() string { return runtime.GOARCH }) attach.SetTemplateFunc("gover", runtime.Version) attach.SetTemplateFunc("gethver", func() string { return params.Version }) + attach.SetTemplateFunc("quorumver", func() string { return params.QuorumVersion }) attach.SetTemplateFunc("etherbase", func() string { return geth.Etherbase }) attach.SetTemplateFunc("niltime", func() string { return time.Unix(0, 0).Format(time.RFC1123) }) attach.SetTemplateFunc("ipc", func() bool { return strings.HasPrefix(endpoint, "ipc") }) @@ -189,7 +191,7 @@ func testAttachWelcome(t *testing.T, geth *testgeth, endpoint, apis string) { attach.Expect(` Welcome to the Geth JavaScript console! -instance: Geth/v{{gethver}}/{{goos}}-{{goarch}}/{{gover}} +instance: Geth/v{{gethver}}(quorum-v{{quorumver}})/{{goos}}-{{goarch}}/{{gover}} coinbase: {{etherbase}} at block: 0 ({{niltime}}){{if ipc}} datadir: {{datadir}}{{end}} diff --git a/core/state_transition.go b/core/state_transition.go index 0587fe395..96c1e9b25 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -257,7 +257,7 @@ func (st *StateTransition) TransitionDb() (ret []byte, usedGas uint64, failed bo ret, st.gas, vmerr = evm.Call(sender, to, data, st.gas, st.value) } if vmerr != nil { - log.Debug("VM returned with error", "err", vmerr) + log.Info("VM returned with error", "err", vmerr) // The only possible consensus-error would be if there wasn't // sufficient balance to make the transfer happen. The first // balance transfer may never fail. diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index e3874a520..9f157a92b 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -397,11 +397,7 @@ func (d *Downloader) synchronise(id string, hash common.Hash, td *big.Int, mode return errUnknownPeer } if d.mode == BoundedFullSync { - err := d.syncWithPeerUntil(p, hash, td) - if err == nil { - d.processFullSyncContent() - } - return err + return d.syncWithPeerUntil(p, hash, td) } return d.syncWithPeer(p, hash, td) } @@ -1697,6 +1693,7 @@ func (d *Downloader) syncWithPeerUntil(p *peerConnection, hash common.Hash, td * func() error { return d.fetchBodies(localHeight + 1) }, func() error { return d.fetchReceipts(localHeight + 1) }, // Receipts are only retrieved during fast sync func() error { return d.processHeaders(localHeight+1, pivot, td) }, + d.processFullSyncContent, //This must be added to clear the buffer of downloaded content as it's being filled } return d.spawnSync(fetchers) } diff --git a/params/version.go b/params/version.go index 358e50479..885d7b40b 100644 --- a/params/version.go +++ b/params/version.go @@ -28,7 +28,7 @@ const ( QuorumVersionMajor = 2 QuorumVersionMinor = 2 - QuorumVersionPatch = 0 + QuorumVersionPatch = 1 ) // Version holds the textual version string. @@ -50,5 +50,8 @@ func VersionWithCommit(gitCommit string) string { if len(gitCommit) >= 8 { vsn += "-" + gitCommit[:8] } + + vsn += "(quorum-v" + QuorumVersion + ")" + return vsn }