Message ID | 1444779780.12197.3.camel@ellerman.id.au (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Oct 13, 2015 at 4:43 PM, Michael Ellerman <mpe@ellerman.id.au> wrote: > On Tue, 2015-10-13 at 14:02 -0700, Olof Johansson wrote: >> On Fri, Oct 2, 2015 at 12:47 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >> > On Wed, 2015-23-09 at 05:40:34 UTC, Michael Ellerman wrote: >> >> Arch Makefiles can set KBUILD_DEFCONFIG to tell kbuild the name of the >> >> defconfig that should be built by default. >> >> >> >> However currently there is an assumption that KBUILD_DEFCONFIG points to >> >> a file at arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG). >> >> >> >> We would like to use a target, using merge_config, as our defconfig, so >> >> adapt the logic in scripts/kconfig/Makefile to allow that. >> >> >> >> To minimise the chance of breaking anything, we first check if >> >> KBUILD_DEFCONFIG is a file, and if so we do the old logic. If it's not a >> >> file, then we call the top-level Makefile with KBUILD_DEFCONFIG as the >> >> target. >> >> >> >> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> >> >> Acked-by: Michal Marek <mmarek@suse.com> >> > >> > Applied to powerpc next. >> > >> > https://git.kernel.org/powerpc/c/d2036f30cfe1daa19e63ce75 >> >> This breaks arm64 defconfig for me: >> >> mkdir obj-tmp >> make -f Makefile O=obj-tmp ARCH=arm64 defconfig >> ... watch loop of: >> *** Default configuration is based on target 'defconfig' >> GEN ./Makefile > > Crap, sorry. I knew I shouldn't have touched that code! > > Does this fix it for you? Yes, it does, however: > > diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile > index b2b9c87..3043d6b 100644 > --- a/scripts/kconfig/Makefile > +++ b/scripts/kconfig/Makefile > @@ -96,7 +96,7 @@ savedefconfig: $(obj)/conf > defconfig: $(obj)/conf > ifeq ($(KBUILD_DEFCONFIG),) > $< $(silent) --defconfig $(Kconfig) > -else ifneq ($(wildcard arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) > +else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) > @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" > $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) Do you need a $(srctree) prefix here too? I'm not entirely sure what I would do to reproduce a run that goes down this path so I can't confirm. -Olof -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 2015-10-14 at 09:54 -0700, Olof Johansson wrote: > On Tue, Oct 13, 2015 at 4:43 PM, Michael Ellerman <mpe@ellerman.id.au> wrote: > > On Tue, 2015-10-13 at 14:02 -0700, Olof Johansson wrote: > >> On Fri, Oct 2, 2015 at 12:47 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: > >> > On Wed, 2015-23-09 at 05:40:34 UTC, Michael Ellerman wrote: > >> >> Arch Makefiles can set KBUILD_DEFCONFIG to tell kbuild the name of the > >> >> defconfig that should be built by default. > >> >> > >> >> However currently there is an assumption that KBUILD_DEFCONFIG points to > >> >> a file at arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG). > >> >> > >> >> We would like to use a target, using merge_config, as our defconfig, so > >> >> adapt the logic in scripts/kconfig/Makefile to allow that. > >> >> > >> >> To minimise the chance of breaking anything, we first check if > >> >> KBUILD_DEFCONFIG is a file, and if so we do the old logic. If it's not a > >> >> file, then we call the top-level Makefile with KBUILD_DEFCONFIG as the > >> >> target. > >> >> > >> >> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> > >> >> Acked-by: Michal Marek <mmarek@suse.com> > >> > > >> > Applied to powerpc next. > >> > > >> > https://git.kernel.org/powerpc/c/d2036f30cfe1daa19e63ce75 > >> > >> This breaks arm64 defconfig for me: > >> > >> mkdir obj-tmp > >> make -f Makefile O=obj-tmp ARCH=arm64 defconfig > >> ... watch loop of: > >> *** Default configuration is based on target 'defconfig' > >> GEN ./Makefile > > > > Crap, sorry. I knew I shouldn't have touched that code! > > > > Does this fix it for you? > > Yes, it does, however: > > > diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile > > index b2b9c87..3043d6b 100644 > > --- a/scripts/kconfig/Makefile > > +++ b/scripts/kconfig/Makefile > > @@ -96,7 +96,7 @@ savedefconfig: $(obj)/conf > > defconfig: $(obj)/conf > > ifeq ($(KBUILD_DEFCONFIG),) > > $< $(silent) --defconfig $(Kconfig) > > -else ifneq ($(wildcard arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) > > +else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) > > @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" > > $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) > > Do you need a $(srctree) prefix here too? I'm not entirely sure what I > would do to reproduce a run that goes down this path so I can't > confirm. That is the path you're going down, now that it's fixed. That's the path where KBUILD_DEFCONFIG is a real file, ie. the old behaviour. I'm not sure why it doesn't have a $(srctree) there, but it's never had one. It looks like it eventually boils down to zconf_fopen() which looks for the file in both . and $(srctree). So I think we could add a $(srctree) there, it would be more obvious and not rely on the zconf_fopen() behaviour, but I'd rather leave it as is and let Michal do that as a cleanup later. cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Dne 15.10.2015 v 05:27 Michael Ellerman napsal(a): > On Wed, 2015-10-14 at 09:54 -0700, Olof Johansson wrote: >> On Tue, Oct 13, 2015 at 4:43 PM, Michael Ellerman <mpe@ellerman.id.au> wrote: >>> On Tue, 2015-10-13 at 14:02 -0700, Olof Johansson wrote: >>>> On Fri, Oct 2, 2015 at 12:47 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >>>>> On Wed, 2015-23-09 at 05:40:34 UTC, Michael Ellerman wrote: >>>>>> Arch Makefiles can set KBUILD_DEFCONFIG to tell kbuild the name of the >>>>>> defconfig that should be built by default. >>>>>> >>>>>> However currently there is an assumption that KBUILD_DEFCONFIG points to >>>>>> a file at arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG). >>>>>> >>>>>> We would like to use a target, using merge_config, as our defconfig, so >>>>>> adapt the logic in scripts/kconfig/Makefile to allow that. >>>>>> >>>>>> To minimise the chance of breaking anything, we first check if >>>>>> KBUILD_DEFCONFIG is a file, and if so we do the old logic. If it's not a >>>>>> file, then we call the top-level Makefile with KBUILD_DEFCONFIG as the >>>>>> target. >>>>>> >>>>>> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> >>>>>> Acked-by: Michal Marek <mmarek@suse.com> >>>>> >>>>> Applied to powerpc next. >>>>> >>>>> https://git.kernel.org/powerpc/c/d2036f30cfe1daa19e63ce75 >>>> >>>> This breaks arm64 defconfig for me: >>>> >>>> mkdir obj-tmp >>>> make -f Makefile O=obj-tmp ARCH=arm64 defconfig >>>> ... watch loop of: >>>> *** Default configuration is based on target 'defconfig' >>>> GEN ./Makefile >>> >>> Crap, sorry. I knew I shouldn't have touched that code! >>> >>> Does this fix it for you? >> >> Yes, it does, however: >> >>> diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile >>> index b2b9c87..3043d6b 100644 >>> --- a/scripts/kconfig/Makefile >>> +++ b/scripts/kconfig/Makefile >>> @@ -96,7 +96,7 @@ savedefconfig: $(obj)/conf >>> defconfig: $(obj)/conf >>> ifeq ($(KBUILD_DEFCONFIG),) >>> $< $(silent) --defconfig $(Kconfig) >>> -else ifneq ($(wildcard arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) >>> +else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) >>> @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" >>> $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) >> >> Do you need a $(srctree) prefix here too? I'm not entirely sure what I >> would do to reproduce a run that goes down this path so I can't >> confirm. > > That is the path you're going down, now that it's fixed. That's the path where > KBUILD_DEFCONFIG is a real file, ie. the old behaviour. > > I'm not sure why it doesn't have a $(srctree) there, but it's never had one. > > It looks like it eventually boils down to zconf_fopen() which looks for the > file in both . and $(srctree). Yes, the kconfig frontends do part of what would ideally be the job of make or the Makefile. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index b2b9c87..3043d6b 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -96,7 +96,7 @@ savedefconfig: $(obj)/conf defconfig: $(obj)/conf ifeq ($(KBUILD_DEFCONFIG),) $< $(silent) --defconfig $(Kconfig) -else ifneq ($(wildcard arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) +else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) else