]> Git Repo - linux.git/commitdiff
Merge tag 'kbuild-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
authorLinus Torvalds <[email protected]>
Sun, 30 Apr 2023 18:32:53 +0000 (11:32 -0700)
committerLinus Torvalds <[email protected]>
Sun, 30 Apr 2023 18:32:53 +0000 (11:32 -0700)
Pull Kbuild updates from Masahiro Yamada:

 - Refactor scripts/kallsyms to make it faster and easier to maintain

 - Clean up menuconfig

 - Provide Clang with hard-coded target triple instead of CROSS_COMPILE

 - Use -z pack-relative-relocs flags instead of --use-android-relr-tags
   for arm64 CONFIG_RELR

 - Add srcdeb-pkg target to build only a Debian source package

 - Add KDEB_SOURCE_COMPRESS option to specify the compression for a
   Debian source package

 - Misc cleanups and fixes

* tag 'kbuild-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kbuild: deb-pkg: specify targets in debian/rules as .PHONY
  sparc: unify sparc32/sparc64 archhelp
  kbuild: rpm-pkg: remove kernel-drm PROVIDES
  kbuild: deb-pkg: add KDEB_SOURCE_COMPRESS to specify source compression
  kbuild: add srcdeb-pkg target
  Makefile: use -z pack-relative-relocs
  kbuild: clang: do not use CROSS_COMPILE for target triple
  kconfig: menuconfig: reorder functions to remove forward declarations
  kconfig: menuconfig: remove unused M_EVENT macro
  kconfig: menuconfig: remove OLD_NCURSES macro
  kbuild: builddeb: Eliminate debian/arch use
  scripts/kallsyms: update the usage in the comment block
  scripts/kallsyms: decrease expand_symbol() / cleanup_symbol_name() calls
  scripts/kallsyms: change the output order
  scripts/kallsyms: move compiler-generated symbol patterns to mksysmap
  scripts/kallsyms: exclude symbols generated by itself dynamically
  scripts/mksysmap: use sed with in-line comments
  scripts/mksysmap: remove comments described in nm(1)
  scripts/kallsyms: remove redundant code for omitting U and N
  kallsyms: expand symbol name into comment for debugging

1  2 
Makefile
scripts/Makefile.package
scripts/link-vmlinux.sh
scripts/package/mkdebian

diff --combined Makefile
index f5543eef4f8227a40d6a0b5a2646ff8f38658d89,3c0ec6dbcfd1cb0c2b4257650d601428030ed6e4..5ac8f263f9b0780ee59db9df7316e90d16ee80a0
+++ b/Makefile
@@@ -2,7 -2,7 +2,7 @@@
  VERSION = 6
  PATCHLEVEL = 3
  SUBLEVEL = 0
 -EXTRAVERSION = -rc7
 +EXTRAVERSION =
  NAME = Hurr durr I'ma ninja sloth
  
  # *DOCUMENTATION*
@@@ -1113,7 -1113,8 +1113,8 @@@ LDFLAGS_vmlinux += -
  endif
  
  ifeq ($(CONFIG_RELR),y)
- LDFLAGS_vmlinux       += --pack-dyn-relocs=relr --use-android-relr-tags
+ # ld.lld before 15 did not support -z pack-relative-relocs.
+ LDFLAGS_vmlinux       += $(call ld-option,--pack-dyn-relocs=relr,-z pack-relative-relocs)
  endif
  
  # We never want expected sections to be placed heuristically by the
diff --combined scripts/Makefile.package
index 4000ad04c1220d48366b78b568fc1d34d6ed0691,b64042f62defbee9cbfddceea3b356e021c2a381..92dbc889bd7c0008abc10feb4528e1b8363f8d93
@@@ -5,7 -5,6 +5,6 @@@ include $(srctree)/scripts/Kbuild.inclu
  include $(srctree)/scripts/Makefile.lib
  
  KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
- KBUILD_PKG_ROOTCMD ?="fakeroot -u"
  # Include only those top-level files that are needed by make, plus the GPL copy
  TAR_CONTENT := Documentation LICENSES arch block certs crypto drivers fs \
                 include init io_uring ipc kernel lib mm net rust \
@@@ -42,22 -41,28 +41,28 @@@ check-git
                false; \
        fi
  
- git-config-tar.gz  = -c tar.tar.gz.command="$(KGZIP)"
- git-config-tar.bz2 = -c tar.tar.bz2.command="$(KBZIP2)"
- git-config-tar.xz  = -c tar.tar.xz.command="$(XZ)"
- git-config-tar.zst = -c tar.tar.zst.command="$(ZSTD)"
+ git-config-tar.gz   = -c tar.tar.gz.command="$(KGZIP)"
+ git-config-tar.bz2  = -c tar.tar.bz2.command="$(KBZIP2)"
+ git-config-tar.lzma = -c tar.tar.lzma.command="$(LZMA)"
+ git-config-tar.xz   = -c tar.tar.xz.command="$(XZ)"
+ git-config-tar.zst  = -c tar.tar.zst.command="$(ZSTD)"
  
  quiet_cmd_archive = ARCHIVE $@
        cmd_archive = git -C $(srctree) $(git-config-tar$(suffix $@)) archive \
 -                    --output=$$(realpath $@) --prefix=$(basename $@)/ $(archive-args)
 +                    --output=$$(realpath $@) $(archive-args)
  
+ suffix-gzip  := .gz
+ suffix-bzip2 := .bz2
+ suffix-lzma  := .lzma
+ suffix-xz    := .xz
  # Linux source tarball
  # ---------------------------------------------------------------------------
  
- linux-tarballs := $(addprefix linux, .tar.gz)
+ linux-tarballs := $(addprefix linux, .tar.gz .tar.bz2 .tar.lzma .tar.xz)
  
  targets += $(linux-tarballs)
 -$(linux-tarballs): archive-args = $$(cat $<)
 +$(linux-tarballs): archive-args = --prefix=linux/ $$(cat $<)
  $(linux-tarballs): .tmp_HEAD FORCE
        $(call if_changed,archive)
  
@@@ -86,6 -91,22 +91,22 @@@ binrpm-pkg
        +rpmbuild $(RPMOPTS) --define "_builddir $(objtree)" --target \
                $(UTS_MACHINE)-linux -bb $(objtree)/binkernel.spec
  
+ # deb-pkg srcdeb-pkg bindeb-pkg
+ # ---------------------------------------------------------------------------
+ KDEB_SOURCE_COMPRESS ?= gzip
+ supported-deb-source-compress := gzip bzip2 lzma xz
+ PHONY += linux.tar.unsupported-deb-src-compress
+ linux.tar.unsupported-deb-src-compress:
+       @echo "error: KDEB_SOURCE_COMPRESS=$(KDEB_SOURCE_COMPRESS) is not supported. The supported values are: $(supported-deb-source-compress)" >&2
+       @false
+ debian-orig-suffix := \
+     $(strip $(if $(filter $(supported-deb-source-compress), $(KDEB_SOURCE_COMPRESS)), \
+     $(suffix-$(KDEB_SOURCE_COMPRESS)),.unsupported-deb-src-compress))
  quiet_cmd_debianize = GEN     $@
        cmd_debianize = $(srctree)/scripts/package/mkdebian $(mkdebian-opts)
  
@@@ -95,23 -116,34 +116,34 @@@ debian: FORC
  PHONY += debian-orig
  debian-orig: private source = $(shell dpkg-parsechangelog -S Source)
  debian-orig: private version = $(shell dpkg-parsechangelog -S Version | sed 's/-[^-]*$$//')
- debian-orig: private orig-name = $(source)_$(version).orig.tar.gz
+ debian-orig: private orig-name = $(source)_$(version).orig.tar$(debian-orig-suffix)
  debian-orig: mkdebian-opts = --need-source
- debian-orig: linux.tar.gz debian
+ debian-orig: linux.tar$(debian-orig-suffix) debian
        $(Q)if [ "$(df  --output=target .. 2>/dev/null)" = "$(df --output=target $< 2>/dev/null)" ]; then \
                ln -f $< ../$(orig-name); \
        else \
                cp $< ../$(orig-name); \
        fi
  
- PHONY += deb-pkg
- deb-pkg: debian-orig
-       +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) \
-               --build=source,binary -nc -us -uc
+ KBUILD_PKG_ROOTCMD ?= 'fakeroot -u'
+ PHONY += deb-pkg srcdeb-pkg bindeb-pkg
+ deb-pkg:    private build-type := source,binary
+ srcdeb-pkg: private build-type := source
+ bindeb-pkg: private build-type := binary
  
PHONY += bindeb-pkg
deb-pkg srcdeb-pkg: debian-orig
  bindeb-pkg: debian
-       +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -b -nc -uc
+ deb-pkg srcdeb-pkg bindeb-pkg:
+       +$(strip dpkg-buildpackage \
+       --build=$(build-type) --no-pre-clean --unsigned-changes \
+       $(if $(findstring source, $(build-type)), \
+               --unsigned-source --compression=$(KDEB_SOURCE_COMPRESS)) \
+       $(if $(findstring binary, $(build-type)), \
+               -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch), \
+               --no-check-builddeps) \
+       $(DPKG_FLAGS))
  
  PHONY += intdeb-pkg
  intdeb-pkg:
@@@ -189,7 -221,7 +221,7 @@@ perf-archive-args = --add-file=$$(realp
  perf-tarballs := $(addprefix perf-$(KERNELVERSION), .tar .tar.gz .tar.bz2 .tar.xz .tar.zst)
  
  targets += $(perf-tarballs)
 -$(perf-tarballs): archive-args = $(perf-archive-args)
 +$(perf-tarballs): archive-args = --prefix=perf-$(KERNELVERSION)/ $(perf-archive-args)
  $(perf-tarballs): tools/perf/MANIFEST .tmp_perf/HEAD .tmp_perf/PERF-VERSION-FILE FORCE
        $(call if_changed,archive)
  
@@@ -208,6 -240,7 +240,7 @@@ help
        @echo '  srcrpm-pkg          - Build only the source kernel RPM package'
        @echo '  binrpm-pkg          - Build only the binary kernel RPM package'
        @echo '  deb-pkg             - Build both source and binary deb kernel packages'
+       @echo '  srcdeb-pkg          - Build only the source kernel deb package'
        @echo '  bindeb-pkg          - Build only the binary kernel deb package'
        @echo '  snap-pkg            - Build only the binary kernel snap package'
        @echo '                        (will connect to external hosts)'
diff --combined scripts/link-vmlinux.sh
index 0512c313a590b52e5ad732479650f97796153810,679eb4653b166ee2f4d3ae1e0c45660511eb6ec9..a432b171be826a9c4ff362c518f97024ab90a811
@@@ -174,7 -174,7 +174,7 @@@ kallsyms_step(
        kallsyms_S=${kallsyms_vmlinux}.S
  
        vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o}
-       mksysmap ${kallsyms_vmlinux} ${kallsyms_vmlinux}.syms
+       mksysmap ${kallsyms_vmlinux} ${kallsyms_vmlinux}.syms ${kallsymso_prev}
        kallsyms ${kallsyms_vmlinux}.syms ${kallsyms_S}
  
        info AS ${kallsyms_S}
  mksysmap()
  {
        info NM ${2}
-       ${CONFIG_SHELL} "${srctree}/scripts/mksysmap" ${1} ${2}
+       ${CONFIG_SHELL} "${srctree}/scripts/mksysmap" ${1} ${2} ${3}
  }
  
  sorttable()
@@@ -277,7 -277,7 +277,7 @@@ if is_enabled CONFIG_DEBUG_INFO_BTF && 
        ${RESOLVE_BTFIDS} vmlinux
  fi
  
- mksysmap vmlinux System.map
+ mksysmap vmlinux System.map ${kallsymso}
  
  if is_enabled CONFIG_BUILDTIME_TABLE_SORT; then
        info SORTTAB vmlinux
@@@ -291,7 -291,7 +291,7 @@@ f
  if is_enabled CONFIG_KALLSYMS; then
        if ! cmp -s System.map ${kallsyms_vmlinux}.syms; then
                echo >&2 Inconsistent kallsyms data
 -              echo >&2 Try "make KALLSYMS_EXTRA_PASS=1" as a workaround
 +              echo >&2 'Try "make KALLSYMS_EXTRA_PASS=1" as a workaround'
                exit 1
        fi
  fi
diff --combined scripts/package/mkdebian
index 74b83c9ae0a843bb77cf5c2b51e3b32e3ec715c1,b6cb95473548ecf1e5faf9a7559cb1ae117ca1f2..ba2453e08d408d1ebf8946c64b583b1fb9f336b3
@@@ -190,7 -190,7 +190,7 @@@ EO
  
  # Generate copyright file
  cat <<EOF > debian/copyright
 -This is a packacked upstream version of the Linux kernel.
 +This is a packaged upstream version of the Linux kernel.
  
  The sources may be found at most Linux archive sites, including:
  https://www.kernel.org/pub/linux/kernel
@@@ -269,6 -269,8 +269,8 @@@ cat <<EOF > debian/rule
  srctree ?= .
  KERNELRELEASE = ${KERNELRELEASE}
  
+ .PHONY: clean build build-arch build-indep binary binary-arch binary-indep
  build-indep:
  build-arch:
        \$(MAKE) -f \$(srctree)/Makefile ARCH=${ARCH} \
This page took 0.11286 seconds and 4 git commands to generate.