From 4d84e056f2a162d83cb42995056ee38bf837a68e Mon Sep 17 00:00:00 2001 From: Ev Date: Thu, 2 Feb 2017 19:18:10 -0200 Subject: [PATCH] Update to geth 1.5.8 (#1639) * updated solc again * updated solc to 0.4.6 * Update geth to 1.5.5 (#1520) * Update geth to 1.5.5 * corrected windows zip's internal paths * changed sanity check * made node starting better * also log path from which to fetch * show fetching origin URL * fix ESLint errors * removed -stable * fixes the immediate startup issue (#1540) * fixes #1532 (#1534) * [ESLint] autofix 'modules' (#1536) * [ESLint] update customProtocols.js (#1538) * added postinstall step for interface dir (#1546) * [ESLint] update 'scripts' (#1539) * [ESLint] update 'scripts' * add comments to .eslintrc * update paths * update comments * Adding badges for (up|out)dated dependencies (#1525) * Changes to splash screen and onboarding (#1545) * change fast to light * light client * remove '--cache' flag * remove cache * text changes` * changes to onboarding screen * changes to onboarding * ropstein in eth * experimental label` * checking network label position * Theres no I in Ropsten * changes algotithm for displaying * allows app to be ready if no sync is happening * bring changes to splash screen * remove changes from ethereumNode * remove changes from menuItems * speed changes * clean up and add comments * fixes onboarding shapeshift window loading * simplify code * add comments * shows ready to launch when there are less than a 100 blocks * Error pages (#1559) * added not found and crash error page * add source sans * [readme] minor typo * [mistAPI] add 'mist.solidity.version' (#1586) * add 'mist.solidity.version' to mistAPI * Adding tests for in Mist API * fixes (#1600) * add hash and queries to breadcrumb (#1596) * fix offline-startup edge-case (#1571) * NSIS installer (#1499) * Update travis config to new format * fixes * install gulp * fixes * tweaks * use same install & script tasks for all builds * Expand build matrix * tweaks * fixes * try to fix wine installation * Enable mac build * Extend run time to 30 minutes * see if extra dependencies resolves build issue for linwin * Install yarn with npm on osx * linux and windows in one * Add gulp to Mac * Bump timeout to 60 minutes * remove download-signatures from processing / travis tweaks * cleanup * enable gitter notifications * fix bash double ampersand * try to build nsis script * fix nsis verbosity flag * Customized NSIS installer * Fix order of commands * Improve uninstaller * Add logic and movefile plugins * Enable separate DATADIR location * Remove INSTDIR and replace with FILEDIR * Fix compiler warnings about unknown variables * Enforce UAC admin requirement * Move NSI to scripts directory and add plugins * Include version in output filename * Remove duplicate execution level command * Move files from nested folder into main folder * Update shortcut names and params * initial architecture detection + various cleanup * More flexible environment vars * Cleanup * User-selectable location for Mist's data files * Include icon in installation directory * Cleanup * Improve/fix registry entries * Show shortcuts after successful installation * Estimate installation size * Fix removal of start menu shortcuts * Open DATADIR and NODEDATADIR on uninstallation * Handle firewall rules * Disable firewall updates * Include multiple architectures into single installer * Don't allow user to select Mist data directory * Integrate NSIS build into Gulp * Cleanup lint suggestions * Cleanup more lint suggestions * One more linter fix * Remove testnet startmenu entry * Double the estimated installed size * Create desktop shortcut * Delete temporary zips * Store user settings in HKCU for uninstallation * Remove user registry settings on uninstallation * Improved uninstallation to not rely on stack variables * Compute actual program directory size * Cleanup * [travis] various fixes (#1601) * various fixes * disable code-signing on 'develop' * fix yarn on xcode8 image * rectify if statement * comments * improvement * Adjust formatter for addPeer #1543 (#1599) * recreate PR * add fixes * fix [null] * [gulp] new task 'upload-binaries' (to github) (#1578) * add gulp-task 'upload-binaries' * fix ESLint errors * improvements and fixes * switch URLs to ethereum/mist repo * also build wallet if on master branch * make sure all sendTransaction is valid HEX (#1606) * Adding a develop menu option to open Remix IDE (#1608) * Adding browser solidity menu item * Adding i18n keys for Remix menu item * Moving Remix menu option UP * Opening Remix on a separated popup * Changing display name * minor refactor * reverting travis change * Update app.nl.i18n.json (#1609) Dutch translation * adjust content order, feather and window size (#1585) * fix mention-bot (#1587) * Improve importer (#1598) * rename 'presaleFile' IPC actions to generic 'walletFile' * update the import-screen depending on wallet type * leverage ethereum-keyfile-recognizer * update yarn.lock * fix merge relic * [ESLint] * polish * update dependency and fix ESLint * improvements * update menu-label * Dutch translation improved (#1610) * Update mist.nl.i18n.json Dutch translations * Corrected proposed changes for Dutch translations. Capital "E"ther and changed from formal to informal throughout the file. * change window height (#1612) * Allow for operators while parsing 'mist.solidity.version' (#1613) * Allow for operators while parsing 'mist.solidity.version' * minor improvement in regex * Sync Dutch translation file to English + corrections (#1616) * Sync Dutch translations to English + corrections Mostly rearranged the lines to get equal to the English translation file for easier future maintenance. Also did some small spelling corrections and improved a few translations when I matched the Dutch and English files. * Fixed JSON syntax Fixed JSON syntax * Processed suggestions, many thanks! * update i18n files according to english base files (#1618) * [travis] don't wait for mac build on PR check (#1611) * 36 * 37 * [gulp] don't build NSIS installer on 'wallet' task (#1614) * don't build NSIS installer in 'wallet' task * [readme] add 'makensis' to brew install * Bump version string to 0.8.9 (#1626) * Spectron testing suite (#1553) * Spectron iteration * Updating spectron * Creating switch for mist.lokidb for automated tests * Adding chai-as-expected * Changing IPC flag * Pairing spectron and electron versions * [ESLint] Minor fixes * Adding chai-string * Couple of tests passing * update .eslintrc.yml * Simplifying code * Removing delay in favor of better window management * Adding tests for URL bar * Focusing window before each test * Minor fixes * Improving mist setup and teardown * Fixing wallet test * adding html fixture * Improving test helpers * Tests for ETH-01-002 * Updating tests * Starting local HTTP server to deal with html fixtures * Updating tests setup * Adding more tests * Updating travis file to run spectron tests * Refactoring tests * Tests for ETH-01-007 * Downloading geth on the fly * Fine-tuning geth download during tests * Changing linux binary dir * Fixing binary path on linux * Travis debug * Travis debug * Changing fixtures * Fixing tests * Fixing travis file * More tests * Adjusting timeouts * Adjusting GULP_PLATFORM test env variable * Adjusting timeouts * Disabling some tests for now * Disabling a test * Fix raw data display ('0x') in data-less TXs (#1625) * Update dependencies (#1623) * Update dependencies * Updating yarn lock * udpate (#1622) * Cleaner mocha-in-browser test results (#1630) * Removing DavidDM broken badges (#1631) * Update geth to 1.5.5 (#1520) (#1522) (#1633) * updated solc again * updated solc to 0.4.6 * Update geth to 1.5.5 (#1520) * Update geth to 1.5.5 * corrected windows zip's internal paths * changed sanity check * made node starting better * also log path from which to fetch * show fetching origin URL * fix ESLint errors * removed -stable * Update geth to 1.5.8 (#1635) * Update geth (osx still missing) * include mac * Add gulp task 'update-nodes' (#1637) --- clientBinaries.json | 42 ++++++++++++------------- gulpfile.js | 77 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 ++- yarn.lock | 21 +++++++++++++ 4 files changed, 122 insertions(+), 22 deletions(-) diff --git a/clientBinaries.json b/clientBinaries.json index 63a19f55b..5304f4009 100644 --- a/clientBinaries.json +++ b/clientBinaries.json @@ -2,36 +2,36 @@ { "clients": { "Geth": { - "version": "1.5.5", + "version": "1.5.8", "platforms": { "linux": { "x64": { "download": { - "url": "https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.5.5-ff07d548.tar.gz", + "url": "https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.5.8-f58fb322.tar.gz", "type": "tar", - "sha256": "4f36d6df25c37eb33829407d8bf2cea209cc412b3443319e2430db18581c7c01", - "bin": "geth-linux-amd64-1.5.5-ff07d548/geth" + "md5": "628cde7015ee4b90a8befbe52ca08e6f", + "bin": "geth-linux-amd64-1.5.8-f58fb322/geth" }, "bin": "geth", "commands": { "sanity": { "args": ["version"], - "output": [ "Geth", "1.5.5" ] + "output": [ "Geth", "1.5.8" ] } } }, "ia32": { "download": { - "url": "https://gethstore.blob.core.windows.net/builds/geth-linux-386-1.5.5-ff07d548.tar.gz", + "url": "https://gethstore.blob.core.windows.net/builds/geth-linux-386-1.5.8-f58fb322.tar.gz", "type": "tar", - "sha256": "6767651e4e5b34acaa6c53079d66a9047acb74e80fd25f570bf63da87d0ce863", - "bin": "geth-linux-386-1.5.5-ff07d548/geth" + "md5": "91170b9010dc1fd96cea700c1242faee", + "bin": "geth-linux-386-1.5.8-f58fb322/geth" }, "bin": "geth", "commands": { "sanity": { "args": ["version"], - "output": [ "Geth", "1.5.5" ] + "output": [ "Geth", "1.5.8" ] } } } @@ -39,16 +39,16 @@ "mac": { "x64": { "download": { - "url": "https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.5.5-ff07d548.tar.gz", + "url": "https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.5.8-f58fb322.tar.gz", "type": "tar", - "sha256": "a5b3ae5b7e9d91a0ca42ca24b079631578cdccce036cc5b1f0035cd0d9706b53", - "bin": "geth-darwin-amd64-1.5.5-ff07d548/geth" + "md5": "7ac3eae96132d49564bcf0f352081283", + "bin": "geth-darwin-amd64-1.5.8-f58fb322/geth" }, "bin": "geth", "commands": { "sanity": { "args": ["version"], - "output": [ "Geth", "1.5.5" ] + "output": [ "Geth", "1.5.8" ] } } } @@ -56,31 +56,31 @@ "win": { "x64": { "download": { - "url": "https://gethstore.blob.core.windows.net/mist/geth-windows-amd64-1.5.5-ff07d548-mist-fix.zip", + "url": "https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.5.8-f58fb322.zip", "type": "zip", - "sha256": "6b9e65ccac8a07535fbfd003662cdd4f69289f93947689c715d10c6486e703d7", - "bin": "geth-windows-amd64-1.5.5-ff07d548\\geth.exe" + "md5": "935239a6a1910eb17fbc3a483c297086", + "bin": "geth-windows-amd64-1.5.8-f58fb322\\geth.exe" }, "bin": "geth.exe", "commands": { "sanity": { "args": ["version"], - "output": [ "Geth", "1.5.5" ] + "output": [ "Geth", "1.5.8" ] } } }, "ia32": { "download": { - "url": "https://gethstore.blob.core.windows.net/mist/geth-windows-386-1.5.5-ff07d548-mist-fix.zip", + "url": "https://gethstore.blob.core.windows.net/builds/geth-windows-386-1.5.8-f58fb322.zip", "type": "zip", - "sha256": "74ef8372ae7748c1016a8fcfe2d49574b52a2780913081cf0184fb197f26f01c", - "bin": "geth-windows-386-1.5.5-ff07d548\\geth.exe" + "md5": "587c29eb2c8256505923392e537d0fd1", + "bin": "geth-windows-386-1.5.8-f58fb322\\geth.exe" }, "bin": "geth.exe", "commands": { "sanity": { "args": ["version"], - "output": [ "Geth", "1.5.5" ] + "output": [ "Geth", "1.5.8" ] } } } diff --git a/gulpfile.js b/gulpfile.js index 5996b0197..4f96ef153 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -23,6 +23,8 @@ const fs = require('fs'); const got = require('got'); const Q = require('bluebird'); const githubUpload = Q.promisify(require('gh-release-assets')); +const cmp = require('semver-compare'); +const parseJson = require('xml2js').parseString; const options = minimist(process.argv.slice(2), { string: ['platform', 'walletSource'], @@ -413,6 +415,81 @@ gulp.task('get-release-checksums', (done) => { return done(); }); +gulp.task('update-nodes', (cb) => { + const clientBinaries = require('./clientBinaries.json'); // eslint-disable-line global-require + const clientBinariesGeth = clientBinaries.clients.Geth; + const localGethVersion = clientBinariesGeth.version; + const newJson = clientBinaries; + const geth = newJson.clients.Geth; + + // Query latest geth version + got('https://api.github.com/repos/ethereum/go-ethereum/releases/latest', { json: true }) + .then((response) => { + return response.body.tag_name; + }) + // Return tag name (e.g. 'v1.5.0') + .then((tagName) => { + const latestGethVersion = tagName.match(/\d+\.\d+\.\d+/)[0]; + + // Compare to current geth version in clientBinaries.json + if (cmp(latestGethVersion, localGethVersion)) { + geth.version = latestGethVersion; + + // Query commit hash (first 8 characters) + got(`https://api.github.com/repos/ethereum/go-ethereum/commits/${tagName}`, { json: true }) + .then((response) => { + return String(response.body.sha).substr(0, 8); + }) + .then((hash) => { + let blobs; // geth blobs + + // Query Azure assets for md5 hashes + got('https://gethstore.blob.core.windows.net/builds?restype=container&comp=list', { + xml: true, + }) + .then((response) => { + parseJson(response.body, (err, data) => { + blobs = data.EnumerationResults.Blobs[0].Blob; + }); + + // For each platform/arch in clientBinaries.json + _.keys(geth.platforms).forEach((platform) => { + _.keys(geth.platforms[platform]).forEach((arch) => { + // Update URL + let url = geth.platforms[platform][arch].download.url; + url = url.replace(/\d+\.\d+\.\d+-[a-z0-9]{8}/, `${latestGethVersion}-${hash}`); + geth.platforms[platform][arch].download.url = url; + + // Update bin name (path in archive) + let bin = geth.platforms[platform][arch].download.bin; + bin = bin.replace(/\d+\.\d+\.\d+-[a-z0-9]{8}/, `${latestGethVersion}-${hash}`); + geth.platforms[platform][arch].download.bin = bin; + + // Update expected sanity-command version output + geth.platforms[platform][arch].commands.sanity.output[1] = + String(latestGethVersion); + + // Update md5 checksum + blobs.forEach((blob) => { + if (String(blob.Name) === _.last(geth.platforms[platform][arch].download.url.split('/'))) { + const sum = new Buffer(blob.Properties[0]['Content-MD5'][0], 'base64'); + + geth.platforms[platform][arch].download.md5 = sum.toString('hex'); + } + }); + }); + }); + }) + // Update clientBinares.json + .then(() => { + fs.writeFile('./clientBinaries.json', JSON.stringify(newJson, null, 4)); + cb(); + }); + }); + } else cb(); // Already up-to-date + }) + .catch(cb); +}); gulp.task('download-signatures', (cb) => { got('https://www.4byte.directory/api/v1/signatures/?page_size=20000&ordering=created_at', { diff --git a/package.json b/package.json index 1842ed745..79880329b 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,9 @@ "mocha": "^3.2.0", "optimist": "^0.6.1", "run-sequence": "^1.2.1", + "semver-compare": "^1.0.0", "shelljs": "^0.7.6", - "spectron": "3.3.0" + "spectron": "3.3.0", + "xml2js": "^0.4.17" } } diff --git a/yarn.lock b/yarn.lock index 31cca18ee..f26b1d3fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3508,6 +3508,10 @@ sanitize-filename@^1.6.1: dependencies: truncate-utf8-bytes "^1.0.0" +sax@>=0.6.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + secp256k1@^3.0.1: version "3.2.2" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.2.2.tgz#2103620789ca2c9b79650cdf8cfc9c542be36597" @@ -3526,6 +3530,10 @@ seek-bzip@^1.0.3: dependencies: commander "~2.8.1" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -4327,10 +4335,23 @@ xdg-basedir@^2.0.0: dependencies: os-homedir "^1.0.0" +xml2js@^0.4.17: + version "0.4.17" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868" + dependencies: + sax ">=0.6.0" + xmlbuilder "^4.1.0" + xmlbuilder@8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" +xmlbuilder@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" + dependencies: + lodash "^4.0.0" + xmldom@0.1.x: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"