Re: [PATCH bpf-next v10 06/11] selftests/bpf: Tolerate test file compilation failures

Ricardo B. Marlière <[email protected]>
Newsgroups dev.linux.lists.sashiko,org.kernel.vger.bpf
Message-ID <[email protected]>
On Thu Apr 30, 2026 at 10:10 AM -03, sashiko-bot wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Low] The inline condition `$(if $(V))` incorrectly suppresses the `BTFIDS` pretty output when `V=0` or `V=2`.
> --
>
> commit 0d69d461adbd02ed2bb765aad81f923aeaf2a8da
> Author: Ricardo B. Marlière <[email protected]>
>
> selftests/bpf: Tolerate test file compilation failures
>
> This commit makes per-test compilation non-fatal for test_progs, skipping
> missing objects during linking. It adjusts the BTFIDS step to use standard
> printf instead of the msg macro within the shell conditionals.
>
>> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
>> index 608e6dff03926..9becc077eb231 100644
>> --- a/tools/testing/selftests/bpf/Makefile
>> +++ b/tools/testing/selftests/bpf/Makefile
>
> [ ... ]
>
>> @@ -717,11 +723,14 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o:			\
>>  		      $(TRUNNER_TESTS_DIR)/%.c				\
>>  		      | $(TRUNNER_OUTPUT)/%.test.d
>>  	$$(call msg,TEST-OBJ,$(TRUNNER_BINARY),$$@)
>> -	$(Q)cd $$(@D) && $$(CC) -I. $$(CFLAGS) -MMD -MT $$@ -c $(CURDIR)/$$< $$(LDLIBS) -o $$(@F)
>> +	$(Q)(cd $$(@D) && $$(CC) -I. $$(CFLAGS) -MMD -MT $$@ -c $(CURDIR)/$$< $$(LDLIBS) -o $$(@F)) $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),|| \
>> +		($(RM) $$@; printf '  %-12s %s\n' 'SKIP-TEST' '$$(notdir $$@)' 1>&2)))
>>  	$$(if $$(TEST_NEEDS_BTFIDS),						\
>> -		$$(call msg,BTFIDS,$(TRUNNER_BINARY),$$@)			\
>> +		$(Q)if [ -f $$@ ]; then						\
>> +		$(if $(V),true,printf '  %-8s%s %s\n' "BTFIDS" " [$(TRUNNER_BINARY)]" "$$(notdir $$@)"); \
>
> Does this condition correctly handle V=0 or V=2?
>
> In GNU Make, the $(if) function evaluates to true if the condition expands to
> any non-empty string. If a user sets make V=0, $(V) expands to the string "0",
> which Make considers true.
>
> Consequently, `$(if $(V),true,printf ...)` will execute `true;`, silencing the
> BTFIDS output entirely. The standard msg macro used for other compilation steps
> explicitly checks `ifeq ($(V),1)`.
>
> This results in inconsistent behavior where V=0 correctly prints brief messages
> like TEST-OBJ but silently skips BTFIDS.
>
> Could this explicitly check for "1", such as using
> `$(if $(filter 1,$(V)),true,printf ...)` to accurately match the behavior of
> the msg macro?

ugh I forgot about this one

>
>>  		$(RESOLVE_BTFIDS) --btf $(TRUNNER_OUTPUT)/btf_data.bpf.o $$@;	\
>> -		$(RESOLVE_BTFIDS) --patch_btfids [email protected]_ids $$@)
>> +		$(RESOLVE_BTFIDS) --patch_btfids [email protected]_ids $$@;		\
>> +		fi)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.