diff --git a/.gitignore b/.gitignore index b410b5be..19f747b6 100644 --- a/.gitignore +++ b/.gitignore @@ -234,6 +234,7 @@ cython_debug/ veilid-python/demo/.demokeys .vscode/ +.idea/ ## Ignore emacs backup files ~* diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a4c029bc..422755aa 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -63,13 +63,12 @@ sdkmanager --install "cmake;3.22.1" ``` Export environment variables and add the Android SDK platform-tools directory to -your path. +your path. See [instructions here](https://developer.android.com/tools/variables). ```shell cat << EOF >> ~/.profile -export ANDROID_SDK_ROOT= -export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/25.1.8937393 -export PATH=\$PATH:$ANDROID_SDK_ROOT/platform-tools +export ANDROID_HOME= +export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools EOF ``` @@ -119,13 +118,12 @@ to maintain your Android dependencies. Use the SDK Manager in the IDE to install #### Setup command line environment Export environment variables and add the Android SDK platform-tools directory to -your path. +your path. See [instructions here](https://developer.android.com/tools/variables). ```shell cat << EOF >> ~/.zshenv -export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk -export ANDROID_NDK_HOME=$HOME/Library/Android/sdk/ndk/25.1.8937393 -export PATH=\$PATH:$HOME/Library/Android/sdk/platform-tools +export ANDROID_HOME=$HOME/Library/Android/sdk +export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools EOF ``` diff --git a/dev-setup/install_linux_prerequisites.sh b/dev-setup/install_linux_prerequisites.sh index 149470ee..6941ddf0 100755 --- a/dev-setup/install_linux_prerequisites.sh +++ b/dev-setup/install_linux_prerequisites.sh @@ -9,20 +9,20 @@ fi if [ ! -z "$(command -v apt)" ]; then # Install APT dependencies sudo apt update -y - sudo apt install -y openjdk-11-jdk-headless iproute2 curl build-essential cmake libssl-dev openssl file git pkg-config libdbus-1-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev checkinstall unzip llvm wabt python3-pip + sudo apt install -y openjdk-17-jdk-headless iproute2 curl build-essential cmake libssl-dev openssl file git pkg-config libdbus-1-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev checkinstall unzip llvm wabt python3-pip elif [ ! -z "$(command -v dnf)" ]; then # DNF (formerly yum) sudo dnf update -y # libgirepository -> gobject-introspection # iproute2 -> iproute - # openjdk-11-jdk-headless -> java-11-openjdk-headless + # openjdk-17-jdk-headless -> java-11-openjdk-headless # checkinstall does not appear to be a thing in Fedora 38 repos # # Seems like iproute and file might come preinstalled but I put # them in anyway # # Also Fedora doesn't come with pip - sudo dnf install -y java-11-openjdk-headless iproute curl cmake openssl-devel openssl git file pkg-config dbus-devel dbus-glib gobject-introspection-devel cairo-devel unzip llvm wabt python3-pip gcc-c++ + sudo dnf install -y java-17-openjdk-headless iproute curl cmake openssl-devel openssl git file pkg-config dbus-devel dbus-glib gobject-introspection-devel cairo-devel unzip llvm wabt python3-pip gcc-c++ # build-essentials sudo dnf groupinstall -y 'Development Tools' fi @@ -50,8 +50,7 @@ rm -rf $HOME/Android/cmdline-tools $HOME/Android/cmdline-tools.zip cat >> $HOME/.profile <&1 | head -n 1 | cut -d\" -f2) +if [ "$JAVA_VERSION" == "17" ]; then + echo '[X] Java 17 is available in the path' +else + echo 'Java 17 is not available in the path' + exit 1 +fi + # ensure we have command line tools xcode-select --install 2> /dev/null || true until [ -d /Library/Developer/CommandLineTools/usr/bin ]; do sleep 5; done -# ensure packages are installed -if [ "$BREW_USER" == "" ]; then - if [ -d /opt/homebrew ]; then - BREW_USER=`ls -lad /opt/homebrew/. | cut -d\ -f4` - echo "Must sudo to homebrew user \"$BREW_USER\" to install capnp package:" - elif [ -d /usr/local/Homebrew ]; then - BREW_USER=`ls -lad /usr/local/Homebrew/. | cut -d\ -f4` - echo "Must sudo to homebrew user \"$BREW_USER\" to install capnp package:" - else - echo "Homebrew is not installed in the normal place. Trying as current user" - BREW_USER=`whoami` - fi +# install packages +# if $BREW_USER is set, run brew as that user, otherwise run it regularly +# this allows for developers who have brew installed as a different user to run this script +if [ -z "$BREW_USER" ]; then + BREW_COMMAND="brew" +else + BREW_COMMAND="sudo -H -u $BREW_USER brew" fi -sudo -H -u $BREW_USER brew install capnp cmake wabt llvm openjdk@17 jq + +$BREW_COMMAND install capnp cmake wabt llvm jq # install targets rustup target add aarch64-apple-darwin aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-darwin x86_64-apple-ios wasm32-unknown-unknown aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android @@ -149,5 +155,9 @@ cargo install wasm-bindgen-cli wasm-pack cargo-edit # install pip packages pip3 install --upgrade bumpversion -echo Installing cocoapods. This may take a while. -sudo gem install cocoapods +if command -v pod &> /dev/null; then + echo '[X] CocoaPods is available in the path' +else + echo 'CocoaPods is not available in the path, installing it now' + $BREW_COMMAND install cocoapods +fi diff --git a/scripts/new_android_sim.sh b/scripts/new_android_sim.sh index db2d877a..a5478299 100755 --- a/scripts/new_android_sim.sh +++ b/scripts/new_android_sim.sh @@ -14,17 +14,17 @@ AVD_TAG="google_atd" AVD_IMAGE="system-images;android-30;$AVD_TAG;$ANDROID_ABI" AVD_DEVICE="Nexus 10" -SDKMANAGER=$ANDROID_SDK_ROOT/tools/bin/sdkmanager -AVDMANAGER=$ANDROID_SDK_ROOT/tools/bin/avdmanager +SDKMANAGER=$ANDROID_HOME/tools/bin/sdkmanager +AVDMANAGER=$ANDROID_HOME/tools/bin/avdmanager if ! command -v $SDKMANAGER; then - SDKMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager - AVDMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/avdmanager + SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager + AVDMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/avdmanager if ! command -v $SDKMANAGER; then echo "Can't find 'sdkmanager' in the usual places." exit fi fi -EMULATOR=$ANDROID_SDK_ROOT/emulator/emulator +EMULATOR=$ANDROID_HOME/emulator/emulator if ! command -v $EMULATOR; then echo "Can't find 'emulator' in the usual places." exit @@ -35,7 +35,7 @@ $SDKMANAGER --install "$AVD_IMAGE" # Make AVD echo "no" | $AVDMANAGER --verbose create avd --force --name "$AVD_NAME" --package "$AVD_IMAGE" --tag "$AVD_TAG" --abi "$ANDROID_ABI" --device "$AVD_DEVICE" # Run emulator -$ANDROID_SDK_ROOT/emulator/emulator -avd testavd -no-snapshot -no-boot-anim -no-window & +$ANDROID_HOME/emulator/emulator -avd testavd -no-snapshot -no-boot-anim -no-window & ( trap exit SIGINT ; read -r -d '' _ /dev/null; then - # echo '[X] x86_64 homebrew is available' - # else - # echo 'x86_64 homebrew is not available, run this:' - # echo 'arch -x86_64 zsh' - # echo '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"' - # exit 1 - # fi - - # ensure packages are installed - # if [ "$BREW_USER" == "" ]; then - # BREW_USER=`ls -lad /usr/local/bin/. | cut -d\ -f4` - # echo "Must sudo to homebrew user \"$BREW_USER\" to install LLVM package:" - # fi - # sudo -H -u $BREW_USER arch -x86_64 /usr/local/bin/brew install llvm - echo "Must sudo to root to install CocoaPods gem:" - # sudo arch -x86_64 gem install ffi - sudo arch -x86_64 gem install cocoapods + # check if cocoapods is installed, if its not, install it + if command -v pod &> /dev/null; then + echo '[X] CocoaPods is available in the path' + else + echo 'CocoaPods is not available in the path, installing it now' + brew install cocoapods + fi if [ "$(uname -p)" == "arm" ]; then sudo softwareupdate --install-rosetta --agree-to-license