Skip to content

Conversation

@chewi
Copy link
Contributor

@chewi chewi commented Dec 15, 2025

Simplify kernel directory logic and rework hv-daemons

Having too many variables is confusing, so use the ones already provided by upstream. linux-info.eclass uses KERNEL_DIR (if set) as the kernel sources directory and sets KV_DIR to that for use elsewhere. If KERNEL_DIR is unset, it checks the /usr/src/linux symlink. While we could rely on the symlink, we want to be sure that coreos-modules and coreos-kernel are built against the matching kernel version.

KV_OUT_DIR is the kernel output directory. It is automatically set by linux-info.eclass, and it will never leave it empty.

I'd like to follow up these changes with a rename of sys-kernel/coreos-* to flatcar, but I'll do that in a separate step.

hv-daemons essentially a standalone userspace project that happens to live within the kernel sources. It should not be built like the kernel.

How to use

Nothing to use. These are purely build changes.

Testing done

I have built an image manually. Jenkins CI entirely passed with a run that included azure.

  • Changelog entries added in the respective changelog/ directory (user-facing change, bug fix, security fix, update) -- N/A
  • Inspected CI output for image differences: /boot and /usr size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc.

@chewi chewi self-assigned this Dec 15, 2025
@chewi chewi requested a review from a team as a code owner December 15, 2025 10:13
@github-actions
Copy link

Test report for 4547.0.0+nightly-20251212-2100 / amd64 arm64

Platforms tested : qemu_uefi-amd64 qemu_update-amd64 qemu_uefi-arm64 qemu_update-arm64

ok bpf.execsnoop 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok bpf.local-gadget 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.basic 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.cloudinit.basic 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.cloudinit.multipart-mime 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.cloudinit.script 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.disk.raid0.data 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.disk.raid0.root 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.disk.raid1.data 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.disk.raid1.root 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.etcd-member.discovery 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.etcd-member.etcdctlv3 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.etcd-member.v2-backup-restore 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.filesystem 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.flannel.udp 🟢 Succeeded: qemu_uefi-amd64 (1)

ok cl.flannel.vxlan 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.instantiated.enable-unit 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.kargs 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.luks 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.oem.indirect 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.oem.indirect.new 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.oem.regular 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.oem.regular.new 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.oem.reuse 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.oem.wipe 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.partition_on_boot_disk 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.symlink 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.translation 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.btrfsroot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.ext4root 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.groups 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.once 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.sethostname 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.users 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v1.xfsroot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2.btrfsroot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2.ext4root 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2.users 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2.xfsroot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2_1.ext4checkexisting 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2_1.swap 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.ignition.v2_1.vfat 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.install.cloudinit 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.internet 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.locksmith.cluster 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.network.initramfs.second-boot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.network.iptables 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.network.listeners 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.network.nftables 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.network.wireguard 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.omaha.ping 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.osreset.ignition-rerun 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.overlay.cleanup 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.swap_activation 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.sysext.boot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.sysext.fallbackdownload # SKIP 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tang.nonroot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tang.root 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.toolbox.dnf-install 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tpm.eventlog 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tpm.nonroot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tpm.root 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tpm.root-cryptenroll 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tpm.root-cryptenroll-pcr-noupdate 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.tpm.root-cryptenroll-pcr-withupdate 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.update.badverity 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.update.payload 🟢 Succeeded: qemu_update-amd64 (1); qemu_update-arm64 (1)

ok cl.update.payload-boot-part-too-small 🟢 Succeeded: qemu_update-amd64 (1); qemu_update-arm64 (1)

ok cl.update.reboot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.users.shells 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok cl.verity 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.auth.verify 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.groups 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.once 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.resource.local 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.resource.remote 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.resource.s3.versioned 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.security.tls 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.sethostname 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.ignition.systemd.enable-service 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.locksmith.reboot 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.locksmith.tls 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.selinux.boolean 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.selinux.enforce 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.tls.fetch-urls 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok coreos.update.badusr 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok devcontainer.docker 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok devcontainer.systemd-nspawn 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.btrfs-storage 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.containerd-restart 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.enable-service.sysext 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.lib-coreos-dockerd-compat 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.network-openbsd-nc 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.selinux 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok docker.userns 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok extra-test.[first_dual].cl.update.docker-btrfs-compat 🟢 Succeeded: qemu_update-amd64 (1, 2, 3, 4, 5); qemu_update-arm64 (1, 2, 3, 4, 5)

not ok extra-test.[first_dual].cl.update.oem ❌ Failed: qemu_update-amd64 (1, 2, 3, 4, 5); qemu_update-arm64 (1, 2, 3, 4, 5)

                Diagnostic output for qemu_update-arm64, run 5
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-amd64, run 5
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-arm64, run 4
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-amd64, run 4
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-arm64, run 3
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-amd64, run 3
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-arm64, run 2
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-amd64, run 2
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-arm64, run 1
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "
                Diagnostic output for qemu_update-amd64, run 1
    L1: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L2: "update.go:428: Triggering update_engine"
    L3: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L4: " "
    L5: " Error: _cluster.go:125: Created symlink /etc/systemd/system/locksmithd.service ??? /dev/null."
    L6: "update.go:428: Triggering update_engine"
    L7: "update.go:444: waiting for UPDATE_STATUS_UPDATED_NEED_REBOOT: time limit exceeded_"
    L8: " "

ok extra-test.[first_dual].cl.update.payload 🟢 Succeeded: qemu_update-amd64 (1, 2, 3, 4, 5); qemu_update-arm64 (1, 2, 3, 4, 5)

ok extra-test.[first_dual].cl.update.payload-boot-part-too-small 🟢 Succeeded: qemu_update-amd64 (1, 2, 3, 4, 5); qemu_update-arm64 (1, 2, 3, 4, 5)

ok kubeadm.v1.32.4.calico.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.32.4.cilium.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.32.4.flannel.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.33.0.calico.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.33.0.cilium.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.33.0.flannel.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.34.1.calico.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.34.1.cilium.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok kubeadm.v1.34.1.flannel.base 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok linux.nfs.v3 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok linux.nfs.v4 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok linux.ntp 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok misc.fips 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok packages 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok sysext.custom-docker.sysext 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok sysext.custom-oem 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok sysext.disable-containerd 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok sysext.disable-docker 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok sysext.simple 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok systemd.journal.remote 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok systemd.journal.user 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

ok systemd.sysusers.gshadow 🟢 Succeeded: qemu_uefi-amd64 (1); qemu_uefi-arm64 (1)

Copy link
Contributor

@ader1990 ader1990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested locally with AMD64 Hyper-V both generations, everything working as expected (vss and kvp daemons). Networking data is also present in the Hyper-V Manager.

Having too many variables is confusing, so use the ones already provided
by upstream. linux-info.eclass uses KERNEL_DIR (if set) as the kernel
sources directory and sets KV_DIR to that for use elsewhere. If
KERNEL_DIR is unset, it checks the /usr/src/linux symlink. While we
could rely on the symlink, we want to be sure that coreos-modules and
coreos-kernel are built against the matching kernel version.

KV_OUT_DIR is the kernel output directory. It is automatically set by
linux-info.eclass, and it will never leave it empty.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
It doesn't make any sense because there is no 9999 version of coreos-sources.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
It's essentially a standalone userspace project that happens to live
within the kernel sources. It should not be built like the kernel.

hv_fcopy_daemon was dropped upstream.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
The hv-daemons package has been adjusted instead.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
It's unnecessary and looks weird.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
@chewi chewi merged commit 2814ccc into main Dec 16, 2025
1 of 5 checks passed
@chewi chewi deleted the chewi/kernel-dir branch December 16, 2025 13:52
@tormath1
Copy link
Contributor

Thanks for this PR, I think it needs a follow-up item to update the automation here:

if [[ -d app-emulation/hv-daemons ]]; then
# Update hyperv daemons ebuild soft-link to reflect new kernel version
find -D exec app-emulation/hv-daemons/ -type l -exec rm '{}' \;
ln --relative -s app-emulation/hv-daemons/hv-daemons-9999.ebuild \
app-emulation/hv-daemons/hv-daemons-${VERSION_NEW}.ebuild
extra_pkgs+=( app-emulation/hv-daemons )
fi

This currently breaks the CI: #3589

Should we just copy the "previous" ebuild to the "new" ebuild?

@chewi
Copy link
Contributor Author

chewi commented Dec 22, 2025

Am I right in thinking the GHA job is kicked off from main but kernel-apply-patch.sh is run from each branch?

@tormath1
Copy link
Contributor

Am I right in thinking the GHA job is kicked off from main but kernel-apply-patch.sh is run from each branch?

Yes, I think as it fails on main only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants