From 688a7893ffb38b6127f9136232dd605430dc662b Mon Sep 17 00:00:00 2001 From: User Date: Mon, 9 Feb 2026 16:17:40 +0000 Subject: [PATCH] Build system fixes for PR merge compatibility - Makefile: add 'make clean' target to remove build artifacts (debs, cpio, locks, BUILD dirs, rootfs) without touching source. Re-seeds REPO from sm/build-artifacts after cleaning. Add .PHONY declarations, ONL ?= $(CURDIR) fallback so clean works without sourcing setup.env. Fix "interative" typo. - docker/tools/onlbuilder: Python 3 migration (shebang, print(), except as, == comparison). Add Debian 12 bookworm builder, set as default. Remove obsolete wheezy builder. - make/kbuild.mk: run olddefconfig before build to silently resolve any new kernel config options with defaults, preventing interactive prompts that hang automated builds. - 5.4 kernel config: explicitly set CONFIG_TRUSTED_KEYS to not set. Without this, enabling CONFIG_TCG_TPM=m (from platform PRs) leaves TRUSTED_KEYS undefined, causing an interactive prompt. --- Makefile | 34 ++++++++++++++++--- .../jessie/common/all-base-packages.yml | 6 ++++ .../stretch/common/all-base-packages.yml | 13 ++++--- docker/tools/onlbuilder | 16 ++++----- make/kbuild.mk | 1 + .../configs/x86_64-all/x86_64-all.config | 1 + packages/base/any/kernels/modules/ym2651y.c | 4 ++- packages/base/any/onlp-snmpd/builds/Makefile | 2 +- .../x86_64_accton_as9516_32d/module/make.mk | 2 ++ tools/mkinstaller.py | 4 +-- 10 files changed, 62 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 6973f19a29..ac8217d117 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,15 @@ # Work in progress. # ############################################################ +# ONL defaults to repo root when setup.env hasn't been sourced (for clean/modclean) +ONL ?= $(CURDIR) + +.PHONY: all rebuild modclean clean docker docker-debug docker_check versions relclean + ifneq ($(MAKECMDGOALS),docker) ifneq ($(MAKECMDGOALS),docker-debug) +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(MAKECMDGOALS),modclean) ifndef ONL $(error Please source the setup.env script at the root of the ONL tree) @@ -36,14 +43,31 @@ all: $(BUILD_ARCHES_$(ONL_DEBIAN_SUITE)) rebuild: $(ONLPM) --rebuild-pkg-cache +endif +endif +endif +endif modclean: rm -rf $(ONL)/make/modules/modules.* -endif -endif - -.PHONY: docker +clean: modclean + @echo "Cleaning ONL build artifacts..." + rm -rf $(ONL)/RELEASE + rm -rf $(ONL)/.pkg-cache + find $(ONL)/REPO -mindepth 2 ! -name "Makefile" ! -name ".gitignore" -delete 2>/dev/null || true + cp -R $(ONL)/sm/build-artifacts/REPO/* $(ONL)/REPO 2>/dev/null || true + find $(ONL)/packages -name "*.deb" -delete 2>/dev/null || true + find $(ONL)/packages -name "*.cpio.gz" -delete 2>/dev/null || true + find $(ONL)/packages -name ".lock" -delete 2>/dev/null || true + find $(ONL)/packages -name "manifest.json" -delete 2>/dev/null || true + find $(ONL)/packages -type d -name "BUILD" -exec rm -rf {} + 2>/dev/null || true + find $(ONL)/packages -type d -name "rootfs-*" -exec sudo rm -rf {} + 2>/dev/null || true + find $(ONL)/builds -name "*.deb" -delete 2>/dev/null || true + find $(ONL)/builds -name "*.cpio.gz" -delete 2>/dev/null || true + find $(ONL)/builds -name ".lock" -delete 2>/dev/null || true + find $(ONL)/builds -type d -name "rootfs-*" -exec sudo rm -rf {} + 2>/dev/null || true + @echo "Clean complete!" ifndef VERSION VERSION := 9 @@ -55,7 +79,7 @@ docker_check: docker: docker_check @docker/tools/onlbuilder -$(VERSION) --isolate --hostname onlbuilder$(VERSION) --pull --autobuild --non-interactive -# create an interative docker shell, for debugging builds +# create an interactive docker shell, for debugging builds docker-debug: docker_check @docker/tools/onlbuilder -$(VERSION) --isolate --hostname onlbuilder$(VERSION) --pull diff --git a/builds/any/rootfs/jessie/common/all-base-packages.yml b/builds/any/rootfs/jessie/common/all-base-packages.yml index bbeab6b4d1..2f5961febb 100644 --- a/builds/any/rootfs/jessie/common/all-base-packages.yml +++ b/builds/any/rootfs/jessie/common/all-base-packages.yml @@ -81,3 +81,9 @@ - sysstat - ipmitool - lm-sensors +- curl +- autoconf +- libtool +- libc6-dev +- g++ +- git diff --git a/builds/any/rootfs/stretch/common/all-base-packages.yml b/builds/any/rootfs/stretch/common/all-base-packages.yml index e518d6ea39..723b0e5f30 100644 --- a/builds/any/rootfs/stretch/common/all-base-packages.yml +++ b/builds/any/rootfs/stretch/common/all-base-packages.yml @@ -16,7 +16,7 @@ - less - sudo - openssh-server -- iproute +- iproute2 - resolvconf - vim-tiny - zile @@ -24,7 +24,6 @@ - lsof - mingetty - traceroute -- realpath - rsyslog - nfs-common - netbase @@ -53,7 +52,6 @@ - cpio - util-linux - dosfstools -- rssh - u-boot-tools - ntpdate - onlp @@ -63,7 +61,7 @@ - binutils - file - smartmontools -- realpath +- coreutils - iptables - onl-faultd - onlp-snmpd @@ -88,3 +86,10 @@ - tree - memtester - ipmitool +- curl +- libcurl3-nss +- autoconf +- libtool +- libc6-dev +- g++ +- git diff --git a/docker/tools/onlbuilder b/docker/tools/onlbuilder index eec651df71..2a8eb5f2e3 100755 --- a/docker/tools/onlbuilder +++ b/docker/tools/onlbuilder @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/python3 import os import sys @@ -18,12 +18,12 @@ g_current_uid = os.getuid() g_timestamp = datetime.datetime.now().strftime("%Y-%m-%d.%H%M%S") g_builders = { - 'default' : 8, + 'default' : 12, 'builders' : { - 7 : ('wheezy', 'opennetworklinux/builder7:1.2'), 8 : ('jessie', 'opennetworklinux/builder8:1.11'), 9 : ('stretch', 'dentproject/builder9:1.8' ), - 10 : ('buster', 'opennetworklinux/builder10:1.2'), + 10 : ('buster', 'opennetworklinux/builder10:1.2'), + 12 : ('bookworm', 'opennetworklinux/builder12:1.0'), }, } @@ -126,10 +126,10 @@ logger.debug('arguments: %s\n' % vars(ops)) if ops.pull: try: - print "Pulling %s..." % ops.image + print("Pulling %s..." % ops.image) x = subprocess.check_output(('docker', 'pull', ops.image), stderr=subprocess.STDOUT) - print "done." - except subprocess.CalledProcessError, e: + print("done.") + except subprocess.CalledProcessError as e: sys.stderr.write("** Failed to pull the docker image %s (%d):\n\n%s\n" % (ops.image, e.returncode, e.output)) sys.exit(1) @@ -174,7 +174,7 @@ else: g_docker_arguments = "docker run --privileged %(interactive)s -t -e DOCKER_IMAGE=%(image)s --name %(name)s %(ssh_options)s %(volume_options)s " % g_arg_d if ops.isolate is not None: - if len(ops.isolate) is 0: + if len(ops.isolate) == 0: ops.isolate.append(os.getcwd()) isolates = [ os.path.abspath(i) for i in ops.isolate ] diff --git a/make/kbuild.mk b/make/kbuild.mk index 9873b4fc02..61d0c85ebd 100644 --- a/make/kbuild.mk +++ b/make/kbuild.mk @@ -159,6 +159,7 @@ K_MAKE := $(MAKE) -C $(K_SOURCE_DIR) # Build the kernel. # build: setup + +$(K_MAKE) olddefconfig +$(K_MAKE) $(K_BUILD_TARGET) +$(K_MAKE) modules +$(K_MAKE) modules_install INSTALL_MOD_PATH=$(K_INSTALL_MOD_PATH) diff --git a/packages/base/any/kernels/5.4-lts/configs/x86_64-all/x86_64-all.config b/packages/base/any/kernels/5.4-lts/configs/x86_64-all/x86_64-all.config index 08480880c6..92705c2aef 100644 --- a/packages/base/any/kernels/5.4-lts/configs/x86_64-all/x86_64-all.config +++ b/packages/base/any/kernels/5.4-lts/configs/x86_64-all/x86_64-all.config @@ -4282,6 +4282,7 @@ CONFIG_KEYS_COMPAT=y # CONFIG_KEYS_REQUEST_CACHE is not set # CONFIG_PERSISTENT_KEYRINGS is not set # CONFIG_BIG_KEYS is not set +# CONFIG_TRUSTED_KEYS is not set # CONFIG_ENCRYPTED_KEYS is not set # CONFIG_KEY_DH_OPERATIONS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set diff --git a/packages/base/any/kernels/modules/ym2651y.c b/packages/base/any/kernels/modules/ym2651y.c index d85e84541c..46efbf245c 100755 --- a/packages/base/any/kernels/modules/ym2651y.c +++ b/packages/base/any/kernels/modules/ym2651y.c @@ -518,7 +518,9 @@ static ssize_t show_vout(struct device *dev, struct device_attribute *da, return show_vout_by_mode(dev, da, buf); } else if ((strncmp(ptr, "DPS-850A", strlen("DPS-850A")) == 0)|| - (strncmp(ptr, "YM-2851J", strlen("YM-2851J")) == 0)) { + (strncmp(ptr, "YM-2851J", strlen("YM-2851J")) == 0) || + (strncmp(ptr, "UPD1501SA-1190G", strlen("UPD1501SA-1190G")) == 0) || + (strncmp(ptr, "UPD1501SA-1290G", strlen("UPD1501SA-1290G")) == 0)) { return show_vout_by_mode(dev, da, buf); } else { diff --git a/packages/base/any/onlp-snmpd/builds/Makefile b/packages/base/any/onlp-snmpd/builds/Makefile index c33629f639..bd15cbc73b 100644 --- a/packages/base/any/onlp-snmpd/builds/Makefile +++ b/packages/base/any/onlp-snmpd/builds/Makefile @@ -26,7 +26,7 @@ GLOBAL_CFLAGS += -g $(eval $(call onlpm_find_file,LIBONLP,onlp:$(ARCH),libonlp.so)) -GLOBAL_LINK_LIBS += -lpthread $(LIBONLP) +GLOBAL_LINK_LIBS += -lm -lpthread $(LIBONLP) GLOBAL_LINK_LIBS += -Wl,--unresolved-symbols=ignore-in-shared-libs .DEFAULT_GOAL := onlp-snmpd diff --git a/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/make.mk b/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/make.mk index 486a1d9f57..7960792a23 100644 --- a/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/make.mk +++ b/packages/platforms/accton/x86-64/as9516-32d/onlp/builds/x86_64_accton_as9516_32d/module/make.mk @@ -7,3 +7,5 @@ THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST))) x86_64_accton_as9516_32d_INCLUDES := -I $(THIS_DIR)inc x86_64_accton_as9516_32d_INTERNAL_INCLUDES := -I $(THIS_DIR)src x86_64_accton_as9516_32d_DEPENDMODULE_ENTRIES := init:x86_64_accton_as9516_32d ucli:x86_64_accton_as9516_32d + +GLOBAL_LINK_LIBS += -lcurl diff --git a/tools/mkinstaller.py b/tools/mkinstaller.py index d54c805f4a..25c1f9f1b1 100755 --- a/tools/mkinstaller.py +++ b/tools/mkinstaller.py @@ -182,8 +182,8 @@ def build(self, name): ap.add_argument("--initrd", nargs=2, help="The system initrd.") ap.add_argument("--fit", nargs=2, help="The system FIT image.") ap.add_argument("--boot-config", help="The boot-config source.") - ap.add_argument("--add-file", help="Add the given file to the installer package.", nargs='+', default=[]) - ap.add_argument("--add-dir", help="Optional directory to include in the installer.", nargs='+', default=[]) + ap.add_argument("--add-file", help="Add the given file to the installer package.", action='append', default=[]) + ap.add_argument("--add-dir", help="Optional directory to include in the installer.", action='append', default=[]) ap.add_argument("--swi", help="Include the given SWI in the installer.") ap.add_argument("--work-dir", help="Set work directory and keep intermediates for debugging.") ap.add_argument("--verbose", '-v', help="Verbose output.", action='store_true')