Included release instructions and general build instructions
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -20,3 +20,6 @@ Desktop.ini
|
|||||||
|
|
||||||
# Test artifacts
|
# Test artifacts
|
||||||
/tests/tmp/
|
/tests/tmp/
|
||||||
|
|
||||||
|
# Release artifacts
|
||||||
|
release-artifacts/
|
||||||
67
README.md
67
README.md
@@ -31,6 +31,9 @@ This installs `arduino-cli` and the `arduino:avr` core. If something is
|
|||||||
already installed, Anvil skips it. Run `anvil doctor` at any time to
|
already installed, Anvil skips it. Run `anvil doctor` at any time to
|
||||||
check your environment.
|
check your environment.
|
||||||
|
|
||||||
|
If there is no pre-built binary for your platform, or you want to hack on
|
||||||
|
Anvil itself, see [Building from Source](#building-from-source) below.
|
||||||
|
|
||||||
### Create a project
|
### Create a project
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -360,14 +363,72 @@ vid_pid = "0403:6001"
|
|||||||
|
|
||||||
## Building from Source
|
## Building from Source
|
||||||
|
|
||||||
|
If you want to build Anvil yourself -- either because there is no pre-built
|
||||||
|
binary for your platform, or because you want to contribute -- here is what
|
||||||
|
you need.
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
Anvil is written in Rust and compiles to a single static binary. You need:
|
||||||
|
|
||||||
|
- **Rust toolchain** (stable, 2021 edition or later)
|
||||||
|
- **A C linker** (`gcc` or equivalent -- Rust uses it under the hood)
|
||||||
|
- **MinGW** (only if cross-compiling a Windows binary from Linux)
|
||||||
|
- **zip** (only for packaging release artifacts)
|
||||||
|
|
||||||
|
### Linux / WSL from scratch
|
||||||
|
|
||||||
|
A fresh Ubuntu or WSL instance needs three commands:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# 1. System packages (C linker + cross-compile + packaging tools)
|
||||||
|
sudo apt update && sudo apt install build-essential mingw-w64 zip
|
||||||
|
|
||||||
|
# 2. Rust toolchain
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||||
|
source ~/.cargo/env
|
||||||
|
|
||||||
|
# 3. Build
|
||||||
cargo build --release
|
cargo build --release
|
||||||
```
|
```
|
||||||
|
|
||||||
Binary at `target/release/anvil` (Linux) or `target\release\anvil.exe`
|
The release binary lands at `target/release/anvil`. Copy it somewhere in
|
||||||
(Windows). Requires Rust 2021 edition.
|
your PATH.
|
||||||
|
|
||||||
The test suite:
|
### Windows (native)
|
||||||
|
|
||||||
|
Install Rust from [rustup.rs](https://rustup.rs), which includes the MSVC
|
||||||
|
toolchain. Then:
|
||||||
|
|
||||||
|
```
|
||||||
|
cargo build --release
|
||||||
|
```
|
||||||
|
|
||||||
|
The binary lands at `target\release\anvil.exe`.
|
||||||
|
|
||||||
|
### Release builds (Linux + Windows from one machine)
|
||||||
|
|
||||||
|
The `build-release.sh` script at the repo root builds optimized, stripped
|
||||||
|
binaries for both platforms and packages them into tarballs and zips:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build-release.sh # uses git describe for version
|
||||||
|
./build-release.sh v1.2.0 # explicit version tag
|
||||||
|
```
|
||||||
|
|
||||||
|
This produces a `release-artifacts/` directory with:
|
||||||
|
|
||||||
|
```
|
||||||
|
anvil-v1.2.0-linux-x86_64.tar.gz
|
||||||
|
anvil-v1.2.0-linux-x86_64.zip
|
||||||
|
anvil-v1.2.0-windows-x86_64.zip
|
||||||
|
SHA256SUMS
|
||||||
|
```
|
||||||
|
|
||||||
|
Upload these to a Gitea release. The script requires `build-essential`,
|
||||||
|
`mingw-w64`, and `zip` as described above.
|
||||||
|
|
||||||
|
### Running the test suite
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo test
|
cargo test
|
||||||
|
|||||||
Reference in New Issue
Block a user