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 @@
-#
+#
[![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
}