Repository navigation
Linux tarballs for Ubuntu 20.04, CentOS 7, AlmaLinux 8 and release/packages.json - #64
KonradBreitsprecherBkd wants to merge 4 commits into
Conversation
|
Reproducibility checked locally: the el8 tarball was built twice, in separate containers and at different times, from sil-kit Both builds used the same mount path, so the path mapping was not exercised. |
SilKitTGZ builds SIL Kit with cmake/ctest like the deb (RelWithDebInfo, SILKIT_BUILD_LINUX_PACKAGE=ON, lib/ as libdir) and packs two archives: - libsilkit-<version>.<platform>.x86_64.tar.gz with bin/, lib/ (cmake config), include/, man pages, the registry systemd unit and share/doc/libsilkit/ (CHANGELOG.md of the version, LICENSE, README.rst) - libsilkit-<version>.<platform>.x86_64.debug.tar.gz with the split debug info under lib/debug/.build-id/ (dwz, objcopy --only-keep-debug, gnu-debuglink) Platforms: ubuntu2004 (gcc), el7 (devtoolset-11), el8 (gcc-toolset-12). The archives are reproducible: SOURCE_DATE_EPOCH (default: commit time of the sil-kit sources) for all mtimes, sorted entries, root ownership, normalized modes, no name or time in the gzip header, -ffile-prefix-map for the build paths. Packed with Python tarfile, GNU tar 1.26 on el7 lacks --sort. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dpkg 1.19 on Ubuntu 20.04 does not enable reproducible=+fixfilepath by default. Also use the real option name SILKIT_INSTALL_SOURCE. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release/packages.json is the single source of truth for the Linux packages: every target names its build image, format, platform, test image, whether it is released and its asset globs. Released are the Ubuntu 20.04 debs (with the dbgsym ddeb and buildinfo) and the tarballs plus debug tarballs for Ubuntu 20.04, CentOS 7 and AlmaLinux 8; the arm64 deb and the el9 rpm are built but not released. package-silkit.yml is rewritten around it: - inputs silkit_ref (pinned sha or tag), pkg_sha, expected_version (checked against debian/changelog, rpm spec and the sil-kit sources), correlation_id (run name); maintainer defaults to debian/control - builds with docker run on the host, the actions do not run in CentOS 7 - tests every package in a plain distribution container (tests/run_package_test.sh, test_deb.py learned --package-format tgz) - uploads the artifact sil-kit-pkg (30 days) with all assets, pkg-manifest.json (sil-kit sha and submodules, pkg sha, image digests, sha256 and size per file) and SHA256 - no release job: sil-kit-delivery publishes the released assets to the vectorgrp/sil-kit and vectorgrp/sil-kit-pkg releases rebuild-check.yml builds everything twice and compares the sha256 of all files, with a diffoscope report on differences. The legacy .github/actions (debian:sid docker action) is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45bc081 to
9fe95d8
Compare
snps-fiodorov
left a comment
There was a problem hiding this comment.
Could you please add a release for Alma 8 on Arm?
I didn't go through the details as I trust it all works and I see it's even tested in containers.
The only suggestion is to use the SilKit-5.0.8-ubuntu-22.04-x86_64-gcc.zip naming schema for tarballs, because they also contain the utils, not just the silkit library.
This is not relevant for me, but out of curiosity, why do we need ubuntu 20.04 as it's not supported by Ubuntu?
@snps-fiodorov (FYI @MarkusMhg ) |
That's even better. Then I can add the Alma on Arm in a subsequent PR. What do you think about my package naming suggestion? |
(FYI @MariusBgm)
The .deb packages are build on 20.04 because binaries built against its older glibc also run on newer releases. So the debs work on 20.04, 22.04, 24.04 and Debian. To have a symmetric tarball, I uesd 20.04. |
sounds good |
The tarballs contain more than the library (registry, utilities, headers, CMake config), so the lib prefix is misleading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds relocatable tarballs for Ubuntu 20.04, CentOS 7 and AlmaLinux 8 with separate debug tarballs. It also introduces
release/packages.jsonas the single definition of the Linux packages and rewrites the packaging workflow around it. Part 2 of 3; it is based on #62 (containers) and has to be merged after it.release/packages.json
Every target names its build image, format, platform, a plain test image,
releaseand its asset globs.ubuntu-20.04-x86_64-deblibsilkit5,libsilkit-dev,silkit-utilsdebs,libsilkit5-dbgsymddeb,.buildinfoubuntu-20.04-x86_64-tgzlibsilkit-<ver>.ubuntu2004.x86_64.tar.gz+.debug.tar.gzcentos-7-x86_64-tgzlibsilkit-<ver>.el7.x86_64.tar.gz+.debug.tar.gzalma-8-x86_64-tgzlibsilkit-<ver>.el8.x86_64.tar.gz+.debug.tar.gzubuntu-22.04-aarch64-deb,alma-9-x86_64-rpmrelease: falsesil-kit-delivery publishes the assets of the released targets to the releases of vectorgrp/sil-kit and this repository (sil-kit-delivery#161, internal). The
make-releasejob is removed. The deb is then built once instead of twice; today the 5.0.8 deb has a different sha256 here than on vectorgrp/sil-kit.Tarballs (
scripts/silkit_tgz.py,pkgformat: tgz)Built with cmake/ctest like the deb: RelWithDebInfo,
SILKIT_BUILD_LINUX_PACKAGE=ON,lib/.bin/,lib/(withcmake/SilKit),include/, man pages,share/sil-kit/sil-kit-registry.serviceandshare/doc/libsilkit/. That doc directory holdsCHANGELOG.md(the release notes of the version from sil-kitdocs/changelog/versions/),LICENSEandREADME.rst. The tarball is relocatable: the CMake config is relocatable and the utilities use$ORIGINRPATHs.lib/debug/.build-id/xx/yyyy.debug, produced withdwzandobjcopy --only-keep-debug, plus a gnu-debuglink. Use it in gdb withset debug-file-directory.SOURCE_DATE_EPOCHis the sil-kit commit time.-ffile-prefix-mapmaps the build paths away;debian/rulesgetsreproducible=+fixfilepath.Workflow (
package-silkit.yml)silkit_ref: a pinned sha or tag.pkg_sha: the run fails if the dispatched ref is at another commit.expected_version: checked againstdebian/changelog, the rpm spec and the sil-kit sources.correlation_id: shown in the run name.debian/control(this also fixesDEBEMAILbeing set from the name).targets→package(matrix) →test(matrix, in the plaintest_imageviatests/run_package_test.sh) →collect.docker runinstead of a job container, because the actions (node 20) do not run inside CentOS 7.sil-kit-pkg, kept 30 days:pkg-manifest.jsonwith the sil-kit sha and submodules, the pkg sha, the image digests, and sha256/size/release per fileSHA256rebuild-check.yml(weekly or by dispatch) builds everything twice and compares the sha256 of all files. On a difference it attaches a diffoscope report.The legacy
.github/actions(debian:sid docker action) is removed.Tested locally
Tested with podman, with the images from #62 and sil-kit
v5.0.8. Each build was followed by the test in the plain distribution image: the package installs or extracts,find_package(SilKit)works, the registry starts and the test participant connects.centos:7almalinux:8The debug tarballs are bigger than the clang-built ddeb, because gcc writes more DWARF. Almost all of it is
libSilKit.so. The arm64 deb, the el9 rpm and the workflows themselves can only be tested by CI.After merging #62
The images are referenced as
:main. After #62 has published them, pin them by digest inrelease/packages.json(the digests are in the summary of the Build Images run). After that, run the workflow once manually withsilkit_ref=v5.0.8.🤖 Generated with Claude Code