diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d8f1ea44..d01b4dae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ env: DPM_LINUX_SHA256: 387421d4b3d0e799f05cde1f5c2adc704acd2824796d436861602eb2be759874 # GitHub CLI, pinned for the same reason as DPM above: the self-hosted # runner has no `gh` preinstalled, but the "public builds repo" steps - # below (release mirror, Homebrew formula, APT repo) all shell out to + # below (Homebrew formula bump) shells out to # it. Recompute the sha256 via: # curl -sL | sha256sum GH_CLI_VERSION: 2.96.0 @@ -172,59 +172,6 @@ jobs: rm -rf "${stage}" done - # Linux Debian package (.deb) for Ubuntu/Debian users. This is - # also fed into the static APT repository in the public builds - # repo below. It reuses the exact linux/amd64 binary built above, - # preserving the "same binary across distribution surfaces" - # invariant. - if [[ "${VERSION}" == v* ]]; then - deb_version="${VERSION#v}" - else - deb_version="0.0.0+${short_commit}" - fi - command -v ar >/dev/null - command -v tar >/dev/null - command -v gzip >/dev/null - debwork="dist/debwork" - debroot="${debwork}/data" - debctrl="${debwork}/control" - mkdir -p \ - "${debctrl}" \ - "${debroot}/usr/bin" \ - "${debroot}/usr/share/doc/canton-devkit" - cp "component-bin/linux_amd64/canton-devkit" "${debroot}/usr/bin/canton-devkit" - chmod 0755 "${debroot}/usr/bin/canton-devkit" - cp LICENSE "${debroot}/usr/share/doc/canton-devkit/LICENSE" - cp README.md "${debroot}/usr/share/doc/canton-devkit/README.md" - cp packaging/deb/postinst "${debctrl}/postinst" - chmod 0755 "${debctrl}/postinst" - cat > "${debctrl}/control" < - Homepage: https://github.com/bitdynamics-ab/canton-devkit - Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - EOF - sed -i 's/^ //' "${debctrl}/control" - printf '2.0\n' > "${debwork}/debian-binary" - tar --sort=name --owner=0 --group=0 --numeric-owner \ - -C "${debctrl}" -cf - . | gzip -n > "${debwork}/control.tar.gz" - tar --sort=name --owner=0 --group=0 --numeric-owner \ - -C "${debroot}" -cf - . | gzip -n > "${debwork}/data.tar.gz" - ( - cd "${debwork}" - ar rcs "../canton-devkit_${deb_version}_amd64.deb" \ - debian-binary control.tar.gz data.tar.gz - ) - ar t "dist/canton-devkit_${deb_version}_amd64.deb" - rm -rf "${debwork}" - # Single SHA256SUMS file covers every published archive (dist/ # now holds only release artifacts). Format is GNU sha256sum # compatible so users can verify via: @@ -297,104 +244,6 @@ jobs: -f sha="$file_sha" \ -f branch="main" - - name: Update APT repository on main - # Disabled: pushes directly to main, which is blocked by branch - # protection rules requiring PRs. See follow-up issue to rework - # this to go through a pull request instead. - if: false && startsWith(github.ref, 'refs/tags/') - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VERSION: ${{ steps.meta.outputs.devkit_version }} - run: | - set -euo pipefail - version_num="${VERSION#v}" - deb_asset="dist/canton-devkit_${version_num}_amd64.deb" - test -f "${deb_asset}" - - # Clone this repo's main (not the tag checkout) so we can append - # the new .deb under apt/ and push a metadata commit. Served at - # raw.githubusercontent.com/.../canton-devkit/main/apt/ - work="$(mktemp -d)" - trap 'rm -rf "${work}"' EXIT - gh auth setup-git - gh repo clone "${GITHUB_REPOSITORY}" "${work}/repo" -- --depth 1 --branch main - - repo="${work}/repo" - pool="${repo}/apt/pool/main/c/canton-devkit" - pkgdir="${repo}/apt/dists/stable/main/binary-amd64" - mkdir -p "${pool}" "${pkgdir}" - cp "${deb_asset}" "${pool}/$(basename "${deb_asset}")" - - packages="${pkgdir}/Packages" - : > "${packages}" - while IFS= read -r -d '' deb; do - rel="${deb#"${repo}/apt/"}" - base="$(basename "${deb}")" - pkg_ver="${base#canton-devkit_}" - pkg_ver="${pkg_ver%_amd64.deb}" - size="$(stat -c%s "${deb}")" - md5="$(md5sum "${deb}" | awk '{print $1}')" - sha1="$(sha1sum "${deb}" | awk '{print $1}')" - sha256="$(sha256sum "${deb}" | awk '{print $1}')" - cat >> "${packages}" < - Filename: ${rel} - Size: ${size} - MD5sum: ${md5} - SHA1: ${sha1} - SHA256: ${sha256} - Section: devel - Priority: optional - Homepage: https://github.com/bitdynamics-ab/canton-devkit - Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - - EOF - done < <(find "${pool}" -type f -name 'canton-devkit_*_amd64.deb' -print0 | sort -z -V) - sed -i 's/^ //' "${packages}" - gzip -n -c "${packages}" > "${packages}.gz" - - release="${repo}/apt/dists/stable/Release" - date_rfc="$(LC_ALL=C date -u '+%a, %d %b %Y %H:%M:%S +0000')" - cat > "${release}" <> "${release}" - for rel_meta in main/binary-amd64/Packages main/binary-amd64/Packages.gz; do - meta_path="${repo}/apt/dists/stable/${rel_meta}" - case "${algo}" in - MD5Sum) sum="$(md5sum "${meta_path}" | awk '{print $1}')" ;; - SHA1) sum="$(sha1sum "${meta_path}" | awk '{print $1}')" ;; - SHA256) sum="$(sha256sum "${meta_path}" | awk '{print $1}')" ;; - esac - printf ' %s %16s %s\n' "${sum}" "$(stat -c%s "${meta_path}")" "${rel_meta}" >> "${release}" - done - done - - git -C "${repo}" status --short - git -C "${repo}" add apt - if git -C "${repo}" diff --cached --quiet; then - echo "APT repo already up to date for ${VERSION}" - exit 0 - fi - git -C "${repo}" -c user.name="github-actions[bot]" \ - -c user.email="github-actions[bot]@users.noreply.github.com" \ - commit -m "chore: update APT repo for ${VERSION}" - git -C "${repo}" push origin main - name: Install DPM CLI (sha256-verified) run: | set -euo pipefail diff --git a/README.md b/README.md index cac0f7bc..afb2862c 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,8 @@ curl -fsSL https://raw.githubusercontent.com/bitdynamics-ab/canton-devkit/main/i Release archives (macOS arm64, Linux amd64, Windows amd64), `SHA256SUMS`, Homebrew -(`brew install bitdynamics-ab/canton-devkit/canton-devkit`), APT for -Debian/Ubuntu, and `go install` are documented in the same guide. +(`brew install bitdynamics-ab/canton-devkit/canton-devkit`), and +`go install` are documented in the same guide. ## Documentation diff --git a/apt/dists/stable/Release b/apt/dists/stable/Release deleted file mode 100644 index e8fce10d..00000000 --- a/apt/dists/stable/Release +++ /dev/null @@ -1,17 +0,0 @@ -Origin: Bitdynamics -Label: Canton DevKit -Suite: stable -Codename: stable -Date: Wed, 05 Aug 2026 14:06:04 +0000 -Architectures: amd64 -Components: main -Description: Canton DevKit APT repository -MD5Sum: - 7dd11e862c0db44d32d83e4b983d2977 10352 main/binary-amd64/Packages - 8b2067ffbe4f5215e3f269a08488231d 2019 main/binary-amd64/Packages.gz -SHA1: - 59dd3f7c6b3d68858f6894605ee75b2aa60ba7b1 10352 main/binary-amd64/Packages - 231c678c5c4d762bfadc0b2a1c8c03a79836c718 2019 main/binary-amd64/Packages.gz -SHA256: - 96c3bf02707a65ee0fcf4cf51e510d4f1bdf6b28fb94e789d64fab849005242c 10352 main/binary-amd64/Packages - dbbcc235540c3ff7c07a4bf160395eed3f05f6a0325264afb317c4c552d772ba 2019 main/binary-amd64/Packages.gz diff --git a/apt/dists/stable/main/binary-amd64/Packages b/apt/dists/stable/main/binary-amd64/Packages deleted file mode 100644 index 79d7c84a..00000000 --- a/apt/dists/stable/main/binary-amd64/Packages +++ /dev/null @@ -1,272 +0,0 @@ -Package: canton-devkit -Version: 0.10.1 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.10.1_amd64.deb -Size: 7046044 -MD5sum: c07f40ff5987d93d9684f6f8e9d92bd1 -SHA1: 5e6ff8f1a6a5697f47b1bf8a72bd86455ea0a876 -SHA256: 3cf14db6868180118169940360fab38187e1e2976cc26426c2212ec74d784bed -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.12.1 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.12.1_amd64.deb -Size: 7039650 -MD5sum: a2412f1724d78054b98b7b1b4819f028 -SHA1: e95249289e5aaeb70a7cf9ad0b0070ca11d22551 -SHA256: 4d7ea07b74c69511cec402ed24c62330b043be92b9332e93af78bfd495e19020 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.12.2 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.12.2_amd64.deb -Size: 7039630 -MD5sum: 3784ac2a7e53d17032c774f0dd9143c8 -SHA1: db3b12aec52a231cb90f55d50c80930870c6b75d -SHA256: e4c7068a777600f14bc2d25be23edbd0178c17b80f049340f9d2a35d1596fe43 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.13.0 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.13.0_amd64.deb -Size: 7330356 -MD5sum: 5cff8f45526bbded4a1e8dc2cbe4b0c4 -SHA1: b1a7ce730b3a76b33506cfc35bcd49ad8137e2d7 -SHA256: a9c45846fa23d9d689f28510c5a741c7700f6c1fd1fa25cd3aa092f91163fcdf -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.14.0 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.14.0_amd64.deb -Size: 7331344 -MD5sum: 76b9dde386e725fac0cc170f3d6af2ab -SHA1: 0cdd8e2e9fbb1eda59fc415648417e29243f1dd9 -SHA256: 91cd0686c36878a8c53bca43c25ef79673da2de843f37f5a12d2bd2655a403af -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.0 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.0_amd64.deb -Size: 7331132 -MD5sum: b810e457ce89bb4c9bf9f7cbd30fc9c8 -SHA1: 4b6c097d213758892060a7cd3b441c96a0a25a44 -SHA256: 8f98f904e9131fd39fa0ba596964968182b37ec9e48a75c1a11fe0f1121ee998 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.1 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.1_amd64.deb -Size: 7334326 -MD5sum: c80fa0f4148cc18baec83d9aec926156 -SHA1: 57a0adc3fe9b42738a891f5fa4e80209862508d7 -SHA256: e1f46ef6d0cf9db26d6d76ad350a3e912341e6f45d6d318022b8893721686a84 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.2 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.2_amd64.deb -Size: 7334356 -MD5sum: f2b3793a8ede04404abbbb9ab3106108 -SHA1: 35c159663aec2dcba30a8e6b64214bc3035a30ff -SHA256: 60d2d0f57a5d2c18b162eefd6d34ea23f64207ed65d0d4c1ac8322889d21abb4 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.3 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.3_amd64.deb -Size: 7335434 -MD5sum: 4fbb9cf5b5dbcde41081a610515978f1 -SHA1: 4751469f40970fade46e6329e66bb18053cbeedd -SHA256: 132fac0b56b5fdcdd803af51c5a38206f658575c250facfc5cea365225802370 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.4 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.4_amd64.deb -Size: 7335412 -MD5sum: 5febf26494a95fb2aa8e487b99ece971 -SHA1: 7a53e22933975ab9aefb29c700f8f5c6bce15303 -SHA256: cf11a2e234e733ba55912f650dc464f323b4f24d02bf72c0caf2821eaf42886a -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.5 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.5_amd64.deb -Size: 7338186 -MD5sum: a64210c63b6897a2ea653b6412e9c28e -SHA1: dfe797e679215a62bfa0902eec2c98d670c7a4ec -SHA256: 1bcbc6cda48da9acf7360b0ef81466f980d2e94a658e69f2fffae9a8d429bb26 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.15.6 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.15.6_amd64.deb -Size: 7342048 -MD5sum: 4c78ab075e910fb4f5c11c0a76b6c156 -SHA1: a49dc3bca068494e744d24756fe16edb01401e84 -SHA256: d48fa0c9ab5d6aa035a681d207f9b5d903e6b435d56106b2b3e4a0e3b2755295 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.16.0 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.16.0_amd64.deb -Size: 7424006 -MD5sum: 9d130e95fb05cdb16de742ae9c6efa7a -SHA1: bd64a739c7712f105fab637bb81de84b1810c0f0 -SHA256: 459b15db918c29319f6376db024e598b2b16739cf299aa55fdfb299b15fd6adf -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.16.1 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.16.1_amd64.deb -Size: 7421802 -MD5sum: 037c11e839223a4c51ad891ae16c6218 -SHA1: 00cfa0cbf73e30a7874958a572e4617dbd82fbfd -SHA256: 8bd03bd8ad6e037ce0010d358c7a8edd6152df4b25c138848d38a1ed3609d13e -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.16.2 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.16.2_amd64.deb -Size: 7435174 -MD5sum: e5d3f7802efc3f241357cec5950d03bb -SHA1: b77da4adce6a891e567283fc22431c5962083705 -SHA256: b196c4169e2ba3f9f89d2180445c0792d37311c15f92d431114d52962247fa19 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - -Package: canton-devkit -Version: 0.16.3 -Architecture: amd64 -Maintainer: Bitdynamics -Filename: pool/main/c/canton-devkit/canton-devkit_0.16.3_amd64.deb -Size: 7442316 -MD5sum: 6eee4399ac0493062aa190fe816d8a06 -SHA1: 5d9728f8e7687a2fe8c83218e5e817e543a4d645 -SHA256: a07496b88518ab9da7386c24b8acfdc9ff2fcb0854fe2af8194f5d6a625ae8e0 -Section: devel -Priority: optional -Homepage: https://github.com/bitdynamics-ab/canton-devkit -Description: Canton DevKit LocalNet developer tooling - Canton DevKit manages Canton LocalNet instances, DAR workflows, - contract exploration, observability, and token testing from a - single standalone CLI. - diff --git a/apt/dists/stable/main/binary-amd64/Packages.gz b/apt/dists/stable/main/binary-amd64/Packages.gz deleted file mode 100644 index 6c64052f..00000000 Binary files a/apt/dists/stable/main/binary-amd64/Packages.gz and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.10.1_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.10.1_amd64.deb deleted file mode 100644 index 1f884dfb..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.10.1_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.12.1_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.12.1_amd64.deb deleted file mode 100644 index 5972a1f8..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.12.1_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.12.2_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.12.2_amd64.deb deleted file mode 100644 index 09751ab0..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.12.2_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.13.0_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.13.0_amd64.deb deleted file mode 100644 index 408ba13f..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.13.0_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.14.0_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.14.0_amd64.deb deleted file mode 100644 index a7171ff7..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.14.0_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.0_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.0_amd64.deb deleted file mode 100644 index a927c5e5..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.0_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.1_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.1_amd64.deb deleted file mode 100644 index bd1857c8..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.1_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.2_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.2_amd64.deb deleted file mode 100644 index c3e0ca46..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.2_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.3_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.3_amd64.deb deleted file mode 100644 index 0dcb3afc..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.3_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.4_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.4_amd64.deb deleted file mode 100644 index 4e7fb58f..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.4_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.5_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.5_amd64.deb deleted file mode 100644 index 36c3107d..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.5_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.6_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.15.6_amd64.deb deleted file mode 100644 index d164a94e..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.15.6_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.0_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.16.0_amd64.deb deleted file mode 100644 index 513d3161..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.0_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.1_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.16.1_amd64.deb deleted file mode 100644 index 1454d810..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.1_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.2_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.16.2_amd64.deb deleted file mode 100644 index 9bc54fb0..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.2_amd64.deb and /dev/null differ diff --git a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.3_amd64.deb b/apt/pool/main/c/canton-devkit/canton-devkit_0.16.3_amd64.deb deleted file mode 100644 index 565105eb..00000000 Binary files a/apt/pool/main/c/canton-devkit/canton-devkit_0.16.3_amd64.deb and /dev/null differ diff --git a/docs/changes-from-proposal.md b/docs/changes-from-proposal.md index 7341e7c2..3955bf0e 100644 --- a/docs/changes-from-proposal.md +++ b/docs/changes-from-proposal.md @@ -486,6 +486,16 @@ The embedded skill docs are the same artifacts that back the Web UI's Agent Skil - `telemetry flush` — send any buffered events immediately. - `telemetry reset-id` — generate a new anonymous ID. -Telemetry is **on by default** with opt-out via `DPM_TELEMETRY=off` or `DO_NOT_TRACK=1`. An internal hidden subcommand `_record-install-surface ` is used by install scripts to record the distribution channel. +Telemetry is **on by default** with opt-out via `DPM_TELEMETRY=off` or `DO_NOT_TRACK=1`. An internal hidden subcommand `_record-install-surface ` is available for install scripts / package-manager hooks to record the distribution channel. **Why:** Provides the adoption signals described in Milestone 4 (install counts, usage trends) in a privacy-preserving, opt-out model without requiring manual tracking. The opt-out via standard `DO_NOT_TRACK` honours widely adopted ecosystem conventions. Placing it at the root level (not under `localnet`) reflects that it is a tool-wide concern, not a LocalNet-specific one. + +--- + +## Packaging — Debian/APT removed + +**Proposal said:** not mentioned. + +**Shipped (historically):** tagged releases built a `.deb` package, published it as a GitHub Release asset, and maintained a static APT repository under `apt/` on this repository's `main` branch. + +**Current:** Debian/APT is no longer a supported install path. Linux users install via the release tarball, `install.sh`, or Homebrew. Historical `.deb` assets on past GitHub Releases remain available but are not produced for new releases. diff --git a/docs/getting-started.md b/docs/getting-started.md index 021bed58..673d4a76 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -7,8 +7,7 @@ LocalNet Docker stack. It ships two ways: Manager and invoke as `dpm localnet `. 2. **Standalone binary** (`canton-devkit`) — a self-contained executable for users who don't run DPM (CI, DevOps, workshop - facilitators), shipped as release archives plus APT convenience - packages for Debian/Ubuntu hosts. Invoke as + facilitators), shipped as release archives. Invoke as `canton-devkit localnet `. Both paths ship the **same binary** and expose the **same command @@ -142,56 +141,10 @@ the tap only hosts the Homebrew formula. > See the [Homebrew guide](homebrew.md) for the tap layout and how the > formula is kept in sync on each release. -### APT — Debian / Ubuntu (amd64) - -Tagged releases update a static APT repository under `apt/` on this -repository's `main` branch. Add it once, then install or upgrade with -normal APT: - -```bash -echo "deb [trusted=yes arch=amd64] https://raw.githubusercontent.com/bitdynamics-ab/canton-devkit/main/apt stable main" \ - | sudo tee /etc/apt/sources.list.d/canton-devkit.list -sudo apt update -sudo apt install canton-devkit -canton-devkit version -``` - -List available versions: - -```bash -apt list -a canton-devkit -apt policy canton-devkit -``` - -Install a specific version: - -```bash -sudo apt install canton-devkit=0.17.4 # pick a version from `apt list -a canton-devkit` -``` - -The APT repo is currently unsigned and therefore uses `trusted=yes`; -the release still publishes SHA-256 metadata. Repository signing has -not been added yet. Package installation records a best-effort anonymous `apt` -install-surface telemetry ping — see [Telemetry](telemetry.md) -for what is sent and how to opt out before installing. - -Direct `.deb` install also works: - -```bash -VERSION=v0.17.4 # replace with the latest release tag -DEB_VERSION="${VERSION#v}" -ASSET="canton-devkit_${DEB_VERSION}_amd64.deb" -base="https://github.com/bitdynamics-ab/canton-devkit/releases/download/${VERSION}" -curl -fLO "${base}/${ASSET}" -curl -fLO "${base}/SHA256SUMS" -grep " ${ASSET}\$" SHA256SUMS | sha256sum -c - || { echo "checksum mismatch"; exit 1; } -sudo apt install "./${ASSET}" -canton-devkit version -``` - -The Debian package installs `/usr/bin/canton-devkit`. It does not install -Docker; run `canton-devkit localnet doctor` after installation to verify -Docker CLI, Compose v2, ports, disk, memory, and host prerequisites. +> **Note:** the hosted APT repository and `.deb` packages are no longer +> maintained. If you previously added +> `/etc/apt/sources.list.d/canton-devkit.list`, remove that file and use +> the quick-install script, a release tarball, or Homebrew instead. ### Manual download — macOS (Apple Silicon) diff --git a/docs/homebrew.md b/docs/homebrew.md index 25c33045..45867f88 100644 --- a/docs/homebrew.md +++ b/docs/homebrew.md @@ -9,8 +9,8 @@ following the standard Homebrew tap layout. Release tarballs (and their the formula's `url` fields point here. This source repository does not keep a `Formula/` directory. The tap -holds only the Homebrew formula; APT metadata lives under `apt/` in this -repository, and the canonical `install.sh` lives at the repo root. +holds only the Homebrew formula; the canonical `install.sh` lives at the +repo root. ## Install diff --git a/docs/packaging.md b/docs/packaging.md index 436b7278..799762ac 100644 --- a/docs/packaging.md +++ b/docs/packaging.md @@ -4,12 +4,12 @@ 1. **DPM component** (primary) — installed via `dpm install package`. 2. **Standalone Go binary** (additional) — direct download / install. -3. **Package-manager convenience** — a hosted APT repo wraps the same - standalone Linux binary for Debian/Ubuntu workflows. +3. **Package-manager convenience** — a Homebrew tap wraps the same + standalone binary for macOS and Linux workflows. All release artifacts are produced by the same release workflow ([`.github/workflows/release.yml`](../.github/workflows/release.yml)) -from the same Go source. The DPM component and Debian package both wrap +from the same Go source. The DPM component and Homebrew formula both wrap the standalone binary for their respective ecosystems. ## Standalone binary @@ -22,12 +22,10 @@ GitHub Releases: | `canton-devkit__linux_amd64.tar.gz` | Linux x86_64 | | `canton-devkit__darwin_arm64.tar.gz` | macOS Apple Silicon | | `canton-devkit__windows_amd64.zip` | Windows x86_64 | -| `canton-devkit__amd64.deb` | Debian/Ubuntu x86_64 | | `SHA256SUMS` | GNU `sha256sum --check`-compatible manifest | -Each tarball/zip contains the binary, `LICENSE`, and `README.md`; the -Debian package installs the same binary plus docs under standard Linux -paths. Verify before unpacking/installing: +Each tarball/zip contains the binary, `LICENSE`, and `README.md`. Verify +before unpacking: ```sh sha256sum --check SHA256SUMS @@ -143,64 +141,6 @@ release workflow runs the same `--dry-run` validation on every run (tag pushes and manual dispatches); the real publish happens only on `v*` tags. -## Debian / APT package - -The release workflow builds a Debian package from the exact same -`linux/amd64` binary used in the standalone tarball and DPM component. -It publishes the `.deb` as a release asset and updates a static APT repo -under `apt/` on this repository's `main` branch: - -```sh -echo "deb [trusted=yes arch=amd64] https://raw.githubusercontent.com/bitdynamics-ab/canton-devkit/main/apt stable main" \ - | sudo tee /etc/apt/sources.list.d/canton-devkit.list -sudo apt update -sudo apt install canton-devkit -``` - -Available versions can be inspected with: - -```sh -apt list -a canton-devkit -apt policy canton-devkit -``` - -Direct artifact install remains available: - -```sh -sudo apt install ./canton-devkit_0.7.0_amd64.deb -canton-devkit version -``` - -The package installs: - -```text -/usr/bin/canton-devkit -/usr/share/doc/canton-devkit/LICENSE -/usr/share/doc/canton-devkit/README.md -``` - -It deliberately does **not** depend on or install Docker. DevKit's -runtime preflight remains `canton-devkit localnet doctor`, which checks -Docker CLI availability, daemon connectivity, Compose v2, ports, disk, -memory, and host-specific prerequisites. - -The Debian `postinst` script calls -`canton-devkit telemetry _record-install-surface apt` as a best-effort -hook. The binary owns opt-out precedence, local spooling, and uploader -timeouts, so package installation never fails if telemetry is disabled or -the collector is unreachable. - -The hosted repo is generated on every release by preserving all existing -`apt/pool/main/c/canton-devkit/*.deb` files in this repository, adding -the new version, and rewriting `Packages` and `Packages.gz` under -`apt/dists/stable/main/binary-amd64/` and the `Release` file at -`apt/dists/stable/`. - -**Known limitation:** the APT repo is unsigned and documented with -`trusted=yes`. The repository is backed by HTTPS and release checksums, -but a GPG-signed `InRelease` file and install instructions using -`signed-by=` are planned hardening steps. - ## Supply-chain integrity Today's integrity story is **SHA-256 checksums** (`SHA256SUMS`, verifiable diff --git a/docs/telemetry.md b/docs/telemetry.md index 1c49ba5a..65b9ea3a 100644 --- a/docs/telemetry.md +++ b/docs/telemetry.md @@ -17,15 +17,8 @@ canton-devkit telemetry preview ## On by default (opt-out) Telemetry is **on by default**. The first time you run an operational -command in an interactive terminal, a one-time notice explains this. The -Debian package also records a one-time `apt` install-surface ping during -package installation; because that path is non-interactive, opt out -**before** install if you do not want it. The package hook runs in the -root environment, and `sudo` strips exported shell variables by default, -so set the variable on the `sudo` command line itself: -`sudo DO_NOT_TRACK=1 apt install canton-devkit` (or -`sudo DPM_TELEMETRY=off apt install canton-devkit`). Turn telemetry off -any time — your choice persists: +command in an interactive terminal, a one-time notice explains this. +Turn telemetry off any time — your choice persists: ```bash canton-devkit telemetry off # disable (persists) @@ -48,7 +41,7 @@ bucket and nothing else: | Counter | Buckets | |---|---| | `dpm/install` | `linux` `darwin` `windows` — **once per machine** on the first non-CI run (a device-count proxy; no identifier) | -| `dpm/install_surface` | `apt` — **once per machine** when Debian/Ubuntu package installation finishes | +| `dpm/install_surface` | `apt` — **once per machine** when a package-manager install hook records the distribution surface | | `dpm/command` | the localnet verb (`up`, `down`, `dar`, `token`, …) | | `dpm/command_exit` | `/ok` or `/fail` | | `dpm/token_action` | the token subcommand (`create` `mint` `transfer` `burn` `balance` …) — CIP-0112 flow visibility | @@ -119,10 +112,11 @@ correlates only to itself (an install count) — never to your usage. - Counters accumulate in memory during a run and merge into the current day's local file (`/canton-devkit/telemetry/.json`) on exit. Recording never blocks or fails a command. -- The Debian package install hook uses the same spool/uploader path: it - records the install-surface counter locally first, then does a - best-effort flush so the install path is visible even if the user never - runs an operational command later. +- Package-manager install hooks can call the hidden + `telemetry _record-install-surface ` command. That path uses + the same spool/uploader: it records the install-surface counter + locally first, then does a best-effort flush so the install path is + visible even if the user never runs an operational command later. - A **completed** past period is uploaded once (a single POST), then its file is deleted. On the first upload failure the period is marked deferred and retried at the next window; after a second miss it is dropped. diff --git a/internal/telemetry/config.go b/internal/telemetry/config.go index b8bd9392..8a58c3a5 100644 --- a/internal/telemetry/config.go +++ b/internal/telemetry/config.go @@ -30,8 +30,8 @@ type consent struct { // one-per-install increment to dpm/install. A boolean, never an // identifier. InstallCounted bool `json:"install_counted,omitempty"` - // InstallSurfaceCounted marks which install surfaces (e.g. the APT - // postinst hook) already sent their once-per-host ping. + // InstallSurfaceCounted marks which install surfaces (e.g. a + // package-manager postinst hook) already sent their once-per-host ping. InstallSurfaceCounted map[string]bool `json:"install_surface_counted,omitempty"` // InstallID is the anonymous install-dedup token (see installid.go). // Empty until first minted. diff --git a/packaging/deb/postinst b/packaging/deb/postinst deleted file mode 100644 index b8b90940..00000000 --- a/packaging/deb/postinst +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -set -e - -case "$1" in - configure) - # Best-effort install-surface telemetry. The binary owns opt-out - # precedence (DO_NOT_TRACK / DPM_TELEMETRY), local spooling, and upload - # timeouts. Never fail package installation if telemetry is disabled or - # the collector is unavailable. - if command -v canton-devkit >/dev/null 2>&1; then - canton-devkit telemetry _record-install-surface apt >/dev/null 2>&1 || true - fi - ;; -esac - -exit 0 diff --git a/website/docs-map.mjs b/website/docs-map.mjs index 35b576ab..cb8a68a3 100644 --- a/website/docs-map.mjs +++ b/website/docs-map.mjs @@ -24,7 +24,7 @@ export const docsMap = [ { src: 'homebrew.md', dest: 'guides/homebrew', description: 'Install canton-devkit via the Homebrew tap or direct formula, and how the formula is kept in sync on every release.' }, { src: 'faq.md', dest: 'reference/faq', description: 'Common questions about canton-devkit: what it is, how the CLI and Web UI relate, versions, and day-to-day usage.' }, { src: 'versions.md', dest: 'reference/versions', description: 'How DevKit pins tested Splice LocalNet versions by commit SHA and content hash, discovers upstream tags, and resolves uncurated versions on opt-in.' }, - { src: 'packaging.md', dest: 'reference/packaging', description: 'How canton-devkit ships — standalone binaries, the DPM component, the Debian/APT package — and the current supply-chain integrity story.' }, + { src: 'packaging.md', dest: 'reference/packaging', description: 'How canton-devkit ships — standalone binaries, the DPM component, and the Homebrew tap — and the current supply-chain integrity story.' }, { src: 'telemetry.md', dest: 'reference/telemetry', description: "The complete reference for canton-devkit's anonymous, aggregate usage counters — what is collected, what is never collected, and how to inspect or disable it." }, { src: 'limitations.md', dest: 'reference/limitations', description: 'Things DevKit does not (yet) do well, with the rationale and workarounds where applicable.' }, { src: 'troubleshooting.md', dest: 'reference/troubleshooting', description: 'Failure modes and fixes for LocalNet bring-up, ports, V2 token instances, credentials, and snapshots.' }, diff --git a/website/src/content/docs/index.mdx b/website/src/content/docs/index.mdx index 6db1980c..852abc20 100644 --- a/website/src/content/docs/index.mdx +++ b/website/src/content/docs/index.mdx @@ -18,7 +18,7 @@ recommended) and 10 GB of free disk — see the Follow [Installation & Getting Started](getting-started/) — it covers the DPM component, the quick-install script, standalone binaries for -macOS/Linux/Windows, Homebrew, APT, and `go install`, plus the Docker +macOS/Linux/Windows, Homebrew, and `go install`, plus the Docker prerequisites and a zero-to-running walkthrough. ```sh