Skip to content

Suppress transitional symbols - #39

Merged
jserv merged 1 commit into
mainfrom
linux-compat
Feb 19, 2026
Merged

jserv merged 1 commit into
mainfrom
linux-compat

Conversation

@jserv

@jserv jserv commented Feb 19, 2026 •

Copy link
Copy Markdown
Contributor

Linux v6.18 introduced the 'transitional' keyword for Kconfig symbols (commit 23ef9d439769d5) enabling clean option renaming: old symbols marked transitional are read from existing .config files to populate new symbol defaults, but must never appear in generated output.

The parser already sets is_transitional but the flag had no behavioral impact. Add four guards to suppress transitional symbols from:

  • _autoconf_contents() (write_autoconf / autoconf.h)
  • _min_config_contents() (write_min_config)
  • sync_deps() (dep-file touches / auto.conf)
  • Symbol.config_string (write_config, _old_vals_contents)

This rewrites 'makefile.patch' for Linux v6.x Makefile layout where config targets are generated by a $(foreach ...) / config_rule macro rather than individual rules.


Summary by cubic

Suppress transitional Kconfig symbols from all generated outputs while still reading them from legacy .config files to seed defaults, matching Linux v6.18. Update the v6.18 Makefile patch (python3) and CI to use GNU Make ≥4.0 with LLD on macOS.

  • Bug Fixes

    • Exclude transitional symbols in write_autoconf (autoconf.h).
    • Exclude transitional symbols in write_min_config.
    • Skip transitional symbols in sync_deps (prevents spurious auto.conf touches).
    • Return "" from Symbol.config_string to keep them out of write_config.
  • Refactors

    • Rewrote makefile.patch for Linux v6.18’s config_rule layout; PYTHONCMD defaults to python3.
    • CI checks out Linux v6.18; on macOS installs GNU Make ≥4.0 and LLD, adds to PATH, and sets LD=ld.lld.
    • Tests honor MAKE/CC and pass LD as a make variable (reltest, test_compat.py); added coverage for migration defaults, output suppression, empty config_string, and repr.

Written for commit 7852844. Summary will update on new commits.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 6 files

@jserv
jserv force-pushed the linux-compat branch 4 times, most recently from 0ad146f to 4732b13 Compare February 19, 2026 15:59
This adds guards in 4 output paths so symbols marked 'transitional' are
read from old .config files (for migration defaults) but never written
to generated output:
- config_string property  (write_config / write_min_config)
- _autoconf_contents      (write_autoconf)
- _min_config_contents    (write_min_config)
- sync_deps               (prevents spurious dep-file touches)

It rewrites makefile.patch for Linux v6.18 Makefile layout (config_rule
macro replaces individual target rules; PYTHONCMD defaults to python3).

Install GNU Make and LLD on macOS CI runners (v6.18 requires Make >= 4.0
and a supported linker; macOS ships Make 3.81 and Apple ld).  Forward LD
as a make command-line variable in reltest and test_compat.py so it
overrides the kernel Makefile's unconditional LD assignment without
replacing Apple's system linker in PATH.  Honour the MAKE and CC
environment variables in test_compat.py via setdefault().
@jserv
jserv merged commit c833850 into main Feb 19, 2026
9 checks passed
@jserv
jserv deleted the linux-compat branch February 19, 2026 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant