public inbox for linux-kbuild@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] kbuild,kconfig: generate lexer/parser C files instead of copying _shipped files
@ 2017-12-09 16:02 Masahiro Yamada
  2017-12-09 16:02 ` [PATCH 1/3] kbuild: add LEX and YACC variables Masahiro Yamada
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Masahiro Yamada @ 2017-12-09 16:02 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Ulf Magnusson, Sam Ravnborg, Linus Torvalds, Masahiro Yamada,
	Mauro Carvalho Chehab, Nicholas Piggin, Kate Stewart,
	Markus Heiser, linux-doc, Borislav Petkov, linux-kernel,
	Thomas Gleixner, Jonathan Corbet, Michal Marek, SeongJae Park,
	Greg Kroah-Hartman, Philippe Ombredanne, Max Filippov

In Linux build system convention, pre-generated files are version-
controlled with a "_shipped" suffix.  During the kernel building,
they are simply shipped (copied) removing the suffix.

From users' point of view, this approach can reduce external tool
dependency for the kernel build,

From developers point of view, it is tedious to manually regenerate
such artifacts.  In fact, we see several patches to regenerate
_shipped files.  They are noise commits.

When we update a *.y or *.l file, it would be better to update the
corresponding _shipped file in the same commit, but it is painful.
If you use a different version of flex/bison, it will produce lots of
irrelevant diffs.

We could update _shipped files after adding various changes to the
real sources, but it is not very nice for a git-bisect'ability.
In case of a problem, "git bisect" would point to the commit updating
_shipped files, but the root cause would be in another commit that
has changed the corresponding .l or .y files.

Some months ago, I sent RFC patches to run flex, bison, and gperf
during the build.
https://lkml.org/lkml/2017/8/19/49

Basically Linus agreed this, but he found a problem in gperf, then
use of gperf in kernel was removed.

It took some months for me to come back.  This time, I installed various
versions of flex/bison on my machine, and tested them more carefully.

My current motivation is in Kconfig.
There are several Kconfig patches touching *.y and *.l
(and Linus suggested another improvement for Kconfig)
so I want to remove zconf.lex.c_shipped and zconf.tab.c_shipped now.
Kconfig has no problem for this switch.

dtc and genksyms will be taken care of later because
both of them are having shift/reduce conflicts now.
The ambiguous grammar in dtc has been fixed in upstream, but not
reflected to kernel yet.  We can proceed migration in sub-system base.


Masahiro Yamada (3):
  kbuild: add LEX and YACC variables
  kbuild: prepare to remove C files pre-generated by flex and bison
  kconfig: generate lexer and parser during build instead of shipping

 Documentation/process/changes.rst   |   25 +
 Makefile                            |    4 +-
 scripts/Makefile.lib                |   24 +-
 scripts/kconfig/Makefile            |    1 +
 scripts/kconfig/zconf.lex.c_shipped | 2473 -----------------------------------
 scripts/kconfig/zconf.tab.c_shipped | 2471 ----------------------------------
 6 files changed, 48 insertions(+), 4950 deletions(-)
 delete mode 100644 scripts/kconfig/zconf.lex.c_shipped
 delete mode 100644 scripts/kconfig/zconf.tab.c_shipped

-- 
2.7.4


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-12-15 19:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-09 16:02 [PATCH 0/3] kbuild,kconfig: generate lexer/parser C files instead of copying _shipped files Masahiro Yamada
2017-12-09 16:02 ` [PATCH 1/3] kbuild: add LEX and YACC variables Masahiro Yamada
2017-12-09 16:02 ` [PATCH 2/3] kbuild: prepare to remove C files pre-generated by flex and bison Masahiro Yamada
2017-12-09 16:47   ` Randy Dunlap
2017-12-14 23:54 ` [PATCH 0/3] kbuild,kconfig: generate lexer/parser C files instead of copying _shipped files Masahiro Yamada
2017-12-15 19:50   ` Sam Ravnborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox