sneak preview: uv, Click, Rich, tui; flavors#65
Draft
rpardini wants to merge 121 commits intotinkerbell:mainfrom
Draft
sneak preview: uv, Click, Rich, tui; flavors#65rpardini wants to merge 121 commits intotinkerbell:mainfrom
rpardini wants to merge 121 commits intotinkerbell:mainfrom
Conversation
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- .editorconfig for shell scripts and shell templates Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…tools tree across invocations Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- this will allow using a generic/distro kernel instead of building one Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- hack until it uses the mkosi-supplied kernel for everything - artifacts: look for mkosi-supplied vmlinuz first Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- self-built kernel from source will come back at a later stage, as a .deb package Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- just do everything at once Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…racut/initramfs-tools) Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- also: show info about modules and full rootfs Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- later to be reborn as standard apt package Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- mkosi.finalize: clean up logging a bit - mkosi.postinst: debugs Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
gha: fix Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
gha: pass DEFAULT_FLAVOR_ID as KERNEL_VERSION for publish-combined - retry Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- `--flavor-id` Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
but logging sucks and no dataclass better, logging still sucks for Full -> Common much better in-package this sucks less cosmetics some static and template rendering and hardcoded cleanup kinda-works kinda works Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
… tree Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- add gha builds for `trixie-slim` flavors (using captainos-kernel) - we've two kinds of build-captainos jobs: - ones that depend on kernel-build (trixie-slim) - ones that don't (all the others) - use YAML anchor trick to avoid duplicating 95% of code (envs: and steps: are defined only once) - matrix and needs (dependencies) are the only difference - artifact download is common but conditional on matrix values Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- so it is the one included in the combined images - this does not change the CLI defaults, ofc - for trixie-slim, combined should depend on `build-captainos-with-kernel` - better names for matrix jobs Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- (Docker) builder will end up being built multiple times for PR workflows, but such is life - it's also too huge for GHA artifact or GHA cache - don't push any captainos artifacts either (simple or combined) - also: only push those when building `main` branch Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- arm64 qemu requires OVMF/AAVMF firmware (edk2) via a pflash
- use `q35` machine type for amd64 (it is still not a default)
- add kvm (Linux) and hvf (Darwin) acceleration if present and matching host/target arch
- add `systemd.journald.forward_to_console=1` as default prefix kernel cmdline
- remove `audit=0` as cmdline prefix default
- run with eg `uv run captain --verbose --arch=amd64 --flavor-id=trixie-slim qemu -- tink_worker_image=... <...>`
- extra args after `--` are passed directly as kernel cmdline
- maybe restore option/env parsing with Click later (kept TODO'ed `_TINK_PARAMS`) for ergonomics
- qemu: more systemd logging in default kernel cmdline
- helps debug waiting issues etc - but is very verbose
- qemu: run x86 also under OVMF (UEFI), not BIOS emulation
- this more accurately emulates real environment
- real EFI implementation, with efivars etc
- unify accel handling (accel only when host arch matches target arch)
- but then it's the same across arches: hcf for Apple, kvm for Linux
- refactor find_ovmf_firmware() as it's common
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…utput when cache missed - that way any changes to defconfig or kernel-building logic should force a new build - on new builds, clean up old artifacts so caches are kept clean (eg: GHA's) Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…th trixie-slim and trixie-full) - so we've two combined images now, and no longer a default one Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- seems like timesyncd is interrupted by networking changes constantly during bootup - each change triggers a retry timeout, which is 30s by default Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- `include_apt()`: if true, includes a working apt install - `include_hwdb()`: if true, leaves hwdb data in - move `acpid` package to common_acpi flavor - also always include `curl`, `pciutils`, `pv` Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- via `uv run captain --arch amd64 kernel --config`, then pick `CONFIG_BE2NET` Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- from tinkerbell#64 Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- flavor can produce a hash of contents - incl static + templated files - does NOT include extratrees or packagedirs yet (kernel/tools) - does NOT clean up leftovers yet Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- deterministic tar for dtb layer too - use epoch as `created` date, so manifests also hit Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- `tools` and `kernel` are really inputs to mkosi, not outputs Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- `tools` and `kernel` are really inputs to mkosi, not outputs Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- BaseFlavor:
- `list_arch_artifacts()` handles vmlinuz, initramfs, and iso directly
- delegates to overridable `add_arch_dtb_artifacts()`
- defaults to including dtbs for aarch64
- but not for trixie-slim (to keep it, well, "slim")
- introduce artifacts.py `OutputArchArtifactType` and `OutputArchArtifact`
- just to type-enforce
- `_collect_arch_artifacts()` is dead, long live `_checksum_files()`
- rework logic in `oci._publish()`
- this is to prepare for extra per-flavor assets, eg "rpi eeprom firmware" for rpi flavor
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…_artifact_collect() - for custom stuff done after initramfs build / after artifact collection (mkosi.output/... -> out/) Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…(), post_artifact_collect() for ready-to-go RPi firmware in `firmware-rpi` dir - this is targetting (eeprom-based) RPi Netboot (without u-boot) Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- with mixes Path from pathlib and os.path for non-subpaths Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- refactor to use util.symlink_relative() Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
9bc72aa to
1227a6f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
sneak preview: uv, Click, Rich, tui; flavors
in-docker:prefixdtbmkosi.outputfolder intoout/--flavor-idDpkg::Use-Pty "0";to mkosi sandbox tree--tls-verify=falseregistry:2for testing pushesclick_cliuv run captain ...obtain_builderclickpackagescommon-debian > common-acpi > trixie-fullcommon-debian > common-acpi > trixie-mainlinehas_iso()as TrueConfig::verbose_uvfrom --verbose/Logging.DEBUG; use --quiet otherwiseshutil.get_terminal_sizeto obtain and pass-down-Docker COLUMNSutil.run()if --verbosetrixie-rockchip64-vendorandtrixie-armbian-rpiflavorstrixie-armbian-rpistrays from standard naming as I think we might need to build our own kernel for RPi to achieve small-enough-for-eeprom-netboot eventuallyrun()'s env vars in a Rich Tablerun_in_builder()with bothcommand_and_argsandextra_docker_argscfg.verbose_dockerfor setting envCAPTAIN_VERBOSE=1when relaunching--verbosesets root level as well as current logger to DEBUGshellsubcommandmake bindeb-pkginto a .deb outputpackage_directories()for mkosi'sPackageDirectories=make bindeb-pkgto work cross-archstages(nee_stages) modulebuild_kernel_stage()trixie-slimflavor, using captainos kernel--configfor round-trip menuconfig / savedefconfiguv run captain --verbose --arch amd64 kernel --configCONFIG_MODULE_COMPRESS_ZSTD=yCONFIG_MODULE_COMPRESS_ZSTD=ytrixie-slimflavors (using captainos-kernel)trixie-slimthe default flavorbuild-captainos-with-kernelmainbranchqemucli, with extra support for arm64 & UEFI/OVMFq35machine type for amd64 (it is still not a default)systemd.journald.forward_to_console=1as default prefix kernel cmdlineaudit=0as cmdline prefix defaultuv run captain --verbose --arch=amd64 --flavor-id=trixie-slim qemu -- tink_worker_image=... <...>--are passed directly as kernel cmdline_TINK_PARAMS) for ergonomicsDEFAULT_FLAVOR_ID; make publish-combined a matrix (for both trixie-slim and trixie-full)include_apt(): if true, includes a working apt installinclude_hwdb(): if true, leaves hwdb data inacpidpackage to common_acpi flavorcurl,pciutils,pvtrixie-geniofor Armbian's linux-image-edge-geniouv run captain --arch amd64 kernel --config, then pickCONFIG_BE2NET--loadtodocker buildx buildnativemode (avoid pulling builder for cache hits)createddate, so manifests also hittoolsandkernelare really inputs to mkosi, not outputstoolsandkernelare really inputs to mkosi, not outputslist_arch_artifacts()handles vmlinuz, initramfs, and iso directlyadd_arch_dtb_artifacts()OutputArchArtifactTypeandOutputArchArtifact_collect_arch_artifacts()is dead, long live_checksum_files()oci._publish()firmware-rpidir