Re: [kbuild-all] make[2]: *** No rule to make target 'tools/testing/nvdimm//config_check.o', needed by 'tools/testing/nvdimm//dax.o'.

From: Dan Williams
Date: Mon Aug 15 2016 - 21:48:43 EST


On Mon, Aug 15, 2016 at 6:41 PM, Fengguang Wu <fengguang.wu@xxxxxxxxx> wrote:
> On Mon, Aug 15, 2016 at 06:30:48PM -0700, Dan Williams wrote:
>>
>> On Mon, Aug 15, 2016 at 6:26 PM, Fengguang Wu <fengguang.wu@xxxxxxxxx>
>> wrote:
>>>
>>> On Mon, Aug 15, 2016 at 05:58:36PM -0700, Dan Williams wrote:
>>>>
>>>>
>>>> On Mon, Aug 15, 2016 at 3:03 AM, kbuild test robot
>>>> <fengguang.wu@xxxxxxxxx> wrote:
>>>>>
>>>>>
>>>>> tree:
>>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>>>>> master
>>>>> head: 694d0d0bb2030d2e36df73e2d23d5770511dbc8d
>>>>> commit: ab68f26221366f92611650e8470e6a926801c7d4 /dev/dax, pmem: direct
>>>>> access to persistent memory
>>>>> date: 3 months ago
>>>>> config: i386-randconfig-i1-201633 (attached as .config)
>>>>> compiler: gcc-4.8 (Debian 4.8.4-1) 4.8.4
>>>>> reproduce:
>>>>> git checkout ab68f26221366f92611650e8470e6a926801c7d4
>>>>> # save the attached .config to linux build tree
>>>>> make ARCH=i386
>>>>>
>>>>> All errors (new ones prefixed by >>):
>>>>>
>>>>>>> make[2]: *** No rule to make target
>>>>>>> 'tools/testing/nvdimm//config_check.o', needed by
>>>>>>> 'tools/testing/nvdimm//dax.o'.
>>>>>
>>>>>
>>>>> make[2]: Target '__build' not remade because of errors.
>>>>
>>>>
>>>>
>>>> I think this is an invalid build test. tools/testing/nvdimm/ uses a
>>>> external module Kbuild environment, not Kconfig. So, there's nothing
>>>> I can do to prevent this compile error, unless there's some other way
>>>> 0-day could determine the configuration dependencies?
>>>
>>>
>>>
>>> Yeah if you can offer a concrete rule for the dependency, we'll add
>>> it to 0-day.
>>
>>
>> Sounds good. The config_check.c file itself lists the dependencies:
>>
>> void check(void)
>> {
>> /*
>> * These kconfig symbols must be set to "m" for nfit_test to
>
>
> If "y" is not a valid option, we'll need to adjust 0-day's dependency
> specification for ndctl test:

Unfortunately, "y" is not valid because the unit tests use the
"--wrap=" linker feature to redirect calls to exported symbols to mock
versions provided by the nfit_test.ko module. When the code is
compiled with "y" instead of "m" the linker will use the real symbol
rather than the mock/test version.

> wfg /c/lkp-tests% cat include/ndctl
> need_kconfig:
> - CONFIG_HAVE_DMA_CONTIGUOUS=y
> - CONFIG_CMA=y
> - CONFIG_DMA_CMA=y
> - CONFIG_CMA_SIZE_MBYTES=200

I recently, last week in the 4.8 merge window, removed the dependency
on CMA. The ndctl README.md for version 54 notes the change.

> - CONFIG_LIBNVDIMM
> - CONFIG_BLK_DEV_PMEM
> - CONFIG_ND_BLK
> - CONFIG_BTT=y
> - CONFIG_NVDIMM_PFN=y
> - CONFIG_NVDIMM_DAX=y
> - CONFIG_ZONE_DEVICE=y
>
> In the above list, a bare "CONFIG_BLK_DEV_PMEM" means "y" or "m" are
> both acceptable.

...only "m".