soft3/radio/iroh-ffi/RELEASE.md

Release Process

Each release process is broken down per language target:

Swift

Swift packages have additional required edits after the release is cut:

  1. Cut the release on github.
  2. run make_swift.sh. confirm that all cargo build invocations are run with the --release flag
  3. build a zip archive of Iroh.xcframework: zip -r IrohLib.xcframework.zip Iroh.xcframework/*
  4. Compute the checksum for the zip archive: swift package compute-checksum MyLibrary.xcframework.zip
  5. Upload the resulting zip archive as a release artifact. Copy the URL to the release.
  6. edit the root Package.swift, setting targets[1](/soft3/radio/iroh-ffi/path-checksum):
// swift-tools-version:5.8
import PackageDescription

let package = Package(
    name: "IrohLib",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        .library(
            name: "IrohLib",
            targets: ["IrohLib", "Iroh"]),
    ],
    dependencies: [],
    targets: [
        .target(
            name: "IrohLib",
            dependencies: [
                .byName(name: "Iroh")
            ]),
        .binaryTarget(
            name: "Iroh",
            // SET THIS:
            path: "https://github.com/n0-computer/iroh-ffi/releases/download/v0.0.6/IrohLib.xcframework.zip"),
            // AND THIS:
            checksum: "4e612297d935332562ed8038ab6a66bde32dd644daf5f4d4f64e24f3bdf961e8",
    ]
)
  1. Commit the result & push

Python

The first time:

  1. Create an account on pypi & testpipy
  2. Get invited to the iroh project
  3. Install twine
  4. Upgrade pkginfo to at least 1.10. For more information check out this issue on twine
  5. Create an API token on pipy and test pipy
  6. Put those tokens into ~/.pypirc:
# ~/.pypirc
[pypi]
username = __token__
password = pypi-TOKEN

[testpypi]
username = __token__
password = pypi-TOKEN

To release iroh python:

  1. Download the artifacts from the wheels ci workflow, picking the workflow that was run on the latest main branch
  2. Extract the artifacts
  3. Upload each to testpypi: twine upload --repository testpypi iroh-$VERSION-*.whl
  4. Dogfood by downloading the latest iroh version from testpipy and using it. The simplest test may be to run the python code in the iroh-ffi/python directory.
    • create & activate a new virtual env
    • install iroh from testpypi pip install -i https://test.pypi.org/simple/ iroh
    • run python main.py
    • ensure it works (and remove the test env)
  5. Upload each to pypi: twine upload iroh-$VERSION-*.whl

Homonyms

cyb/src/containers/portal/release
release
soft3/lens/.claude/plans/release
lens 0.1.0 release plan > Standard structure reference: ~/cyber/hemera > strata must publish before lens — see strata/.claude/plans/release.md gap analysis vs hemera template hemera structure: lens current structure: **present:** `specs/` — 8 files ✓ 5 implementations (brakedown, binius, ikat,…
soft3/strata/.claude/plans/release
strata 0.1.0 release plan > Standard structure reference: ~/cyber/hemera > lens depends on strata — strata must publish first. gap analysis vs hemera template hemera structure: strata current structure: **present** (matches hemera per-algebra pattern): `/rs/` — core implementation ✓…
bootloader/space-pussy/ts/src/containers/portal/release
release

Graph