Whamcloud - gitweb
LU-16962 build: parallel header checks 73/51673/4
authorShaun Tancheff <shaun.tancheff@hpe.com>
Fri, 14 Jul 2023 09:21:45 +0000 (16:21 +0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 24 Aug 2023 04:31:55 +0000 (04:31 +0000)
Add LB2_CHECK_LINUX_HEADER_SRC and LB2_CHECK_LINUX_HEADER_RESULT
macros to use for running header checks in parallel.

Migrate (most) header checks to parallel and run a subset
early as the results of those tests are required by other
configure tests.

Test-Parameters: trivial
HPE-bug-id: LUS-11710
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: Ia765261179d25e96912e65e31c81824b4507e604
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/51673
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
config/lustre-build-linux.m4
config/lustre-build.m4
libcfs/autoconf/lustre-libcfs.m4

index 0fca911..145ab49 100644 (file)
@@ -1071,3 +1071,32 @@ AC_DEFUN([LB2_TEST_CHECK_CONFIG_IM], [
                $3
        ])
 ]) # LB2_TEST_CHECK_CONFIG_IM
+
+#
+# LB2_CHECK_LINUX_HEADER_SRC
+#
+#   $1 - Header file
+#   $2 - Extra CFLAGS (ex: -Werror)
+#
+AC_DEFUN([LB2_CHECK_LINUX_HEADER_SRC], [
+       TEST_DIR=${TEST_DIR:-${ac_pwd}/_lpb}
+       UNIQUE_ID=$(echo $1 | tr /. __)
+       AS_VAR_PUSHDEF([lb_test], [lb_cv_test_${UNIQUE_ID}])
+       # Skip test write and build steps if the result is already known.
+       LB2_LINUX_CONFTEST_C([${UNIQUE_ID}], [LB_LANG_PROGRAM([@%:@include <$1>])])
+       LB2_LINUX_CONFTEST_MAKEFILE([${UNIQUE_ID}], [$2])
+       AS_VAR_POPDEF([lb_test])
+])
+
+#
+# LB2_CHECK_LINUX_HEADER_RESULT
+#
+#   $1 - Header file
+#   $2 - On Success
+#   $3 - On Failure
+#
+AC_DEFUN([LB2_CHECK_LINUX_HEADER_RESULT], [
+       AC_MSG_CHECKING([for linux header $1])
+       UNIQUE_ID=$(echo $1 | tr /. __)
+       LB2_LINUX_TEST_RESULT([${UNIQUE_ID}], [$2], [$3])
+])
index f7d1cfd..3e8d613 100644 (file)
@@ -169,6 +169,19 @@ AS_IF([test "x$enable_modules" = xyes], [
                        AS_IF([test "x$enable_server" != xno], [LB_EXT4_SRC_DIR])
                        LC_PROG_LINUX
 
+                       # Run 'early' checks. The results of these are used in
+                       # other configure tests:
+                       LIBCFS_SRC_LOCKDEP_IS_HELD
+                       LIBCFS_SRC_HAVE_WAIT_BIT_HEADER
+                       LIBCFS_SRC_LINUX_BLK_INTEGRITY_HEADER
+
+                       LB2_LINUX_TEST_COMPILE_ALL([early],
+                               [for available lustre kapi interfaces])
+
+                       LIBCFS_LOCKDEP_IS_HELD
+                       LIBCFS_HAVE_WAIT_BIT_HEADER
+                       LIBCFS_LINUX_BLK_INTEGRITY_HEADER
+
                        # Run any parallel compile tests
                        LB_PROG_LINUX_SRC
                        LIBCFS_PROG_LINUX_SRC
index 4cad252..4ff1c5d 100644 (file)
@@ -819,10 +819,14 @@ AC_DEFUN([LIBCFS_GET_USER_PAGES_6ARG], [
 # 4.6 kernel created stringhash.h which moved stuff out of dcache.h
 # commit f4bcbe792b8f434e32487cff9d9e30ab45a3ce02
 #
+AC_DEFUN([LIBCFS_SRC_STRINGHASH], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/stringhash.h], [-Werror])
+])
 AC_DEFUN([LIBCFS_STRINGHASH], [
-LB_CHECK_LINUX_HEADER([linux/stringhash.h], [
-       AC_DEFINE(HAVE_STRINGHASH, 1,
-               [stringhash.h is present])])
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/stringhash.h], [
+               AC_DEFINE(HAVE_STRINGHASH, 1,
+                       [stringhash.h is present])
+       ])
 ]) # LIBCFS_STRINGHASH
 
 #
@@ -1000,17 +1004,19 @@ AC_DEFUN([LIBCFS_HOTPLUG_STATE_MACHINE], [
 ]) # LIBCFS_HOTPLUG_STATE_MACHINE
 
 #
+# LIBCFS_REFCOUNT_T
+#
 # Kernel version 4.10-rc3 commit f405df5de3170c00e5c54f8b7cf4766044a032ba
 # introduced refcount_t which is atomic_t plus over flow guards.
 #
-AC_DEFUN([LIBCFS_REFCOUNT_T], [
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-Werror"
-LB_CHECK_LINUX_HEADER([linux/refcount.h], [
-       AC_DEFINE(HAVE_REFCOUNT_T, 1,
-               [refcount_t is supported])
+AC_DEFUN([LIBCFS_SRC_REFCOUNT_T], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/refcount.h], [-Werror])
 ])
-EXTRA_KCFLAGS="$tmp_flags"
+AC_DEFUN([LIBCFS_REFCOUNT_T], [
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/refcount.h], [
+               AC_DEFINE(HAVE_REFCOUNT_T, 1,
+                       [refcount_t is supported])
+       ])
 ]) # LIBCFS_REFCOUNT_T
 
 #
@@ -1038,10 +1044,14 @@ AC_DEFUN([LIBCFS_MEMALLOC_NORECLAIM], [
 #
 # 4.11 has broken up sched.h into more headers.
 #
+AC_DEFUN([LIBCFS_SRC_SCHED_HEADERS], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/sched/signal.h], [-Werror])
+])
 AC_DEFUN([LIBCFS_SCHED_HEADERS], [
-LB_CHECK_LINUX_HEADER([linux/sched/signal.h], [
-       AC_DEFINE(HAVE_SCHED_HEADERS, 1,
-               [linux/sched header directory exist])])
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/sched/signal.h], [
+               AC_DEFINE(HAVE_SCHED_HEADERS, 1,
+                       [linux/sched header directory exist])
+       ])
 ]) # LIBCFS_SCHED_HEADERS
 
 #
@@ -1146,28 +1156,36 @@ AC_DEFUN([LIBCFS_CPUS_READ_LOCK], [
 ]) # LIBCFS_CPUS_READ_LOCK
 
 #
+# LIBCFS_HAVE_PROCESSOR_HEADER
+#
 # Kernel version 4.12-rc3 commit fd851a3cdc196bfc1d229b5f22369069af532bf8
 # introduce processor.h
 #
-AC_DEFUN([LIBCFS_HAVE_PROCESSOR_HEADER], [
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-Werror"
-LB_CHECK_LINUX_HEADER([linux/processor.h], [
-       AC_DEFINE(HAVE_PROCESSOR_H, 1,
-               [processor.h is present])
+AC_DEFUN([LIBCFS_SRC_HAVE_PROCESSOR_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/processor.h], [-Werror])
 ])
-EXTRA_KCFLAGS="$tmp_flags"
+AC_DEFUN([LIBCFS_HAVE_PROCESSOR_HEADER], [
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/processor.h], [
+               AC_DEFINE(HAVE_PROCESSOR_H, 1,
+                       [processor.h is present])
+       ],[])
 ]) # LIBCFS_HAVE_PROCESSOR_HEADER
 
 #
+# LIBCFS_HAVE_WAIT_BIT_HEADER
+#
 # Kernel verison 4.12-rc6 commit 5dd43ce2f69d42a71dcacdb13d17d8c0ac1fe8f7
 # created wait_bit.h
 #
+AC_DEFUN([LIBCFS_SRC_HAVE_WAIT_BIT_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/wait_bit.h], [-Werror])
+])
 AC_DEFUN([LIBCFS_HAVE_WAIT_BIT_HEADER], [
-LB_CHECK_LINUX_HEADER([linux/wait_bit.h], [
-       AC_DEFINE(HAVE_WAIT_BIT_HEADER_H, 1,
-               [wait_bit.h is present])])
-]) # LIBCFS_HAVE_WAIT_BIT_HEADER
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/wait_bit.h], [
+               AC_DEFINE(HAVE_WAIT_BIT_HEADER_H, 1,
+                       [wait_bit.h is present])
+       ],[])
+]) # LIBCFS_HAVE_PROCESSOR_HEADER
 
 #
 # Kernel version 4.12-rc6 commmit 2055da97389a605c8a00d163d40903afbe413921
@@ -2033,10 +2051,14 @@ AC_DEFUN([LIBCFS_HAVE_KFREE_SENSITIVE], [
 # Kernel v5.10-rc1-114-ga24d22b225ce
 # crypto: sha - split sha.h into sha1.h and sha2.h
 #
+AC_DEFUN([LIBCFS_SRC_HAVE_CRYPTO_SHA2_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([crypto/sha2.h], [-Werror])
+])
 AC_DEFUN([LIBCFS_HAVE_CRYPTO_SHA2_HEADER], [
-LB_CHECK_LINUX_HEADER([crypto/sha2.h], [
-       AC_DEFINE(HAVE_CRYPTO_SHA2_HEADER, 1,
-               [crypto/sha2.h is present])])
+       LB2_CHECK_LINUX_HEADER_RESULT([crypto/sha2.h], [
+               AC_DEFINE(HAVE_CRYPTO_SHA2_HEADER, 1,
+                       [crypto/sha2.h is present])
+       ])
 ]) # LIBCFS_HAVE_CRYPTO_SHA2_HEADER
 
 #
@@ -2108,14 +2130,14 @@ AC_DEFUN([LIBCFS_LINUX_FORTIFY_STRING_HEADER],[
 # Kernel 5.12 commit 0eb76ba29d16df2951d37c54ca279c4e5630b071
 # crypto: remove cipher routines from public crypto API
 #
-AC_DEFUN([LIBCFS_HAVE_CIPHER_HEADER], [
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-Werror"
-LB_CHECK_LINUX_HEADER([crypto/internal/cipher.h], [
-       AC_DEFINE(HAVE_CIPHER_H, 1,
-               [crypto/internal/cipher.h is present])
+AC_DEFUN([LIBCFS_SRC_HAVE_CIPHER_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([crypto/internal/cipher.h], [-Werror])
 ])
-EXTRA_KCFLAGS="$tmp_flags"
+AC_DEFUN([LIBCFS_HAVE_CIPHER_HEADER], [
+       LB2_CHECK_LINUX_HEADER_RESULT([crypto/internal/cipher.h], [
+               AC_DEFINE(HAVE_CIPHER_H, 1,
+                       [crypto/internal/cipher.h is present])
+       ])
 ]) # LIBCFS_HAVE_CIPHER_HEADER
 
 #
@@ -2146,13 +2168,14 @@ AC_DEFUN([LIBCFS_HAVE_TASK_IS_RUNNING], [
 # Kernel 5.14-rc5 commit c0891ac15f0428ffa81b2e818d416bdf3cb74ab6
 # isystem: ship and use stdarg.h
 #
-AC_DEFUN([LIBCFS_LINUX_STDARG_HEADER], [
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-Werror"
-LB_CHECK_LINUX_HEADER([linux/stdarg.h], [
-       AC_DEFINE(HAVE_LINUX_STDARG_HEADER, 1, [linux/stdarg.h is present])
+AC_DEFUN([LIBCFS_SRC_LINUX_STDARG_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/stdarg.h], [-Werror])
 ])
-EXTRA_KCFLAGS="$tmp_flags"
+AC_DEFUN([LIBCFS_LINUX_STDARG_HEADER], [
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/stdarg.h], [
+               AC_DEFINE(HAVE_LINUX_STDARG_HEADER, 1,
+                       [linux/stdarg.h is present])
+       ])
 ]) # LIBCFS_LINUX_STDARG_HEADER
 
 #
@@ -2161,14 +2184,14 @@ EXTRA_KCFLAGS="$tmp_flags"
 # Kernel 5.14 commit f39650de687e35766572ac89dbcd16a5911e2f0a
 # kernel.h: split out panic and oops helpers
 #
-AC_DEFUN([LIBCFS_HAVE_PANIC_NOTIFIER_HEADER], [
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-Werror"
-LB_CHECK_LINUX_HEADER([linux/panic_notifier.h], [
-       AC_DEFINE(HAVE_PANIC_NOTIFIER_H, 1,
-               [linux/panic_notifier.h is present])
+AC_DEFUN([LIBCFS_SRC_HAVE_PANIC_NOTIFIER_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/panic_notifier.h], [-Werror])
 ])
-EXTRA_KCFLAGS="$tmp_flags"
+AC_DEFUN([LIBCFS_HAVE_PANIC_NOTIFIER_HEADER], [
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/panic_notifier.h], [
+               AC_DEFINE(HAVE_PANIC_NOTIFIER_H, 1,
+                       [linux/panic_notifier.h is present])
+       ])
 ]) # LIBCFS_HAVE_PANIC_NOTIFIER_HEADER
 
 #
@@ -2198,14 +2221,14 @@ AC_DEFUN([LIBCFS_PARAM_SET_UINT_MINMAX],[
 # Kernel 5.15-rc6 commit fe45e630a1035aea94c29016f2598bbde149bbe3
 # block: move integrity handling out of <linux/blkdev.h>
 #
-AC_DEFUN([LIBCFS_LINUX_BLK_INTEGRITY_HEADER], [
-tmp_flags="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="-Werror"
-LB_CHECK_LINUX_HEADER([linux/blk-integrity.h], [
-       AC_DEFINE(HAVE_LINUX_BLK_INTEGRITY_HEADER, 1,
-               [linux/blk-integrity.h is present])
+AC_DEFUN([LIBCFS_SRC_LINUX_BLK_INTEGRITY_HEADER], [
+       LB2_CHECK_LINUX_HEADER_SRC([linux/blk-integrity.h], [-Werror])
 ])
-EXTRA_KCFLAGS="$tmp_flags"
+AC_DEFUN([LIBCFS_LINUX_BLK_INTEGRITY_HEADER], [
+       LB2_CHECK_LINUX_HEADER_RESULT([linux/blk-integrity.h], [
+               AC_DEFINE(HAVE_LINUX_BLK_INTEGRITY_HEADER, 1,
+                       [linux/blk-integrity.h is present])
+       ])
 ]) # LIBCFS_LINUX_BLK_INTEGRITY_HEADER
 
 #
@@ -2367,6 +2390,7 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
        LIBCFS_SRC_BROKEN_HASH_64
        LIBCFS_SRC_STACKTRACE_OPS_ADDRESS_RETURN_INT
        LIBCFS_SRC_GET_USER_PAGES_6ARG
+       LIBCFS_SRC_STRINGHASH
        # 4.7
        LIBCFS_SRC_RHASHTABLE_INSERT_FAST
        LIBCFS_SRC_RHASHTABLE_WALK_INIT_3ARG
@@ -2382,12 +2406,15 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
        # 4.11
        LIBCFS_SRC_NL_EXT_ACK
        LIBCFS_SRC_RHASHTABLE_LOOKUP_GET_INSERT_FAST
+       LIBCFS_SRC_SCHED_HEADERS
        LIBCFS_SRC_KREF_READ
        LIBCFS_SRC_RHT_BUCKET_VAR
        # 4.12
        LIBCFS_SRC_CPUS_READ_LOCK
+       LIBCFS_SRC_HAVE_PROCESSOR_HEADER
        LIBCFS_SRC_WAIT_QUEUE_TASK_LIST_RENAME
        LIBCFS_SRC_WAIT_BIT_QUEUE_ENTRY_EXISTS
+       LIBCFS_SRC_REFCOUNT_T
        LIBCFS_SRC_MEMALLOC_NORECLAIM
        # 4.13
        LIBCFS_SRC_NLA_STRDUP
@@ -2397,7 +2424,6 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
        LIBCFS_SRC_NEW_KERNEL_WRITE
        LIBCFS_SRC_NEW_KERNEL_READ
        # 4.15
-       LIBCFS_SRC_LOCKDEP_IS_HELD
        LIBCFS_SRC_BITMAP_TO_ARR32
        LIBCFS_SRC_TIMER_SETUP
        # 4.16
@@ -2440,12 +2466,17 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
        LIBCFS_SRC_SEC_RELEASE_SECCTX
        # 5.10
        LIBCFS_SRC_HAVE_KFREE_SENSITIVE
+       LIBCFS_SRC_HAVE_CRYPTO_SHA2_HEADER
        LIBCFS_SRC_HAVE_LIST_CMP_FUNC_T
        LIBCFS_SRC_NLA_STRLCPY
        # 5.12
        LIBCFS_SRC_LINUX_FORTIFY_STRING_HEADER
+       LIBCFS_SRC_HAVE_CIPHER_HEADER
        # 5.13
        LIBCFS_SRC_HAVE_TASK_IS_RUNNING
+       # 5.14
+       LIBCFS_SRC_LINUX_STDARG_HEADER
+       LIBCFS_SRC_HAVE_PANIC_NOTIFIER_HEADER
        # 5.15
        LIBCFS_SRC_PARAM_SET_UINT_MINMAX
        # 5.17
@@ -2508,6 +2539,7 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
        LIBCFS_BROKEN_HASH_64
        LIBCFS_STACKTRACE_OPS_ADDRESS_RETURN_INT
        LIBCFS_GET_USER_PAGES_6ARG
+       LIBCFS_STRINGHASH
        # 4.7
        LIBCFS_RHASHTABLE_INSERT_FAST
        LIBCFS_RHASHTABLE_WALK_INIT_3ARG
@@ -2523,12 +2555,15 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
        # 4.11
        LIBCFS_NL_EXT_ACK
        LIBCFS_RHASHTABLE_LOOKUP_GET_INSERT_FAST
+       LIBCFS_SCHED_HEADERS
        LIBCFS_KREF_READ
        LIBCFS_RHT_BUCKET_VAR
        # 4.12
        LIBCFS_CPUS_READ_LOCK
+       LIBCFS_HAVE_PROCESSOR_HEADER
        LIBCFS_WAIT_QUEUE_TASK_LIST_RENAME
        LIBCFS_WAIT_BIT_QUEUE_ENTRY_EXISTS
+       LIBCFS_REFCOUNT_T
        LIBCFS_MEMALLOC_NORECLAIM
        # 4.13
        LIBCFS_NLA_STRDUP
@@ -2538,7 +2573,6 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
        LIBCFS_NEW_KERNEL_WRITE
        LIBCFS_NEW_KERNEL_READ
        # 4.15
-       LIBCFS_LOCKDEP_IS_HELD
        LIBCFS_BITMAP_TO_ARR32
        LIBCFS_TIMER_SETUP
        # 4.16
@@ -2581,12 +2615,17 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
        LIBCFS_SEC_RELEASE_SECCTX
        # 5.10
        LIBCFS_HAVE_KFREE_SENSITIVE
+       LIBCFS_HAVE_CRYPTO_SHA2_HEADER
        LIBCFS_HAVE_LIST_CMP_FUNC_T
        LIBCFS_NLA_STRLCPY
        # 5.12
        LIBCFS_LINUX_FORTIFY_STRING_HEADER
+       LIBCFS_HAVE_CIPHER_HEADER
        # 5.13
        LIBCFS_HAVE_TASK_IS_RUNNING
+       # 5.14
+       LIBCFS_LINUX_STDARG_HEADER
+       LIBCFS_HAVE_PANIC_NOTIFIER_HEADER
        # 5.15
        LIBCFS_PARAM_SET_UINT_MINMAX
        # 5.17
@@ -2607,31 +2646,14 @@ AC_MSG_NOTICE([LibCFS kernel checks
 ==============================================================================])
 LIBCFS_CONFIG_PANIC_DUMPLOG
 
-# 4.6 - Header Check
-LIBCFS_STRINGHASH
 # 4.6 - Export Check
 LIBCFS_EXPORT_KSET_FIND_OBJ
-# 4.10 - Header Check
-LIBCFS_REFCOUNT_T
-# 4.11 - Header Check
-LIBCFS_SCHED_HEADERS
-# 4.13 - Header Checks
-LIBCFS_HAVE_PROCESSOR_HEADER
-LIBCFS_HAVE_WAIT_BIT_HEADER
 # 4.13 - Export Check
 LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK
-# 5.0 - Header Check
+# 5.0 - Export Check
 LIBCFS_GENRADIX
-# 5.7 - Export Check and Header Check
+# 5.7 - Export Check
 LIBCFS_KALLSYMS_LOOKUP
-LIBCFS_HAVE_CRYPTO_SHA2_HEADER
-# 5.12 - Header Check
-LIBCFS_HAVE_CIPHER_HEADER
-# 5.14 - Header Checks
-LIBCFS_LINUX_STDARG_HEADER
-LIBCFS_HAVE_PANIC_NOTIFIER_HEADER
-# 5.15 - Header Check
-LIBCFS_LINUX_BLK_INTEGRITY_HEADER
 ]) # LIBCFS_PROG_LINUX
 
 #