Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

native: force-enable audio/GPIO/pinctrl configs via scripts/config

Every audio-fix build has been shipping kernels where PINCTRL_JASPERLAKE,
IKCONFIG, and other critical symbols were silently dropped during
`make olddefconfig`, even though config-minimal explicitly set them to
=y. The G7 diagnostic dump confirmed: /proc/config.gz didn't exist
(IKCONFIG_PROC missing), only gpiochip0 was registered (no JSL pinctrl),
and the MAX98360A amp bound but couldn't get its SD_MODE GPIO handle.

Root cause: config-minimal was derived from a slightly different kernel
version's Kconfig tree, so some symbols' dependency chains resolve
differently under the container's 6.19.9 build. olddefconfig's silent-drop
behavior hid the mismatch. Fix is to bypass olddefconfig entirely for
the critical audio path: use `scripts/config --enable` (which writes the
symbol directly) for every config we actually need, then run
olddefconfig to clean up any dep-selected auto-additions.

Added a post-check that `grep`s the final .config for six canary symbols
(GPIOLIB, PINCTRL_INTEL, PINCTRL_JASPERLAKE, I2C_DESIGNWARE_PCI,
SND_SOC_INTEL_SOF_RT5682_MACH, SND_SOC_MAX98357A) and fails the build
loudly if any are missing — better to catch it at kernel-build time
than discover it from a silent speaker on the target device.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+49
+49
fedac/native/docker-build.sh
··· 776 776 scripts/config --disable DRM_CIRRUS_QEMU 777 777 scripts/config --disable DRM_VIRTIO_GPU 778 778 scripts/config --enable DRM_SIMPLEDRM 779 + 780 + # CRITICAL: force-enable audio/GPIO/pinctrl configs that olddefconfig 781 + # has been silently dropping on the oven (cause: upstream Fedora kernel 782 + # ships a newer/older Kconfig tree than what config-minimal was authored 783 + # against, so dependency resolution differs between dev environment and 784 + # the container's make olddefconfig run). Using scripts/config --enable 785 + # writes the symbol directly, bypassing olddefconfig's mutation pass, and 786 + # the final `make olddefconfig` below cleans up any dep auto-selects 787 + # (GPIOLIB, PINMUX, etc. — tristate symbols selected by our --enable'd 788 + # ones come along automatically). 789 + log " Force-enabling audio + GPIO + pinctrl configs..." 790 + for sym in \ 791 + IKCONFIG IKCONFIG_PROC \ 792 + GPIOLIB GPIOLIB_IRQCHIP GPIO_ACPI GPIO_SYSFS \ 793 + PINCTRL PINCTRL_INTEL \ 794 + PINCTRL_BAYTRAIL PINCTRL_CHERRYVIEW PINCTRL_SUNRISEPOINT \ 795 + PINCTRL_GEMINILAKE PINCTRL_ELKHARTLAKE PINCTRL_JASPERLAKE \ 796 + PINCTRL_TIGERLAKE PINCTRL_ALDERLAKE PINCTRL_METEORLAKE \ 797 + I2C I2C_DESIGNWARE_CORE I2C_DESIGNWARE_PLATFORM I2C_DESIGNWARE_PCI \ 798 + MMC MMC_BLOCK MMC_SDHCI MMC_SDHCI_PCI MMC_SDHCI_ACPI \ 799 + MTD MTD_BLOCK MTD_SPI_NOR \ 800 + SPI SPI_MASTER SPI_MEM SPI_INTEL SPI_INTEL_PCI \ 801 + MAGIC_SYSRQ \ 802 + RTW89 RTW89_PCI RTW89_8852B RTW89_8852BE RTW89_8852BT RTW89_8852BTE \ 803 + SND_SOC_MAX98357A SND_SOC_RT5682 SND_SOC_RT5682_I2C SND_SOC_RT5682S \ 804 + SND_SOC_INTEL_SOF_RT5682_MACH SND_SOC_INTEL_SOF_MAX98360A_MACH \ 805 + SND_SOC_SOF_JASPERLAKE \ 806 + ; do 807 + scripts/config --enable "CONFIG_$sym" 2>/dev/null || true 808 + done 779 809 make olddefconfig >>"$KCFG_LOG" 2>&1 || { err "Kernel olddefconfig (post-config) failed"; tail -120 "$KCFG_LOG" >&2; exit 1; } 780 810 tail -1 "$KCFG_LOG" || true 811 + 812 + # Verify the critical audio/GPIO symbols actually stuck after olddefconfig 813 + # dependency resolution. Fail the build loudly if any were silently dropped 814 + # — better to catch this in the build log than discover it from a silent 815 + # speaker on the target device. 816 + log " Verifying critical configs survived olddefconfig..." 817 + MISSING_CFGS="" 818 + for sym in GPIOLIB PINCTRL_INTEL PINCTRL_JASPERLAKE I2C_DESIGNWARE_PCI \ 819 + SND_SOC_INTEL_SOF_RT5682_MACH SND_SOC_MAX98357A; do 820 + if ! grep -q "^CONFIG_${sym}=y" .config; then 821 + MISSING_CFGS="$MISSING_CFGS $sym" 822 + fi 823 + done 824 + if [ -n "$MISSING_CFGS" ]; then 825 + err "BUILD SANITY: the following configs did not survive olddefconfig:$MISSING_CFGS" 826 + err " (inspect $KCFG_LOG for why — likely a missing dep in the Kconfig tree)" 827 + exit 1 828 + fi 829 + log " ✓ All critical audio/GPIO configs present" 781 830 782 831 # With ccache, skip make clean — stale objects get cache misses anyway, 783 832 # and clean destroys the build tree that ccache relies on for hits.