oxidecomputer/opte

OPTE depends on a specific kernel build and some specific library versions

Opened this issue · 1 comments

When new versions of OPTE are built, the dependency resolution machinery produces something that looks like this

set name=pkg.fmri value=pkg://helios-dev/driver/network/opte@0.31.260,5.11:20240527T135745Z
set name=pkg.summary value="The Oxide Packet Transformation Engine"
set name=info.classification value=org.opensolaris.category.2008:Drivers/Networking
set name=variant.opensolaris.zone value=global value=nonglobal
set name=variant.arch value=i386
set name=variant.debug.illumos value=false value=true
dir group=sys mode=0755 owner=root path=opt variant.opensolaris.zone=global
dir group=bin mode=0755 owner=root path=opt/oxide variant.opensolaris.zone=global
dir group=bin mode=0755 owner=root path=opt/oxide/opte variant.opensolaris.zone=global
dir group=bin mode=0755 owner=root path=opt/oxide/opte/bin variant.opensolaris.zone=global
file e03f654881a5cbe04e1e913c8981a3eac9e525b2 chash=797426fa745eb941446b991e8369cbefd6c63035 elfarch=i386 elfbits=64 elfhash=15e6ea46d23ebfefc446c017d4437c6fe35af504 group=bin mode=0755 owner=root path=opt/oxide/opte/bin/opteadm pkg.content-hash=gelf:sha512t_256:f044aeed5d18b15a9d7e340f2a6510c2a24fa1025b11cc66cf4282080f3d302f pkg.content-hash=gelf.unsigned:sha512t_256:f044aeed5d18b15a9d7e340f2a6510c2a24fa1025b11cc66cf4282080f3d302f pkg.content-hash=file:sha512t_256:4bf296643566e8a3cd45f3dba39165e34e8da19f767abece30b4e6cf1aa1677f pkg.content-hash=gzip:sha512t_256:d76ded5db10d65e66367388683d6c5515b5f4430bfe0209335be5d6942e36d37 pkg.csize=10665355 pkg.size=44779432 variant.debug.illumos=false variant.opensolaris.zone=global
file b047b687eddb973af58f29988f5270413f676bed chash=46c5b737081ca8b13840e4a2f561db20ff674d21 elfarch=i386 elfbits=64 elfhash=8293d1d192455508856c80c8a829e009d9e89052 group=bin mode=0755 owner=root path=opt/oxide/opte/bin/opteadm pkg.content-hash=gelf:sha512t_256:417f2632a0d6987fa89f84cc224d560feebf95a80dfe7d28fd090b5487d92dd1 pkg.content-hash=gelf.unsigned:sha512t_256:417f2632a0d6987fa89f84cc224d560feebf95a80dfe7d28fd090b5487d92dd1 pkg.content-hash=file:sha512t_256:c0d358cefbccd6cad358314f69607440aca9a2e447f2068de6ca1d3740ee8058 pkg.content-hash=gzip:sha512t_256:70a8991731b804131cbe1f1c668e2baf5a065555dd9e1de512ba07b5192a4f17 pkg.csize=16171067 pkg.size=62436752 variant.debug.illumos=true variant.opensolaris.zone=global
dir group=sys mode=0755 owner=root path=kernel variant.opensolaris.zone=global
dir group=sys mode=0755 owner=root path=kernel/drv variant.opensolaris.zone=global
file 5c6a4c2e521576279a002a2a8c6d78464041f72f chash=91d7e3fb9117bd3e7b252ea1fd6e2f2613b6fa79 group=sys mode=0644 owner=root path=kernel/drv/xde.conf pkg.content-hash=file:sha512t_256:eeee1e17f7f9b07e4eff69e3dedfed2ba5a68100844ca53d7db830bcfdc13878 pkg.content-hash=gzip:sha512t_256:4f6c9b4b365d5f18a87c645c16f3c1d591a542fdde5c398e18bd4c465bf2b042 pkg.csize=92 pkg.size=79 preserve=renamenew variant.opensolaris.zone=global
dir group=sys mode=0755 owner=root path=usr/lib/devfsadm variant.opensolaris.zone=global
dir group=sys mode=0755 owner=root path=usr/lib/devfsadm/linkmod variant.opensolaris.zone=global
file f7fa879215456c19102a7825ba375b1daa8f7825 chash=c66d9324e30139e1f89c14f1e01ac2ff273d7a18 elfarch=i386 elfbits=32 elfhash=d76830ed6ae3eec854dce14ee301736f780d696d group=sys mode=0755 owner=root path=usr/lib/devfsadm/linkmod/SUNW_xde_link.so pkg.content-hash=gelf:sha512t_256:49949e8593a45efe05286a13c2df437f78d98dc933b1b46b6e6808a6d91fbf36 pkg.content-hash=gelf.unsigned:sha512t_256:49949e8593a45efe05286a13c2df437f78d98dc933b1b46b6e6808a6d91fbf36 pkg.content-hash=file:sha512t_256:927ee75b6958a54104094d110b7457bc08838b9c113bebe81315e05cfb07c37c pkg.content-hash=gzip:sha512t_256:b8179a2f4c273c4e48edd5d9ea378159b653caa2346b5c3f09cb91587dccd532 pkg.csize=4958 pkg.size=12760 variant.opensolaris.zone=global
file c19d4c9caec51b08e0d211e6838bfa16fbcf2000 chash=e4a76fd2d9c5429e55b5c70b20d41045502ba639 elfarch=i386 elfbits=64 elfhash=f04eab21616c962877ec475cf1d00b03f3b33b43 group=sys mode=0755 owner=root path=kernel/drv/amd64/xde pkg.content-hash=gelf:sha512t_256:6f20b6d7b02be7950ef12378ca3ce4df5f3c393643b33f5afc570a43b5ca4d4d pkg.content-hash=gelf.unsigned:sha512t_256:6f20b6d7b02be7950ef12378ca3ce4df5f3c393643b33f5afc570a43b5ca4d4d pkg.content-hash=file:sha512t_256:cb71db2ce81cd055425952529bf5e2c4b3d6e0793498ad20ede1595b41f8c76f pkg.content-hash=gzip:sha512t_256:dc8e000ef72db7529104795315007da58eaeb5378cd18226d85873847ef4d8c4 pkg.csize=9260520 pkg.size=56962840 variant.debug.illumos=false variant.opensolaris.zone=global
file e9589a0803547ed45efcc2cdf0d0c0054fb7fe08 chash=49641083f8aedd03934d0d918bf2b314b4fdaab4 elfarch=i386 elfbits=64 elfhash=3f5d1c6f4cbf071a0dca9fa4abdaef086a8b8c94 group=sys mode=0755 owner=root path=kernel/drv/amd64/xde pkg.content-hash=gelf:sha512t_256:a26e03877b7561bb29bb333c36bc80c713fd2736938aa3b7c0e863f062a6f51a pkg.content-hash=gelf.unsigned:sha512t_256:a26e03877b7561bb29bb333c36bc80c713fd2736938aa3b7c0e863f062a6f51a pkg.content-hash=file:sha512t_256:c080594cffa55fd0851faf0c709ca4070dfc2e55d583170f596628e323715b1a pkg.content-hash=gzip:sha512t_256:03aa069ca3c0eeb7ec76fd0b8801ad20be97e13657efb9e5e407d26852be213d pkg.csize=9712755 pkg.size=55951864 variant.debug.illumos=true variant.opensolaris.zone=global
driver name=xde
depend fmri=pkg:/system/kernel@0.5.11-2.0.22656 type=require variant.opensolaris.zone=global
depend fmri=pkg:/system/library/gcc-runtime@13-2.0 type=require variant.opensolaris.zone=global
depend fmri=pkg:/system/library/math@0.5.11-2.0.22656 type=require variant.debug.illumos=true variant.opensolaris.zone=global
depend fmri=pkg:/system/library@0.5.11-2.0.22656 type=require variant.opensolaris.zone=global

The depend clauses with 0.5.11-2.0.22656 are problematic, as they pin the package to that exact version or newer. So if the build machine producing this package is newer than the environments folks are running OPTE in package installs will fail - even if the the changes in the kerkel or these libraries do not matter at an interface level.

The above text was grabbed from the p5p file from a recent CI run here.

The library dependencies are definitely going to be harder to relax, depending on what's being built to link against them. The easiest way to improve the situation is going to be building on an older OS image. The second best is probably to essentially cross compile against (and then resolve dependencies using) an older system image made available in an alternate root.