Rewrite the lunabuild toolchain with enhanced feature (#60)
authorLunaixsky <lunaixsky@qq.com>
Sun, 11 May 2025 16:09:23 +0000 (17:09 +0100)
committerGitHub <noreply@github.com>
Sun, 11 May 2025 16:09:23 +0000 (17:09 +0100)
commitc043fa535514a76091be87a45ad472a505f9dd33
tree71d0edb9544605b4a9a589c104d8b247a6ff6850
parentbcc25888b3299758ad36721530cca3b899b7166c
Rewrite the lunabuild toolchain with enhanced feature (#60)

* rewrite the lunabuild toolchain with enhanced feature

* reduce the boilerplate code in LConfig and LBuild
* introduce new syntax suger for better expressiveness
* support predicate based config depedency checking
* more efficient lazy evaluation

* polish the shconfig with new cmds and auto-completion

* temporary removed the menuconfig (for further inspection)
* add feature of aliasing commands
* add feature of auto-completion of config options

* clean up redundant lines

* add validator to restrict the flexibility of LConfig

* allow a bool config option change value based on other option's value
  similar to "select" in kconfig, but it is distributed to the actual
  affecting flags rather than centered around the master option

* update readme on build system

* clean up: unused node property
* clean up: add space after node directives for clarity
* clean up: reduce the size of whitelist of non-trivial-value rule

* shconfig: add `link` command to view the inverse dependency

* fix some typos

* migrate stock user space build to new build system

* fix corner cases in luna_build.py when no LConfig is used
* add back the missing arch_bits_* flags
* fix sometimes the shconfig being triggered multiple times

* refine the documentation, add extra warning messages

* shconfig: add "find" command to enable fuzzy searching
* shconfig: use shlex.split to disassemble the command line
99 files changed:
lunaix-os/LBuild
lunaix-os/LConfig
lunaix-os/README.md
lunaix-os/arch/LBuild
lunaix-os/arch/LConfig
lunaix-os/arch/generic/LBuild
lunaix-os/arch/x86/LBuild
lunaix-os/arch/x86/LConfig
lunaix-os/arch/x86/hal/LBuild
lunaix-os/hal/LBuild
lunaix-os/hal/LConfig
lunaix-os/hal/acpi/LBuild
lunaix-os/hal/ahci/LBuild
lunaix-os/hal/ahci/LConfig
lunaix-os/hal/bus/LBuild
lunaix-os/hal/bus/LConfig
lunaix-os/hal/char/LBuild
lunaix-os/hal/char/LConfig
lunaix-os/hal/char/uart/LBuild
lunaix-os/hal/char/uart/LConfig
lunaix-os/hal/devtree/LBuild
lunaix-os/hal/gfxa/LBuild
lunaix-os/hal/gfxa/vga/LBuild
lunaix-os/hal/rtc/LBuild
lunaix-os/hal/term/LBuild
lunaix-os/hal/timer/LBuild
lunaix-os/install_headers.mk
lunaix-os/kernel/LBuild
lunaix-os/kernel/LConfig
lunaix-os/kernel/block/LBuild
lunaix-os/kernel/debug/LBuild
lunaix-os/kernel/device/LBuild
lunaix-os/kernel/ds/LBuild
lunaix-os/kernel/exe/LBuild
lunaix-os/kernel/exe/elf-generic/LBuild
lunaix-os/kernel/fs/LBuild
lunaix-os/kernel/fs/LConfig
lunaix-os/kernel/fs/ext2/LBuild
lunaix-os/kernel/fs/ext2/LConfig
lunaix-os/kernel/fs/iso9660/LBuild
lunaix-os/kernel/fs/ramfs/LBuild
lunaix-os/kernel/fs/twifs/LBuild
lunaix-os/kernel/mm/LBuild
lunaix-os/kernel/mm/LConfig
lunaix-os/kernel/process/LBuild
lunaix-os/libs/LBuild
lunaix-os/makefile
lunaix-os/makeinc/kbuild_deps.mkinc
lunaix-os/makeinc/lunabuild.mkinc
lunaix-os/makeinc/toolchain.mkinc
lunaix-os/scripts/build-tools/README.lbuild.md
lunaix-os/scripts/build-tools/README.lconfig.md [new file with mode: 0644]
lunaix-os/scripts/build-tools/README.md [new file with mode: 0644]
lunaix-os/scripts/build-tools/integration/build_gen.py [deleted file]
lunaix-os/scripts/build-tools/integration/config_io.py [deleted file]
lunaix-os/scripts/build-tools/integration/lbuild_bridge.py [deleted file]
lunaix-os/scripts/build-tools/integration/libmenu.py [deleted file]
lunaix-os/scripts/build-tools/integration/libtui.py [deleted file]
lunaix-os/scripts/build-tools/integration/lunamenu.py [deleted file]
lunaix-os/scripts/build-tools/integration/render_ishell.py [deleted file]
lunaix-os/scripts/build-tools/lbuild/api.py [deleted file]
lunaix-os/scripts/build-tools/lbuild/build.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lbuild/common.py
lunaix-os/scripts/build-tools/lbuild/contract.py [deleted file]
lunaix-os/scripts/build-tools/lbuild/scope.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg/api.py [deleted file]
lunaix-os/scripts/build-tools/lcfg/builtins.py [deleted file]
lunaix-os/scripts/build-tools/lcfg/common.py [deleted file]
lunaix-os/scripts/build-tools/lcfg/lcnodes.py [deleted file]
lunaix-os/scripts/build-tools/lcfg/types.py [deleted file]
lunaix-os/scripts/build-tools/lcfg/utils.py [deleted file]
lunaix-os/scripts/build-tools/lcfg2/__init__.py [moved from lunaix-os/scripts/build-tools/integration/__init__.py with 100% similarity]
lunaix-os/scripts/build-tools/lcfg2/ast_validator.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/builder.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/common.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/config.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/lazy.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/nodes.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/rewriter.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/rules.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lcfg2/sanitiser.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/lib/sandbox.py [deleted file]
lunaix-os/scripts/build-tools/lib/utils.py
lunaix-os/scripts/build-tools/luna_build.py
lunaix-os/scripts/build-tools/shared/__init__.py [moved from lunaix-os/scripts/build-tools/lcfg/__init__.py with 100% similarity]
lunaix-os/scripts/build-tools/shared/build_gen.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/shared/export.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/shared/scopes.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/shared/shconfig/__init__.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/shared/shconfig/commands.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/shared/shconfig/common.py [new file with mode: 0644]
lunaix-os/scripts/build-tools/shared/shconfig/main.py [new file with mode: 0644]
lunaix-os/usr/LBuild
lunaix-os/usr/LConfig [deleted file]
lunaix-os/usr/libc/LBuild
lunaix-os/usr/libc/arch/i386/LBuild
lunaix-os/usr/libc/arch/x86_64/LBuild
lunaix-os/usr/libc/makefile
lunaix-os/usr/makefile