Skip to content

DLPX-99519 don't Depend on linux-main-modules packages we don't build - #420

Merged
prakashsurya merged 1 commit into
developfrom
projects/dlpx-99519
Oct 7, 2026
Merged

prakashsurya merged 1 commit into
developfrom
projects/dlpx-99519

Conversation

@prakashsurya

@prakashsurya prakashsurya commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor
Problem

Since linux-kernel-generic's develop was rebased onto Ubuntu-hwe-7.0-7.0.0-38.38~24.04.4 (Oct 3), appliance-build can't install the generic kernel (esx and kvm variants); e.g.

The following packages have unmet dependencies:
 linux-modules-7.0.0-38-dx2026100318-665d2c289-generic : Depends: linux-main-modules-zfs-7.0.0-38-dx2026100318-665d2c289-generic but it is not installable
                                                         Depends: linux-main-modules-v4l2loopback-7.0.0-38-dx2026100318-665d2c289-generic but it is not installable
E: Unable to correct problems, you have held broken packages.

That Ubuntu release converts linux-hwe-7.0 to "linux-main-modules" (lmm, LP: #2165131), and with do_lmm = true, the generated debian/control makes linux-modules Depend on linux-main-modules-zfs-* and linux-main-modules-v4l2loopback-*. Those packages are built from separate Ubuntu source packages, against Ubuntu's kernel ABI, so nothing our kernel build produces (or that is in our package mirror) can satisfy them. We don't use either module (we ship our own zfs).

Every linux-kernel-generic PR is blocked on this too, since the pre-push esx variant hits the same error.

Solution

The solution taken here, is to strip every linux-main-modules-* entry from the Depends: lines of debian/control in kernel_build(), right after debian/rules clean generates it, and fail the build if any linux-main-modules reference is left. Nothing after clean regenerates debian/control (only clean and the maintainer-only finalchecks target depend on it; updateconfigs and binary don't), so the edit carries through to the built packages. This is a no-op for kernels that haven't switched to lmm yet (aws, azure, gcp, oracle).

This replaces https://www.github.com/delphix/linux-kernel-generic/pull/61, which did the same filtering in the kernel's debian/scripts/control-create. Doing it here, means all of our kernels are covered as they switch to lmm, without carrying (and cherry-picking) a patch in each kernel repo that linux-pkg's auto-update then has to re-apply onto every new Ubuntu tag.

Building with do_lmm=false isn't an option, since dkms-versions was removed in the same Ubuntu release, and control-create reads it when do_lmm is false.

Testing Done

In linux-kernel-generic develop (665d2c2891c7), ran debian/rules clean with the same arguments kernel_build() passes (flavours=generic, a Delphix abinum, etc.), then the new sed and check, against the debian/control that clean wrote:

# before
Depends: ${misc:Depends}, ${shlibs:Depends}, linux-main-modules-zfs-7.0.0-38-dx2026100618-665d2c289-generic [amd64 arm64 ppc64el s390x], linux-main-modules-v4l2loopback-7.0.0-38-dx2026100618-665d2c289-generic [amd64], wireless-regdb
Depends: ${misc:Depends}, ${shlibs:Depends}, linux-main-modules-zfs-7.0.0-38-dx2026100618-665d2c289-generic-64k [arm64], wireless-regdb

# after
Depends: ${misc:Depends}, ${shlibs:Depends}, wireless-regdb
Depends: ${misc:Depends}, ${shlibs:Depends}, wireless-regdb

The check passes on the result, and fails when a linux-main-modules reference is left in the file.

ab-pre-push, rebuilding linux-kernel-generic with this change, for aws and esx: https://selfservice-jenkins.eng-tools-prd.aws.delphixcloud.com/job/appliance-build-orchestrator-pre-push/15282/

The sed and check ran in the real kernel build (build-package/linux-kernel-generic #147), and appliance-build #7618 passed for all variants, including the esx ones that couldn't install the kernel before. The run then failed importing into DCenter, before any tests ran; both import jobs died loading pipeline-shared with No space left on device on the Jenkins controller's /tmp (the controller is offline for low disk space, and every import job since 00:49 UTC has failed the same way). Rerun: https://selfservice-jenkins.eng-tools-prd.aws.delphixcloud.com/job/appliance-build-orchestrator-pre-push/15289/

appliance-build #7623 passed again for all variants (incl. esx), and the AWS import passed, but the ESX import (sync-ova-into-dcenter) failed with AttributeError: module 'pkgutil' has no attribute 'ImpImporter' (an old pip in a Python 3.12 venv on dcol1). That job has failed the same way on every run since at least 09-28, and the kvm import (ibm-snapshots) is failing too, so there's no way to get an esx/kvm run through import and tests right now.

aws-only run (the default pre-push config), still rebuilding linux-kernel-generic with this change, to get through import and tests (in progress): https://selfservice-jenkins.eng-tools-prd.aws.delphixcloud.com/job/appliance-build-orchestrator-pre-push/15303/

🤖 Generated with Claude Code

Ubuntu-hwe-7.0-7.0.0-38.38~24.04.4 converts linux-hwe-7.0 to "linux main
modules" (lmm, LP: #2165131), which makes linux-modules Depend on
linux-main-modules-zfs and linux-main-modules-v4l2loopback. Those
packages are built from separate Ubuntu source packages against Ubuntu's
kernel ABI, so nothing in our package mirror satisfies them, and
appliance-build can't install the generic kernel. We use neither module
(we ship our own zfs).

Strip every linux-main-modules-* entry from the Depends lines of the
generated debian/control in kernel_build(), right after "debian/rules
clean" writes it, and fail the build if any reference is left. Nothing
after clean regenerates debian/control, so the edit carries through to
the built packages. Doing this in linux-pkg covers all of our kernels as
they switch to lmm, without carrying a patch in each kernel repo that
linux-pkg's auto-update would have to re-apply onto every new Ubuntu tag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@prakashsurya

Copy link
Copy Markdown
Contributor Author

Landing this without a fully passing ab-pre-push run; none of the runs got through import and tests, but each failure was in infra after appliance-build, and appliance-build itself passed for the esx variants that are failing in post-push.

For reference, the ops appliance-build/develop/post-push job (e.g. #4771) fails on the 4 generic-kernel variants (internal-dev/internal-qa x esx/kvm), all with the same error installing the kernel; e.g.

linux-modules-7.0.0-38-dx2026100318-665d2c289-generic : Depends: linux-main-modules-zfs-7.0.0-38-dx2026100318-665d2c289-generic but it is not installable

ab-pre-push runs with this change (all rebuild linux-kernel-generic with this linux-pkg):

run platforms appliance-build result
#15282 aws esx #7618 SUCCESS (all variants) FAILURE: both DCenter import jobs failed with No space left on device on the selfservice controller's /tmp
#15289 aws esx #7623 SUCCESS (all variants) FAILURE: AWS import passed, ESX import (sync-ova-into-dcenter #8178) failed with AttributeError: module 'pkgutil' has no attribute 'ImpImporter'
#15303 aws in progress in progress

In #15289, the internal-dev-esx build (appliance-build-stage1 #65780) installed linux-image-7.0.0-38-dx2026100704-665d2c289-generic and linux-modules-7.0.0-38-dx2026100704-665d2c289-generic with no unmet dependencies, i.e. it gets past the point where post-push fails. That's the same linux-kernel-generic commit post-push builds (665d2c289), only packaged with this change.

The ESX import failure isn't specific to this change; sync-ova-into-dcenter has failed the same way on every run since at least 09-28 (old pip in a Python 3.12 venv on dcol1), and the kvm import (ibm-snapshots) is failing too, so there's currently no way to get an esx or kvm run through import and tests. Also, kvm wasn't built in any of these runs, but it installs the same generic linux-modules package as esx.

@prakashsurya
prakashsurya merged commit 8884b96 into develop Oct 7, 2026
20 checks passed
@prakashsurya
prakashsurya deleted the projects/dlpx-99519 branch October 7, 2026 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants