Skip to content
This repository was archived by the owner on Dec 25, 2023. It is now read-only.

Commit b7f1455

Browse files
Rishabh BhatnagarKAGA-KOKO
authored andcommitted
kernel_headers: Fix headers not detected in incremental builds
Currently the Soong logic doesn't kick in if a change updates headers but doesn't update gen_headers_arm*.bp files for incremental builds. Fix the issue by making inputs to the kernel_headers.py script as variables instead of a list. Change-Id: I9737f6d655848458bfda70b8c6f4d9aa896a98fc Signed-off-by: Rishabh Bhatnagar <[email protected]> Signed-off-by: Prateek Sood <[email protected]>
1 parent 83b2445 commit b7f1455

File tree

3 files changed

+78
-52
lines changed

3 files changed

+78
-52
lines changed

gen_headers_arm.bp

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
// ***** DO NOT EDIT *****
22
// This file is generated by kernel_headers.py
33

4-
gen_headers_arm = [
4+
gen_headers_srcs_arm = [
5+
"arch/arm/include/uapi/asm/Kbuild",
6+
"include/uapi/asm-generic/Kbuild.asm",
7+
"Makefile",
8+
"arch/arm/tools/syscall.tbl",
9+
"include/uapi/**/*.h",
10+
"arch/arm/include/uapi/**/*.h",
11+
]
12+
13+
gen_headers_exclude_srcs_arm = [
14+
"include/uapi/linux/a.out.h",
15+
]
16+
17+
gen_headers_out_arm = [
518

619
// Matching generated-y:
720

@@ -952,7 +965,8 @@ genrule {
952965
// checked later to ensure that it matches the checked-
953966
// in version (this file).
954967
name: "qti_generate_gen_headers_arm",
955-
srcs: ["arch/arm/include/uapi/asm/Kbuild", "include/uapi/asm-generic/Kbuild.asm", "arch/arm/include/uapi/**/*.h"],
968+
srcs: gen_headers_srcs_arm,
969+
exclude_srcs: gen_headers_exclude_srcs_arm,
956970
tool_files: ["kernel_headers.py"],
957971
cmd: "python3 $(location kernel_headers.py) " +
958972
kernel_headers_verbose +
@@ -961,7 +975,8 @@ genrule {
961975
"--arch_asm_kbuild $(location arch/arm/include/uapi/asm/Kbuild) " +
962976
"--arch_include_uapi $(locations arch/arm/include/uapi/**/*.h) " +
963977
"--asm_generic_kbuild $(location include/uapi/asm-generic/Kbuild.asm) " +
964-
"blueprints",
978+
"blueprints " +
979+
"# $(in)",
965980
out: ["gen_headers_arm.bp"],
966981
}
967982

@@ -972,19 +987,11 @@ genrule {
972987
"kernel_headers.py",
973988
"arch/arm/tools/syscallhdr.sh",
974989
],
975-
srcs: [
976-
"arch/arm/include/uapi/asm/Kbuild",
977-
"include/uapi/asm-generic/Kbuild.asm",
990+
srcs: gen_headers_srcs_arm +[
978991
"gen_headers_arm.bp",
979992
":qti_generate_gen_headers_arm",
980-
"Makefile",
981-
"arch/arm/tools/syscall.tbl",
982-
"include/uapi/**/*.h",
983-
"arch/arm/include/uapi/**/*.h",
984-
],
985-
exclude_srcs: [
986-
"include/uapi/linux/a.out.h",
987993
],
994+
exclude_srcs: gen_headers_exclude_srcs_arm,
988995
cmd: "python3 $(location kernel_headers.py) " +
989996
kernel_headers_verbose +
990997
"--header_arch arm " +
@@ -1000,5 +1007,5 @@ genrule {
10001007
"--arch_syscall_tbl $(location arch/arm/tools/syscall.tbl) " +
10011008
"--headers_install $(location headers_install.sh) " +
10021009
"--include_uapi $(locations include/uapi/**/*.h)",
1003-
out: ["linux/version.h"] + gen_headers_arm,
1010+
out: ["linux/version.h"] + gen_headers_out_arm,
10041011
}

gen_headers_arm64.bp

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
// ***** DO NOT EDIT *****
22
// This file is generated by kernel_headers.py
33

4-
gen_headers_arm64 = [
4+
gen_headers_srcs_arm64 = [
5+
"arch/arm64/include/uapi/asm/Kbuild",
6+
"include/uapi/asm-generic/Kbuild.asm",
7+
"Makefile",
8+
"include/uapi/**/*.h",
9+
"arch/arm64/include/uapi/**/*.h",
10+
]
11+
12+
gen_headers_exclude_srcs_arm64 = [
13+
"include/uapi/linux/a.out.h",
14+
"include/uapi/linux/kvm_para.h",
15+
]
16+
17+
gen_headers_out_arm64 = [
518

619
// Matching generic-y:
720

@@ -946,7 +959,8 @@ genrule {
946959
// checked later to ensure that it matches the checked-
947960
// in version (this file).
948961
name: "qti_generate_gen_headers_arm64",
949-
srcs: ["arch/arm64/include/uapi/asm/Kbuild", "include/uapi/asm-generic/Kbuild.asm", "arch/arm64/include/uapi/**/*.h"],
962+
srcs: gen_headers_srcs_arm64,
963+
exclude_srcs: gen_headers_exclude_srcs_arm64,
950964
tool_files: ["kernel_headers.py"],
951965
cmd: "python3 $(location kernel_headers.py) " +
952966
kernel_headers_verbose +
@@ -955,7 +969,8 @@ genrule {
955969
"--arch_asm_kbuild $(location arch/arm64/include/uapi/asm/Kbuild) " +
956970
"--arch_include_uapi $(locations arch/arm64/include/uapi/**/*.h) " +
957971
"--asm_generic_kbuild $(location include/uapi/asm-generic/Kbuild.asm) " +
958-
"blueprints",
972+
"blueprints " +
973+
"# $(in)",
959974
out: ["gen_headers_arm64.bp"],
960975
}
961976

@@ -965,19 +980,11 @@ genrule {
965980
tool_files: [
966981
"kernel_headers.py",
967982
],
968-
srcs: [
969-
"arch/arm64/include/uapi/asm/Kbuild",
970-
"include/uapi/asm-generic/Kbuild.asm",
983+
srcs: gen_headers_srcs_arm64 +[
971984
"gen_headers_arm64.bp",
972985
":qti_generate_gen_headers_arm64",
973-
"Makefile",
974-
"include/uapi/**/*.h",
975-
"arch/arm64/include/uapi/**/*.h",
976-
],
977-
exclude_srcs: [
978-
"include/uapi/linux/a.out.h",
979-
"include/uapi/linux/kvm_para.h",
980986
],
987+
exclude_srcs: gen_headers_exclude_srcs_arm64,
981988
cmd: "python3 $(location kernel_headers.py) " +
982989
kernel_headers_verbose +
983990
"--header_arch arm64 " +
@@ -991,5 +998,5 @@ genrule {
991998
"--version_makefile $(location Makefile) " +
992999
"--headers_install $(location headers_install.sh) " +
9931000
"--include_uapi $(locations include/uapi/**/*.h)",
994-
out: ["linux/version.h"] + gen_headers_arm64,
1001+
out: ["linux/version.h"] + gen_headers_out_arm64,
9951002
}

kernel_headers.py

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ def gen_blueprints(
522522
arch_prefix = os.path.join('arch', header_arch, generic_prefix)
523523
generic_src = os.path.join(generic_prefix, rel_glob)
524524
arch_src = os.path.join(arch_prefix, rel_glob)
525-
techpack_src = 'techpack/*'
525+
techpack_src = os.path.join('techpack/*',generic_prefix, '*',rel_glob)
526526

527527
# Excluded sources, architecture specific.
528528
exclude_srcs = []
@@ -561,7 +561,27 @@ def gen_blueprints(
561561
f.write('// ***** DO NOT EDIT *****\n')
562562
f.write('// This file is generated by %s\n' % kernel_headers_py)
563563
f.write('\n')
564-
f.write('gen_headers_%s = [\n' % header_arch)
564+
f.write('gen_headers_srcs_%s = [\n' % header_arch)
565+
f.write(' "%s",\n' % rel_arch_asm_kbuild)
566+
f.write(' "%s",\n' % rel_asm_generic_kbuild)
567+
f.write(' "%s",\n' % makefile)
568+
569+
if header_arch == "arm":
570+
f.write(' "%s",\n' % arm_syscall_tbl)
571+
572+
f.write(' "%s",\n' % generic_src)
573+
f.write(' "%s",\n' % arch_src)
574+
f.write(']\n')
575+
f.write('\n')
576+
577+
if exclude_srcs:
578+
f.write('gen_headers_exclude_srcs_%s = [\n' % header_arch)
579+
for h in exclude_srcs:
580+
f.write(' "%s",\n' % os.path.join(generic_prefix, h))
581+
f.write(']\n')
582+
f.write('\n')
583+
584+
f.write('gen_headers_out_%s = [\n' % header_arch)
565585

566586
if generated_list:
567587
f.write('\n')
@@ -616,7 +636,10 @@ def gen_blueprints(
616636
f.write(' // checked later to ensure that it matches the checked-\n')
617637
f.write(' // in version (this file).\n')
618638
f.write(' name: "%s",\n' % gen_blueprints_module_name)
619-
f.write(' srcs: ["%s", "%s", "%s"],\n' % (rel_arch_asm_kbuild, rel_asm_generic_kbuild, arch_src))
639+
f.write(' srcs: gen_headers_srcs_%s,\n' % header_arch)
640+
if exclude_srcs:
641+
f.write(' exclude_srcs: gen_headers_exclude_srcs_%s,\n' % header_arch)
642+
620643
f.write(' tool_files: ["kernel_headers.py"],\n')
621644
f.write(' cmd: "python3 $(location kernel_headers.py) " +\n')
622645
f.write(' kernel_headers_verbose +\n')
@@ -625,7 +648,8 @@ def gen_blueprints(
625648
f.write(' "--arch_asm_kbuild $(location %s) " +\n' % rel_arch_asm_kbuild)
626649
f.write(' "--arch_include_uapi $(locations %s) " +\n' % arch_src)
627650
f.write(' "--asm_generic_kbuild $(location %s) " +\n' % rel_asm_generic_kbuild)
628-
f.write(' "blueprints",\n')
651+
f.write(' "blueprints " +\n')
652+
f.write(' "# $(in)",\n')
629653
f.write(' out: ["gen_headers_%s.bp"],\n' % header_arch)
630654
f.write('}\n')
631655
f.write('\n')
@@ -640,25 +664,13 @@ def gen_blueprints(
640664
f.write(' "%s",\n' % arm_syscall_tool)
641665

642666
f.write(' ],\n')
643-
f.write(' srcs: [\n')
644-
f.write(' "%s",\n' % rel_arch_asm_kbuild)
645-
f.write(' "%s",\n' % rel_asm_generic_kbuild)
667+
f.write(' srcs: gen_headers_srcs_%s +[\n' % header_arch)
646668
f.write(' "%s",\n' % old_gen_headers_bp)
647669
f.write(' ":%s",\n' % gen_blueprints_module_name)
648-
f.write(' "%s",\n' % makefile)
649-
650-
if header_arch == "arm":
651-
f.write(' "%s",\n' % arm_syscall_tbl)
652-
653-
f.write(' "%s",\n' % generic_src)
654-
f.write(' "%s",\n' % arch_src)
655670
f.write(' ],\n')
656671

657672
if exclude_srcs:
658-
f.write(' exclude_srcs: [\n')
659-
for h in exclude_srcs:
660-
f.write(' "%s",\n' % os.path.join(generic_prefix, h))
661-
f.write(' ],\n')
673+
f.write(' exclude_srcs: gen_headers_exclude_srcs_%s,\n' % header_arch)
662674

663675
f.write(' cmd: "python3 $(location %s) " +\n' % kernel_headers_py)
664676
f.write(' kernel_headers_verbose +\n')
@@ -678,14 +690,14 @@ def gen_blueprints(
678690

679691
f.write(' "--headers_install $(location %s) " +\n' % headers_install_sh)
680692
f.write(' "--include_uapi $(locations %s)",\n' % generic_src)
681-
f.write(' out: ["linux/version.h"] + gen_headers_%s,\n' % header_arch)
693+
f.write(' out: ["linux/version.h"] + gen_headers_out_%s,\n' % header_arch)
682694
f.write('}\n')
683695

684696
return 0
685697

686698
def parse_bp_for_headers(file_name, headers):
687699
parsing_headers = False
688-
pattern = re.compile("gen_headers_[a-zA-Z0-9]+\s*=\s*\[\s*")
700+
pattern = re.compile("gen_headers_out_[a-zA-Z0-9]+\s*=\s*\[\s*")
689701
with open(file_name, 'r') as f:
690702
for line in f:
691703
line = line.strip()
@@ -949,13 +961,13 @@ def main():
949961
if args.verbose:
950962
print('module_dir [%s]' % module_dir)
951963

952-
# Get list of techpack uapi headers to be exported from techpack/* directories.
953-
techpack_uapi = extract_techpack_uapi_headers(args.verbose, module_dir)
964+
techpack_include_uapi = []
965+
954966

955967
if args.mode == 'blueprints':
956968
return gen_blueprints(
957969
args.verbose, args.header_arch, args.gen_dir, args.arch_asm_kbuild,
958-
args.asm_generic_kbuild, module_dir, rel_arch_asm_kbuild, rel_asm_generic_kbuild, args.arch_include_uapi, techpack_uapi)
970+
args.asm_generic_kbuild, module_dir, rel_arch_asm_kbuild, rel_asm_generic_kbuild, args.arch_include_uapi, techpack_include_uapi)
959971

960972
if args.mode == 'headers':
961973
if args.verbose:
@@ -970,7 +982,7 @@ def main():
970982
args.verbose, args.header_arch, args.gen_dir, args.arch_asm_kbuild,
971983
args.asm_generic_kbuild, module_dir, args.old_gen_headers_bp, args.new_gen_headers_bp,
972984
args.version_makefile, args.arch_syscall_tool, args.arch_syscall_tbl,
973-
args.headers_install, args.include_uapi, args.arch_include_uapi, techpack_uapi)
985+
args.headers_install, args.include_uapi, args.arch_include_uapi, techpack_include_uapi)
974986

975987
print('error: unknown mode: %s' % args.mode)
976988
return 1

0 commit comments

Comments
 (0)