From 9e30c6f827ba2e40f568c44c569152565f6f9f54 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Tue, 18 Jun 2019 19:38:01 -0700 Subject: [PATCH] fix: add `solana-bpf-sdk-install` command to permit users to easily update their bpf-sdk --- web3.js/bin/bpf-sdk-install.sh | 29 ++++++++++++++++++++++++++ web3.js/bin/localnet.sh | 13 +----------- web3.js/bin/testnet-default-channel.js | 10 +++++++++ web3.js/package.json | 8 +++---- 4 files changed, 43 insertions(+), 17 deletions(-) create mode 100755 web3.js/bin/bpf-sdk-install.sh create mode 100755 web3.js/bin/testnet-default-channel.js diff --git a/web3.js/bin/bpf-sdk-install.sh b/web3.js/bin/bpf-sdk-install.sh new file mode 100755 index 0000000000..6b11300a25 --- /dev/null +++ b/web3.js/bin/bpf-sdk-install.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -e + +installDir=$1 +if [[ -z $installDir ]]; then + installDir="$(cd "$(dirname "$0")"/..; pwd)" +fi + +channel=$("$(dirname "$0")"/testnet-default-channel.js) +if [[ -n $2 ]]; then + channel=$2 +fi +[[ $channel = edge || $channel = beta ]] || { + echo "Error: Invalid channel: $channel" + exit 1 +} + +echo "Installing $channel BPF SDK into $installDir" + +set -x +cd "$installDir/" +curl -L --retry 5 --retry-delay 2 -o bpf-sdk.tar.bz2 \ + http://solana-sdk.s3.amazonaws.com/"$channel"/bpf-sdk.tar.bz2 +rm -rf bpf-sdk +mkdir -p bpf-sdk +tar jxf bpf-sdk.tar.bz2 +rm -f bpf-sdk.tar.bz2 + +cat bpf-sdk/version.txt diff --git a/web3.js/bin/localnet.sh b/web3.js/bin/localnet.sh index 53b5cf8f19..f6c08e3599 100755 --- a/web3.js/bin/localnet.sh +++ b/web3.js/bin/localnet.sh @@ -1,18 +1,7 @@ #!/usr/bin/env bash set -e -channel=$( - cd "$(dirname "$0")"; - node -p ' - let p = [ - "../lib/node_modules/@solana/web3.js/package.json", - "../@solana/web3.js/package.json", - "../package.json" - ].find(require("fs").existsSync); - if (!p) throw new Error("Unable to locate solana-web3.js directory"); - require(p)["testnetDefaultChannel"] - ' -) +channel=$("$(dirname "$0")"/testnet-default-channel.js) usage() { exitcode=0 diff --git a/web3.js/bin/testnet-default-channel.js b/web3.js/bin/testnet-default-channel.js new file mode 100755 index 0000000000..a426aea93c --- /dev/null +++ b/web3.js/bin/testnet-default-channel.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node + +let p = [ + __dirname + '/../lib/node_modules/@solana/web3.js/package.json', + __dirname + '/../@solana/web3.js/package.json', + __dirname + '/../package.json' +].find(require('fs').existsSync); +if (!p) throw new Error('Unable to locate solana-web3.js directory'); + +console.log(require(p)['testnetDefaultChannel']); diff --git a/web3.js/package.json b/web3.js/package.json index 704fe78515..d2b9a981ab 100644 --- a/web3.js/package.json +++ b/web3.js/package.json @@ -22,6 +22,7 @@ "main": "lib/index.cjs.js", "module": "lib/index.esm.js", "bin": { + "solana-bpf-sdk-install": "bin/bpf-sdk-install.sh", "solana-localnet": "bin/localnet.sh" }, "testnetDefaultChannel": "edge", @@ -35,11 +36,8 @@ "/src" ], "scripts": { - "bpf-sdk:install": "run-s bpf-sdk:clean bpf-sdk:fetch bpf-sdk:extract bpf-sdk:remove-symlinks bpf-sdk:clean", - "bpf-sdk:extract": "rimraf bpf-sdk; tar jxvf bpf-sdk.tar.bz2", - "bpf-sdk:fetch": "curl http://solana-sdk.s3.amazonaws.com/$npm_package_testnetDefaultChannel/bpf-sdk.tar.bz2 -o bpf-sdk.tar.bz2", + "bpf-sdk:install": "bin/bpf-sdk-install.sh", "bpf-sdk:remove-symlinks": "find bpf-sdk -type l -print -exec cp {} {}.tmp \\; -exec mv {}.tmp {} \\;", - "bpf-sdk:clean": "rimraf bpf-sdk.tar.bz2", "build": "cross-env NODE_ENV=production rollup -c", "clean": "rimraf ./coverage ./lib", "codecov": "set -ex; npm run test:cover; cat ./coverage/lcov.info | codecov", @@ -58,7 +56,7 @@ "localnet:up": "bin/localnet.sh up $npm_package_testnetDefaultChannel", "localnet:update": "bin/localnet.sh update $npm_package_testnetDefaultChannel", "ok": "run-s --serial lint flow test doc", - "prepare": "run-s clean bpf-sdk:install build", + "prepare": "run-s clean bpf-sdk:install bpf-sdk:remove-symlinks build", "pretty": "prettier --write '{,{examples,src,test}/**/}*.js'", "re": "semantic-release --repository-url git@github.com:solana-labs/solana-web3.js.git", "test": "cross-env NODE_ENV=test jest --useStderr",