Skip to content

Commit

Permalink
kbuild: skip install/check of headers right under uapi directories
Browse files Browse the repository at this point in the history
Since commit 61562f9 ("uapi: export all arch specifics
directories"), "make INSTALL_HDR_PATH=$root/usr headers_install"
deletes standard glibc headers and others in $(root)/usr/include.

The cause of the issue is that headers_install now starts descending
from arch/$(hdr-arch)/include/uapi with $(root)/usr/include for its
destination when installing asm headers.  So, headers already there
are assumed to be unwanted.

When headers_install starts descending from include/uapi with
$(root)/usr/include for its destination, it works around the problem
by creating an dummy destination $(root)/usr/include/uapi, but this
is tricky.

To fix the problem in a clean way is to skip headers install/check
in include/uapi and arch/$(hdr-arch)/include/uapi because we know
there are only sub-directories in uapi directories.  A good side
effect is the empty destination $(root)/usr/include/uapi will go
away.

I am also removing the trailing slash in the headers_check target to
skip checking in arch/$(hdr-arch)/include/uapi.

Fixes: 61562f9 ("uapi: export all arch specifics directories")
Reported-by: Dan Williams <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
Tested-by: Dan Williams <[email protected]>
Acked-by: Nicolas Dichtel <[email protected]>
  • Loading branch information
masahir0y committed May 17, 2017
1 parent 2ea659a commit 05d8cba
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1172,7 +1172,7 @@ headers_check_all: headers_install_all
PHONY += headers_check
headers_check: headers_install
$(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/ $(hdr-dst) HDRCHECK=1
$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi $(hdr-dst) HDRCHECK=1

# ---------------------------------------------------------------------------
# Kernel selftest
Expand Down
43 changes: 27 additions & 16 deletions scripts/Makefile.headersinst
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,44 @@
#
# ==========================================================================

PHONY := __headers
__headers:

include scripts/Kbuild.include

srcdir := $(srctree)/$(obj)
subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.))
# caller may set destination dir (when installing to asm/)
_dst := $(if $(dst),$(dst),$(obj))

# Recursion
__headers: $(subdirs)

.PHONY: $(subdirs)
$(subdirs):
$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@

# Skip header install/check for include/uapi and arch/$(hdr-arch)/include/uapi.
# We have only sub-directories there.
skip-inst := $(if $(filter %/uapi,$(obj)),1)

ifeq ($(skip-inst),)

# generated header directory
gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj)))

# Kbuild file is optional
kbuild-file := $(srctree)/$(obj)/Kbuild
-include $(kbuild-file)

# called may set destination dir (when installing to asm/)
_dst := $(if $(dst),$(dst),$(obj))

old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild
ifneq ($(wildcard $(old-kbuild-file)),)
include $(old-kbuild-file)
endif

include scripts/Kbuild.include

installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst))

srcdir := $(srctree)/$(obj)
gendir := $(objtree)/$(gen)
subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.))
header-files := $(notdir $(wildcard $(srcdir)/*.h))
header-files += $(notdir $(wildcard $(srcdir)/*.agh))
header-files := $(filter-out $(no-export-headers), $(header-files))
Expand Down Expand Up @@ -88,11 +104,9 @@ quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files)
$(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \
touch $@

PHONY += __headersinst __headerscheck

ifndef HDRCHECK
# Rules for installing headers
__headersinst: $(subdirs) $(install-file)
__headers: $(install-file)
@:

targets += $(install-file)
Expand All @@ -104,7 +118,7 @@ $(install-file): scripts/headers_install.sh \
$(call if_changed,install)

else
__headerscheck: $(subdirs) $(check-file)
__headers: $(check-file)
@:

targets += $(check-file)
Expand All @@ -113,11 +127,6 @@ $(check-file): scripts/headers_check.pl $(output-files) FORCE

endif

# Recursion
.PHONY: $(subdirs)
$(subdirs):
$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@

targets := $(wildcard $(sort $(targets)))
cmd_files := $(wildcard \
$(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
Expand All @@ -126,6 +135,8 @@ ifneq ($(cmd_files),)
include $(cmd_files)
endif

endif # skip-inst

.PHONY: $(PHONY)
PHONY += FORCE
FORCE: ;

0 comments on commit 05d8cba

Please sign in to comment.