From 8e62984a28768c80c0a2fce08f522d632653ecbe Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 18 Jan 2024 17:22:47 -0600 Subject: [PATCH 01/19] add apple docs --- docs/building.md | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index e7128df2e..915f9c7d4 100644 --- a/docs/building.md +++ b/docs/building.md @@ -9,7 +9,7 @@ Here you will find instructions on how to install the necessary tools for buildi - 100 GB of storage ## Linux host -The following instructions are for building and running on a Linux host. Alternatively, see the [Windows](#Windows host) section. +The following instructions are for building and running on a Linux host. Alternatively, see the [Mac](#mac-host) and/or [Windows](#windows-host) section. ### Android Studio Install Android Studio. Follow instructions here [https://developer.android.com/studio/install#linux](https://developer.android.com/studio/install#linux) or install via snap: @@ -44,6 +44,7 @@ Install [Rust](https://www.rust-lang.org/tools/install) with command: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.bashrc rustup install 1.67.1 +rustup install 1.72.0 rustup default 1.67.1 ``` @@ -129,6 +130,44 @@ flutter pub get flutter run linux ``` +## Mac host + +### Dependencies +XCode, Homebrew and several homebrew packages, Rust, and Flutter are required for Mac development with the Flutter SDK. Multiple IDEs may work, but Android Studio is recommended. + +Download and install Xcode at https://developer.apple.com/xcode/, register your device (Mac or iPhone), and enable developer mode for your device as applicable. + +Download and install [Homebrew](https://brew.sh/). The following command can install it via script: +``` +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +``` + +After installing Homebrew, install the following packages: +``` +brew install cocoapods git cmake autoconf fontconfig libpng lz4 pkg-config automake freetype libssh2 lzo procs berkeley-db gdbm libtool m4 rtmpdump brotli gettext libunistring make rustup-init ca-certificates git-gui libx11 openldap tcl-tk cairo glib libxau openssl@1.1 unbound cbindgen gmp libxcb openssl@3 unzip cmake libevent libxdmcp pcre2 xorgproto coreutils libidn2 libxext perl xz curl libnghttp2 libxrender pixman zstd +``` + +Download and install [Rust](https://www.rust-lang.org/tools/install). [Rustup](https://rustup.rs/) is recommended for Rust setup. Use `rustc` to confirm successful installation. Install toolchains 1.67.1 and 1.72.0 and `cbindgen` and `cargo-lipo` too. You will also have to add the platform targets `aarch64-apple-ios` and/or `aarch64-apple-darwin`. You can use the command(s): +``` +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source ~/.bashrc +rustup install 1.67.1 +rustup install 1.72.0 +rustup default 1.67.1 +cargo install cbindgen cargo-lipo +rustup target add aarch64-apple-ios aarch64-apple-darwin +``` + +Download and install [Flutter](https://docs.flutter.dev/get-started/install). Versions 3.16.8 and 3.10.6 should both work. Use `flutter doctor` to confirm successful installation. + +Download [Android Studio](https://developer.android.com/studio). VS Code may work as an alternative, but this is not recommended. + +### Building libraries + +### Install Flutter on Mac host +Install Flutter 3.10.3 on your Mac host by following these instructions: https://docs.flutter.dev/get-started/install/macos. Run `flutter doctor` in PowerShell to confirm its installation. + + ## Windows host ### Visual Studio Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++" workload, including all of its default components. From cd425d50c417d8e8683dd6bc9c6cbdd71d4a4756 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 18 Jan 2024 17:48:53 -0600 Subject: [PATCH 02/19] add xcode commandline tools note --- docs/building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index 915f9c7d4..c7fc198c4 100644 --- a/docs/building.md +++ b/docs/building.md @@ -135,7 +135,7 @@ flutter run linux ### Dependencies XCode, Homebrew and several homebrew packages, Rust, and Flutter are required for Mac development with the Flutter SDK. Multiple IDEs may work, but Android Studio is recommended. -Download and install Xcode at https://developer.apple.com/xcode/, register your device (Mac or iPhone), and enable developer mode for your device as applicable. +Download and install Xcode at https://developer.apple.com/xcode/, register your device (Mac or iPhone), and enable developer mode for your device as applicable. After installing XCode, make sure commandline tools are installed with `xcode-select --install`. Download and install [Homebrew](https://brew.sh/). The following command can install it via script: ``` From 00bc8d02f9a5d9bd408982e83d3c4b32b54564e7 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 18 Jan 2024 17:52:52 -0600 Subject: [PATCH 03/19] small final docs corrections for the day --- docs/building.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/building.md b/docs/building.md index c7fc198c4..977f08161 100644 --- a/docs/building.md +++ b/docs/building.md @@ -147,7 +147,7 @@ After installing Homebrew, install the following packages: brew install cocoapods git cmake autoconf fontconfig libpng lz4 pkg-config automake freetype libssh2 lzo procs berkeley-db gdbm libtool m4 rtmpdump brotli gettext libunistring make rustup-init ca-certificates git-gui libx11 openldap tcl-tk cairo glib libxau openssl@1.1 unbound cbindgen gmp libxcb openssl@3 unzip cmake libevent libxdmcp pcre2 xorgproto coreutils libidn2 libxext perl xz curl libnghttp2 libxrender pixman zstd ``` -Download and install [Rust](https://www.rust-lang.org/tools/install). [Rustup](https://rustup.rs/) is recommended for Rust setup. Use `rustc` to confirm successful installation. Install toolchains 1.67.1 and 1.72.0 and `cbindgen` and `cargo-lipo` too. You will also have to add the platform targets `aarch64-apple-ios` and/or `aarch64-apple-darwin`. You can use the command(s): +Download and install [Rust](https://www.rust-lang.org/tools/install). [Rustup](https://rustup.rs/) is recommended for Rust setup. Use `rustc` to confirm successful installation. Install toolchains 1.67.1 and 1.72.0 and `cbindgen` and `cargo-lipo` too. You will also have to add the platform target(s) `aarch64-apple-ios` and/or `aarch64-apple-darwin`. You can use the command(s): ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.bashrc @@ -163,10 +163,10 @@ Download and install [Flutter](https://docs.flutter.dev/get-started/install). V Download [Android Studio](https://developer.android.com/studio). VS Code may work as an alternative, but this is not recommended. ### Building libraries +TODO ### Install Flutter on Mac host -Install Flutter 3.10.3 on your Mac host by following these instructions: https://docs.flutter.dev/get-started/install/macos. Run `flutter doctor` in PowerShell to confirm its installation. - +Install Flutter 3.16.8 on your Mac host by following these instructions: https://docs.flutter.dev/get-started/install/macos. Run `flutter doctor` in a terminal to confirm its installation. ## Windows host ### Visual Studio From d2841121202128d4300054d28a175e104675d1cb Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 7 Mar 2024 21:20:59 -0600 Subject: [PATCH 04/19] Windows (and Rust in general) docs updates --- docs/building.md | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/docs/building.md b/docs/building.md index e7128df2e..cf02f5219 100644 --- a/docs/building.md +++ b/docs/building.md @@ -9,7 +9,7 @@ Here you will find instructions on how to install the necessary tools for buildi - 100 GB of storage ## Linux host -The following instructions are for building and running on a Linux host. Alternatively, see the [Windows](#Windows host) section. +The following instructions are for building and running on a Linux host. Alternatively, see the [Windows](#Windows-host) section. ### Android Studio Install Android Studio. Follow instructions here [https://developer.android.com/studio/install#linux](https://developer.android.com/studio/install#linux) or install via snap: @@ -29,6 +29,8 @@ Then in `File > Settings > Plugins`, install the **Flutter** and **Dart** plugin Make a Pixel 4 (API 30) x86_64 emulator with 2GB of storage space for emulation +### Build dependencies + Install basic dependencies ``` sudo apt-get install libssl-dev curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake libgit2-dev clang libncurses5-dev libncursesw5-dev zlib1g-dev llvm python3-distutils @@ -43,19 +45,22 @@ Install [Rust](https://www.rust-lang.org/tools/install) with command: ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.bashrc -rustup install 1.67.1 +rustup install 1.72.0 # For tor. +rustup install 1.67.1 # For flutter_libepiccash. rustup default 1.67.1 ``` Install the additional components for Rust: ``` -cargo install cargo-ndk --version 2.12.7 +cargo install cargo-ndk --version 2.12.7 --locked ``` + Android specific dependencies: ``` sudo apt-get install libc6-dev-i386 rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android ``` + Linux desktop specific dependencies: ``` sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev meson python3-pip libgirepository1.0-dev valac xsltproc docbook-xsl @@ -67,9 +72,11 @@ After installing the prerequisites listed above, download the code and init the git clone https://github.com/cypherstack/stack_wallet.git cd stack_wallet git submodule update --init --recursive - ``` +### Remove system packages (may be needed for building flutter_libmonero) +[`flutter_libmonero`](https://github.com/cypherstack/flutter_libmonero) may have issues building due to conflicts with system packages: if so, follow this section. + Remove pre-installed system libraries for the following packages built by cryptography plugins in the crypto_plugins folder: `boost iconv libjson-dev libsecret openssl sodium unbound zmq`. You can use ``` sudo apt list --installed | grep boost @@ -134,12 +141,7 @@ flutter run linux Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++" workload, including all of its default components. ### Building libraries in WSL2 -Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. You will also need to install Rust and MXE dependencies on the WSL2 Ubuntu 20.04 host: - - [Install Rust](https://rustup.rs/) - ```sh - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - ``` - - Install MXE by running `stack_wallet/scripts/windows/deps.sh` +Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. You will also need to install MXE on the WSL2 Ubuntu 20.04 host by running `stack_wallet/scripts/windows/deps.sh` ```sh ./stack_wallet/scripts/windows/deps.sh ``` @@ -158,10 +160,23 @@ Copy the resulting `dll`s to their respective positions on the Windows host: --> -### Install Flutter on Windows host +### Flutter Install Flutter 3.10.3 on your Windows host (not in WSL2) by following these instructions: https://docs.flutter.dev/get-started/install/windows or by running `scripts/windows/deps.ps1`. You may still have to add `C:\development\flutter\bin` to PATH before proceeding, even if you ran `deps.ps1`. Run `flutter doctor` in PowerShell to confirm its installation. -### Dependencies +### Rust +Install [Rust](https://www.rust-lang.org/tools/install) via `rustup`. Make sure it works and install the following versions: +``` +rustup install 1.72.0 # For tor. +rustup install 1.67.1 # For flutter_libepiccash. +rustup default 1.67.1 +``` + +Also install `cargo-ndk`: +``` +cargo install cargo-ndk --version 2.12.7 --locked +``` + +### Windows SDK and Developer Mode Install the Windows SDK: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ You may need to install the [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/), which can be installed [by Visual Studio](https://stackoverflow.com/a/73923899) (`Tools > Get Tools and Features... > Modify > Individual Components > Windows 10 SDK`). Enable Developer Mode for symlink support, From 05080ea80ac551cab7e35b6c96ca19a60e1f6a60 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 7 Mar 2024 21:38:17 -0600 Subject: [PATCH 05/19] add coinlib, VS, gtk, and flutter 3.16.0 notes --- docs/building.md | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/docs/building.md b/docs/building.md index cf02f5219..7685abdbf 100644 --- a/docs/building.md +++ b/docs/building.md @@ -119,6 +119,12 @@ cd scripts/windows ./build_all.sh ``` +### Build coinlib +Coinlib's native secp256k1 library must be built prior to running Stack Wallet. It can be built from within the root `stack_wallet` folder on a... + - Linux host for Linux targets: `dart run coinlib:build_linux`, or + - Linux host for Windows targets: `dart run coinlib:build_windows_crosscompile` + + ### Running #### Android Plug in your android device or use the emulator available via Android Studio and then run the following commands: @@ -138,13 +144,20 @@ flutter run linux ## Windows host ### Visual Studio -Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++" workload, including all of its default components. +Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++" and "Linux development with C++" workloads. You may also need the Windows 10, 11, and/or Universal SDK workloads depending on your Windows version. ### Building libraries in WSL2 -Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. You will also need to install MXE on the WSL2 Ubuntu 20.04 host by running `stack_wallet/scripts/windows/deps.sh` - ```sh - ./stack_wallet/scripts/windows/deps.sh - ``` +Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. + +Install the following libraries: +``` +sudo apt-get install libgtk2.0-dev +``` + +You will also need to install MXE on the WSL2 Ubuntu 20.04 host and can do so by running `stack_wallet/scripts/windows/deps.sh`: +``` +./stack_wallet/scripts/windows/deps.sh +``` The WSL2 host may optionally be navigated to the `stack_wallet` repository on the Windows host in order to build the plugins in-place and skip the next section in which you copy the `dll`s from WSL2 to Windows. Then build windows `dll` libraries by running the following script on the WSL2 Ubuntu 20.04 host: @@ -161,10 +174,10 @@ Copy the resulting `dll`s to their respective positions on the Windows host: ### Flutter -Install Flutter 3.10.3 on your Windows host (not in WSL2) by following these instructions: https://docs.flutter.dev/get-started/install/windows or by running `scripts/windows/deps.ps1`. You may still have to add `C:\development\flutter\bin` to PATH before proceeding, even if you ran `deps.ps1`. Run `flutter doctor` in PowerShell to confirm its installation. +Install Flutter 3.16.0 on the Windows host (not in WSL2) by following these instructions: https://docs.flutter.dev/get-started/install/windows or by running `scripts/windows/deps.ps1`. You may still have to add `C:\development\flutter\bin` to PATH before proceeding, even if you ran `deps.ps1` (you may need to open a new terminal). Run `flutter doctor` in PowerShell to confirm its installation. ### Rust -Install [Rust](https://www.rust-lang.org/tools/install) via `rustup`. Make sure it works and install the following versions: +Install [Rust](https://www.rust-lang.org/tools/install) on the Windows host (not in WSL2). Download the installer from [rustup.rs](https://rustup.rs), make sure it works on the commandline (you may need to open a new terminal), and install the following versions: ``` rustup install 1.72.0 # For tor. rustup install 1.67.1 # For flutter_libepiccash. @@ -192,6 +205,11 @@ winget install Microsoft.Windows.CppWinRT -Version 2.0.210806.1 or [download the package](https://www.nuget.org/packages/Microsoft.Windows.CppWinRT/2.0.210806.1) and [manually install it](https://github.com/Baseflow/flutter-permission-handler/issues/1025#issuecomment-1518576722) by placing it in `flutter/bin` with [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) and installing by running `nuget install Microsoft.Windows.CppWinRT -Version 2.0.210806.1` in the root `stack_wallet` folder. +### Build coinlib +Coinlib's native secp256k1 library must be built prior to running Stack Wallet. It can be run from within the root `stack_wallet` folder on a... + - Windows host: `dart run coinlib:build_windows` + - WSL2 host: `dart run coinlib:build_wsl` + ### Run prebuild script Certain test wallet parameter and API key template files must be created in order to run Stack Wallet. These can be created by script as in @@ -201,7 +219,7 @@ cd scripts // when finished go back to the root directory cd .. ``` -or manually by creating the files referenced in that script with the specified content. +or manually by creating the files referenced in that script with the specified content. ### Running From 0b4d5db02165e1f9f4bdebc2627252431365d1b6 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 7 Mar 2024 22:31:32 -0600 Subject: [PATCH 06/19] add coinlib section and general rearrangement --- docs/building.md | 71 ++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/docs/building.md b/docs/building.md index 7685abdbf..0af3882ae 100644 --- a/docs/building.md +++ b/docs/building.md @@ -9,7 +9,7 @@ Here you will find instructions on how to install the necessary tools for buildi - 100 GB of storage ## Linux host -The following instructions are for building and running on a Linux host. Alternatively, see the [Windows](#Windows-host) section. +The following instructions are for building and running on a Linux host. This entire section (except for the Android Studio section) needs to be completed in WSL if building on a Windows host. ### Android Studio Install Android Studio. Follow instructions here [https://developer.android.com/studio/install#linux](https://developer.android.com/studio/install#linux) or install via snap: @@ -27,7 +27,12 @@ Use `Tools > SDK Manager` to install: Then in `File > Settings > Plugins`, install the **Flutter** and **Dart** plugins and restart the IDE. In `File > Settings > Languages & Frameworks > Flutter > Editor`, enable auto format on save to match the project's code style. If you have problems with the Dart SDK, make sure to run `flutter` in a terminal to download it (use `source ~/.bashrc` to update your environment variables if you're still using the same terminal from which you ran `setup.sh`). Run `flutter doctor` to install any missing dependencies and review and agree to any license agreements. -Make a Pixel 4 (API 30) x86_64 emulator with 2GB of storage space for emulation +Make a Pixel 4 (API 30) x86_64 emulator with 2GB of storage space for emulation. + +The following *may* be needed for Android studio: +``` +sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 +``` ### Build dependencies @@ -36,11 +41,6 @@ Install basic dependencies sudo apt-get install libssl-dev curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake libgit2-dev clang libncurses5-dev libncursesw5-dev zlib1g-dev llvm python3-distutils ``` -The following *may* be needed for Android studio: -``` -sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 -``` - Install [Rust](https://www.rust-lang.org/tools/install) with command: ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh @@ -74,18 +74,24 @@ cd stack_wallet git submodule update --init --recursive ``` -### Remove system packages (may be needed for building flutter_libmonero) -[`flutter_libmonero`](https://github.com/cypherstack/flutter_libmonero) may have issues building due to conflicts with system packages: if so, follow this section. +Build the secure storage dependencies in order to target Linux (not needed for Windows or other platforms): +``` +cd scripts/linux +./build_secure_storage_deps.sh +// when finished go back to the root directory +cd ../.. +``` + +### Build coinlib +Coinlib's native secp256k1 library must be built prior to running Stack Wallet. It can be built from within the root `stack_wallet` folder on a... + - Linux host for Linux targets: `dart run coinlib:build_linux`, or + - Linux host for Windows targets: `dart run coinlib:build_windows_crosscompile` + - Windows host: `dart run coinlib:build_windows` + - WSL2 host: `dart run coinlib:build_wsl` + + +For Windows targets, you can use a `secp256k1.dll` produced by any of the three bottom options if the first attempts doesn't succeed! -Remove pre-installed system libraries for the following packages built by cryptography plugins in the crypto_plugins folder: `boost iconv libjson-dev libsecret openssl sodium unbound zmq`. You can use -``` -sudo apt list --installed | grep boost -``` -for example to find which pre-installed packages you may need to remove with `sudo apt remove`. Be careful, as some packages (especially boost) are linked to GNOME (GUI) packages: when in doubt, remove `-dev` packages first like with -``` -sudo apt-get remove '^libboost.*-dev.*' -``` - ### Run prebuild script @@ -112,19 +118,25 @@ cd scripts/linux ./build_all.sh ``` +##### Remove system packages (may be needed for building flutter_libmonero) +[`flutter_libmonero`](https://github.com/cypherstack/flutter_libmonero) may have issues building due to conflicts with system packages: if so, follow this section. + +Remove pre-installed system libraries for the following packages built by cryptography plugins in the crypto_plugins folder: `boost iconv libjson-dev libsecret openssl sodium unbound zmq`. You can use +``` +sudo apt list --installed | grep boost +``` +for example to find which pre-installed packages you may need to remove with `sudo apt remove`. Be careful, as some packages (especially boost) are linked to GNOME (GUI) packages: when in doubt, remove `-dev` packages first like with +``` +sudo apt-get remove '^libboost.*-dev.*' +``` + + #### Building plugins for Windows ``` cd scripts/windows ./deps.sh ./build_all.sh ``` - -### Build coinlib -Coinlib's native secp256k1 library must be built prior to running Stack Wallet. It can be built from within the root `stack_wallet` folder on a... - - Linux host for Linux targets: `dart run coinlib:build_linux`, or - - Linux host for Windows targets: `dart run coinlib:build_windows_crosscompile` - - ### Running #### Android Plug in your android device or use the emulator available via Android Studio and then run the following commands: @@ -144,7 +156,7 @@ flutter run linux ## Windows host ### Visual Studio -Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++" and "Linux development with C++" workloads. You may also need the Windows 10, 11, and/or Universal SDK workloads depending on your Windows version. +Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++", "Linux development with C++", and "Visual C++ build tools" workloads. You may also need the Windows 10, 11, and/or Universal SDK workloads depending on your Windows version. ### Building libraries in WSL2 Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. @@ -205,14 +217,9 @@ winget install Microsoft.Windows.CppWinRT -Version 2.0.210806.1 or [download the package](https://www.nuget.org/packages/Microsoft.Windows.CppWinRT/2.0.210806.1) and [manually install it](https://github.com/Baseflow/flutter-permission-handler/issues/1025#issuecomment-1518576722) by placing it in `flutter/bin` with [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) and installing by running `nuget install Microsoft.Windows.CppWinRT -Version 2.0.210806.1` in the root `stack_wallet` folder. -### Build coinlib -Coinlib's native secp256k1 library must be built prior to running Stack Wallet. It can be run from within the root `stack_wallet` folder on a... - - Windows host: `dart run coinlib:build_windows` - - WSL2 host: `dart run coinlib:build_wsl` - ### Run prebuild script -Certain test wallet parameter and API key template files must be created in order to run Stack Wallet. These can be created by script as in +Certain test wallet parameter and API key template files must be created in order to run Stack Wallet on Windows. These can be created by script as in ``` cd scripts ./prebuild.ps1 From ed42dba9cc6eda3745898cd969b9fc74a032c75e Mon Sep 17 00:00:00 2001 From: likho Date: Fri, 8 Mar 2024 19:31:34 +0200 Subject: [PATCH 07/19] Update address to match epicbox config --- lib/wallets/wallet/impl/epiccash_wallet.dart | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/wallets/wallet/impl/epiccash_wallet.dart b/lib/wallets/wallet/impl/epiccash_wallet.dart index 8228ab7c8..015faa00c 100644 --- a/lib/wallets/wallet/impl/epiccash_wallet.dart +++ b/lib/wallets/wallet/impl/epiccash_wallet.dart @@ -317,6 +317,7 @@ class EpiccashWallet extends Bip39Wallet { Future
_generateAndStoreReceivingAddressForIndex( int index, ) async { + Address? address = await getCurrentReceivingAddress(); EpicBoxConfigModel epicboxConfig = await getEpicBoxConfig(); @@ -325,6 +326,7 @@ class EpiccashWallet extends Bip39Wallet { //Check if the address is the same as the current epicbox domain //Since we're only using one epicbpox now this doesn't apply but will be // useful in the future + final encodedConfig = jsonEncode(epicboxConfig); if (splitted[1] != epicboxConfig.host) { //Update the address address = await thisWalletAddress(index, epicboxConfig); @@ -332,6 +334,13 @@ class EpiccashWallet extends Bip39Wallet { } else { address = await thisWalletAddress(index, epicboxConfig); } + + if (info.cachedReceivingAddress != address.value) { + await info.updateReceivingAddress( + newAddress: address.value, + isar: mainDB.isar, + ); + } return address; } @@ -360,7 +369,6 @@ class EpiccashWallet extends Bip39Wallet { subType: AddressSubType.receiving, publicKey: [], // ?? ); - await mainDB.updateOrPutAddresses([address]); return address; } From e6fc739192942cf86e37d7f85474640efd0e902e Mon Sep 17 00:00:00 2001 From: sneurlax Date: Fri, 8 Mar 2024 14:25:49 -0600 Subject: [PATCH 08/19] add docker/podman note for coinlib --- docs/building.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index 0af3882ae..e3d0cebaf 100644 --- a/docs/building.md +++ b/docs/building.md @@ -90,7 +90,9 @@ Coinlib's native secp256k1 library must be built prior to running Stack Wallet. - WSL2 host: `dart run coinlib:build_wsl` -For Windows targets, you can use a `secp256k1.dll` produced by any of the three bottom options if the first attempts doesn't succeed! +To build coinlib on Linux, you will need `docker` (see [installation instructions](https://docs.docker.com/engine/install/ubuntu/)) or [`podman`](https://podman.io/docs/installation) (`sudo apt-get -y install podman`) + +For Windows targets, you can use a `secp256k1.dll` produced by any of the three bottom options if the first attempt doesn't succeed! ### Run prebuild script From 6f98abddf78108aa6f976936753fc0410637bfd1 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Sat, 9 Mar 2024 06:12:10 -0800 Subject: [PATCH 09/19] nit that android studio is not necessarily needed in wsl --- docs/building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index e3d0cebaf..9f220f759 100644 --- a/docs/building.md +++ b/docs/building.md @@ -161,7 +161,7 @@ flutter run linux Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++", "Linux development with C++", and "Visual C++ build tools" workloads. You may also need the Windows 10, 11, and/or Universal SDK workloads depending on your Windows version. ### Building libraries in WSL2 -Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. +Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. The Android Studio section may be skipped in WSL (it's only needed on the Windows host). Install the following libraries: ``` From 114ec4cd1011fe58081b0d36bd632be66a503181 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Sat, 9 Mar 2024 15:43:50 -0800 Subject: [PATCH 10/19] expand upon flutter installation method --- docs/building.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index 9f220f759..b4385220a 100644 --- a/docs/building.md +++ b/docs/building.md @@ -34,6 +34,15 @@ The following *may* be needed for Android studio: sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 ``` +### Flutter + +Flutter and the Dart SDK should have been set up by Android studio, but if running `flutter` doesn't work (try `flutter doctor`, too), follow the [guide to install Flutter on any of their supported platforms](https://docs.flutter.dev/get-started/install) or: + - `git clone https://github.com/flutter/flutter` somewhere it can live (`/var`, `/opt`, `~`) + - `git checkout 3.16.0` after navigating into the `flutter` directory, and + - add `flutter/bin` to your PATH (on Ubuntu, add `PATH=$PATH:path/to/flutter/bin` to `~/.profile`). + +Run `flutter doctor` to install any missing dependencies and review and agree to any license agreements. + ### Build dependencies Install basic dependencies @@ -188,7 +197,11 @@ Copy the resulting `dll`s to their respective positions on the Windows host: ### Flutter -Install Flutter 3.16.0 on the Windows host (not in WSL2) by following these instructions: https://docs.flutter.dev/get-started/install/windows or by running `scripts/windows/deps.ps1`. You may still have to add `C:\development\flutter\bin` to PATH before proceeding, even if you ran `deps.ps1` (you may need to open a new terminal). Run `flutter doctor` in PowerShell to confirm its installation. +Install Flutter 3.16.0 on the Windows host (not in WSL2) by following [Flutter's Windows install guide](https://docs.flutter.dev/get-started/install/windows), by running `scripts/windows/deps.ps1`, or by + - `git clone https://github.com/flutter/flutter` somewhere it can live (`C:`, **avoid** anywhere in `C:/Users/`), + - `git checkout 3.16.0` (after navigating into the `flutter` folder), + - and adding `flutter/bin` to your PATH environmen variable (search "environment variables" in the Start menu) +You may still have to add `C:\development\flutter\bin` to PATH before proceeding, even if you ran `deps.ps1` (you may need to open a new terminal). Run `flutter doctor` in PowerShell to confirm its installation. ### Rust Install [Rust](https://www.rust-lang.org/tools/install) on the Windows host (not in WSL2). Download the installer from [rustup.rs](https://rustup.rs), make sure it works on the commandline (you may need to open a new terminal), and install the following versions: From 557d3fd07d44a4e129fde9bc7e98bb0924087f32 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Sat, 9 Mar 2024 17:55:27 -0600 Subject: [PATCH 11/19] android nit --- docs/building.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/building.md b/docs/building.md index b4385220a..5bd2016e7 100644 --- a/docs/building.md +++ b/docs/building.md @@ -20,10 +20,11 @@ sudo snap install android-studio --classic ``` Use `Tools > SDK Manager` to install: - - `SDK Tools > Android SDK (API 30)` - - `SDK Tools > NDK` - `SDK Tools > Android SDK command line tools` - `SDK Tools > CMake` +and for Android builds, + - `SDK Tools > Android SDK (API 30)` + - `SDK Tools > NDK` Then in `File > Settings > Plugins`, install the **Flutter** and **Dart** plugins and restart the IDE. In `File > Settings > Languages & Frameworks > Flutter > Editor`, enable auto format on save to match the project's code style. If you have problems with the Dart SDK, make sure to run `flutter` in a terminal to download it (use `source ~/.bashrc` to update your environment variables if you're still using the same terminal from which you ran `setup.sh`). Run `flutter doctor` to install any missing dependencies and review and agree to any license agreements. From 35019bdab3841969ccd05090004334c4498c7fe8 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Wed, 3 Apr 2024 12:07:16 -0500 Subject: [PATCH 12/19] finish mac host section --- docs/building.md | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/docs/building.md b/docs/building.md index c6473127e..2caed60d3 100644 --- a/docs/building.md +++ b/docs/building.md @@ -185,6 +185,7 @@ After installing Homebrew, install the following packages: ``` brew install cocoapods git cmake autoconf fontconfig libpng lz4 pkg-config automake freetype libssh2 lzo procs berkeley-db gdbm libtool m4 rtmpdump brotli gettext libunistring make rustup-init ca-certificates git-gui libx11 openldap tcl-tk cairo glib libxau openssl@1.1 unbound cbindgen gmp libxcb openssl@3 unzip cmake libevent libxdmcp pcre2 xorgproto coreutils libidn2 libxext perl xz curl libnghttp2 libxrender pixman zstd ``` + Download and install [Rust](https://www.rust-lang.org/tools/install). [Rustup](https://rustup.rs/) is recommended for Rust setup. Use `rustc` to confirm successful installation. Install toolchains 1.67.1 and 1.72.0 and `cbindgen` and `cargo-lipo` too. You will also have to add the platform target(s) `aarch64-apple-ios` and/or `aarch64-apple-darwin`. You can use the command(s): ``` @@ -201,17 +202,42 @@ Download and install [Flutter](https://docs.flutter.dev/get-started/install). V Download [Android Studio](https://developer.android.com/studio). VS Code may work as an alternative, but this is not recommended. -### Building libraries -TODO +### Flutter +Install [Flutter](https://docs.flutter.dev/get-started/install) 3.16.8 on your Mac host by following [these instructions](https://docs.flutter.dev/get-started/install/macos). Run `flutter doctor` in a terminal to confirm its installation. -### Install Flutter on Mac host -Install Flutter 3.16.8 on your Mac host by following these instructions: https://docs.flutter.dev/get-started/install/macos. Run `flutter doctor` in a terminal to confirm its installation. +### Build plugins +#### Building plugins for iOS +``` +cd scripts/ios +./build_all.sh +``` + +#### Building plugins for macOS +``` +cd scripts/macos +./build_all.sh +``` + +### Running +#### iOS +Plug in your iOS device or use an emulato and then run the following commands: +``` +flutter pub get +flutter run ios +``` + +#### macOS +Run the following commands or launch via Android Studio: +``` +flutter pub get +flutter run macos +``` ## Windows host ### Visual Studio Visual Studio is required for Windows development with the Flutter SDK. Download it at https://visualstudio.microsoft.com/downloads/ and install the "Desktop development with C++", "Linux development with C++", and "Visual C++ build tools" workloads. You may also need the Windows 10, 11, and/or Universal SDK workloads depending on your Windows version. -### Building libraries in WSL2 +### Build plugins in WSL2 Set up Ubuntu 20.04 in WSL2. Follow the entire Linux host section in the WSL2 Ubuntu 20.04 host to get set up to build. The Android Studio section may be skipped in WSL (it's only needed on the Windows host). Install the following libraries: From 4cefed89d28f4049cbfae522a926ea098cb0b54d Mon Sep 17 00:00:00 2001 From: sneurlax Date: Wed, 3 Apr 2024 12:17:17 -0500 Subject: [PATCH 13/19] mention prebuild.sh for apple, too --- docs/building.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index 2caed60d3..b3effad4c 100644 --- a/docs/building.md +++ b/docs/building.md @@ -106,7 +106,6 @@ To build coinlib on Linux, you will need `docker` (see [installation instruction For Windows targets, you can use a `secp256k1.dll` produced by any of the three bottom options if the first attempt doesn't succeed! - ### Run prebuild script Certain test wallet parameter and API key template files must be created in order to run Stack Wallet. These can be created by script as in @@ -218,6 +217,17 @@ cd scripts/macos ./build_all.sh ``` +### Run prebuild script + +Certain test wallet parameter and API key template files must be created in order to run Stack Wallet. These can be created by script as in +``` +cd scripts +./prebuild.sh +// when finished go back to the root directory +cd .. +``` +or manually by creating the files referenced in that script with the specified content. + ### Running #### iOS Plug in your iOS device or use an emulato and then run the following commands: From 115ae7cb73d2da604830ea3150a5ea3df867b7cb Mon Sep 17 00:00:00 2001 From: sneurlax Date: Wed, 3 Apr 2024 12:25:01 -0500 Subject: [PATCH 14/19] macos/ios nit --- docs/building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index b3effad4c..c4301bfae 100644 --- a/docs/building.md +++ b/docs/building.md @@ -4,7 +4,7 @@ Here you will find instructions on how to install the necessary tools for buildi ## Prerequisites -- The only OS supported for building Android and Linux desktop is Ubuntu 20.04. Windows build are completed using Ubuntu 20.04 on WSL2. Advanced users may also be able to build on other Debian-based distributions like Linux Mint. +- The only OS supported for building Android and Linux desktop is Ubuntu 20.04. Windows builds require using Ubuntu 20.04 on WSL2. macOS builds for itself and iOS. Advanced users may also be able to build on other Debian-based distributions like Linux Mint. - Android setup ([Android Studio](https://developer.android.com/studio) and subsequent dependencies) - 100 GB of storage From 32c253674d699ca45a370b5fec876b51900af437 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 4 Apr 2024 13:02:43 -0500 Subject: [PATCH 15/19] remove cargo-ndk mention for windows over-agressive copying and pasting with insufficient review --- docs/building.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/building.md b/docs/building.md index c4301bfae..b6dbec820 100644 --- a/docs/building.md +++ b/docs/building.md @@ -285,15 +285,16 @@ You may still have to add `C:\development\flutter\bin` to PATH before proceeding Install [Rust](https://www.rust-lang.org/tools/install) on the Windows host (not in WSL2). Download the installer from [rustup.rs](https://rustup.rs), make sure it works on the commandline (you may need to open a new terminal), and install the following versions: ``` rustup install 1.72.0 # For frostdart and tor. -rustup install 1.73.0 # For cargo-ndk. rustup install 1.67.1 # For flutter_libepiccash. rustup default 1.67.1 ``` - -Also install `cargo-ndk`: + ### Windows SDK and Developer Mode Install the Windows SDK: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ You may need to install the [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/), which can be installed [by Visual Studio](https://stackoverflow.com/a/73923899) (`Tools > Get Tools and Features... > Modify > Individual Components > Windows 10 SDK`). From 9826dbb0b19a6a38dc74589a1ededf601b7db15a Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 4 Apr 2024 13:20:28 -0500 Subject: [PATCH 16/19] clarification of deps script role in flutter\bin's path for PATH --- docs/building.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/building.md b/docs/building.md index b6dbec820..f6e529b37 100644 --- a/docs/building.md +++ b/docs/building.md @@ -277,9 +277,9 @@ Copy the resulting `dll`s to their respective positions on the Windows host: ### Flutter Install Flutter 3.16.0 on the Windows host (not in WSL2) by following [Flutter's Windows install guide](https://docs.flutter.dev/get-started/install/windows), by running `scripts/windows/deps.ps1`, or by - `git clone https://github.com/flutter/flutter` somewhere it can live (`C:`, **avoid** anywhere in `C:/Users/`), - - `git checkout 3.16.0` (after navigating into the `flutter` folder), - - and adding `flutter/bin` to your PATH environmen variable (search "environment variables" in the Start menu) -You may still have to add `C:\development\flutter\bin` to PATH before proceeding, even if you ran `deps.ps1` (you may need to open a new terminal). Run `flutter doctor` in PowerShell to confirm its installation. + - `git checkout 3.16.9` (after navigating into the `flutter` folder), + - adding `flutter\bin`'s full absolute path to your PATH environment variable (search "environment variables" in the Start menu. If you ran `deps.ps1`, use `C:\development\flutter\bin`. You may also need to open a new terminal), + - and running `flutter doctor` in PowerShell to confirm its installation. You may need to resolve any issues which `flutter doctor` might raise. ### Rust Install [Rust](https://www.rust-lang.org/tools/install) on the Windows host (not in WSL2). Download the installer from [rustup.rs](https://rustup.rs), make sure it works on the commandline (you may need to open a new terminal), and install the following versions: From 70afa6fbb3807321c8ee08722e50933021fa7628 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 4 Apr 2024 14:08:28 -0500 Subject: [PATCH 17/19] make kvm performance note --- docs/building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/building.md b/docs/building.md index f6e529b37..46e57b1cf 100644 --- a/docs/building.md +++ b/docs/building.md @@ -159,7 +159,7 @@ flutter pub get flutter run android ``` -Note on Emulators: Only x86_64 emulators are supported, x86 emulators will not work +Note on Emulators: Only x86_64 emulators are supported, x86 emulators will not work. You should [configure KVM](https://help.ubuntu.com/community/KVM/Installation) for much better performance. #### Linux Run the following commands or launch via Android Studio: From d574bb5b45bcf1fc52c765c7be6518e74956d37b Mon Sep 17 00:00:00 2001 From: sneurlax Date: Sun, 7 Apr 2024 20:11:45 -0500 Subject: [PATCH 18/19] Remove duplicate instruction and clatify that Android Studio is not required on macOS --- docs/building.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/building.md b/docs/building.md index 46e57b1cf..af128caf4 100644 --- a/docs/building.md +++ b/docs/building.md @@ -197,9 +197,7 @@ cargo install cbindgen cargo-lipo rustup target add aarch64-apple-ios aarch64-apple-darwin ``` -Download and install [Flutter](https://docs.flutter.dev/get-started/install). Versions 3.16.8 and 3.10.6 should both work. Use `flutter doctor` to confirm successful installation. - -Download [Android Studio](https://developer.android.com/studio). VS Code may work as an alternative, but this is not recommended. +Optionally download [Android Studio](https://developer.android.com/studio) as an IDE and activate its Dart and Flutter plugins. VS Code may work as an alternative, but this is not recommended. ### Flutter Install [Flutter](https://docs.flutter.dev/get-started/install) 3.16.8 on your Mac host by following [these instructions](https://docs.flutter.dev/get-started/install/macos). Run `flutter doctor` in a terminal to confirm its installation. From 34cf1f971583fb1e86b492843274f3c3cd150657 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Wed, 10 Apr 2024 23:53:20 -0500 Subject: [PATCH 19/19] Document required brew formulae: boost, libsodium, zmq/zeromq --- docs/building.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/building.md b/docs/building.md index af128caf4..52d663841 100644 --- a/docs/building.md +++ b/docs/building.md @@ -182,9 +182,14 @@ Download and install [Homebrew](https://brew.sh/). The following command can in After installing Homebrew, install the following packages: ``` -brew install cocoapods git cmake autoconf fontconfig libpng lz4 pkg-config automake freetype libssh2 lzo procs berkeley-db gdbm libtool m4 rtmpdump brotli gettext libunistring make rustup-init ca-certificates git-gui libx11 openldap tcl-tk cairo glib libxau openssl@1.1 unbound cbindgen gmp libxcb openssl@3 unzip cmake libevent libxdmcp pcre2 xorgproto coreutils libidn2 libxext perl xz curl libnghttp2 libxrender pixman zstd +brew install autoconf automake boost berkeley-db ca-certificates cbindgen cmake cmake cocoapods curl git libssh2 make openssl@1.1 openssl@3 perl pkg-config rustup-init sodium unbound unzip xz zmq ``` - + +The following brew formula *may* be needed: +``` +brew install brotli cairo coreutils gdbm gettext glib gmp libevent libidn2 libnghttp2 libtool libunistring libx11 libxau libxcb libxdmcp libxext libxrender lzo m4 openldap pcre2 pixman procs rtmpdump tcl-tk xorgproto zstd +``` + Download and install [Rust](https://www.rust-lang.org/tools/install). [Rustup](https://rustup.rs/) is recommended for Rust setup. Use `rustc` to confirm successful installation. Install toolchains 1.67.1 and 1.72.0 and `cbindgen` and `cargo-lipo` too. You will also have to add the platform target(s) `aarch64-apple-ios` and/or `aarch64-apple-darwin`. You can use the command(s): ```