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

From: Yilong Ren
Date: Mon Aug 15 2016 - 21:43:39 EST


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
> * load and operate.
> */
> BUILD_BUG_ON(!IS_MODULE(CONFIG_LIBNVDIMM));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_BLK_DEV_PMEM));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_ND_BTT));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_ND_PFN));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_ND_BLK));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_ACPI_NFIT));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_DEV_DAX));
> BUILD_BUG_ON(!IS_MODULE(CONFIG_DEV_DAX_PMEM));
> }

i check the doc from https://github.com/pmem/ndctl, and get info as follows:

Compile the libnvdimm sub-system as a module, make sure "zone device"
memory is enabled, and enable the btt, pfn, and dax features of the
sub-system:
CONFIG_ZONE_DEVICE=y
CONFIG_LIBNVDIMM=m
CONFIG_BLK_DEV_PMEM=m
CONFIG_ND_BLK=m
CONFIG_BTT=y
CONFIG_NVDIMM_PFN=y
CONFIG_NVDIMM_DAX=y

it has a litte difference between them.

--
Thanks
Ren Yilong