- Make sure to update all versions in Cargo.toml and Cargo.lock files
- Tag
- Download binaries from github action run on tag
- Sign windows exe with EV cert
- Create release on GitHub with release notes and upload binaries
- Notify distribution maintainers (See README)
- Do winget release (See below)
- Do crates.io release (See below)
- Do freebsd release (See below)
See: https://learn.microsoft.com/en-us/windows/package-manager/package/repository
# Example with version 0.5.0
# Create new manifest
wingetcreate update FrameworkComputer.framework_tool -u https://github.com/FrameworkComputer/framework-system/releases/download/v0.5.0/framework_tool.exe -v 0.5.0
winget validate .\manifests\f\FrameworkComputer\framework_tool\0.5.0
# Launches a new window where it installed the command
# Try out some things that don't need hardware access
powershell .\Tools\SandboxTest.ps1 .\manifests\f\FrameworkComputer\framework_tool\0.5.0
winget install --manifest .\manifests\f\FrameworkComputer\framework_tool\0.5.0
git add manifests/f/FrameworkComputer/framework_tool/0.5.0
git commit -sm "New version: FrameworkComputer.framework_tool version 0.5.0"
See: https://doc.rust-lang.org/cargo/reference/publishing.html
Dry run and review included files
cargo publish -p framework_lib --dry-run
cargo publish -p framework_tool --dry-run
cargo package --list -p framework_lib
cargo package --list -p framework_tool
Publish
cargo publish -p framework_lib
cargo publish -p framework_tool
# One time
git clone https://github.com/freebsd/freebsd-ports
cd freebsd-ports/sysutils/framework-system
sudo chown -R $(whoami) /var/db/ports
cd sysutils/framework-system
git checkout -b framework-system-v0.5.0
# Edit DISTVERSION=0.5.0 and remove PORTREVISION
nvim sysutils/framework-system/Makefile
# Generate the hash of the package source
make makesum
# Regenerate the dependency information
make cargo-crates > Makefile.crates
# Generate the hash of the package dependencies
make makesum
# Build
make -V BUILD_DEPENDS
make clean
make BATCH=yes build
# Checking if everything is ok
make package
make stage-qa
make check-plist