Merge 5.3-rc4 into driver-core-next
We need the driver core fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -190,9 +190,6 @@ echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
||||
# printing commands
|
||||
cmd = @set -e; $(echo-cmd) $(cmd_$(1))
|
||||
|
||||
# Add $(obj)/ for paths that are not absolute
|
||||
objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
|
||||
|
||||
###
|
||||
# if_changed - execute command if any prerequisite is newer than
|
||||
# target, or command line has changed
|
||||
|
@@ -25,7 +25,7 @@ failure = $(if-success,$(1),n,y)
|
||||
|
||||
# $(cc-option,<flag>)
|
||||
# Return y if the compiler supports <flag>, n otherwise
|
||||
cc-option = $(success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null)
|
||||
cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /dev/null)
|
||||
|
||||
# $(ld-option,<flag>)
|
||||
# Return y if the linker supports <flag>, n otherwise
|
||||
|
@@ -52,6 +52,13 @@ ifndef obj
|
||||
$(warning kbuild: Makefile.build is included improperly)
|
||||
endif
|
||||
|
||||
ifeq ($(MAKECMDGOALS)$(need-modorder),)
|
||||
ifneq ($(obj-m),)
|
||||
$(warning $(patsubst %.o,'%.ko',$(obj-m)) will not be built even though obj-m is specified.)
|
||||
$(warning You cannot use subdir-y/m to visit a module Makefile. Use obj-y/m instead.)
|
||||
endif
|
||||
endif
|
||||
|
||||
# ===========================================================================
|
||||
|
||||
ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
|
||||
@@ -487,7 +494,9 @@ targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h) \
|
||||
|
||||
PHONY += $(subdir-ym)
|
||||
$(subdir-ym):
|
||||
$(Q)$(MAKE) $(build)=$@ need-builtin=$(if $(findstring $@,$(subdir-obj-y)),1)
|
||||
$(Q)$(MAKE) $(build)=$@ \
|
||||
need-builtin=$(if $(filter $@/built-in.a, $(subdir-obj-y)),1) \
|
||||
need-modorder=$(if $(need-modorder),$(if $(filter $@/modules.order, $(modorder)),1))
|
||||
|
||||
# Add FORCE to the prequisites of a target to force it to be always rebuilt.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
@@ -45,7 +45,6 @@ subdir-ym := $(sort $(subdir-y) $(subdir-m))
|
||||
multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
|
||||
multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m))), $(m))))
|
||||
multi-used := $(multi-used-y) $(multi-used-m)
|
||||
single-used-m := $(sort $(filter-out $(multi-used-m),$(obj-m)))
|
||||
|
||||
# $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to
|
||||
# tell kbuild to descend
|
||||
@@ -91,7 +90,6 @@ lib-y := $(addprefix $(obj)/,$(lib-y))
|
||||
subdir-obj-y := $(addprefix $(obj)/,$(subdir-obj-y))
|
||||
real-obj-y := $(addprefix $(obj)/,$(real-obj-y))
|
||||
real-obj-m := $(addprefix $(obj)/,$(real-obj-m))
|
||||
single-used-m := $(addprefix $(obj)/,$(single-used-m))
|
||||
multi-used-m := $(addprefix $(obj)/,$(multi-used-m))
|
||||
subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
|
||||
|
||||
|
@@ -38,12 +38,39 @@
|
||||
# symbols in the final module linking stage
|
||||
# KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules.
|
||||
# This is solely useful to speed up test compiles
|
||||
PHONY := _modpost
|
||||
_modpost: __modpost
|
||||
|
||||
PHONY := __modpost
|
||||
__modpost:
|
||||
|
||||
include include/config/auto.conf
|
||||
include scripts/Kbuild.include
|
||||
|
||||
kernelsymfile := $(objtree)/Module.symvers
|
||||
modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers
|
||||
|
||||
MODPOST = scripts/mod/modpost \
|
||||
$(if $(CONFIG_MODVERSIONS),-m) \
|
||||
$(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \
|
||||
$(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
|
||||
$(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
|
||||
$(if $(KBUILD_EXTMOD),$(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS))) \
|
||||
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
|
||||
$(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
|
||||
$(if $(KBUILD_MODPOST_WARN),-w)
|
||||
|
||||
ifdef MODPOST_VMLINUX
|
||||
|
||||
__modpost: vmlinux.o
|
||||
|
||||
quiet_cmd_modpost = MODPOST $@
|
||||
cmd_modpost = $(MODPOST) $@
|
||||
|
||||
PHONY += vmlinux.o
|
||||
vmlinux.o:
|
||||
$(call cmd,modpost)
|
||||
|
||||
else
|
||||
|
||||
# When building external modules load the Kbuild file to retrieve EXTRA_SYMBOLS info
|
||||
ifneq ($(KBUILD_EXTMOD),)
|
||||
|
||||
@@ -58,50 +85,25 @@ endif
|
||||
|
||||
include scripts/Makefile.lib
|
||||
|
||||
kernelsymfile := $(objtree)/Module.symvers
|
||||
modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers
|
||||
|
||||
modorder := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order
|
||||
|
||||
# Step 1), find all modules listed in modules.order
|
||||
ifdef CONFIG_MODULES
|
||||
modules := $(sort $(shell cat $(modorder)))
|
||||
endif
|
||||
# find all modules listed in modules.order
|
||||
modules := $(sort $(shell cat $(MODORDER)))
|
||||
|
||||
# Stop after building .o files if NOFINAL is set. Makes compile tests quicker
|
||||
_modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules))
|
||||
__modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules))
|
||||
@:
|
||||
|
||||
# Step 2), invoke modpost
|
||||
# Includes step 3,4
|
||||
modpost = scripts/mod/modpost \
|
||||
$(if $(CONFIG_MODVERSIONS),-m) \
|
||||
$(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \
|
||||
$(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
|
||||
$(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
|
||||
$(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \
|
||||
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
|
||||
$(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
|
||||
$(if $(KBUILD_MODPOST_WARN),-w)
|
||||
|
||||
MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS)))
|
||||
MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) -s -T - $(wildcard vmlinux)
|
||||
|
||||
# We can go over command line length here, so be careful.
|
||||
quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
|
||||
cmd_modpost = sed 's/ko$$/o/' $(modorder) | $(modpost) $(MODPOST_OPT) -s -T -
|
||||
quiet_cmd_modpost = MODPOST $(words $(modules)) modules
|
||||
cmd_modpost = sed 's/ko$$/o/' $(MODORDER) | $(MODPOST)
|
||||
|
||||
PHONY += __modpost
|
||||
__modpost: $(modules:.ko=.o) FORCE
|
||||
$(call cmd,modpost) $(wildcard vmlinux)
|
||||
|
||||
quiet_cmd_kernel-mod = MODPOST $@
|
||||
cmd_kernel-mod = $(modpost) $@
|
||||
|
||||
vmlinux.o: FORCE
|
||||
$(call cmd,kernel-mod)
|
||||
PHONY += modules-modpost
|
||||
modules-modpost:
|
||||
$(call cmd,modpost)
|
||||
|
||||
# Declare generated files as targets for modpost
|
||||
$(modules:.ko=.mod.c): __modpost ;
|
||||
|
||||
$(modules:.ko=.mod.c): modules-modpost
|
||||
|
||||
# Step 5), compile all *.mod.c files
|
||||
|
||||
@@ -145,10 +147,10 @@ FORCE:
|
||||
# optimization, we don't need to read them if the target does not
|
||||
# exist, we will rebuild anyway in that case.
|
||||
|
||||
cmd_files := $(wildcard $(foreach f,$(sort $(targets)),$(dir $(f)).$(notdir $(f)).cmd))
|
||||
existing-targets := $(wildcard $(sort $(targets)))
|
||||
|
||||
-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
|
||||
|
||||
ifneq ($(cmd_files),)
|
||||
include $(cmd_files)
|
||||
endif
|
||||
|
||||
.PHONY: $(PHONY)
|
||||
|
@@ -21,9 +21,9 @@ _LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c)$'
|
||||
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
||||
|
||||
# A kernel build generally has over 2000 entries in its compile_commands.json
|
||||
# database. If this code finds 500 or fewer, then warn the user that they might
|
||||
# database. If this code finds 300 or fewer, then warn the user that they might
|
||||
# not have all the .cmd files, and they might need to compile the kernel.
|
||||
_LOW_COUNT_THRESHOLD = 500
|
||||
_LOW_COUNT_THRESHOLD = 300
|
||||
|
||||
|
||||
def parse_arguments():
|
||||
|
@@ -23,6 +23,12 @@ TMPFILE=$OUTFILE.tmp
|
||||
|
||||
trap 'rm -f $OUTFILE $TMPFILE' EXIT
|
||||
|
||||
# SPDX-License-Identifier with GPL variants must have "WITH Linux-syscall-note"
|
||||
if [ -n "$(sed -n -e "/SPDX-License-Identifier:.*GPL-/{/WITH Linux-syscall-note/!p}" $INFILE)" ]; then
|
||||
echo "error: $INFILE: missing \"WITH Linux-syscall-note\" for SPDX-License-Identifier" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sed -E -e '
|
||||
s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g
|
||||
s/__attribute_const__([[:space:]]|$)/\1/g
|
||||
|
@@ -848,6 +848,7 @@ int conf_write(const char *name)
|
||||
const char *str;
|
||||
char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
|
||||
char *env;
|
||||
int i;
|
||||
bool need_newline = false;
|
||||
|
||||
if (!name)
|
||||
@@ -930,6 +931,9 @@ next:
|
||||
}
|
||||
fclose(out);
|
||||
|
||||
for_all_symbols(i, sym)
|
||||
sym->flags &= ~SYMBOL_WRITTEN;
|
||||
|
||||
if (*tmpname) {
|
||||
if (is_same(name, tmpname)) {
|
||||
conf_message("No change to %s", name);
|
||||
|
@@ -210,7 +210,7 @@ info LD vmlinux.o
|
||||
modpost_link vmlinux.o
|
||||
|
||||
# modpost vmlinux.o to check for section mismatches
|
||||
${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o
|
||||
${MAKE} -f "${srctree}/scripts/Makefile.modpost" MODPOST_VMLINUX=1
|
||||
|
||||
info MODINFO modules.builtin.modinfo
|
||||
${OBJCOPY} -j .modinfo -O binary vmlinux.o modules.builtin.modinfo
|
||||
|
@@ -83,6 +83,17 @@ sub check_missing(%)
|
||||
foreach my $prog (sort keys %missing) {
|
||||
my $is_optional = $missing{$prog};
|
||||
|
||||
# At least on some LTS distros like CentOS 7, texlive doesn't
|
||||
# provide all packages we need. When such distros are
|
||||
# detected, we have to disable PDF output.
|
||||
#
|
||||
# So, we need to ignore the packages that distros would
|
||||
# need for LaTeX to work
|
||||
if ($is_optional == 2 && !$pdf) {
|
||||
$optional--;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($is_optional) {
|
||||
print "Warning: better to also install \"$prog\".\n";
|
||||
} else {
|
||||
@@ -333,10 +344,13 @@ sub give_debian_hints()
|
||||
|
||||
if ($pdf) {
|
||||
check_missing_file("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
|
||||
"fonts-dejavu", 1);
|
||||
"fonts-dejavu", 2);
|
||||
|
||||
check_missing_file("/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc",
|
||||
"fonts-noto-cjk", 2);
|
||||
}
|
||||
|
||||
check_program("dvipng", 1) if ($pdf);
|
||||
check_program("dvipng", 2) if ($pdf);
|
||||
check_missing(\%map);
|
||||
|
||||
return if (!$need && !$optional);
|
||||
@@ -363,6 +377,7 @@ sub give_redhat_hints()
|
||||
my @fedora_tex_pkgs = (
|
||||
"texlive-collection-fontsrecommended",
|
||||
"texlive-collection-latex",
|
||||
"texlive-xecjk",
|
||||
"dejavu-sans-fonts",
|
||||
"dejavu-serif-fonts",
|
||||
"dejavu-sans-mono-fonts",
|
||||
@@ -371,22 +386,45 @@ sub give_redhat_hints()
|
||||
#
|
||||
# Checks valid for RHEL/CentOS version 7.x.
|
||||
#
|
||||
if (! $system_release =~ /Fedora/) {
|
||||
my $old = 0;
|
||||
my $rel;
|
||||
$rel = $1 if ($system_release =~ /release\s+(\d+)/);
|
||||
|
||||
if (!($system_release =~ /Fedora/)) {
|
||||
$map{"virtualenv"} = "python-virtualenv";
|
||||
|
||||
if ($rel && $rel < 8) {
|
||||
$old = 1;
|
||||
$pdf = 0;
|
||||
|
||||
printf("Note: texlive packages on RHEL/CENTOS <= 7 are incomplete. Can't support PDF output\n");
|
||||
printf("If you want to build PDF, please read:\n");
|
||||
printf("\thttps://www.systutorials.com/241660/how-to-install-tex-live-on-centos-7-linux/\n");
|
||||
}
|
||||
} else {
|
||||
if ($rel && $rel < 26) {
|
||||
$old = 1;
|
||||
}
|
||||
}
|
||||
if (!$rel) {
|
||||
printf("Couldn't identify release number\n");
|
||||
$old = 1;
|
||||
$pdf = 0;
|
||||
}
|
||||
|
||||
my $release;
|
||||
if ($pdf) {
|
||||
check_missing_file("/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc",
|
||||
"google-noto-sans-cjk-ttc-fonts", 2);
|
||||
}
|
||||
|
||||
$release = $1 if ($system_release =~ /Fedora\s+release\s+(\d+)/);
|
||||
|
||||
check_rpm_missing(\@fedora26_opt_pkgs, 1) if ($pdf && $release >= 26);
|
||||
check_rpm_missing(\@fedora_tex_pkgs, 1) if ($pdf);
|
||||
check_missing_tex(1) if ($pdf);
|
||||
check_rpm_missing(\@fedora26_opt_pkgs, 2) if ($pdf && !$old);
|
||||
check_rpm_missing(\@fedora_tex_pkgs, 2) if ($pdf);
|
||||
check_missing_tex(2) if ($pdf);
|
||||
check_missing(\%map);
|
||||
|
||||
return if (!$need && !$optional);
|
||||
|
||||
if ($release >= 18) {
|
||||
if (!$old) {
|
||||
# dnf, for Fedora 18+
|
||||
printf("You should run:\n\n\tsudo dnf install -y $install\n");
|
||||
} else {
|
||||
@@ -425,8 +463,15 @@ sub give_opensuse_hints()
|
||||
"texlive-zapfding",
|
||||
);
|
||||
|
||||
check_rpm_missing(\@suse_tex_pkgs, 1) if ($pdf);
|
||||
check_missing_tex(1) if ($pdf);
|
||||
$map{"latexmk"} = "texlive-latexmk-bin";
|
||||
|
||||
# FIXME: add support for installing CJK fonts
|
||||
#
|
||||
# I tried hard, but was unable to find a way to install
|
||||
# "Noto Sans CJK SC" on openSUSE
|
||||
|
||||
check_rpm_missing(\@suse_tex_pkgs, 2) if ($pdf);
|
||||
check_missing_tex(2) if ($pdf);
|
||||
check_missing(\%map);
|
||||
|
||||
return if (!$need && !$optional);
|
||||
@@ -450,7 +495,14 @@ sub give_mageia_hints()
|
||||
"texlive-fontsextra",
|
||||
);
|
||||
|
||||
check_rpm_missing(\@tex_pkgs, 1) if ($pdf);
|
||||
$map{"latexmk"} = "texlive-collection-basic";
|
||||
|
||||
if ($pdf) {
|
||||
check_missing_file("/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc",
|
||||
"google-noto-sans-cjk-ttc-fonts", 2);
|
||||
}
|
||||
|
||||
check_rpm_missing(\@tex_pkgs, 2) if ($pdf);
|
||||
check_missing(\%map);
|
||||
|
||||
return if (!$need && !$optional);
|
||||
@@ -473,7 +525,13 @@ sub give_arch_linux_hints()
|
||||
"texlive-latexextra",
|
||||
"ttf-dejavu",
|
||||
);
|
||||
check_pacman_missing(\@archlinux_tex_pkgs, 1) if ($pdf);
|
||||
check_pacman_missing(\@archlinux_tex_pkgs, 2) if ($pdf);
|
||||
|
||||
if ($pdf) {
|
||||
check_missing_file("/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc",
|
||||
"noto-fonts-cjk", 2);
|
||||
}
|
||||
|
||||
check_missing(\%map);
|
||||
|
||||
return if (!$need && !$optional);
|
||||
@@ -492,15 +550,31 @@ sub give_gentoo_hints()
|
||||
);
|
||||
|
||||
check_missing_file("/usr/share/fonts/dejavu/DejaVuSans.ttf",
|
||||
"media-fonts/dejavu", 1) if ($pdf);
|
||||
"media-fonts/dejavu", 2) if ($pdf);
|
||||
|
||||
if ($pdf) {
|
||||
check_missing_file("/usr/share/fonts/noto-cjk/NotoSansCJKsc-Regular.otf",
|
||||
"media-fonts/noto-cjk", 2);
|
||||
}
|
||||
|
||||
check_missing(\%map);
|
||||
|
||||
return if (!$need && !$optional);
|
||||
|
||||
printf("You should run:\n\n");
|
||||
printf("\tsudo su -c 'echo \"media-gfx/imagemagick svg png\" > /etc/portage/package.use/imagemagick'\n");
|
||||
printf("\tsudo su -c 'echo \"media-gfx/graphviz cairo pdf\" > /etc/portage/package.use/graphviz'\n");
|
||||
|
||||
my $imagemagick = "media-gfx/imagemagick svg png";
|
||||
my $cairo = "media-gfx/graphviz cairo pdf";
|
||||
my $portage_imagemagick = "/etc/portage/package.use/imagemagick";
|
||||
my $portage_cairo = "/etc/portage/package.use/graphviz";
|
||||
|
||||
if (qx(cat $portage_imagemagick) ne "$imagemagick\n") {
|
||||
printf("\tsudo su -c 'echo \"$imagemagick\" > $portage_imagemagick'\n")
|
||||
}
|
||||
if (qx(cat $portage_cairo) ne "$cairo\n") {
|
||||
printf("\tsudo su -c 'echo \"$cairo\" > $portage_cairo'\n");
|
||||
}
|
||||
|
||||
printf("\tsudo emerge --ask $install\n");
|
||||
|
||||
}
|
||||
@@ -560,7 +634,7 @@ sub check_distros()
|
||||
my %map = (
|
||||
"sphinx-build" => "sphinx"
|
||||
);
|
||||
check_missing_tex(1) if ($pdf);
|
||||
check_missing_tex(2) if ($pdf);
|
||||
check_missing(\%map);
|
||||
print "I don't know distro $system_release.\n";
|
||||
print "So, I can't provide you a hint with the install procedure.\n";
|
||||
@@ -589,11 +663,13 @@ sub check_needs()
|
||||
check_program("make", 0);
|
||||
check_program("gcc", 0);
|
||||
check_python_module("sphinx_rtd_theme", 1) if (!$virtualenv);
|
||||
check_program("xelatex", 1) if ($pdf);
|
||||
check_program("dot", 1);
|
||||
check_program("convert", 1);
|
||||
check_program("rsvg-convert", 1) if ($pdf);
|
||||
check_program("latexmk", 1) if ($pdf);
|
||||
|
||||
# Extra PDF files - should use 2 for is_optional
|
||||
check_program("xelatex", 2) if ($pdf);
|
||||
check_program("rsvg-convert", 2) if ($pdf);
|
||||
check_program("latexmk", 2) if ($pdf);
|
||||
|
||||
check_distros();
|
||||
|
||||
|
Reference in New Issue
Block a user