public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes
@ 2025-04-10 10:07 rajmohan r
  2025-04-10 19:33 ` [OE-core] " Alexander Kanavin
  0 siblings, 1 reply; 5+ messages in thread
From: rajmohan r @ 2025-04-10 10:07 UTC (permalink / raw)
  To: openembedded-core

If 'run-built-tests' is 'yes' run the test binaries, else do not run
the test binaries.

Currently its taking 20min to complete do_check() for glibc-y2038-tests.
Test binaries are run in do_check() stage though 'run-built-tests' is
set 'no'. Which is wrong hence include 'tests-special' target inside
the 'run-built-tests' condition when set to 'yes' to avoid running the
test binaries.

Also remove 'tests-special' target from the 'tests' and 'xtests' list
when run-built-tests set to 'no' to avoid running test binaries.

After this change, no binary is run and time to complete do_check()
stage is 7min.

Upstream-Status: Inappropriate [oe-specific]

Signed-off-by: rajmohan r <semc.2042@gmail.com>
---
 .../glibc/glibc-y2038-tests_2.41.bb           |   1 +
 ...tests-special-in-run-built-tests-yes.patch | 184 ++++++++++++++++++
 2 files changed, 185 insertions(+)
 create mode 100644 meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch

diff --git a/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb b/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
index 9ea09a4e12..2e1f9b02c9 100644
--- a/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
+++ b/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
@@ -5,6 +5,7 @@ inherit ptest features_check
 REQUIRED_DISTRO_FEATURES = "ptest"
 
 SRC_URI += "\
+	file://include-tests-special-in-run-built-tests-yes.patch \
 	file://run-ptest \
 "
 
diff --git a/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch b/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
new file mode 100644
index 0000000000..f8f78c5863
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
@@ -0,0 +1,184 @@
+glibc-y2038-tests: include tests-special in run-built-tests yes
+
+If 'run-built-tests' is 'yes' run the test binaries, else do not run
+the test binaries.
+
+Currently its taking 20min to complete do_check() for glibc-y2038-tests.
+Test binaries are run in do_check() stage though 'run-built-tests' is
+set 'no'. Which is wrong hence include 'tests-special' target inside
+the 'run-built-tests' condition when set to 'yes' to avoid running the
+test binaries.
+
+Also remove 'tests-special' target from the 'tests' and 'xtests' list
+when run-built-tests set to 'no' to avoid running test binaries.
+
+After this change, no binary is run and time to complete do_check()
+stage is 7min.
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: rajmohan r <semc.2042@gmail.com>
+--- 
+ Makefile  | 16 ++++++++++++++++
+ Makerules |  2 ++
+ Rules     |  8 ++++++--
+ 3 files changed, 24 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 5c20ed3..ed95e99 100644
+--- a/Makefile
++++ b/Makefile
+@@ -545,21 +545,26 @@ tests-clean: do-tests-clean
+ 	@$(MAKE) subdir_testclean no_deps=t
+ 
+ ifneq (,$(CXX))
++ifeq ($(run-built-tests),yes)
+ vpath c++-types.data $(+sysdep_dirs)
+ 
+ tests-special += $(objpfx)c++-types-check.out
+ $(objpfx)c++-types-check.out: c++-types.data scripts/check-c++-types.sh
+ 	scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu11 $(+gccwarn-c),$(CFLAGS)) $(CPPFLAGS) > $@; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ endif
+ 
++ifeq ($(run-built-tests),yes)
+ tests-special += $(objpfx)check-local-headers.out
+ $(objpfx)check-local-headers.out: scripts/check-local-headers.sh
+ 	AWK='$(AWK)' scripts/check-local-headers.sh \
+ 	  "$(includedir)" "$(objpfx)" < /dev/null > $@; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ 
+ ifneq "$(headers)" ""
++ifeq ($(run-built-tests),yes)
+ # Special test of all the installed headers in this directory.
+ tests-special += $(objpfx)check-installed-headers-c.out
+ libof-check-installed-headers-c := testsuite
+@@ -570,8 +575,10 @@ $(objpfx)check-installed-headers-c.out: \
+ 	     $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \
+ 	  $(headers) > $@; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ 
+ ifneq "$(CXX)" ""
++ifeq ($(run-built-tests),yes)
+ tests-special += $(objpfx)check-installed-headers-cxx.out
+ libof-check-installed-headers-cxx := testsuite
+ $(objpfx)check-installed-headers-cxx.out: \
+@@ -581,14 +588,18 @@ $(objpfx)check-installed-headers-cxx.out: \
+ 	     $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
+ 	  $(headers) > $@; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ endif # $(CXX)
+ 
++ifeq ($(run-built-tests),yes)
+ tests-special += $(objpfx)check-wrapper-headers.out
+ $(objpfx)check-wrapper-headers.out: scripts/check-wrapper-headers.py $(headers)
+ 	$(PYTHON) $< --root=. --subdir=. $(headers) \
+ 	  --generated $(common-generated) > $@; $(evaluate-test)
++endif # $(run-built-tests) = yes
+ endif # $(headers)
+ 
++ifeq ($(run-built-tests),yes)
+ # Lint all Makefiles; including this one.  Pass `pwd` as the source
+ # directory since the top-level Makefile is in the root of the source
+ # tree and these tests are run from there.  We add light-weight linting
+@@ -598,7 +609,9 @@ tests-special += $(objpfx)lint-makefiles.out
+ $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
+ 	$(SHELL) $< "$(PYTHON)" `pwd` > $@ ; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ 
++ifeq ($(run-built-tests),yes)
+ # Link libc.a as a whole to verify that it does not contain multiple
+ # definitions of any symbols.
+ tests-special += $(objpfx)link-static-libc.out
+@@ -606,6 +619,7 @@ $(objpfx)link-static-libc.out:
+ 	$(LINK.o) $(whole-archive) -nostdlib -nostartfiles -r \
+ 	  $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ 
+ # Print test summary for tests in $1 .sum file;
+ # $2 is optional test identifier.
+@@ -686,6 +700,7 @@ endif
+ 	rm -f $(symbolic-link-list)
+ 	touch $(objpfx)testroot.pristine/install.stamp
+ 
++ifeq ($(run-built-tests),yes)
+ tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
+ tests: $(tests-special)
+ 	$(..)scripts/merge-test-results.sh -s $(objpfx) "" \
+@@ -700,6 +715,7 @@ xtests:
+ 	  $(sort $(subdirs)) \
+ 	  > $(objpfx)xtests.sum
+ 	$(call summarize-tests,xtests.sum, for extra tests)
++endif # $(run-built-tests) = yes
+ 
+ # The realclean target is just like distclean for the parent, but we want
+ # the subdirs to know the difference in case they care.
+diff --git a/Makerules b/Makerules
+index ada6168..40b5ef2 100644
+--- a/Makerules
++++ b/Makerules
+@@ -1232,6 +1232,7 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
+ endif
+ 
+ ifeq ($(build-shared),yes)
++ifeq ($(run-built-tests),yes)
+ # Generate normalized lists of symbols, versions, and data sizes.
+ # This is handy for checking against existing library binaries.
+ 
+@@ -1321,6 +1322,7 @@ tests-special += $(check-abi-list)
+ endif
+ endif
+ 
++endif # $(run-built-tests) = yes
+ endif
+ \f
+ FORCE:
+diff --git a/Rules b/Rules
+index c8adc00..5a77516 100644
+--- a/Rules
++++ b/Rules
+@@ -94,6 +94,7 @@ $(objpfx)check-installed-headers-c.out: \
+ ifneq "$(CXX)" ""
+ # If a C++ compiler is available, also test that they can be compiled
+ # in isolation as C++.
++ifeq ($(run-built-tests),yes)
+ tests-special += $(objpfx)check-installed-headers-cxx.out
+ libof-check-installed-headers-cxx := testsuite
+ $(objpfx)check-installed-headers-cxx.out: \
+@@ -103,8 +104,10 @@ $(objpfx)check-installed-headers-cxx.out: \
+ 	     $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
+ 	  $(headers) > $@; \
+ 	$(evaluate-test)
++endif # $(run-built-tests) = yes
+ endif # $(CXX)
+ 
++ifeq ($(run-built-tests),yes)
+ # Test that a wrapper header exists in include/ for each non-sysdeps header.
+ # This script does not need $(py-env).
+ tests-special += $(objpfx)check-wrapper-headers.out
+@@ -112,6 +115,7 @@ $(objpfx)check-wrapper-headers.out: \
+   $(..)scripts/check-wrapper-headers.py $(headers)
+ 	$(PYTHON) $< --root=$(..) --subdir=$(subdir) $(headers) > $@; \
+ 	  $(evaluate-test)
++endif # $(run-built-tests) = yes
+ 
+ # Test that none of the headers installed by this directory use certain
+ # obsolete constructs (e.g. legacy BSD typedefs superseded by stdint.h).
+@@ -153,9 +157,9 @@ tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
+ 					  $(tests-malloc-check:%=%-malloc-check) \
+ 					  $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
+ 					  $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)) \
+-			     $(test-srcs)) $(tests-special) \
++			     $(test-srcs)) \
+ 			     $(tests-printers-programs)
+-xtests: tests $(xtests-special)
++xtests: tests
+ else # $(run-built-tests) != no
+ # The $(xtests) dependency ensures that xtests are always built.
+ tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes
  2025-04-10 10:07 [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes rajmohan r
@ 2025-04-10 19:33 ` Alexander Kanavin
  2025-04-22 11:03   ` rajmohan r
  0 siblings, 1 reply; 5+ messages in thread
From: Alexander Kanavin @ 2025-04-10 19:33 UTC (permalink / raw)
  To: semc.2042; +Cc: openembedded-core

Thanks. This patch is invasive and adds to glibc maintenance burden.
Which begs the question: do we need the recipe at all? Is there a
particular reason you started looking into this issue?

It is by now well established that glibc itself works as it should,
that all affected 32 bit targets are configured to use 64 bit time_t,
and that any lingering y2038 issues are in components other than the c
library, and usually come from C programming mistakes (e.g. storing
timestamps in long). Maybe we can simply remove the recipe?

Alex

On Thu, 10 Apr 2025 at 12:07, rajmohan r via lists.openembedded.org
<semc.2042=gmail.com@lists.openembedded.org> wrote:
>
> If 'run-built-tests' is 'yes' run the test binaries, else do not run
> the test binaries.
>
> Currently its taking 20min to complete do_check() for glibc-y2038-tests.
> Test binaries are run in do_check() stage though 'run-built-tests' is
> set 'no'. Which is wrong hence include 'tests-special' target inside
> the 'run-built-tests' condition when set to 'yes' to avoid running the
> test binaries.
>
> Also remove 'tests-special' target from the 'tests' and 'xtests' list
> when run-built-tests set to 'no' to avoid running test binaries.
>
> After this change, no binary is run and time to complete do_check()
> stage is 7min.
>
> Upstream-Status: Inappropriate [oe-specific]
>
> Signed-off-by: rajmohan r <semc.2042@gmail.com>
> ---
>  .../glibc/glibc-y2038-tests_2.41.bb           |   1 +
>  ...tests-special-in-run-built-tests-yes.patch | 184 ++++++++++++++++++
>  2 files changed, 185 insertions(+)
>  create mode 100644 meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
>
> diff --git a/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb b/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
> index 9ea09a4e12..2e1f9b02c9 100644
> --- a/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
> +++ b/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
> @@ -5,6 +5,7 @@ inherit ptest features_check
>  REQUIRED_DISTRO_FEATURES = "ptest"
>
>  SRC_URI += "\
> +       file://include-tests-special-in-run-built-tests-yes.patch \
>         file://run-ptest \
>  "
>
> diff --git a/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch b/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
> new file mode 100644
> index 0000000000..f8f78c5863
> --- /dev/null
> +++ b/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
> @@ -0,0 +1,184 @@
> +glibc-y2038-tests: include tests-special in run-built-tests yes
> +
> +If 'run-built-tests' is 'yes' run the test binaries, else do not run
> +the test binaries.
> +
> +Currently its taking 20min to complete do_check() for glibc-y2038-tests.
> +Test binaries are run in do_check() stage though 'run-built-tests' is
> +set 'no'. Which is wrong hence include 'tests-special' target inside
> +the 'run-built-tests' condition when set to 'yes' to avoid running the
> +test binaries.
> +
> +Also remove 'tests-special' target from the 'tests' and 'xtests' list
> +when run-built-tests set to 'no' to avoid running test binaries.
> +
> +After this change, no binary is run and time to complete do_check()
> +stage is 7min.
> +
> +Upstream-Status: Inappropriate [oe-specific]
> +
> +Signed-off-by: rajmohan r <semc.2042@gmail.com>
> +---
> + Makefile  | 16 ++++++++++++++++
> + Makerules |  2 ++
> + Rules     |  8 ++++++--
> + 3 files changed, 24 insertions(+), 2 deletions(-)
> +
> +diff --git a/Makefile b/Makefile
> +index 5c20ed3..ed95e99 100644
> +--- a/Makefile
> ++++ b/Makefile
> +@@ -545,21 +545,26 @@ tests-clean: do-tests-clean
> +       @$(MAKE) subdir_testclean no_deps=t
> +
> + ifneq (,$(CXX))
> ++ifeq ($(run-built-tests),yes)
> + vpath c++-types.data $(+sysdep_dirs)
> +
> + tests-special += $(objpfx)c++-types-check.out
> + $(objpfx)c++-types-check.out: c++-types.data scripts/check-c++-types.sh
> +       scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu11 $(+gccwarn-c),$(CFLAGS)) $(CPPFLAGS) > $@; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> + endif
> +
> ++ifeq ($(run-built-tests),yes)
> + tests-special += $(objpfx)check-local-headers.out
> + $(objpfx)check-local-headers.out: scripts/check-local-headers.sh
> +       AWK='$(AWK)' scripts/check-local-headers.sh \
> +         "$(includedir)" "$(objpfx)" < /dev/null > $@; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> +
> + ifneq "$(headers)" ""
> ++ifeq ($(run-built-tests),yes)
> + # Special test of all the installed headers in this directory.
> + tests-special += $(objpfx)check-installed-headers-c.out
> + libof-check-installed-headers-c := testsuite
> +@@ -570,8 +575,10 @@ $(objpfx)check-installed-headers-c.out: \
> +            $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \
> +         $(headers) > $@; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> +
> + ifneq "$(CXX)" ""
> ++ifeq ($(run-built-tests),yes)
> + tests-special += $(objpfx)check-installed-headers-cxx.out
> + libof-check-installed-headers-cxx := testsuite
> + $(objpfx)check-installed-headers-cxx.out: \
> +@@ -581,14 +588,18 @@ $(objpfx)check-installed-headers-cxx.out: \
> +            $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
> +         $(headers) > $@; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> + endif # $(CXX)
> +
> ++ifeq ($(run-built-tests),yes)
> + tests-special += $(objpfx)check-wrapper-headers.out
> + $(objpfx)check-wrapper-headers.out: scripts/check-wrapper-headers.py $(headers)
> +       $(PYTHON) $< --root=. --subdir=. $(headers) \
> +         --generated $(common-generated) > $@; $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> + endif # $(headers)
> +
> ++ifeq ($(run-built-tests),yes)
> + # Lint all Makefiles; including this one.  Pass `pwd` as the source
> + # directory since the top-level Makefile is in the root of the source
> + # tree and these tests are run from there.  We add light-weight linting
> +@@ -598,7 +609,9 @@ tests-special += $(objpfx)lint-makefiles.out
> + $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
> +       $(SHELL) $< "$(PYTHON)" `pwd` > $@ ; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> +
> ++ifeq ($(run-built-tests),yes)
> + # Link libc.a as a whole to verify that it does not contain multiple
> + # definitions of any symbols.
> + tests-special += $(objpfx)link-static-libc.out
> +@@ -606,6 +619,7 @@ $(objpfx)link-static-libc.out:
> +       $(LINK.o) $(whole-archive) -nostdlib -nostartfiles -r \
> +         $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> +
> + # Print test summary for tests in $1 .sum file;
> + # $2 is optional test identifier.
> +@@ -686,6 +700,7 @@ endif
> +       rm -f $(symbolic-link-list)
> +       touch $(objpfx)testroot.pristine/install.stamp
> +
> ++ifeq ($(run-built-tests),yes)
> + tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
> + tests: $(tests-special)
> +       $(..)scripts/merge-test-results.sh -s $(objpfx) "" \
> +@@ -700,6 +715,7 @@ xtests:
> +         $(sort $(subdirs)) \
> +         > $(objpfx)xtests.sum
> +       $(call summarize-tests,xtests.sum, for extra tests)
> ++endif # $(run-built-tests) = yes
> +
> + # The realclean target is just like distclean for the parent, but we want
> + # the subdirs to know the difference in case they care.
> +diff --git a/Makerules b/Makerules
> +index ada6168..40b5ef2 100644
> +--- a/Makerules
> ++++ b/Makerules
> +@@ -1232,6 +1232,7 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
> + endif
> +
> + ifeq ($(build-shared),yes)
> ++ifeq ($(run-built-tests),yes)
> + # Generate normalized lists of symbols, versions, and data sizes.
> + # This is handy for checking against existing library binaries.
> +
> +@@ -1321,6 +1322,7 @@ tests-special += $(check-abi-list)
> + endif
> + endif
> +
> ++endif # $(run-built-tests) = yes
> + endif
> +
> + FORCE:
> +diff --git a/Rules b/Rules
> +index c8adc00..5a77516 100644
> +--- a/Rules
> ++++ b/Rules
> +@@ -94,6 +94,7 @@ $(objpfx)check-installed-headers-c.out: \
> + ifneq "$(CXX)" ""
> + # If a C++ compiler is available, also test that they can be compiled
> + # in isolation as C++.
> ++ifeq ($(run-built-tests),yes)
> + tests-special += $(objpfx)check-installed-headers-cxx.out
> + libof-check-installed-headers-cxx := testsuite
> + $(objpfx)check-installed-headers-cxx.out: \
> +@@ -103,8 +104,10 @@ $(objpfx)check-installed-headers-cxx.out: \
> +            $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
> +         $(headers) > $@; \
> +       $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> + endif # $(CXX)
> +
> ++ifeq ($(run-built-tests),yes)
> + # Test that a wrapper header exists in include/ for each non-sysdeps header.
> + # This script does not need $(py-env).
> + tests-special += $(objpfx)check-wrapper-headers.out
> +@@ -112,6 +115,7 @@ $(objpfx)check-wrapper-headers.out: \
> +   $(..)scripts/check-wrapper-headers.py $(headers)
> +       $(PYTHON) $< --root=$(..) --subdir=$(subdir) $(headers) > $@; \
> +         $(evaluate-test)
> ++endif # $(run-built-tests) = yes
> +
> + # Test that none of the headers installed by this directory use certain
> + # obsolete constructs (e.g. legacy BSD typedefs superseded by stdint.h).
> +@@ -153,9 +157,9 @@ tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
> +                                         $(tests-malloc-check:%=%-malloc-check) \
> +                                         $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
> +                                         $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)) \
> +-                           $(test-srcs)) $(tests-special) \
> ++                           $(test-srcs)) \
> +                            $(tests-printers-programs)
> +-xtests: tests $(xtests-special)
> ++xtests: tests
> + else # $(run-built-tests) != no
> + # The $(xtests) dependency ensures that xtests are always built.
> + tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#214636): https://lists.openembedded.org/g/openembedded-core/message/214636
> Mute This Topic: https://lists.openembedded.org/mt/112188476/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes
  2025-04-10 19:33 ` [OE-core] " Alexander Kanavin
@ 2025-04-22 11:03   ` rajmohan r
  2025-04-22 15:52     ` [OE-core] " Alexander Kanavin
  0 siblings, 1 reply; 5+ messages in thread
From: rajmohan r @ 2025-04-22 11:03 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 10732 bytes --]

On Thu, Apr 10, 2025 at 07:34 PM, Alexander Kanavin wrote:

> 
> Thanks. This patch is invasive and adds to glibc maintenance burden.
> Which begs the question: do we need the recipe at all? Is there a
> particular reason you started looking into this issue?

When we moved from yocto kirkstone branch to scarthgap branch, we found that
compilation for this module taking longer time. hence started looking which stage
in this module takes time. Found that it is in do_check() stage.

> 
> 
> It is by now well established that glibc itself works as it should,
> that all affected 32 bit targets are configured to use 64 bit time_t,
> and that any lingering y2038 issues are in components other than the c
> library, and usually come from C programming mistakes (e.g. storing
> timestamps in long). Maybe we can simply remove the recipe?

This recipe gives only two test cases in the packages to test. below are the
test cases seen for this package
io/ftwtest
io/ftwtest-time64

> 
> Alex
> 
> On Thu, 10 Apr 2025 at 12:07, rajmohan r via lists.openembedded.org
> <semc.2042=gmail.com@lists.openembedded.org> wrote:
> 
>> If 'run-built-tests' is 'yes' run the test binaries, else do not run
>> the test binaries.
>> 
>> Currently its taking 20min to complete do_check() for glibc-y2038-tests.
>> Test binaries are run in do_check() stage though 'run-built-tests' is
>> set 'no'. Which is wrong hence include 'tests-special' target inside
>> the 'run-built-tests' condition when set to 'yes' to avoid running the
>> test binaries.
>> 
>> Also remove 'tests-special' target from the 'tests' and 'xtests' list
>> when run-built-tests set to 'no' to avoid running test binaries.
>> 
>> After this change, no binary is run and time to complete do_check()
>> stage is 7min.
>> 
>> Upstream-Status: Inappropriate [oe-specific]
>> 
>> Signed-off-by: rajmohan r <semc.2042@gmail.com>
>> ---
>> .../glibc/glibc-y2038-tests_2.41.bb | 1 +
>> ...tests-special-in-run-built-tests-yes.patch | 184 ++++++++++++++++++
>> 2 files changed, 185 insertions(+)
>> create mode 100644
>> meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
>> 
>> 
>> diff --git a/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
>> b/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
>> index 9ea09a4e12..2e1f9b02c9 100644
>> --- a/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
>> +++ b/meta/recipes-core/glibc/glibc-y2038-tests_2.41.bb
>> @@ -5,6 +5,7 @@ inherit ptest features_check
>> REQUIRED_DISTRO_FEATURES = "ptest"
>> 
>> SRC_URI += "\
>> + file://include-tests-special-in-run-built-tests-yes.patch \
>> file://run-ptest \
>> "
>> 
>> diff --git
>> a/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
>> b/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
>> 
>> new file mode 100644
>> index 0000000000..f8f78c5863
>> --- /dev/null
>> +++
>> b/meta/recipes-core/glibc/glibc/include-tests-special-in-run-built-tests-yes.patch
>> 
>> @@ -0,0 +1,184 @@
>> +glibc-y2038-tests: include tests-special in run-built-tests yes
>> +
>> +If 'run-built-tests' is 'yes' run the test binaries, else do not run
>> +the test binaries.
>> +
>> +Currently its taking 20min to complete do_check() for glibc-y2038-tests.
>> +Test binaries are run in do_check() stage though 'run-built-tests' is
>> +set 'no'. Which is wrong hence include 'tests-special' target inside
>> +the 'run-built-tests' condition when set to 'yes' to avoid running the
>> +test binaries.
>> +
>> +Also remove 'tests-special' target from the 'tests' and 'xtests' list
>> +when run-built-tests set to 'no' to avoid running test binaries.
>> +
>> +After this change, no binary is run and time to complete do_check()
>> +stage is 7min.
>> +
>> +Upstream-Status: Inappropriate [oe-specific]
>> +
>> +Signed-off-by: rajmohan r <semc.2042@gmail.com>
>> +---
>> + Makefile | 16 ++++++++++++++++
>> + Makerules | 2 ++
>> + Rules | 8 ++++++--
>> + 3 files changed, 24 insertions(+), 2 deletions(-)
>> +
>> +diff --git a/Makefile b/Makefile
>> +index 5c20ed3..ed95e99 100644
>> +--- a/Makefile
>> ++++ b/Makefile
>> +@@ -545,21 +545,26 @@ tests-clean: do-tests-clean
>> + @$(MAKE) subdir_testclean no_deps=t
>> +
>> + ifneq (,$(CXX))
>> ++ifeq ($(run-built-tests),yes)
>> + vpath c++-types.data $(+sysdep_dirs)
>> +
>> + tests-special += $(objpfx)c++-types-check.out
>> + $(objpfx)c++-types-check.out: c++-types.data scripts/check-c++-types.sh
>> + scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu11
>> $(+gccwarn-c),$(CFLAGS)) $(CPPFLAGS) > $@; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> + endif
>> +
>> ++ifeq ($(run-built-tests),yes)
>> + tests-special += $(objpfx)check-local-headers.out
>> + $(objpfx)check-local-headers.out: scripts/check-local-headers.sh
>> + AWK='$(AWK)' scripts/check-local-headers.sh \
>> + "$(includedir)" "$(objpfx)" < /dev/null > $@; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> +
>> + ifneq "$(headers)" ""
>> ++ifeq ($(run-built-tests),yes)
>> + # Special test of all the installed headers in this directory.
>> + tests-special += $(objpfx)check-installed-headers-c.out
>> + libof-check-installed-headers-c := testsuite
>> +@@ -570,8 +575,10 @@ $(objpfx)check-installed-headers-c.out: \
>> + $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \
>> + $(headers) > $@; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> +
>> + ifneq "$(CXX)" ""
>> ++ifeq ($(run-built-tests),yes)
>> + tests-special += $(objpfx)check-installed-headers-cxx.out
>> + libof-check-installed-headers-cxx := testsuite
>> + $(objpfx)check-installed-headers-cxx.out: \
>> +@@ -581,14 +588,18 @@ $(objpfx)check-installed-headers-cxx.out: \
>> + $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
>> + $(headers) > $@; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> + endif # $(CXX)
>> +
>> ++ifeq ($(run-built-tests),yes)
>> + tests-special += $(objpfx)check-wrapper-headers.out
>> + $(objpfx)check-wrapper-headers.out: scripts/check-wrapper-headers.py
>> $(headers)
>> + $(PYTHON) $< --root=. --subdir=. $(headers) \
>> + --generated $(common-generated) > $@; $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> + endif # $(headers)
>> +
>> ++ifeq ($(run-built-tests),yes)
>> + # Lint all Makefiles; including this one. Pass `pwd` as the source
>> + # directory since the top-level Makefile is in the root of the source
>> + # tree and these tests are run from there. We add light-weight linting
>> +@@ -598,7 +609,9 @@ tests-special += $(objpfx)lint-makefiles.out
>> + $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
>> + $(SHELL) $< "$(PYTHON)" `pwd` > $@ ; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> +
>> ++ifeq ($(run-built-tests),yes)
>> + # Link libc.a as a whole to verify that it does not contain multiple
>> + # definitions of any symbols.
>> + tests-special += $(objpfx)link-static-libc.out
>> +@@ -606,6 +619,7 @@ $(objpfx)link-static-libc.out:
>> + $(LINK.o) $(whole-archive) -nostdlib -nostartfiles -r \
>> + $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> +
>> + # Print test summary for tests in $1 .sum file;
>> + # $2 is optional test identifier.
>> +@@ -686,6 +700,7 @@ endif
>> + rm -f $(symbolic-link-list)
>> + touch $(objpfx)testroot.pristine/install.stamp
>> +
>> ++ifeq ($(run-built-tests),yes)
>> + tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
>> + tests: $(tests-special)
>> + $(..)scripts/merge-test-results.sh -s $(objpfx) "" \
>> +@@ -700,6 +715,7 @@ xtests:
>> + $(sort $(subdirs)) \
>> + > $(objpfx)xtests.sum
>> + $(call summarize-tests,xtests.sum, for extra tests)
>> ++endif # $(run-built-tests) = yes
>> +
>> + # The realclean target is just like distclean for the parent, but we
>> want
>> + # the subdirs to know the difference in case they care.
>> +diff --git a/Makerules b/Makerules
>> +index ada6168..40b5ef2 100644
>> +--- a/Makerules
>> ++++ b/Makerules
>> +@@ -1232,6 +1232,7 @@ include $(patsubst
>> %,$(..)libof-iterator.mk,$(cpp-srcs-left))
>> + endif
>> +
>> + ifeq ($(build-shared),yes)
>> ++ifeq ($(run-built-tests),yes)
>> + # Generate normalized lists of symbols, versions, and data sizes.
>> + # This is handy for checking against existing library binaries.
>> +
>> +@@ -1321,6 +1322,7 @@ tests-special += $(check-abi-list)
>> + endif
>> + endif
>> +
>> ++endif # $(run-built-tests) = yes
>> + endif
>> +
>> + FORCE:
>> +diff --git a/Rules b/Rules
>> +index c8adc00..5a77516 100644
>> +--- a/Rules
>> ++++ b/Rules
>> +@@ -94,6 +94,7 @@ $(objpfx)check-installed-headers-c.out: \
>> + ifneq "$(CXX)" ""
>> + # If a C++ compiler is available, also test that they can be compiled
>> + # in isolation as C++.
>> ++ifeq ($(run-built-tests),yes)
>> + tests-special += $(objpfx)check-installed-headers-cxx.out
>> + libof-check-installed-headers-cxx := testsuite
>> + $(objpfx)check-installed-headers-cxx.out: \
>> +@@ -103,8 +104,10 @@ $(objpfx)check-installed-headers-cxx.out: \
>> + $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
>> + $(headers) > $@; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> + endif # $(CXX)
>> +
>> ++ifeq ($(run-built-tests),yes)
>> + # Test that a wrapper header exists in include/ for each non-sysdeps
>> header.
>> + # This script does not need $(py-env).
>> + tests-special += $(objpfx)check-wrapper-headers.out
>> +@@ -112,6 +115,7 @@ $(objpfx)check-wrapper-headers.out: \
>> + $(..)scripts/check-wrapper-headers.py $(headers)
>> + $(PYTHON) $< --root=$(..) --subdir=$(subdir) $(headers) > $@; \
>> + $(evaluate-test)
>> ++endif # $(run-built-tests) = yes
>> +
>> + # Test that none of the headers installed by this directory use certain
>> + # obsolete constructs (e.g. legacy BSD typedefs superseded by stdint.h).
>> 
>> +@@ -153,9 +157,9 @@ tests: $(addprefix $(objpfx),$(filter-out
>> $(tests-unsupported), \
>> + $(tests-malloc-check:%=%-malloc-check) \
>> + $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
>> + $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)) \
>> +- $(test-srcs)) $(tests-special) \
>> ++ $(test-srcs)) \
>> + $(tests-printers-programs)
>> +-xtests: tests $(xtests-special)
>> ++xtests: tests
>> + else # $(run-built-tests) != no
>> + # The $(xtests) dependency ensures that xtests are always built.
>> + tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
>> --
>> 2.34.1
>> 
>> 
> 
>

[-- Attachment #2: Type: text/html, Size: 11212 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes
  2025-04-22 11:03   ` rajmohan r
@ 2025-04-22 15:52     ` Alexander Kanavin
  2025-04-24 14:50       ` rajmohan r
  0 siblings, 1 reply; 5+ messages in thread
From: Alexander Kanavin @ 2025-04-22 15:52 UTC (permalink / raw)
  To: semc.2042; +Cc: openembedded-core

On Tue, 22 Apr 2025 at 13:03, rajmohan r via lists.openembedded.org
<semc.2042=gmail.com@lists.openembedded.org> wrote:
>
> On Thu, Apr 10, 2025 at 07:34 PM, Alexander Kanavin wrote:
>
> Thanks. This patch is invasive and adds to glibc maintenance burden.
> Which begs the question: do we need the recipe at all? Is there a
> particular reason you started looking into this issue?
>
> When we moved from yocto kirkstone branch to scarthgap branch, we found that
> compilation for this module taking longer time. hence started looking which stage
> in this module takes time. Found that it is in do_check() stage.
>
>
> It is by now well established that glibc itself works as it should,
> that all affected 32 bit targets are configured to use 64 bit time_t,
> and that any lingering y2038 issues are in components other than the c
> library, and usually come from C programming mistakes (e.g. storing
> timestamps in long). Maybe we can simply remove the recipe?
>
> This recipe gives only two test cases in the packages to test. below are the
> test cases seen for this package
>      io/ftwtest
>      io/ftwtest-time64

Right. I propose that this recipe be altogether removed (with the
rationale I provided above which you can add to the commit message).
Can you send a patch for that?

Alex


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes
  2025-04-22 15:52     ` [OE-core] " Alexander Kanavin
@ 2025-04-24 14:50       ` rajmohan r
  0 siblings, 0 replies; 5+ messages in thread
From: rajmohan r @ 2025-04-24 14:50 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 1564 bytes --]

On Tue, Apr 22, 2025 at 03:52 PM, Alexander Kanavin wrote:

> 
> On Tue, 22 Apr 2025 at 13:03, rajmohan r via lists.openembedded.org
> <semc.2042=gmail.com@lists.openembedded.org> wrote:
> 
>> On Thu, Apr 10, 2025 at 07:34 PM, Alexander Kanavin wrote:
>> 
>> Thanks. This patch is invasive and adds to glibc maintenance burden.
>> Which begs the question: do we need the recipe at all? Is there a
>> particular reason you started looking into this issue?
>> 
>> When we moved from yocto kirkstone branch to scarthgap branch, we found
>> that
>> compilation for this module taking longer time. hence started looking
>> which stage
>> in this module takes time. Found that it is in do_check() stage.
>> 
>> 
>> It is by now well established that glibc itself works as it should,
>> that all affected 32 bit targets are configured to use 64 bit time_t,
>> and that any lingering y2038 issues are in components other than the c
>> library, and usually come from C programming mistakes (e.g. storing
>> timestamps in long). Maybe we can simply remove the recipe?
>> 
>> This recipe gives only two test cases in the packages to test. below are
>> the
>> test cases seen for this package
>> io/ftwtest
>> io/ftwtest-time64
> 
> Right. I propose that this recipe be altogether removed (with the
> rationale I provided above which you can add to the commit message).
> Can you send a patch for that?

Patch is send here https://lists.openembedded.org/g/openembedded-core/message/215381 please review. Thanks for reviewing.

> 
> Alex

[-- Attachment #2: Type: text/html, Size: 1777 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-04-24 14:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-10 10:07 [PATCH] glibc-y2038-tests:add tests-special in run-built-tests yes rajmohan r
2025-04-10 19:33 ` [OE-core] " Alexander Kanavin
2025-04-22 11:03   ` rajmohan r
2025-04-22 15:52     ` [OE-core] " Alexander Kanavin
2025-04-24 14:50       ` rajmohan r

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox