diff --git a/README.md b/README.md index 43fe84616..c184d1112 100644 --- a/README.md +++ b/README.md @@ -110,10 +110,7 @@ We maintain several testnets: They are deployed with the `ci/testnet-manager.sh` script through a list of [scheduled buildkite jobs](https://buildkite.com/solana-labs/testnet-management/settings/schedules). -Each testnet can be manually manipulated from buildkite as well. The `-perf` -testnets use a release tarball while the non`-perf` builds use the snap build -(we've observed that the snap build runs slower than a tarball but this has yet -to be root caused). +Each testnet can be manually manipulated from buildkite as well. ## How do I reset the testnet? Manually trigger the [testnet-management](https://buildkite.com/solana-labs/testnet-management) pipeline diff --git a/RELEASE.md b/RELEASE.md index 90a53f838..fa8ed9f15 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -43,8 +43,7 @@ the `master` branch as late as possible prior to the milestone release. ### v*X.Y.Z* release tag The release tags are created as desired by the owner of the given stabilization -branch, and cause that *X.Y.Z* release to be shipped to https://crates.io, -https://snapcraft.io/, and elsewhere. +branch, and cause that *X.Y.Z* release to be shipped to https://crates.io Immediately after a new v*X.Y.Z* branch tag has been created, the `Cargo.toml` patch version number (*Z*) of the stabilization branch is incremented by the diff --git a/book/src/getting-started.md b/book/src/getting-started.md index e5311ce76..a43dee49a 100644 --- a/book/src/getting-started.md +++ b/book/src/getting-started.md @@ -166,95 +166,3 @@ $ ./multinode-demo/client.sh --network $(dig +short testnet.solana.com):8001 --d You can observe the effects of your client's transactions on our [dashboard](https://metrics.solana.com:3000/d/testnet/testnet-hud?orgId=2&from=now-30m&to=now&refresh=5s&var-testnet=testnet) -## Linux Snap - -A Linux [Snap](https://snapcraft.io/) is available, which can be used to easily -get Solana running on supported Linux systems without building anything from -source for evaluation. Note that CUDA is not supported by the Snap so -performance will be limited. - -The `edge` Snap channel is updated daily with the latest -development from the `master` branch. To install: - -```bash -$ sudo snap install solana --edge --devmode -``` - -Once installed the usual Solana programs will be available as `solona.*` instead -of `solana-*`. For example, `solana.fullnode` instead of `solana-fullnode`. - -Update to the latest version at any time with: - -```bash -$ snap info solana -$ sudo snap refresh solana --devmode -``` - -### Daemon Support -The snap supports running fullnodes and a drone as system daemons. - -Run `sudo snap get solana` to view the current daemon configuration. To view -daemon logs: -1. Run `sudo snap logs -n=all solana` to view the daemon initialization log -2. Runtime logging can be found under `/var/snap/solana/current/bootstrap-leader/`, -`/var/snap/solana/current/fullnode/`, or `/var/snap/solana/current/drone/` depending -on which `mode=` was selected. Within each log directory the file `current` -contains the latest log, and the files `*.s` (if present) contain older rotated -logs. - -Disable the daemon at any time by running: - -```bash -$ sudo snap set solana mode= -``` - -Runtime configuration files for the daemon can be found in -`/var/snap/solana/current/config`. - -#### Leader Daemon - -```bash -$ sudo snap set solana mode=bootstrap-leader -``` - -`rsync` must be configured and running on the leader. - -1. Ensure rsync is installed with `sudo apt-get -y install rsync` -2. Edit `/etc/rsyncd.conf` to include the following -```ini -[config] -path = /var/snap/solana/current/config -hosts allow = * -read only = true -``` -3. Run `sudo systemctl enable rsync; sudo systemctl start rsync` -4. Test by running `rsync -Pzravv rsync:///config -solana-config` from another machine. **If the leader is running on a cloud -provider it may be necessary to configure the Firewall rules to permit ingress -to port tcp:873, tcp:9900 and the port range udp:8000-udp:10000** - - -To run both the Leader and Drone: - -```bash -$ sudo snap set solana mode=bootstrap-leader+drone - -``` - -#### Validator daemon - -```bash -$ sudo snap set solana mode=fullnode - -``` - -By default the node will attempt to connect to **testnet.solana.com**, override the -cluster entrypoint IP address by running: - -```bash -$ sudo snap set solana mode=fullnode entrypoint-ip=127.0.0.1 #<-- change IP address -``` - -It's assumed that the node at the entrypoint IP will be running `rsync` -configured as described in the previous **Leader daemon** section. - diff --git a/ci/buildkite-secondary.yml b/ci/buildkite-secondary.yml index cb38358b5..8fe33c4cc 100644 --- a/ci/buildkite-secondary.yml +++ b/ci/buildkite-secondary.yml @@ -1,7 +1,4 @@ steps: - #- command: "ci/publish-snap.sh" - # timeout_in_minutes: 40 - # name: "publish snap" - command: "sdk/docker-solana/build.sh" timeout_in_minutes: 20 name: "publish docker" diff --git a/ci/buildkite.yml b/ci/buildkite.yml index da334079f..f8ea821f1 100644 --- a/ci/buildkite.yml +++ b/ci/buildkite.yml @@ -26,10 +26,6 @@ steps: # timeout_in_minutes: 20 # agents: # - "queue=large" - - command: "ci/pr-snap.sh" - timeout_in_minutes: 20 - name: "snap" - branches: "pull/*" - wait - trigger: "solana-secondary" branches: "!pull/*" diff --git a/ci/docker-run.sh b/ci/docker-run.sh index ea1521500..179014006 100755 --- a/ci/docker-run.sh +++ b/ci/docker-run.sh @@ -71,7 +71,6 @@ ARGS+=( --env CI --env CODECOV_TOKEN --env CRATES_IO_TOKEN - --env SNAPCRAFT_CREDENTIALS_KEY ) if $INTERACTIVE; then diff --git a/ci/docker-snapcraft/Dockerfile b/ci/docker-snapcraft/Dockerfile deleted file mode 100644 index 9f74ae9ab..000000000 --- a/ci/docker-snapcraft/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM snapcraft/xenial-amd64 - -# Update snapcraft to latest version -RUN apt-get update -qq \ - && apt-get install -y snapcraft daemontools \ - && rm -rf /var/lib/apt/lists/* \ - && snapcraft --version diff --git a/ci/docker-snapcraft/build.sh b/ci/docker-snapcraft/build.sh deleted file mode 100755 index 611507b88..000000000 --- a/ci/docker-snapcraft/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -set -ex - -cd "$(dirname "$0")" - -docker build -t solanalabs/snapcraft . -docker push solanalabs/snapcraft diff --git a/ci/pr-snap.sh b/ci/pr-snap.sh deleted file mode 100755 index 59cecf5d6..000000000 --- a/ci/pr-snap.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash -# -# Only run publish-snap.sh for pull requests that modify files under /snap -# -set -e -cd "$(dirname "$0")"/.. - -ci/affects-files.sh ^snap/ || { - echo "Skipping snap build as no files under /snap were modified" - exit 0 -} - -exec ci/publish-snap.sh diff --git a/ci/publish-snap.sh b/ci/publish-snap.sh deleted file mode 100755 index 98eb9fbdf..000000000 --- a/ci/publish-snap.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env bash -set -e - -cd "$(dirname "$0")/.." - -# This job doesn't run within a container, try once to upgrade tooling on a -# version check failure -ci/version-check-with-upgrade.sh stable - -DRYRUN= -if [[ -z $BUILDKITE_BRANCH ]]; then - DRYRUN="echo" -fi - -if ./ci/is-pr.sh; then - DRYRUN="echo" - CHANNEL="none (pullrequest)" -fi - -eval "$(ci/channel-info.sh)" - -if [[ -z $CHANNEL ]]; then - echo Unable to determine channel to publish into, exiting. - exit 1 -fi - -if [[ -z $DRYRUN ]]; then - [[ -n $SNAPCRAFT_CREDENTIALS_KEY ]] || { - echo SNAPCRAFT_CREDENTIALS_KEY not defined - exit 1; - } - ( - openssl aes-256-cbc -d \ - -in ci/snapcraft.credentials.enc \ - -out ci/snapcraft.credentials \ - -k "$SNAPCRAFT_CREDENTIALS_KEY" - - snapcraft login --with ci/snapcraft.credentials - ) || { - rm -f ci/snapcraft.credentials; - exit 1 - } -fi - -set -x - -echo --- checking for multilog -if [[ ! -x /usr/bin/multilog ]]; then - if [[ -z $CI ]]; then - echo "multilog not found, install with: sudo apt-get install -y daemontools" - exit 1 - fi - sudo apt-get install -y daemontools -fi - -echo "--- build: $CHANNEL channel" -snapcraft - -source ci/upload-ci-artifact.sh -upload-ci-artifact solana_*.snap - -if [[ -z $DO_NOT_PUBLISH_SNAP ]]; then - echo "--- publish: $CHANNEL channel" - $DRYRUN snapcraft push solana_*.snap --release "$CHANNEL" -fi diff --git a/ci/snapcraft.credentials.enc b/ci/snapcraft.credentials.enc deleted file mode 100644 index e8f351bd9..000000000 Binary files a/ci/snapcraft.credentials.enc and /dev/null differ diff --git a/ci/testnet-deploy.sh b/ci/testnet-deploy.sh index cdb308a4c..e3d49bc95 100755 --- a/ci/testnet-deploy.sh +++ b/ci/testnet-deploy.sh @@ -11,13 +11,11 @@ clientNodeCount=0 additionalFullNodeCount=10 publicNetwork=false skipSetup=false -snapChannel=edge tarChannelOrTag=edge delete=false enableGpu=false bootDiskType="" leaderRotation=true -useTarReleaseChannel=false blockstreamer=false usage() { @@ -36,8 +34,6 @@ Deploys a CD testnet zone - cloud provider zone to deploy the network into options: - -s edge|beta|stable - Deploy the specified Snap release channel - (default: $snapChannel) -t edge|beta|stable|vX.Y.Z - Deploy the latest tarball release for the specified release channel (edge|beta|stable) or release tag (vX.Y.Z) @@ -69,7 +65,7 @@ zone=$3 [[ -n $zone ]] || usage "Zone not specified" shift 3 -while getopts "h?p:Pn:c:s:t:gG:a:Dbd:ru" opt; do +while getopts "h?p:Pn:c:t:gG:a:Dbd:ru" opt; do case $opt in h | \?) usage @@ -83,21 +79,10 @@ while getopts "h?p:Pn:c:s:t:gG:a:Dbd:ru" opt; do c) clientNodeCount=$OPTARG ;; - s) - case $OPTARG in - edge|beta|stable) - snapChannel=$OPTARG - ;; - *) - usage "Invalid snap channel: $OPTARG" - ;; - esac - ;; t) case $OPTARG in edge|beta|stable|v*) tarChannelOrTag=$OPTARG - useTarReleaseChannel=true ;; *) usage "Invalid release channel: $OPTARG" @@ -242,14 +227,8 @@ ok=true op=start fi - if $useTarReleaseChannel; then - deploySource="-t $tarChannelOrTag" - else - deploySource="-s $snapChannel" - fi - # shellcheck disable=SC2086 # Don't want to double quote maybeRejectExtraNodes - time net/net.sh $op $deploySource \ + time net/net.sh $op -t "$tarChannelOrTag" \ $maybeSkipSetup $maybeRejectExtraNodes $maybeNoValidatorSanity $maybeNoLedgerVerify ) || ok=false diff --git a/ci/testnet-manager.sh b/ci/testnet-manager.sh index b8f0e3f41..80111e81f 100755 --- a/ci/testnet-manager.sh +++ b/ci/testnet-manager.sh @@ -239,7 +239,7 @@ start() { ${maybeReuseLedger:+-r} \ ${maybeDelete:+-D} #ci/testnet-deploy.sh testnet-solana-com gce us-east1-c \ - # -s "$CHANNEL_OR_TAG" -n 3 -c 0 -P -a testnet-solana-com \ + # -t "$CHANNEL_OR_TAG" -n 3 -c 0 -P -a testnet-solana-com \ # ${maybeReuseLedger:+-r} \ # ${maybeDelete:+-D} ) diff --git a/multinode-demo/bootstrap-leader.sh b/multinode-demo/bootstrap-leader.sh index 71b26f819..37500fc63 100755 --- a/multinode-demo/bootstrap-leader.sh +++ b/multinode-demo/bootstrap-leader.sh @@ -10,12 +10,6 @@ source "$here"/common.sh # shellcheck source=scripts/oom-score-adj.sh source "$here"/../scripts/oom-score-adj.sh -if [[ -d "$SNAP" ]]; then - # Exit if mode is not yet configured - # (typically the case after the Snap is first installed) - [[ -n "$(snapctl get mode)" ]] || exit 0 -fi - [[ -f "$SOLANA_CONFIG_DIR"/bootstrap-leader.json ]] || { echo "$SOLANA_CONFIG_DIR/bootstrap-leader.json not found, create it by running:" echo @@ -49,13 +43,6 @@ while [[ -n $1 ]]; do fi done - -if [[ -d $SNAP ]]; then - if [[ $(snapctl get leader-rotation) = false ]]; then - maybe_no_leader_rotation="--no-leader-rotation" - fi -fi - tune_system trap 'kill "$pid" && wait "$pid"' INT TERM diff --git a/multinode-demo/common.sh b/multinode-demo/common.sh index db0326dcf..370085629 100644 --- a/multinode-demo/common.sh +++ b/multinode-demo/common.sh @@ -15,36 +15,13 @@ drone_logger="tee drone.log" if [[ $(uname) != Linux ]]; then # Protect against unsupported configurations to prevent non-obvious errors # later. Arguably these should be fatal errors but for now prefer tolerance. - if [[ -n $USE_SNAP ]]; then - echo "Warning: Snap is not supported on $(uname)" - USE_SNAP= - fi if [[ -n $SOLANA_CUDA ]]; then echo "Warning: CUDA is not supported on $(uname)" SOLANA_CUDA= fi fi -if [[ -d $SNAP ]]; then # Running inside a Linux Snap? - solana_program() { - declare program="$1" - printf "%s/command-%s.wrapper" "$SNAP" "$program" - } - rsync="$SNAP"/bin/rsync - multilog="$SNAP/bin/multilog t s16777215 n200" - bootstrap_leader_logger="$multilog $SNAP_DATA/bootstrap-leader" - fullnode_logger="$multilog t $SNAP_DATA/fullnode" - drone_logger="$multilog $SNAP_DATA/drone" - # Create log directories manually to prevent multilog from creating them as - # 0700 - mkdir -p "$SNAP_DATA"/{drone,bootstrap-leader,fullnode} - -elif [[ -n $USE_SNAP ]]; then # Use the Linux Snap binaries - solana_program() { - declare program="$1" - printf "solana.%s" "$program" - } -elif [[ -n $USE_INSTALL ]]; then # Assume |./scripts/cargo-install-all.sh| was run +if [[ -n $USE_INSTALL ]]; then # Assume |./scripts/cargo-install-all.sh| was run solana_program() { declare program="$1" printf "solana-%s" "$program" @@ -136,7 +113,7 @@ tune_system() { # The directory on the bootstrap leader that is rsynced by other full nodes as # they boot (TODO: Eventually this should go away) -SOLANA_RSYNC_CONFIG_DIR=${SNAP_DATA:-$PWD}/config +SOLANA_RSYNC_CONFIG_DIR=$PWD/config # Configuration that remains local -SOLANA_CONFIG_DIR=${SNAP_DATA:-$PWD}/config-local +SOLANA_CONFIG_DIR=$PWD/config-local diff --git a/multinode-demo/fullnode.sh b/multinode-demo/fullnode.sh index cd645cb90..e85d19696 100755 --- a/multinode-demo/fullnode.sh +++ b/multinode-demo/fullnode.sh @@ -9,12 +9,6 @@ source "$here"/common.sh # shellcheck source=scripts/oom-score-adj.sh source "$here"/../scripts/oom-score-adj.sh -if [[ -d "$SNAP" ]]; then - # Exit if mode is not yet configured - # (typically the case after the Snap is first installed) - [[ -n "$(snapctl get mode)" ]] || exit 0 -fi - usage() { if [[ -n $1 ]]; then echo "$*" @@ -79,12 +73,6 @@ while [[ ${1:0:1} = - ]]; do fi done -if [[ -d $SNAP ]]; then - if [[ $(snapctl get leader-rotation) = false ]]; then - maybe_no_leader_rotation="--no-leader-rotation" - fi -fi - if [[ -n $3 ]]; then usage fi @@ -92,47 +80,30 @@ fi find_leader() { declare leader leader_address declare shift=0 - if [[ -d $SNAP ]]; then - if [[ -n $1 ]]; then - usage "Error: unexpected parameter: $1" - fi - # Select leader from the Snap configuration - leader_ip=$(snapctl get entrypoint-ip) - if [[ -z $leader_ip ]]; then - leader=testnet.solana.com + if [[ -z $1 ]]; then + leader=${here}/.. # Default to local tree for rsync + leader_address=127.0.0.1:8001 # Default to local leader + elif [[ -z $2 ]]; then + leader=$1 + + declare leader_ip + if [[ $leader =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then + leader_ip=$leader + else leader_ip=$(dig +short "${leader%:*}" | head -n1) + if [[ -z $leader_ip ]]; then usage "Error: unable to resolve IP address for $leader" fi fi - leader=$leader_ip + leader_address=$leader_ip:8001 + shift=1 else - if [[ -z $1 ]]; then - leader=${here}/.. # Default to local tree for rsync - leader_address=127.0.0.1:8001 # Default to local leader - elif [[ -z $2 ]]; then - leader=$1 - - declare leader_ip - if [[ $leader =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then - leader_ip=$leader - else - leader_ip=$(dig +short "${leader%:*}" | head -n1) - - if [[ -z $leader_ip ]]; then - usage "Error: unable to resolve IP address for $leader" - fi - fi - - leader_address=$leader_ip:8001 - shift=1 - else - leader=$1 - leader_address=$2 - shift=2 - fi + leader=$1 + leader_address=$2 + shift=2 fi echo "$leader" "$leader_address" "$shift" diff --git a/net/README.md b/net/README.md index b9d38906a..034da40be 100644 --- a/net/README.md +++ b/net/README.md @@ -52,12 +52,12 @@ or $ ./ec2.sh create -P ... ``` -### Deploying a Snap-based network -To deploy the latest pre-built `edge` channel Snap (ie, latest from the `master` +### Deploying a tarball-based network +To deploy the latest pre-built `edge` channel tarball (ie, latest from the `master` branch), once the testnet has been created run: ```bash -$ ./net.sh start -s edge +$ ./net.sh start -t edge ``` ### Enabling CUDA @@ -70,7 +70,7 @@ or $ ./ec2.sh create -g ... ``` -If deploying a Snap-based network nothing further is required, as GPU presence +If deploying a tarball-based network nothing further is required, as GPU presence is detected at runtime and the CUDA build is auto selected. If deploying a locally-built network, first run `./fetch-perf-libs.sh` then diff --git a/net/net.sh b/net/net.sh index 946a3087a..f372f739a 100755 --- a/net/net.sh +++ b/net/net.sh @@ -26,8 +26,6 @@ Operate a configured testnet logs - Fetch remote logs from each network node start/update-specific options: - -S [snapFilename] - Deploy the specified Snap file - -s edge|beta|stable - Deploy the latest Snap on the specified Snap release channel -T [tarFilename] - Deploy the specified release tarball -t edge|beta|stable|vX.Y.Z - Deploy the latest tarball release for the specified release channel (edge|beta|stable) or release tag @@ -55,9 +53,7 @@ EOF exit $exitcode } -snapChannel= releaseChannel= -snapFilename= deployMethod=local sanityExtraArgs= cargoFeatures= @@ -69,30 +65,14 @@ command=$1 [[ -n $command ]] || usage shift -while getopts "h?S:s:T:t:o:f:r:D:" opt; do +while getopts "h?T:t:o:f:r:D:" opt; do case $opt in h | \?) usage ;; - S) - snapFilename=$OPTARG - [[ -f $snapFilename ]] || usage "Snap not readable: $snapFilename" - deployMethod=snap - ;; - s) - case $OPTARG in - edge|beta|stable) - snapChannel=$OPTARG - deployMethod=snap - ;; - *) - usage "Invalid snap channel: $OPTARG" - ;; - esac - ;; T) tarballFilename=$OPTARG - [[ -f $tarballFilename ]] || usage "Snap not readable: $tarballFilename" + [[ -r $tarballFilename ]] || usage "File not readable: $tarballFilename" deployMethod=tar ;; t) @@ -199,9 +179,6 @@ startBootstrapLeader() { set -x startCommon "$ipAddress" || exit 1 case $deployMethod in - snap) - rsync -vPrc -e "ssh ${sshOptions[*]}" "$snapFilename" "$ipAddress:~/solana/solana.snap" - ;; tar) rsync -vPrc -e "ssh ${sshOptions[*]}" "$SOLANA_ROOT"/solana-release/bin/* "$ipAddress:~/.cargo/bin/" ;; @@ -295,36 +272,6 @@ sanity() { start() { case $deployMethod in - snap) - if [[ -n $snapChannel ]]; then - rm -f "$SOLANA_ROOT"/solana_*.snap - if [[ $(uname) != Linux ]]; then - ( - set -x - SOLANA_DOCKER_RUN_NOSETUID=1 "$SOLANA_ROOT"/ci/docker-run.sh ubuntu:18.04 bash -c " - set -ex; - apt-get -qq update; - apt-get -qq -y install snapd; - until snap download --channel=$snapChannel solana; do - sleep 1; - done - " - ) - else - ( - cd "$SOLANA_ROOT" - until snap download --channel="$snapChannel" solana; do - sleep 1 - done - ) - fi - snapFilename="$(echo "$SOLANA_ROOT"/solana_*.snap)" - [[ -r $snapFilename ]] || { - echo "Error: Snap not readable: $snapFilename" - exit 1 - } - fi - ;; tar) if [[ -n $releaseChannel ]]; then rm -f "$SOLANA_ROOT"/solana-release.tar.bz2 @@ -421,13 +368,6 @@ start() { declare networkVersion=unknown case $deployMethod in - snap) - IFS=\ read -r _ networkVersion _ < <( - ssh "${sshOptions[@]}" "${fullnodeIpList[0]}" \ - "snap info solana | grep \"^installed:\"" - ) - networkVersion=${networkVersion/0+git./} - ;; tar) networkVersion="$( tail -n1 "$SOLANA_ROOT"/solana-release/version.txt || echo "tar-unknown" @@ -461,9 +401,6 @@ stopNode() { ssh "${sshOptions[@]}" "$ipAddress" " PS4=\"$PS4\" set -x - if snap list solana; then - sudo snap set solana mode= - fi ! tmux list-sessions || tmux kill-session for pid in solana/{net-stats,oom-monitor}.pid; do pgid=\$(ps opgid= \$(cat \$pid) | tr -d '[:space:]') diff --git a/net/remote/remote-client.sh b/net/remote/remote-client.sh index 846045605..23a063107 100755 --- a/net/remote/remote-client.sh +++ b/net/remote/remote-client.sh @@ -27,12 +27,6 @@ if [[ $threadCount -gt 4 ]]; then fi case $deployMethod in -snap) - net/scripts/rsync-retry.sh -vPrc "$entrypointIp:~/solana/solana.snap" . - sudo snap install solana.snap --devmode --dangerous - - solana_bench_tps=/snap/bin/solana.bench-tps - ;; local|tar) PATH="$HOME"/.cargo/bin:"$PATH" export USE_INSTALL=1 diff --git a/net/remote/remote-node.sh b/net/remote/remote-node.sh index d7641f82a..f84ee50b8 100755 --- a/net/remote/remote-node.sh +++ b/net/remote/remote-node.sh @@ -45,88 +45,6 @@ else fi case $deployMethod in -snap) - SECONDS=0 - - if [[ $skipSetup = true ]]; then - for configDir in /var/snap/solana/current/config{,-local}; do - if [[ ! -d $configDir ]]; then - echo Error: not a directory: $configDir - exit 1 - fi - done - ( - set -x - sudo rm -rf /saved-node-config - sudo mkdir /saved-node-config - sudo mv /var/snap/solana/current/config{,-local} /saved-node-config - ) - fi - - [[ $nodeType = bootstrap-leader ]] || - net/scripts/rsync-retry.sh -vPrc "$entrypointIp:~/solana/solana.snap" . - if snap list solana; then - sudo snap remove solana - fi - sudo snap install solana.snap --devmode --dangerous - - if [[ $skipSetup = true ]]; then - ( - set -x - sudo rm -rf /var/snap/solana/current/config{,-local} - sudo mv /saved-node-config/* /var/snap/solana/current/ - sudo rm -rf /saved-node-config - ) - fi - - # shellcheck disable=SC2089 - commonNodeConfig="\ - entrypoint-ip=\"$entrypointIp\" \ - metrics-config=\"$SOLANA_METRICS_CONFIG\" \ - rust-log=\"$RUST_LOG\" \ - setup-args=\"$setupArgs\" \ - skip-setup=$skipSetup \ - leader-rotation=\"$leaderRotation\" \ - " - - if [[ -e /dev/nvidia0 ]]; then - echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - echo - echo "WARNING: GPU detected by snap builds to not support CUDA." - echo " Consider using instances with a GPU to reduce cost." - echo - echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - fi - - case $nodeType in - bootstrap-leader) - nodeConfig="mode=bootstrap-leader+drone $commonNodeConfig" - ln -sf -T /var/snap/solana/current/bootstrap-leader/current fullnode.log - ln -sf -T /var/snap/solana/current/drone/current drone.log - ;; - fullnode) - nodeConfig="mode=fullnode $commonNodeConfig" - ln -sf -T /var/snap/solana/current/fullnode/current fullnode.log - ;; - *) - echo "Error: unknown node type: $nodeType" - exit 1 - ;; - esac - - logmarker="solana deploy $(date)/$RANDOM" - logger "$logmarker" - - # shellcheck disable=SC2086,SC2090 # Don't want to double quote "$nodeConfig" - sudo snap set solana $nodeConfig - snap info solana - sudo snap get solana - echo Slight delay to get more syslog output - sleep 2 - sudo grep -Pzo "$logmarker(.|\\n)*" /var/log/syslog - - echo "Succeeded in ${SECONDS} seconds" - ;; local|tar) PATH="$HOME"/.cargo/bin:"$PATH" export USE_INSTALL=1 diff --git a/net/remote/remote-sanity.sh b/net/remote/remote-sanity.sh index de8ff38ec..0050e0323 100755 --- a/net/remote/remote-sanity.sh +++ b/net/remote/remote-sanity.sh @@ -57,19 +57,6 @@ source net/common.sh loadConfigFile case $deployMethod in -snap) - PATH="/snap/bin:$PATH" - export USE_SNAP=1 - entrypointRsyncUrl="$entrypointIp" - - solana_bench_tps=solana.bench-tps - solana_ledger_tool=solana.ledger-tool - solana_keygen=solana.keygen - - ledger=/var/snap/solana/current/config-local/bootstrap-leader-ledger - client_id=~/snap/solana/current/config/client-id.json - - ;; local|tar) PATH="$HOME"/.cargo/bin:"$PATH" export USE_INSTALL=1 diff --git a/scripts/snap-config-to-env.sh b/scripts/snap-config-to-env.sh deleted file mode 100755 index f2ad205e6..000000000 --- a/scripts/snap-config-to-env.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# -# Snap daemons have no access to the environment so |snap set solana ...| is -# used to set runtime configuration. -# -# This script exports the snap runtime configuration options back as -# environment variables before invoking the specified program -# - -if [[ -d $SNAP ]]; then # Running inside a Linux Snap? - RUST_LOG="$(snapctl get rust-log)" - SOLANA_METRICS_CONFIG="$(snapctl get metrics-config)" - - export RUST_LOG - export SOLANA_METRICS_CONFIG -fi - -exec "$@" diff --git a/snap/README.md b/snap/README.md deleted file mode 100644 index ed2dcdf43..000000000 --- a/snap/README.md +++ /dev/null @@ -1,17 +0,0 @@ -## Development - -If you're running Ubuntu 16.04 and already have `snapcraft` installed, simply -run: -``` -$ snapcraft -``` - -For other systems we provide a docker image that can be used for snap -development: -``` -$ ./ci/docker-run.sh solanalabs/snapcraft snapcraft -d -``` - -## Reference -* https://docs.snapcraft.io/ - diff --git a/snap/hooks/configure b/snap/hooks/configure deleted file mode 100755 index d2f425d6c..000000000 --- a/snap/hooks/configure +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -e - -echo Stopping daemons -snapctl stop --disable solana.daemon-drone -snapctl stop --disable solana.daemon-bootstrap-leader -snapctl stop --disable solana.daemon-fullnode -snapctl stop --disable solana.daemon-oom-monitor -snapctl stop --disable solana.daemon-net-stats - -mode="$(snapctl get mode)" -if [[ -z "$mode" ]]; then - exit 0 -fi - -skipSetup="$(snapctl get skip-setup)" -if [[ "$skipSetup" != true ]]; then - numTokens="$(snapctl get num-tokens)" - numTokens="${numTokens:+-n $numTokens}" - - setupArgs="$(snapctl get setup-args)" - "$SNAP"/multinode-demo/setup.sh $numTokens -p $setupArgs -else - echo Setup skipped -fi - -case $mode in -bootstrap-leader+drone) - snapctl start --enable solana.daemon-drone - snapctl start --enable solana.daemon-bootstrap-leader - ;; -bootstrap-leader) - snapctl start --enable solana.daemon-bootstrap-leader - ;; -fullnode) - snapctl start --enable solana.daemon-fullnode - ;; -*) - echo "Error: Unknown mode: $mode" - exit 1 - ;; -esac - -snapctl start --enable solana.daemon-oom-monitor -snapctl start --enable solana.daemon-net-stats diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index 9c16e21e0..000000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,111 +0,0 @@ -name: solana -version: git -summary: Blockchain, Rebuilt for Scale -description: | - 710,000 tx/s with off-the-shelf hardware and no sharding. - Scales with Moore's Law. -grade: devel - -# TODO: solana-perf-fullnode does not yet run with 'strict' confinement due to the -# CUDA dependency, so use 'devmode' confinement for now -confinement: devmode - -hooks: - configure: - plugs: [network] - -apps: - drone: - command: solana-drone - plugs: - - network - - network-bind - fullnode: - command: solana-fullnode - plugs: - - network - - network-bind - - home - fullnode-config: - command: solana-fullnode-config - plugs: - - network - - network-bind - - home - genesis: - command: solana-genesis - keygen: - command: solana-keygen - plugs: - - home - ledger-tool: - command: solana-ledger-tool - plugs: - - home - bench-tps: - command: solana-bench-tps - plugs: - - network - - network-bind - - home - wallet: - command: solana-wallet - plugs: - - network - - home - daemon-fullnode: - daemon: simple - command: scripts/snap-config-to-env.sh $SNAP/multinode-demo/fullnode.sh - plugs: - - network - - network-bind - daemon-bootstrap-leader: - daemon: simple - command: scripts/snap-config-to-env.sh $SNAP/multinode-demo/bootstrap-leader.sh - plugs: - - network - - network-bind - daemon-drone: - daemon: simple - command: scripts/snap-config-to-env.sh $SNAP/multinode-demo/drone.sh - plugs: - - network - - network-bind - daemon-oom-monitor: - daemon: simple - command: scripts/snap-config-to-env.sh $SNAP/scripts/oom-monitor.sh - plugs: - - network - daemon-net-stats: - daemon: simple - command: scripts/snap-config-to-env.sh $SNAP/scripts/net-stats.sh - plugs: - - network - -parts: - solana: - plugin: nil - prime: - - bin - - multinode-demo - - scripts - override-build: | - # Build/install all programs - scripts/cargo-install-all.sh $SNAPCRAFT_PART_INSTALL - - # Install multinode-demo/ - mkdir -p $SNAPCRAFT_PART_INSTALL/multinode-demo/ - cp -av multinode-demo/* $SNAPCRAFT_PART_INSTALL/multinode-demo/ - - # Install scripts/ - mkdir -p $SNAPCRAFT_PART_INSTALL/scripts/ - cp -av scripts/* $SNAPCRAFT_PART_INSTALL/scripts/ - - # TODO: build curl,dig,rsync/multilog from source instead of sneaking it - # in from the host system... - set -x - mkdir -p $SNAPCRAFT_PART_INSTALL/bin - cp -av /usr/bin/curl $SNAPCRAFT_PART_INSTALL/bin/ - cp -av /usr/bin/dig $SNAPCRAFT_PART_INSTALL/bin/ - cp -av /usr/bin/multilog $SNAPCRAFT_PART_INSTALL/bin/ - cp -av /usr/bin/rsync $SNAPCRAFT_PART_INSTALL/bin/