mbox series

[GIT,PULL] Kbuild updates for v5.18-rc1

Message ID CAK7LNATL4v40ZHJ+Ym3k_fVe4ddmMA3wFQXb5RaTz9hmPebeuQ@mail.gmail.com (mailing list archive)
State New, archived
Headers show
Series [GIT,PULL] Kbuild updates for v5.18-rc1 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git tags/kbuild-v5.18

Message

Masahiro Yamada March 28, 2022, 12:08 p.m. UTC
Hi Linus,


Please pull the remaining Kbuild changes.

You will see conflicts in the top Makefile.
The fix-up is available in linux-next.
(6c4457c324cd9855352e3eb1f965105901e47a6d)


Thank you.



The following changes since commit 754e0b0e35608ed5206d6a67a791563c631cec07:

  Linux 5.17-rc4 (2022-02-13 12:13:30 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
tags/kbuild-v5.18

for you to fetch changes up to b0324de9dfba0e05ea7991a91b002c1441bf27e1:

  kbuild: Make $(LLVM) more flexible (2022-03-18 13:45:14 +0900)

----------------------------------------------------------------
Kbuild updates for v5.18

 - Add new environment variables, USERCFLAGS and USERLDFLAGS to allow
   additional flags to be passed to user-space programs.

 - Fix missing fflush() bugs in Kconfig and fixdep

 - Fix a minor bug in the comment format of the .config file

 - Make kallsyms ignore llvm's local labels, .L*

 - Change the .config format to use CONFIG_FOO=n instead of
   "# CONFIG_FOO is not set"

 - Fix UAPI compile-test for cross-compiling with Clang

 - Extend the LLVM= syntax to support LLVM=<suffix> form for using a
   particular version of LLVm, and LLVM=<prefix> form for using custom
   LLVM in a particular directory path.

 - Clean up Makefiles

----------------------------------------------------------------
Changbin Du (1):
      kallsyms: ignore all local labels prefixed by '.L'

Elliot Berman (1):
      kbuild: Add environment variables for userprogs flags

Masahiro Yamada (11):
      kbuild: unify cmd_copy and cmd_shipped
      kbuild: replace $(if A,A,B) with $(or A,B)
      kconfig: add fflush() before ferror() check
      kconfig: fix missing '# end of' for empty menu
      certs: include certs/signing_key.x509 unconditionally
      certs: simplify empty certs creation in certs/Makefile
      kconfig: change .config format to use =n instead of "is not set"
      usr/include: replace extra-y with always-y
      arch: syscalls: simplify uapi/kapi directory creation
      fixdep: use fflush() and ferror() to ensure successful write to files
      kbuild: add --target to correctly cross-compile UAPI headers with Clang

Nathan Chancellor (1):
      kbuild: Make $(LLVM) more flexible

 Documentation/kbuild/kbuild.rst                             | 11 +++++++
 Documentation/kbuild/llvm.rst                               | 31
++++++++++++++----
 Documentation/kbuild/makefiles.rst                          |  2 ++
 Makefile                                                    | 44
++++++++++++++-----------
 arch/alpha/kernel/syscalls/Makefile                         |  3 +-
 arch/arm/tools/Makefile                                     |  3 +-
 arch/ia64/kernel/syscalls/Makefile                          |  3 +-
 arch/m68k/kernel/syscalls/Makefile                          |  3 +-
 arch/microblaze/boot/Makefile                               |  2 +-
 arch/microblaze/boot/dts/Makefile                           |  2 +-
 arch/microblaze/kernel/syscalls/Makefile                    |  3 +-
 arch/mips/kernel/syscalls/Makefile                          |  3 +-
 arch/parisc/kernel/syscalls/Makefile                        |  3 +-
 arch/powerpc/kernel/syscalls/Makefile                       |  3 +-
 arch/s390/kernel/syscalls/Makefile                          |  3 +-
 arch/sh/kernel/syscalls/Makefile                            |  3 +-
 arch/sparc/kernel/syscalls/Makefile                         |  3 +-
 arch/x86/entry/syscalls/Makefile                            |  3 +-
 arch/xtensa/kernel/syscalls/Makefile                        |  3 +-
 certs/Makefile                                              | 37
+++++++--------------
 certs/system_certificates.S                                 |  3 --
 fs/unicode/Makefile                                         |  2 +-
 init/Kconfig                                                |  8 ++---
 scripts/Makefile.build                                      |  3 +-
 scripts/Makefile.clean                                      |  2 +-
 scripts/Makefile.lib                                        | 16 ++++------
 scripts/basic/fixdep.c                                      | 46
+++++++++++----------------
 scripts/kallsyms.c                                          |  2 +-
 scripts/kconfig/confdata.c                                  | 42
++++++++++++------------
 scripts/kconfig/merge_config.sh                             | 19 ++++++-----
 scripts/kconfig/streamline_config.pl                        |  2 +-
 scripts/kconfig/tests/choice/alldef_expected_config         |  6 ++--
 scripts/kconfig/tests/choice/allmod_expected_config         |  4 +--
 scripts/kconfig/tests/choice/allno_expected_config          |  6 ++--
 scripts/kconfig/tests/choice/allyes_expected_config         |  8 ++---
 scripts/kconfig/tests/choice/oldask1_config                 |  2 +-
 scripts/kconfig/tests/inter_choice/expected_config          |  2 +-
 scripts/kconfig/tests/new_choice_with_dep/config            |  2 +-
 scripts/kconfig/tests/no_write_if_dep_unmet/__init__.py     |  7 ++--
 scripts/kconfig/tests/no_write_if_dep_unmet/expected_config |  2 +-
 tools/bpf/bpftool/Makefile                                  |  4 +--
 tools/build/Makefile                                        |  2 +-
 tools/counter/Makefile                                      |  2 +-
 tools/gpio/Makefile                                         |  2 +-
 tools/hv/Makefile                                           |  2 +-
 tools/iio/Makefile                                          |  2 +-
 tools/lib/api/Makefile                                      |  2 +-
 tools/lib/bpf/Makefile                                      |  2 +-
 tools/lib/perf/Makefile                                     |  2 +-
 tools/lib/subcmd/Makefile                                   |  2 +-
 tools/objtool/Makefile                                      |  2 +-
 tools/pci/Makefile                                          |  2 +-
 tools/perf/Makefile.perf                                    |  4 +--
 tools/power/x86/intel-speed-select/Makefile                 |  2 +-
 tools/scripts/Makefile.include                              | 22 ++++++++-----
 tools/scripts/utilities.mak                                 |  2 +-
 tools/spi/Makefile                                          |  6 ++--
 tools/testing/selftests/lib.mk                              |  8 ++++-
 tools/tracing/rtla/Makefile                                 |  2 +-
 tools/usb/Makefile                                          |  2 +-
 usr/Makefile                                                |  4 +--
 usr/include/Makefile                                        |  7 ++--
 62 files changed, 224 insertions(+), 213 deletions(-)

Comments

Linus Torvalds March 29, 2022, 8:10 p.m. UTC | #1
I pulled this, and then immediately unpulled.

On Mon, Mar 28, 2022 at 5:09 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
>  - Change the .config format to use CONFIG_FOO=n instead of
>    "# CONFIG_FOO is not set"

This is unacceptable.

The change was apparently made to make automation easier, at the
expense of making it harder for people to parse.

That is not a valid tradeoff.

I _look_ at my config files. Constantly. I don't want some mess where
it's really damn hard to visually tell the difference between "this is
enabled" and "this is not enabled".

So no, I'm not pulling this kind of horrible "make it simpler for
automation, and harder for humans" to read.

                Linus
Masahiro Yamada March 30, 2022, 2:14 a.m. UTC | #2
On Wed, Mar 30, 2022 at 5:10 AM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> I pulled this, and then immediately unpulled.
>
> On Mon, Mar 28, 2022 at 5:09 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> >  - Change the .config format to use CONFIG_FOO=n instead of
> >    "# CONFIG_FOO is not set"
>
> This is unacceptable.
>
> The change was apparently made to make automation easier, at the
> expense of making it harder for people to parse.

Making automation was not the main motivation.

We use comment lines in two ways.

[1] disabled option
     # CONFIG_FOO is not set

[2] real comments

    #
    # IRQ subsystem
    #
    CONFIG_GENERIC_IRQ_PROBE=y
       [ snip]
    # CONFIG_GENERIC_IRQ_DEBUGFS is not set
    # end of IRQ subsystem



In the current .config format,
 it is easy to tell the difference between
"this is enabled" and "this is not enabled",
but it is hard to tell the difference between
"this is not enabled" and "this is a comment".


I constantly receive some patches (e.g. [1] )
for better commenting, but the weirdness
is that Kconfig uses comments to store actual
information.

[1] https://patchwork.kernel.org/project/linux-kbuild/patch/20211213100043.45645-3-arielmarcovitch@gmail.com/


Having said that, you really dislike this change.
Let me send v2.


>
> That is not a valid tradeoff.
>
> I _look_ at my config files. Constantly. I don't want some mess where
> it's really damn hard to visually tell the difference between "this is
> enabled" and "this is not enabled".
>
> So no, I'm not pulling this kind of horrible "make it simpler for
> automation, and harder for humans" to read.
>
>                 Linus