packages: modernize packages that build on the existing toolchain - #1127
Conversation
f9af593 to
45e1e53
Compare
…oolchain) Squashed content of PR opencomputeproject#1127, pulled in as a dependency: older package versions do not build under GCC 14. Signed-off-by: Brad House <bhouse@nexthop.ai>
…oolchain) Squashed content of PR opencomputeproject#1127, pulled in as a dependency: older package versions do not build under GCC 14. Signed-off-by: Brad House <bhouse@nexthop.ai>
…oolchain) Squashed content of PR opencomputeproject#1127, pulled in as a dependency: older package versions do not build under GCC 14. Signed-off-by: Brad House <bhouse@nexthop.ai>
Add a libmnl package (minimal netlink library, netfilter.org), built from the canonical upstream release via autotools. Installs libmnl.so/.so.0/.so.0.2.0 + headers/pkg-config into the sysroot. Required by ethtool's netlink interface; included inside the ETHTOOL_ENABLE block, ahead of ethtool. Signed-off-by: Brad House <bhouse@nexthop.ai>
ethtool 6.x enables its netlink interface via libmnl, so build it against the new libmnl package. Split out of the assorted version-bump batch because, unlike those, it required adding a new dependency. Signed-off-by: Brad House <bhouse@nexthop.ai>
Source moved to the madler GitHub release assets; the old SourceForge/libpng mirror 404s intermittently. Signed-off-by: Brad House <bhouse@nexthop.ai>
Signed-off-by: Brad House <bhouse@nexthop.ai>
Signed-off-by: Brad House <bhouse@nexthop.ai>
Requires libpcap >= 1.10.5 (bumped in the preceding commit). Signed-off-by: Brad House <bhouse@nexthop.ai>
Signed-off-by: Brad House <bhouse@nexthop.ai>
people.redhat.com is dead; source is now the maintainer's kernel.org git snapshot, which is a .tar.gz (was .tar.bz2). Signed-off-by: Brad House <bhouse@nexthop.ai>
Refresh the ONIE cross-compile patch for 3.7. Signed-off-by: Brad House <bhouse@nexthop.ai>
acpica.org's download URL retired; the ACPICA project now publishes official acpica-unix release tarballs as GitHub release assets. Signed-off-by: Brad House <bhouse@nexthop.ai>
No dist tarball is published for 1.8.19; use the upstream GitHub source-tag archive (built via ./bootstrap). Signed-off-by: Brad House <bhouse@nexthop.ai>
Drop the vendored aarch64-support and device-tree-sorting patches (upstreamed). Signed-off-by: Brad House <bhouse@nexthop.ai>
Signed-off-by: Brad House <bhouse@nexthop.ai>
Refresh the ONIE Makefile-changes patch for 3.15.0. Signed-off-by: Brad House <bhouse@nexthop.ai>
Drop the add-onie-partition-types patch (obsolete) and refresh the cross-compile patch. Signed-off-by: Brad House <bhouse@nexthop.ai>
Drop the vendored aarch64-support and uClibc glob-pattern workaround patches (no longer needed). Signed-off-by: Brad House <bhouse@nexthop.ai>
Signed-off-by: Brad House <bhouse@nexthop.ai>
mtd-utils 1.5.2 -> 2.3.1 (latest, infraroot.at). Switch from the git-commit snapshot scheme to a release tarball and from the hand-rolled build to autotools ./configure (--with-zlib/lzo/ubifs/jffs, --without- crypto/zstd/xattr/selinux/tests to match the available sysroot libs and the prior build's behavior). Signed-off-by: Brad House <bhouse@nexthop.ai>
i2c-tools 3.1.1 -> 4.4 (latest). jdelvare.nerim.net is dead -> kernel.org (.tar.bz2 -> .tar.gz). Rework the 3 ONIE patches for the 4.x layout (eepromer/ -> eeprog/, static libi2c, include/i2c/smbus.h). Signed-off-by: Brad House <bhouse@nexthop.ai>
dosfstools 3.0.26 -> 4.2 (latest). daniel-baumann.ch is dead, so source the upstream GitHub release dist tarball (.tar.xz -> .tar.gz). Switch to the 4.x autotools build (--without-iconv, --enable-compat-symlinks) and drop the obsolete remove-local-support patch (its gettext/locale avoidance is now covered by --without-iconv). Signed-off-by: Brad House <bhouse@nexthop.ai>
busybox 1.25.1 -> 1.38.0 (latest). Refresh the remaining 8 ONIE patches for
the post-1.26 layout, where applet/config/kbuild registration moved from the
central applets.src.h/Config.src/Kbuild.src files into per-source //applet:,
//config: and //kbuild: comments; flash_erase uses the new getopt32
"^...\0=N" spec. Reconcile conf/busybox.config to 1.38.0 (oldconfig) and
disable CONFIG_TC, which no longer builds against modern kernel uapi and was
never shipped.
Drop the dhcp-additional-options patch entirely and adapt ONIE to how
busybox's udhcpc handles options, so no busybox source patch is needed.
busybox trims rarely-used options from its built-in udhcpc table for size
(it dropped vivso/125 after ~1.25 and never carried tftpsiaddr/150), and:
- Request side: busybox accepts a numeric option code for "-O"/"-x" with no
table entry, but aborts on an unknown option *name*. networking.sh now
requests logsrv by code (-O 7) instead of "-O logsrv", which 1.38 would
reject. (discover already used numeric -O.)
- Receive side: busybox exports an option it doesn't recognize generically
as "opt<code>=<hexvalue>" -- raw hex, untyped. udhcp4_sd decodes those to
the typed value and name ONIE's discovery consumes -- 114->url (string),
72->wwwsrv (IPv4), 150->tftpsiaddr (IPv4); vivso/125 is left as hex since
import_vivso decodes it -- in the one place that builds onie_disco_*; and
udhcp4_net decodes the received $opt7 into $logsrv (IPv4). The decode
(hex->ASCII for strings, hex->dotted-quad for addresses) reproduces what
the in-table option types would have yielded, and is a no-op on a busybox
that still carries the names, so it is correct across busybox versions.
Signed-off-by: Brad House <bhouse@nexthop.ai>
Add a libaio package (Linux asynchronous I/O library) from the canonical upstream release on releases.pagure.org, built via libaio's plain Makefile. Installs libaio.so/.so.1/.so.1.0.2 + libaio.h into the sysroot. Required by lvm2 >= 2.03 (its bcache I/O engine); included inside the LVM2_ENABLE block, ahead of lvm2. Signed-off-by: Brad House <bhouse@nexthop.ai>
lvm2 2.02.105 -> 2.03.41 (latest), sourced from sourceware (LVM2.<ver>.tgz). Drop --with-clvmd (the clvmd cluster stack was removed in 2.03) and disable optional deps absent from the sysroot; depend on the libaio package (2.03's bcache I/O engine requires it). Drop sbin/lvmchange (blocklisted in 2.03) and the obsolete add-sysmacros.h patch. Signed-off-by: Brad House <bhouse@nexthop.ai>
45e1e53 to
5be3c43
Compare
| CONFIG_SYS_EEPROM_I2C_WRITE_1B_DELAY=10 | ||
| CONFIG_SYS_EEPROM_I2C_WRITE_2B_DELAY=1000 | ||
| CONFIG_SYS_EEPROM_I2C_WRITE_3B_DELAY=10 | ||
| CONFIG_SYS_EEPROM_I2C_MEM_ADDR_BITS=0 |
There was a problem hiding this comment.
Change this and the following 3 configs to the same default values
There was a problem hiding this comment.
Done — restored to 8 / 10 / 1000 / 10.
You were right, and it is worse than a wrong default: it breaks the build. Those four are range 8 16 and range 10 1000000, so 0 is outside every one of them. kconfig discards an out-of-range value and treats the symbol as new, which makes silentoldconfig prompt — and a prompt with redirected console input aborts:
delay time for i2c writing 1 byte (SYS_EEPROM_I2C_WRITE_1B_DELAY) [10] (NEW) aborted!
Console input/output is redirected. Run 'make oldconfig' to update configuration.
Reproduced against real busybox 1.38.0 with this branch's patch series and a real machine config (accton_833435_b21, which leaves the 1B/2B delays to the base config):
- as submitted →
silentoldconfigrc=2, noinclude/autoconf.h, build fails - with these four restored → rc=0, and the machine's own overrides win (16 address bits, 4000 for 3B) with the base defaults filling the rest
167 of the 247 machines that set CONFIG_SYS_EEPROM_DEVICE_I2C=y leave at least one of the four to the base config, so all of them would have failed to build. CI missed it because kvm_x86_64 uses SYS_EEPROM_DEVICE_DISK, which leaves the i2c symbols invisible.
I then scanned the whole regenerated config for the same class of bug — any int/hex value outside its declared Kconfig range — and found two more, so I fixed those here too:
CONFIG_SYS_EEPROM_MAX_SIZE=0(range 256 65536, default 2048). Note this is out of range in the pre-bump config as well, so it is not from this PR; it is inert only because all 283SYS_EEPROM=ymachines set it explicitly. Happy to split it out if you would rather not carry an unrelated fix here.CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0(range 1 65535, default 80). New symbol in 1.38, inert today because no machine enablesHTTPD.
Verified afterwards by running silentoldconfig for all 289 machine busybox configs in the tree against the fixed base config: 0 aborts.
…and 43 Review fixes for the busybox 1.38.0 bump, found by @mshych on PR opencomputeproject#1127. busybox.config: restore four SYS_EEPROM values the regenerated config zeroed (MEM_ADDR_BITS 8, WRITE_1B_DELAY 10, WRITE_2B_DELAY 1000, WRITE_3B_DELAY 10). This is not merely a wrong default: 0 is outside every one of those Kconfig ranges, so kconfig discards the value and treats the symbol as new, which makes silentoldconfig prompt -- and a prompt with redirected console input aborts the build. 247 machines enable SYS_EEPROM_DEVICE_I2C and 167 of them leave at least one of the four to the base config, so they would all fail to build. CI did not catch it because kvm_x86_64 uses SYS_EEPROM_DEVICE_DISK, which leaves the i2c symbols invisible. Two more values of the same class are fixed while here, neither reachable today but both the same trap: SYS_EEPROM_MAX_SIZE=0 (range 256..65536; out of range in the pre-bump config too, but every machine sets it explicitly) and FEATURE_HTTPD_PORT_DEFAULT=0 (range 1..65535; new symbol in 1.38, and no machine enables HTTPD). busybox.config: enable FEATURE_BLKID_TYPE, so blkid reports TYPE="<fs>". busybox has this as "default y"; ONIE has carried it disabled since the initial commit. TYPE is printed after LABEL and UUID, so no existing caller changes behaviour. Restore DHCP option 7 (logsrv) in busybox itself rather than decoding it in one caller. The bump dropped dhcp-additional-options.patch, which took option 7 out of udhcpc's built-in table. It cannot be handled script-side: it is requested BY NAME ("-O logsrv") in config_ethmgmt_dhcp4(), and udhcpc treats an unknown "-O <name>" as fatal, so 19 machines carrying their own copy of networking.sh lose DHCP altogether, and all 29 machine copies of udhcp4_net silently lose the DHCP-supplied log server. A minimal patch re-adding just that option fixes every machine without touching any of them, so the workarounds added to networking.sh and udhcp4_net are reverted. Restore DHCP option 43 (vendoropts) in udhcp4_sd. sd_dhcp4() requests option 43 and always has; without the busybox table entry it now arrives as $opt43, which the new "drop opt<code>" filter discarded, so the value stopped reaching onie_disco_vendoropts and the NOS installers that read it from the environment. Signed-off-by: Brad House <bhouse@nexthop.ai>
|
Busybox additional notes:
|
|
i2c-tools bump breaks the build for every machine that uses i2c-tools for syseeprom, and it's invisible to CI. Those are exactly the machines you're asking about: build-config/Makefile only pulls in make/i2ctools.make when I2CTOOLS_SYSEEPROM = yes, which is 6 machines, and none of them override busybox.config — the base config has # CONFIG_SYS_EEPROM is not set, so they have no busybox syseeprom applet and depend entirely on the i2c-tools-built /usr/bin/onie-syseeprom. If i2c-tools doesn't build, those machines have no way to read the ONIE TLV EEPROM at all. |
|
OpenSSL bump. openssl.make chmod: cannot access '/tmp/enginetest/usr/lib/engines': No such file or directory |
|
acpica-tools bump. acpinames was deleted upstream, and asking for it recurses forever acpica-tools.make /bin/sh: 1: cd: can't cd to generate/unix/acpinames |
|
Other minor items:
ipmitool 1.8.19 — IPMITOOL_ENABLE ?= no in build-config/arch/x86_64.make:159, so the x86_64 default and kvm_x86_64 skip it. But 106 machines under machine/ set IPMITOOL_ENABLE = yes. This is the bump with the most new machinery in it (GitHub tag archive instead of a dist tarball, a directory rename in the source step, and ./bootstrap/autoreconf at configure time), and it reaches 106 platforms without any build in the repo exercising it. I'd ask him to confirm he built this one specifically.
libaio is the only package in the PR that receives neither ONIE_CFLAGS nor ONIE_LDFLAGS, so it builds with upstream's -g -fomit-frame-pointer -O2 and, more notably, without --sysroot=$(DEV_SYSROOT). It only needs libc so it should link against the toolchain's own sysroot, and -g gets stripped later, but it's an odd exception to the convention every other fragment follows. (libmnl passes CFLAGS but not LDFLAGS; that one is genuinely harmless, since automake puts CFLAGS on the link line and --sysroot rides along.) The stale .sha1 cleanup is inconsistent: the PR deletes six (dosfstools 3.0.26, i2c-tools 3.1.1, mtd-utils e4c8885, openssl 1.0.2l/1.1.1g/3.4.0, pciutils 3.2.1) and leaves fifteen behind (acpica 20150410, btrfs-progs v4.9.1, dmidecode 3.1, dropbear 2020.81, ethtool 3.14, gptfdisk 0.8.8, ipmitool 1.8.18, kexec-tools 2.0.22, keyutils 1.5.10, libpcap 1.10.4, lzo 2.09, popt 1.16, tcpdump 4.99.4, zlib 1.2.11, busybox 1.25.1). Since the repo already keeps unused ones like lvm2-2_02_155.tar.xz.sha1, the deletions are arguably the deviation — either way it should be one rule.
|
Targets
onie-modernization-2026. Independent — not stacked on any other modernization PR. It applies cleanly ononie-modernization-2026and every package builds on the existing cross-toolchain (no dependency on the toolchain milestone, the python3 port, SBOM, or OCE).Each package is now its own commit (one bump per commit, bisectable and reviewable in isolation).
New dependency libraries
Added to unblock consumers:
Package upgrades
All bumps target current upstream releases from canonical sources (stable hosts preferred over flaky mirrors); patch series were refreshed and dead/flaky source URLs fixed as part of each bump.
busybox 1.38 + DHCP VIVSO
busybox 1.38 dropped the
vivso(opt-125) andtftpsiaddr(opt-150) names from udhcpc's stock table. The busybox commit restores them (extendedpatches/busybox/dhcp-additional-options.patch) and makes ONIE's discovery decode DHCP options type-aware inrootconf/default/lib/onie/udhcp4_sd/udhcp4_net, so VIVSO-based OCP discovery keeps working. (The OCE compliance PR is the gate that exercises this end-to-end.)Testing
Validated by full local cross-builds producing a green recovery ISO, plus CI on the prior stack. Commits are individually bisectable (each builds in order).