From e9b08b5e7fb5022072e6331c5c15aceda8d8fd3c Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Mon, 15 Mar 2021 15:35:41 +0800 Subject: [PATCH] fix: remove deprecated bpf-sdk, localnet, and examples BREAKING CHANGE: Removed binaries solana-localnet and solana-bpf-sdk-install. Please install the Solana CLI tools to download the BPF SDK and to install the solana-test-validator binary intead. --- web3.js/.gitignore | 7 - web3.js/.releaserc.json | 7 + web3.js/.travis/before_install.sh | 4 - web3.js/.travis/script.sh | 2 - web3.js/README.md | 65 ++----- web3.js/bin/bpf-sdk-install.sh | 38 ----- web3.js/bin/localnet.sh | 161 ------------------ web3.js/examples/README.md | 10 -- web3.js/examples/account.html | 24 --- web3.js/examples/account.js | 10 -- web3.js/examples/bpf-c-noop/.gitignore | 1 - web3.js/examples/bpf-c-noop/makefile | 1 - web3.js/examples/bpf-c-noop/src/noop/noop.c | 19 --- web3.js/examples/get-balance.html | 37 ---- web3.js/examples/get-balance.js | 18 -- web3.js/package.json | 29 +--- web3.js/test/bpf-loader.test.ts | 49 +----- web3.js/test/connection.test.ts | 2 +- web3.js/test/fixtures/noop-c/build.sh | 7 - .../fixtures/noop-program}/.gitignore | 0 .../fixtures/noop-program}/Cargo.toml | 0 .../fixtures/noop-program}/Xargo.toml | 0 web3.js/test/fixtures/noop-program/build.sh | 7 + .../noop-program/solana_bpf_rust_noop.so | Bin 0 -> 68600 bytes .../fixtures/noop-program}/src/lib.rs | 0 web3.js/test/fixtures/noop-rust/build.sh | 7 - 26 files changed, 33 insertions(+), 472 deletions(-) create mode 100644 web3.js/.releaserc.json delete mode 100755 web3.js/bin/bpf-sdk-install.sh delete mode 100755 web3.js/bin/localnet.sh delete mode 100644 web3.js/examples/README.md delete mode 100644 web3.js/examples/account.html delete mode 100644 web3.js/examples/account.js delete mode 100644 web3.js/examples/bpf-c-noop/.gitignore delete mode 100644 web3.js/examples/bpf-c-noop/makefile delete mode 100644 web3.js/examples/bpf-c-noop/src/noop/noop.c delete mode 100644 web3.js/examples/get-balance.html delete mode 100644 web3.js/examples/get-balance.js delete mode 100755 web3.js/test/fixtures/noop-c/build.sh rename web3.js/{examples/bpf-rust-noop => test/fixtures/noop-program}/.gitignore (100%) rename web3.js/{examples/bpf-rust-noop => test/fixtures/noop-program}/Cargo.toml (100%) rename web3.js/{examples/bpf-rust-noop => test/fixtures/noop-program}/Xargo.toml (100%) create mode 100755 web3.js/test/fixtures/noop-program/build.sh create mode 100755 web3.js/test/fixtures/noop-program/solana_bpf_rust_noop.so rename web3.js/{examples/bpf-rust-noop => test/fixtures/noop-program}/src/lib.rs (100%) delete mode 100755 web3.js/test/fixtures/noop-rust/build.sh diff --git a/web3.js/.gitignore b/web3.js/.gitignore index ea4d0032d0..c158f7d504 100644 --- a/web3.js/.gitignore +++ b/web3.js/.gitignore @@ -22,13 +22,6 @@ doc # VIM swap files *.sw* -# bpf-sdk -/bpf-sdk -/bpf-sdk.tar.bz2 - -# fixtures -/test/fixtures - # `solana-test-validator` ledger location test-ledger/ diff --git a/web3.js/.releaserc.json b/web3.js/.releaserc.json new file mode 100644 index 0000000000..ee4be420db --- /dev/null +++ b/web3.js/.releaserc.json @@ -0,0 +1,7 @@ +{ + "repositoryUrl": "git@github.com:solana-labs/solana-web3.js.git", + "preset": "conventionalcommits", + "presetConfig": { + "issueUrlFormat": "{{host}}/{{owner}}/solana/issues/{{id}}" + } +} diff --git a/web3.js/.travis/before_install.sh b/web3.js/.travis/before_install.sh index 6c5a4dd074..80dfc5b814 100644 --- a/web3.js/.travis/before_install.sh +++ b/web3.js/.travis/before_install.sh @@ -9,10 +9,6 @@ sudo apt-get install -y libssl-dev --allow-unauthenticated sudo apt-get install -y libssl1.1 --allow-unauthenticated clang-7 --version -curl https://sh.rustup.rs -sSf | sh -s -- -y -PATH=$HOME/.cargo/bin:$PATH -rustup --version - sh -c "$(curl -sSfL https://release.solana.com/edge/install)" PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" solana --version diff --git a/web3.js/.travis/script.sh b/web3.js/.travis/script.sh index dde7004a72..15ee14b3d6 100644 --- a/web3.js/.travis/script.sh +++ b/web3.js/.travis/script.sh @@ -10,7 +10,5 @@ test -r lib/index.esm.js npm run doc npm run lint npm run codecov -make -C examples/bpf-c-noop/ -cargo build-bpf --manifest-path examples/bpf-rust-noop/Cargo.toml npm run test:live-with-test-validator npm run test:browser-with-test-validator diff --git a/web3.js/README.md b/web3.js/README.md index c5822423f6..0ec29a85f6 100644 --- a/web3.js/README.md +++ b/web3.js/README.md @@ -47,11 +47,17 @@ $ npm install --save @solana/web3.js ``` +## Development Environment Setup -### Development Environment Setup -To build and run tests: -1. Install Rust from https://rustup.rs/ -2. Install the latest Solana release from https://docs.solana.com/cli/install-solana-cli-tools +Install the latest Solana release from https://docs.solana.com/cli/install-solana-cli-tools + +### Run test validator + +**Use `solana-test-validator` from the latest Solana release** + +### BPF program development + +**Use `cargo build-bpf` from the latest Solana release** ## Usage @@ -84,14 +90,6 @@ activate it: node_modules/@solana/web3.js/module.flow.js ``` -## Examples -See the [examples/](https://github.com/solana-labs/solana-web3.js/tree/master/examples) directory for small snippets. - -Standalone examples: -* Message feed (BPF Rust and C): https://github.com/solana-labs/example-messagefeed -* Tic-tac-toe (BPF C): https://github.com/solana-labs/example-tictactoe -* Web wallet: https://github.com/solana-labs/example-webwallet - ## Releases Releases are available on [Github](https://github.com/solana-labs/solana-web3.js/releases) and [npmjs.com](https://www.npmjs.com/package/@solana/web3.js) @@ -99,46 +97,3 @@ and [npmjs.com](https://www.npmjs.com/package/@solana/web3.js) Each Github release features a tarball containing API documentation and a minified version of the module suitable for direct use in a browser environment (<script> tag) - -## Deprecated - -### Local Network - -**Please use `solana-test-validator` from the latest Solana release instead of the information in this section** - -The `solana-localnet` program is provided to easily start a test Solana cluster -locally on your machine. Docker must be installed. The JSON RPC endpoint of -the local cluster is `http://localhost:8899`. - -To start, first fetch the latest Docker image by running: -```bash -$ npx solana-localnet update -``` - -Then run the following command to start the cluster -```bash -$ npx solana-localnet up -``` - -While the cluster is running logs are available with: -```bash -$ npx solana-localnet logs -f -``` - -Stop the cluster with: -```bash -$ npx solana-localnet down -``` - -### BPF program development - -**Please use `cargo build-bpf` from the latest Solana release instead of the information in this section** - -The Solana BPF SDK is located in the `bpf-sdk/` subdirectory if you installed -solana-web3.js from npmjs.com. - -From a git clone, run `npm run bpf-sdk:install` to fetch the latest BPF SDK. - -Additionally Rust must be installed to build Rust BPF programs such as -`examples/bpf-rust-noop/`. See https://www.rust-lang.org/install.html for -installation details. diff --git a/web3.js/bin/bpf-sdk-install.sh b/web3.js/bin/bpf-sdk-install.sh deleted file mode 100755 index 0e5ce5302e..0000000000 --- a/web3.js/bin/bpf-sdk-install.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -set -e - -installDir=$1 -if [[ -z $installDir ]]; then - installDir="$(cd "$(dirname "$0")"/..; pwd)" -fi - -channel=$( - cd "$(dirname "$0")"; - node -p ' - let p = [ - "../../package.json", - "../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 package.json"); - require(p)["testnetDefaultChannel"] - ' -) - -if [[ -n $2 ]]; then - channel=$2 -fi - -echo "Installing $channel BPF SDK into $installDir" - -set -x -cd "$installDir/" -curl -L --retry 5 --retry-delay 2 -o bpf-sdk.tar.bz2 \ - https://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 deleted file mode 100755 index a5e050ca24..0000000000 --- a/web3.js/bin/localnet.sh +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env bash -set -e - -channel=$( - cd "$(dirname "$0")"; - node -p ' - let p = [ - "../../package.json", - "../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 package.json"); - require(p)["testnetDefaultChannel"] - ' -) - -usage() { - exitcode=0 - if [[ -n "$1" ]]; then - exitcode=1 - echo "Error: $*" - fi - cat < - Optional Docker image tag to use - - up-specific options: - - Optional Docker image tag to use - -n - Optional Docker network to join - - Default channel: $channel - - down-specific options: - none - -EOF - exit $exitcode -} - -[[ -n $1 ]] || usage -cmd="$1" -shift - -docker --version || usage "It appears that docker is not installed" -case $cmd in -update) - if [[ -n $1 ]]; then - channel="$1" - fi - ( - set -x - docker pull solanalabs/solana:"$channel" - ) - ;; -up) - while [[ -n $1 ]]; do - if [[ $1 = -n ]]; then - [[ -n $2 ]] || usage "Invalid $1 argument" - network="$2" - shift 2 - else - channel=$1 - shift 1 - fi - done - - ( - set -x - RUST_LOG=${RUST_LOG:-solana=info,solana_runtime::message_processor=debug} - ARGS=( - --detach - --name solana-localnet - --rm - --publish 8001:8001/tcp # entrypoint - --publish 8899:8899/tcp # rpc http - --publish 8900:8900/tcp # rpc pubsub - --publish 8901:8901/tcp # (future) bank service - --publish 8902:8902/tcp # bank service - --publish 9900:9900/tcp # faucet - --publish 8000:8000/udp # tvu - --publish 8001:8001/udp # gossip - --publish 8002:8002/udp # tvu_forwards - --publish 8003:8003/udp # tpu - --publish 8004:8004/udp # tpu_forwards - --publish 8005:8005/udp # retransmit - --publish 8006:8006/udp # repair - --publish 8007:8007/udp # serve_repair - --publish 8008:8008/udp # broadcast - --tty - --ulimit "nofile=700000" - --env "RUST_LOG=$RUST_LOG" - ) - if [[ -n $network ]]; then - ARGS+=(--network "$network") - fi - - docker run "${ARGS[@]}" solanalabs/solana:"$channel" - - for _ in 1 2 3 4 5; do - if curl \ - -X POST \ - -H "Content-Type: application/json" \ - -d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \ - http://localhost:8899; then - break; - fi - sleep 1 - done - ) - ;; -down) - ( - set -x - if [[ $(docker ps --filter "name=^/solana-localnet$" -q) ]]; then - docker stop --time 0 solana-localnet - fi - ) - ;; -logs) - follow=false - if [[ -n $1 ]]; then - if [[ $1 = "-f" ]]; then - follow=true - else - usage "Unknown argument: $1" - fi - fi - - while $follow; do - if [[ $(docker ps -q -f "name=^/solana-localnet$") ]]; then - ( - set -x - docker logs solana-localnet -f - ) || true - fi - sleep 1 - done - - ( - set -x - docker logs solana-localnet - ) - ;; -*) - usage "Unknown command: $cmd" -esac - -exit 0 diff --git a/web3.js/examples/README.md b/web3.js/examples/README.md deleted file mode 100644 index 466afb2c31..0000000000 --- a/web3.js/examples/README.md +++ /dev/null @@ -1,10 +0,0 @@ -## Examples -Before trying any of the examples in this directory please populate the `lib/` -directory by running `npm install`. - -Additionally most of the examples attempt to connect to a local cluster. Start -your local cluster first by running: -```bash -$ npx solana-localnet update -$ npx solana-localnet up -``` diff --git a/web3.js/examples/account.html b/web3.js/examples/account.html deleted file mode 100644 index c25d2c22c6..0000000000 --- a/web3.js/examples/account.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - Create a new account - - - Account Public Key: -
?
- - - - - - - diff --git a/web3.js/examples/account.js b/web3.js/examples/account.js deleted file mode 100644 index 707bf13c83..0000000000 --- a/web3.js/examples/account.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Create a new account -*/ - -//eslint-disable-next-line import/no-commonjs -const solanaWeb3 = require('..'); -//const solanaWeb3 = require('@solana/web3.js'); - -const account = new solanaWeb3.Account(); -console.log(account.publicKey.toString()); diff --git a/web3.js/examples/bpf-c-noop/.gitignore b/web3.js/examples/bpf-c-noop/.gitignore deleted file mode 100644 index 6a3417b8d9..0000000000 --- a/web3.js/examples/bpf-c-noop/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/out/ diff --git a/web3.js/examples/bpf-c-noop/makefile b/web3.js/examples/bpf-c-noop/makefile deleted file mode 100644 index 467f9a6bbc..0000000000 --- a/web3.js/examples/bpf-c-noop/makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../bpf-sdk/c/bpf.mk diff --git a/web3.js/examples/bpf-c-noop/src/noop/noop.c b/web3.js/examples/bpf-c-noop/src/noop/noop.c deleted file mode 100644 index 5685ba9d61..0000000000 --- a/web3.js/examples/bpf-c-noop/src/noop/noop.c +++ /dev/null @@ -1,19 +0,0 @@ -/** - * @brief Example C-based BPF program that prints out the parameters - * passed to it - */ - -#include - -extern uint64_t entrypoint(const uint8_t *input) { - SolAccountInfo ka[1]; - SolParameters params = (SolParameters) { .ka = ka }; - - sol_log("Hello World"); - - if (!sol_deserialize(input, ¶ms, SOL_ARRAY_SIZE(ka))) { - return ERROR_INVALID_ARGUMENT; - } - sol_log_params(¶ms); - return SUCCESS; -} diff --git a/web3.js/examples/get-balance.html b/web3.js/examples/get-balance.html deleted file mode 100644 index 9e64915506..0000000000 --- a/web3.js/examples/get-balance.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - Get account balance - - - Account -
?
- has a balance of -
?
- - - - - - - diff --git a/web3.js/examples/get-balance.js b/web3.js/examples/get-balance.js deleted file mode 100644 index f03351f912..0000000000 --- a/web3.js/examples/get-balance.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - Fetch the balance of an account -*/ - -//eslint-disable-next-line import/no-commonjs -const solanaWeb3 = require('..'); -//const solanaWeb3 = require('@solana/web3.js'); - -const account = new solanaWeb3.Account(); - -let url; -url = 'http://devnet.solana.com'; -//url = 'http://localhost:8899'; -const connection = new solanaWeb3.Connection(url); - -connection.getBalance(account.publicKey).then(balance => { - console.log(`${account.publicKey} has a balance of ${balance}`); -}); diff --git a/web3.js/package.json b/web3.js/package.json index 05ee18fe9c..f92ed93cc0 100644 --- a/web3.js/package.json +++ b/web3.js/package.json @@ -31,48 +31,31 @@ "not IE 11", "maintained node versions" ], - "bin": { - "solana-bpf-sdk-install": "bin/bpf-sdk-install.sh", - "solana-localnet": "bin/localnet.sh" - }, - "testnetDefaultChannel": "edge", "files": [ - "/bin", - "/doc", - "/examples", - "/bpf-sdk", "/lib", "/module.flow.js", "/src" ], "scripts": { - "bpf-sdk:install": "npm run clean:fixtures; bin/bpf-sdk-install.sh .", - "bpf-sdk:remove-symlinks": "find bpf-sdk -type l -print -exec cp {} {}.tmp \\; -exec mv {}.tmp {} \\;", "build": "cross-env NODE_ENV=production rollup -c; npx flowgen lib/types/index.d.ts -o module.flow.js", "build:browser-test": "rollup -c test/rollup.config.js", - "build:fixtures": "set -ex; ./test/fixtures/noop-c/build.sh; ./test/fixtures/noop-rust/build.sh", - "clean:fixtures": "make -C examples/bpf-c-noop clean ", + "build:fixtures": "set -ex; ./test/fixtures/noop-program/build.sh", "clean": "rimraf ./coverage ./lib", "codecov": "set -ex; npm run test:cover; cat ./coverage/lcov.info | codecov", "dev": "cross-env NODE_ENV=development rollup -c", "doc": "set -ex; typedoc", "doc:watch": "watch 'npm run doc' . --wait=1 --ignoreDirectoryPattern=/doc/", - "examples": "set -ex; for example in examples/*.js; do node $example; done", "lint": "set -ex; npm run pretty; eslint . --ext .js,.ts", "lint:fix": "npm run pretty:fix && eslint . --fix", "lint:watch": "watch 'npm run lint:fix' . --wait=1 --ignoreDirectoryPattern=/doc/", - "localnet:down": "bin/localnet.sh down", - "localnet:logs": "bin/localnet.sh logs -f", - "localnet:up": "bin/localnet.sh up", - "localnet:update": "bin/localnet.sh update", "ok": "run-s lint test doc", - "prepare": "run-s clean bpf-sdk:install bpf-sdk:remove-symlinks build", - "pretty": "prettier --check '{,{examples,src,test}/**/}*.{j,t}s'", - "pretty:fix": "prettier --write '{,{examples,src,test}/**/}*.{j,t}s'", + "prepare": "run-s clean build", + "pretty": "prettier --check '{,{src,test}/**/}*.{j,t}s'", + "pretty:fix": "prettier --write '{,{src,test}/**/}*.{j,t}s'", "re": "semantic-release --repository-url git@github.com:solana-labs/solana-web3.js.git", - "test": "npm run build:fixtures && mocha -r ts-node/register './test/**/*.test.ts'", + "test": "mocha -r ts-node/register './test/**/*.test.ts'", "test:cover": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' nyc --reporter=lcov mocha -r ts-node/register './test/**/*.test.ts'", - "test:browser": "TEST_LIVE=1 npm run build:fixtures && npm run build:browser-test && mocha-headless-chrome -f http://localhost:8080/mocha.html --timeout 180000", + "test:browser": "TEST_LIVE=1 npm run build:browser-test && mocha-headless-chrome -f http://localhost:8080/mocha.html --timeout 180000", "test:browser-with-server": "start-server-and-test 'http-server -p 8080' 8080 test:browser", "test:browser-with-test-validator": "start-server-and-test 'solana-test-validator --reset --quiet' http://localhost:8899/health test:browser-with-server", "test:live": "TEST_LIVE=1 npm run test", diff --git a/web3.js/test/bpf-loader.test.ts b/web3.js/test/bpf-loader.test.ts index 4fb8c7eb8f..7fb58324e0 100644 --- a/web3.js/test/bpf-loader.test.ts +++ b/web3.js/test/bpf-loader.test.ts @@ -17,52 +17,7 @@ use(chaiAsPromised); if (process.env.TEST_LIVE) { describe('BPF Loader', () => { - it('load BPF C program', async () => { - const data = await fs.readFile('test/fixtures/noop-c/noop.so'); - - const connection = new Connection(url, 'confirmed'); - const {feeCalculator} = await connection.getRecentBlockhash(); - const fees = - feeCalculator.lamportsPerSignature * - BpfLoader.getMinNumSignatures(data.length); - const payerBalance = await connection.getMinimumBalanceForRentExemption( - 0, - ); - const executableBalance = await connection.getMinimumBalanceForRentExemption( - data.length, - ); - - const from = new Account(); - await helpers.airdrop({ - connection, - address: from.publicKey, - amount: payerBalance + fees + executableBalance, - }); - - const program = new Account(); - await BpfLoader.load( - connection, - from, - program, - data, - BPF_LOADER_PROGRAM_ID, - ); - - // Check that program loading costed exactly `fees + executableBalance` - const fromBalance = await connection.getBalance(from.publicKey); - expect(fromBalance).to.eq(payerBalance); - - const transaction = new Transaction().add({ - keys: [{pubkey: from.publicKey, isSigner: true, isWritable: true}], - programId: program.publicKey, - }); - await sendAndConfirmTransaction(connection, transaction, [from], { - commitment: 'confirmed', - preflightCommitment: 'confirmed', - }); - }).timeout(5000); - - describe('load BPF Rust program', () => { + describe('load BPF program', () => { const connection = new Connection(url, 'confirmed'); let program = new Account(); @@ -72,7 +27,7 @@ if (process.env.TEST_LIVE) { before(async function () { this.timeout(60_000); programData = await fs.readFile( - 'test/fixtures/noop-rust/solana_bpf_rust_noop.so', + 'test/fixtures/noop-program/solana_bpf_rust_noop.so', ); const {feeCalculator} = await connection.getRecentBlockhash(); diff --git a/web3.js/test/connection.test.ts b/web3.js/test/connection.test.ts index 2e81e7d30a..36e19174a4 100644 --- a/web3.js/test/connection.test.ts +++ b/web3.js/test/connection.test.ts @@ -927,7 +927,7 @@ describe('Connection', () => { }, }); - // Block 0 never has any transactions in automation localnet + // Block 0 never has any transactions in test validator const block0 = await connection.getConfirmedBlock(0); const blockhash0 = block0.blockhash; expect(block0.transactions).to.have.length(0); diff --git a/web3.js/test/fixtures/noop-c/build.sh b/web3.js/test/fixtures/noop-c/build.sh deleted file mode 100755 index 0043703b15..0000000000 --- a/web3.js/test/fixtures/noop-c/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -ex - -cd "$(dirname "$0")" - -make -C ../../../examples/bpf-c-noop/ -cp ../../../examples/bpf-c-noop/out/noop.so . diff --git a/web3.js/examples/bpf-rust-noop/.gitignore b/web3.js/test/fixtures/noop-program/.gitignore similarity index 100% rename from web3.js/examples/bpf-rust-noop/.gitignore rename to web3.js/test/fixtures/noop-program/.gitignore diff --git a/web3.js/examples/bpf-rust-noop/Cargo.toml b/web3.js/test/fixtures/noop-program/Cargo.toml similarity index 100% rename from web3.js/examples/bpf-rust-noop/Cargo.toml rename to web3.js/test/fixtures/noop-program/Cargo.toml diff --git a/web3.js/examples/bpf-rust-noop/Xargo.toml b/web3.js/test/fixtures/noop-program/Xargo.toml similarity index 100% rename from web3.js/examples/bpf-rust-noop/Xargo.toml rename to web3.js/test/fixtures/noop-program/Xargo.toml diff --git a/web3.js/test/fixtures/noop-program/build.sh b/web3.js/test/fixtures/noop-program/build.sh new file mode 100755 index 0000000000..d2d4ae8386 --- /dev/null +++ b/web3.js/test/fixtures/noop-program/build.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -ex + +cd "$(dirname "$0")" + +cargo build-bpf +cp ./target/deploy/solana_bpf_rust_noop.so . diff --git a/web3.js/test/fixtures/noop-program/solana_bpf_rust_noop.so b/web3.js/test/fixtures/noop-program/solana_bpf_rust_noop.so new file mode 100755 index 0000000000000000000000000000000000000000..c9ccefa7a313b3371dc7341d05f457224185f07d GIT binary patch literal 68600 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 literal 0 HcmV?d00001 diff --git a/web3.js/examples/bpf-rust-noop/src/lib.rs b/web3.js/test/fixtures/noop-program/src/lib.rs similarity index 100% rename from web3.js/examples/bpf-rust-noop/src/lib.rs rename to web3.js/test/fixtures/noop-program/src/lib.rs diff --git a/web3.js/test/fixtures/noop-rust/build.sh b/web3.js/test/fixtures/noop-rust/build.sh deleted file mode 100755 index 622775f783..0000000000 --- a/web3.js/test/fixtures/noop-rust/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -ex - -cd "$(dirname "$0")" - -cargo build-bpf --manifest-path=../../../examples/bpf-rust-noop/Cargo.toml -cp ../../../examples/bpf-rust-noop/target/deploy/solana_bpf_rust_noop.so .