diff --git a/.circleci/src/jobs/release-audius-sdk.yml b/.circleci/src/jobs/release-audius-sdk.yml index ed725793c7a..db403101d55 100644 --- a/.circleci/src/jobs/release-audius-sdk.yml +++ b/.circleci/src/jobs/release-audius-sdk.yml @@ -28,5 +28,4 @@ steps: - run: name: Release command: | - export PROTOCOL_DIR=$PWD packages/libs/scripts/release.sh << parameters.sdk-release-commit >> << parameters.sdk-release-version >> << parameters.sdk-release-preid >> diff --git a/dev-tools/README.md b/dev-tools/README.md index 5342ab411b6..060d4f71e05 100644 --- a/dev-tools/README.md +++ b/dev-tools/README.md @@ -38,14 +38,12 @@ audius-compose connect Use these CLI tools for Audius dev. Currently there are 3 tools available: -- `audius-cloud`: create a pre-configured GCP VM for dev - `audius-compose`: start, stop, and manage Audius service containers - `audius-cmd`: perform user actions, e.g. `create-user`, `upload-track`, `repost-playlist` View all available commands for any of these tools with `--help`, e.g. ```bash -> audius-cloud --help > audius-compose --help > audius-cmd --help ``` diff --git a/dev-tools/audius-cloud b/dev-tools/audius-cloud deleted file mode 100755 index 07a092674a0..00000000000 --- a/dev-tools/audius-cloud +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import time -import uuid - -import click - - -def wait_for_instance(name): - while True: - try: - subprocess.check_output( - ["gcloud", "compute", "ssh", f"audius@{name}", "--", "exit 0"] - ) - break - except subprocess.CalledProcessError: - time.sleep(1) - - -@click.group() -def cli(): - pass - - -@cli.command() -@click.pass_context -def create_image(ctx): - name = f"audius-cloud-{uuid.uuid4()}" - - ctx.invoke( - create_raw, - name=name, - gcloud_args=[ - "--boot-disk-size=64G", - "--no-boot-disk-auto-delete", - "--boot-disk-type=pd-ssd", - ], - ) - - ctx.invoke(delete, gcloud_args=[name]) - - subprocess.run( - [ - "gcloud", - "compute", - "images", - "create", - "audius-protocol-dev", - f"--source-disk={name}", - ], - check=True, - ) - - subprocess.run( - [ - "gcloud", - "compute", - "disks", - "delete", - "--quiet", # disable prompt - name, - ], - check=True, - ) - - -@cli.command(context_settings=dict(ignore_unknown_options=True)) -@click.argument("name") -@click.argument("gcloud-args", nargs=-1, type=click.UNPROCESSED) -def create(name, gcloud_args): - subprocess.run( - [ - "gcloud", - "compute", - "instances", - "create", - "--machine-type=n2-custom-6-24576", - "--boot-disk-size=256G", - "--boot-disk-type=pd-ssd", - name, - *gcloud_args, - ], - check=True, - ) - - -@cli.command(context_settings=dict(ignore_unknown_options=True)) -@click.argument("name") -@click.argument("gcloud-args", nargs=-1, type=click.UNPROCESSED) -def create_raw(name, gcloud_args): - click.secho(f"Creating instance {name}", fg="green") - - subprocess.run( - [ - "gcloud", - "compute", - "instances", - "create", - "--machine-type=n2-custom-6-24576", - "--boot-disk-size=256G", - "--boot-disk-type=pd-ssd", - name, - *gcloud_args, - ], - check=True, - ) - - click.secho(f"Waiting for instance {name} to be ready", fg="green") - - wait_for_instance(name) - - click.secho("Setting up audius-protocol on instance", fg="green") - - subprocess.run( - [ - "gcloud", - "compute", - "ssh", - f"audius@{name}", - "--", - "curl 'https://raw.githubusercontent.com/AudiusProject/audius-protocol/main/dev-tools/setup.sh' | bash", - ], - check=True, - ) - - subprocess.run( - [ - "gcloud", - "compute", - "ssh", - f"audius@{name}", - "--", - "cd ~/audius-protocol && PROTOCOL_DIR=$PWD ~/.local/bin/audius-compose build && docker compose pull", - ], - check=True, - ) - - -@cli.command(context_settings=dict(ignore_unknown_options=True)) -@click.argument("gcloud-args", nargs=-1, type=click.UNPROCESSED) -def delete(gcloud_args): - subprocess.run( - [ - "gcloud", - "compute", - "instances", - "delete", - "--quiet", # disable prompt - *gcloud_args, - ], - check=True, - ) - - -@cli.command(context_settings=dict(ignore_unknown_options=True)) -@click.argument("gcloud-args", nargs=-1, type=click.UNPROCESSED) -def describe(gcloud_args): - subprocess.run( - [ - "gcloud", - "compute", - "instances", - "describe", - *gcloud_args, - ], - check=True, - ) - - -if __name__ == "__main__": - cli() diff --git a/dev-tools/audius-cmd b/dev-tools/audius-cmd index 993dd69b24a..0c461c6f847 100755 --- a/dev-tools/audius-cmd +++ b/dev-tools/audius-cmd @@ -1,10 +1,8 @@ #!/usr/bin/env bash set -e -if [[ "$PROTOCOL_DIR" != "" ]]; then - cd $PROTOCOL_DIR/dev-tools/compose -fi -export COMPOSE_PROJECT_NAME=$(basename $PROTOCOL_DIR) +cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/compose # audius-protocol/dev-tools/compose +export COMPOSE_PROJECT_NAME='audius-protocol' if [[ "$1" == "test" ]]; then docker compose exec audius-cmd npm test diff --git a/dev-tools/audius-compose b/dev-tools/audius-compose index d0a7deef8a8..9f66d39b4b0 100755 --- a/dev-tools/audius-compose +++ b/dev-tools/audius-compose @@ -170,7 +170,6 @@ def generate_env( @click.group() @click.option( "--protocol-dir", - envvar="PROTOCOL_DIR", type=click.Path( exists=True, file_okay=False, resolve_path=True, path_type=pathlib.Path ), @@ -178,7 +177,7 @@ def generate_env( @click.pass_context def cli(ctx, protocol_dir): if protocol_dir is None: - protocol_dir = pathlib.Path.cwd().resolve() + protocol_dir = pathlib.Path(os.path.dirname(os.path.realpath(__file__))).resolve() while ( protocol_dir.name != "" and not (protocol_dir / "dev-tools/compose/docker-compose.yml").exists() @@ -186,7 +185,6 @@ def cli(ctx, protocol_dir): protocol_dir = protocol_dir.parent if protocol_dir.name == "": raise click.ClickException("Unable to find protocol dir") - click.confirm(f'Using protocol dir "{protocol_dir}"', default=True, abort=True) ctx.obj = protocol_dir diff --git a/dev-tools/setup-dev.sh b/dev-tools/setup-dev.sh deleted file mode 100644 index 4567390bacc..00000000000 --- a/dev-tools/setup-dev.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -# This script is meant for debian/ubuntu systems; support for other os might be added in the future - -# Install nvm and required node versions -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash -source ~/.nvm/nvm.sh -[ -f "~/.bashrc" ] && source ~/.bashrc -for dir in contracts eth-contracts packages/identity-service packages/libs; do - cd "$PROTOCOL_DIR/$dir" - nvm install -done diff --git a/dev-tools/setup.sh b/dev-tools/setup.sh index 08d44a46e22..8b3573ce61e 100755 --- a/dev-tools/setup.sh +++ b/dev-tools/setup.sh @@ -47,6 +47,10 @@ debian | ubuntu) # Increase file watchers echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p + + # add script directories to path, avoiding duplication + grep -q "export PATH=$HOME/.local/bin:" ~/.profile || echo "export PATH=$HOME/.local/bin:\$PATH" >>~/.profile + ;; *) if ! command -v docker &>/dev/null; then @@ -72,22 +76,15 @@ debian | ubuntu) esac if [[ "${BASH_SOURCE[0]}" == "" ]]; then - export PROTOCOL_DIR="${PROTOCOL_DIR:-$HOME/audius-protocol}" - git clone https://github.com/AudiusProject/audius-protocol.git "$PROTOCOL_DIR" + protocol_dir="$HOME/audius-protocol" + git clone https://github.com/AudiusProject/audius-protocol.git "$protocol_dir" else - export PROTOCOL_DIR="$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" + protocol_dir="$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" fi -python3 -m pip install -r "$PROTOCOL_DIR/dev-tools/requirements.txt" +python3 -m pip install -r "$protocol_dir/dev-tools/requirements.txt" mkdir -p "$HOME/.local/bin" -ln -sf "$PROTOCOL_DIR/dev-tools/audius-compose" "$HOME/.local/bin/audius-compose" -ln -sf "$PROTOCOL_DIR/dev-tools/audius-cloud" "$HOME/.local/bin/audius-cloud" -ln -sf "$PROTOCOL_DIR/dev-tools/audius-cmd" "$HOME/.local/bin/audius-cmd" - -# Add env vars to .profile, avoiding duplication -grep -q PROTOCOL_DIR ~/.profile || echo "export PROTOCOL_DIR=$PROTOCOL_DIR" >>~/.profile -grep -q "export PATH=$HOME/.local/bin:" ~/.profile || echo "export PATH=$HOME/.local/bin:\$PATH" >>~/.profile - -[[ "$AUDIUS_DEV" != "false" ]] && . "$PROTOCOL_DIR/dev-tools/setup-dev.sh" || true +ln -sf "$protocol_dir/dev-tools/audius-compose" "$HOME/.local/bin/audius-compose" +ln -sf "$protocol_dir/dev-tools/audius-cmd" "$HOME/.local/bin/audius-cmd" diff --git a/packages/libs/scripts/release.sh b/packages/libs/scripts/release.sh index 24a7a8f0cb0..cfbb3f27ef5 100755 --- a/packages/libs/scripts/release.sh +++ b/packages/libs/scripts/release.sh @@ -146,7 +146,7 @@ function cleanup () { # configuration STUB=@audius/sdk -cd ${PROTOCOL_DIR}/packages/libs +cd "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" # audius-protocol/packages/libs # pull in main git-reset diff --git a/solana-programs/anchor/audius-data/scripts/build-dev.sh b/solana-programs/anchor/audius-data/scripts/build-dev.sh index 3df43f3ef52..efdbcc6c23b 100755 --- a/solana-programs/anchor/audius-data/scripts/build-dev.sh +++ b/solana-programs/anchor/audius-data/scripts/build-dev.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euxo pipefail -cd $PROTOCOL_DIR/solana-programs/anchor/audius-data +cd "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" # audius-protocol/solana-programs/anchor/audius-data # Replace program ID with solana pubkey generated from anchor build cur_address=$(grep -Po '(?<=declare_id!\(").*(?=")' programs/audius-data/src/lib.rs) echo "Building and deploying audius_data program with anchor CLI..." @@ -11,4 +11,4 @@ sed -i "s/$cur_address/$AUDIUS_DATA_PROGRAM_ID/g" Anchor.toml sed -i "s/$cur_address/$AUDIUS_DATA_PROGRAM_ID/g" programs/audius-data/src/lib.rs anchor build -echo "audius-data program built. Start solana test validator and deploy by running, in separate windows, npm run localnet-up and npm run deploy-dev." \ No newline at end of file +echo "audius-data program built. Start solana test validator and deploy by running, in separate windows, npm run localnet-up and npm run deploy-dev." diff --git a/solana-programs/anchor/audius-data/scripts/install-dev-dependencies.sh b/solana-programs/anchor/audius-data/scripts/install-dev-dependencies.sh index 585c7adb025..d33dc06fd6d 100755 --- a/solana-programs/anchor/audius-data/scripts/install-dev-dependencies.sh +++ b/solana-programs/anchor/audius-data/scripts/install-dev-dependencies.sh @@ -5,7 +5,7 @@ RUST_VERSION=1.59.0 # rustc version 1.59.0 (9d1b2106e 2022-02-23) SOLANA_CLI_VERSION=v1.9.13 ANCHOR_CLI_VERSION=v0.24.1 -cd $PROTOCOL_DIR/solana-programs/anchor/audius-data +cd "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" # audius-protocol/solana-programs/anchor/audius-data echo "Installing dev deps for anchor audius-data development..." # install rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y @@ -38,4 +38,4 @@ npm install # init solana keypair solana-keygen new --no-bip39-passphrase --force -o "$HOME/.config/solana/id.json" -echo "Installed deps for anchor development." \ No newline at end of file +echo "Installed deps for anchor development." diff --git a/solana-programs/anchor/audius-data/scripts/parse-tx.sh b/solana-programs/anchor/audius-data/scripts/parse-tx.sh index 8de755d5351..650ad963572 100755 --- a/solana-programs/anchor/audius-data/scripts/parse-tx.sh +++ b/solana-programs/anchor/audius-data/scripts/parse-tx.sh @@ -1,11 +1,14 @@ #!/usr/bin/env bash set -euo pipefail -TX_PARSER_DIR="$PROTOCOL_DIR/packages/discovery-provider/solana-tx-parser" + +protocol_dir="$(readlink -f "${BASH_SOURCE[0]}" | sed -nr 's/(.*)\/solana-programs\/anchor.*/\1/p')" +TX_PARSER_DIR="$protocol_dir/packages/discovery-provider/solana-tx-parser" + AUDIUS_DATA_PROGRAM_ID=$(solana-keygen pubkey $PWD/target/deploy/audius_data-keypair.json) echo "Installing parser deps if needed..." cd "$TX_PARSER_DIR" && python3.9 -m pip install -r requirements.txt echo "Running parser with tx hash "$@"... If no tx hash is provided, parser will default to all tx for program ID $AUDIUS_DATA_PROGRAM_ID" -TX_HASH="$@" python3.9 tx_parser.py \ No newline at end of file +TX_HASH="$@" python3.9 tx_parser.py diff --git a/solana-programs/anchor/audius-data/scripts/seed-tx.sh b/solana-programs/anchor/audius-data/scripts/seed-tx.sh index 3ce4786d687..50ab6e50a1c 100755 --- a/solana-programs/anchor/audius-data/scripts/seed-tx.sh +++ b/solana-programs/anchor/audius-data/scripts/seed-tx.sh @@ -4,7 +4,7 @@ set -x # TODO - MOVE OUT OF SHELL SCRIPT ASAP -ANCHOR_PROGRAM_DIR="$PROTOCOL_DIR/solana-programs/anchor/audius-data" +ANCHOR_PROGRAM_DIR="$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")" # audius-protocol/solana-programs/anchor/audius-data OWNER_KEYPAIR_PATH="$HOME/.config/solana/id.json" ADMIN_AUTHORITY_KEYPAIR_PATH="$PWD/adminAuthorityKeypair.json" ADMIN_ACCOUNT_KEYPAIR_PATH="$PWD/adminAccountKeypair.json" @@ -106,4 +106,4 @@ yarn run ts-node cli/main.ts -f deletePlaylist \ echo "Successfully seeded tx:" -solana transaction-history "$AUDIUS_DATA_PROGRAM_ID" \ No newline at end of file +solana transaction-history "$AUDIUS_DATA_PROGRAM_ID"