Message ID | 1430178409-19140-1-git-send-email-mathieu@qca.qualcomm.com |
---|---|
State | Changes Requested |
Headers | show |
Mathieu: I can't quite follow your explanations. I ahve been building what looks to me perfectly well working 14.07 images by just doing: git clone git://git.openwrt.org/openwrt.git cd openwrt # Clean workspace now cp real.config .config make defconfig make Your mail seems to indicate that that supposedly does not work. Can you please tell me what exactly is breaking when i do that ? Thanks Toerless On Mon, Apr 27, 2015 at 04:46:49PM -0700, Mathieu Olivari wrote: > Most of the time, we want to make sure OpenWrt has been configured and > setup before start running make. However, in case of package/symlinks, > forcing prereq as a dependency creates multiple issues: > *when executed on a clean workspace, it will prompt for user input > and open a menuconfig window before executing the feeds command > *the only way around that is to provide a .config. However, the "prereq" > target would then run a "make defconfig", which will remove all the > packages in the .config but from external feeds, as feeds have not been > installed yet. > > The only way to currently work around this, is to generate a fake config > by running "make defconfig", then "make package/symlinks", copy the real > config (which at this point disregards the previously generated config), > and run make defconfig again. Something like this: > > make defconfig > make package/symlinks > cp real.config .config > make defconfig > > This change is removing the need for the first defconfig, making the > process more logical for OpenWrt users using the package/symlinks target. > > Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> > --- > include/toplevel.mk | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/toplevel.mk b/include/toplevel.mk > index d8651d9..b3b344d 100644 > --- a/include/toplevel.mk > +++ b/include/toplevel.mk > @@ -178,6 +178,7 @@ ifeq ($(SDK),1) > else > > %:: > +ifeq ($(filter package/symlinks%,$(MAKECMDGOALS)),) > @+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq > @( \ > cp .config tmp/.config; \ > @@ -186,6 +187,7 @@ else > printf "$(_R)WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!$(_N)\n" >&2; \ > fi \ > ) > +endif > @+$(ULIMIT_FIX) $(SUBMAKE) -r $@ $(if $(WARN_PARALLEL_ERROR), || { \ > printf "$(_R)Build failed - please re-run with -j1 to see the real error message$(_N)\n" >&2; \ > false; \ > -- > 1.9.1
I'm actually talking about the command below: $ make package/symlinks Right after the git clone, it does open the menuconfig. Which ends-up in generating a .config, which has to be deleted anyway as any package from feed would get removed. Thanks, Mathieu -----Original Message----- From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] On Behalf Of Toerless Eckert Sent: Monday, April 27, 2015 4:59 PM To: Mathieu Olivari Cc: openwrt-devel@lists.openwrt.org Subject: Re: [OpenWrt-Devel] [PATCH] build: don't call prereq for any package/symlinks rules Mathieu: I can't quite follow your explanations. I ahve been building what looks to me perfectly well working 14.07 images by just doing: git clone git://git.openwrt.org/openwrt.git cd openwrt # Clean workspace now cp real.config .config make defconfig make Your mail seems to indicate that that supposedly does not work. Can you please tell me what exactly is breaking when i do that ? Thanks Toerless On Mon, Apr 27, 2015 at 04:46:49PM -0700, Mathieu Olivari wrote: > Most of the time, we want to make sure OpenWrt has been configured and > setup before start running make. However, in case of package/symlinks, > forcing prereq as a dependency creates multiple issues: > *when executed on a clean workspace, it will prompt for user input > and open a menuconfig window before executing the feeds command *the > only way around that is to provide a .config. However, the "prereq" > target would then run a "make defconfig", which will remove all the > packages in the .config but from external feeds, as feeds have not > been installed yet. > > The only way to currently work around this, is to generate a fake > config by running "make defconfig", then "make package/symlinks", copy > the real config (which at this point disregards the previously > generated config), and run make defconfig again. Something like this: > > make defconfig > make package/symlinks > cp real.config .config > make defconfig > > This change is removing the need for the first defconfig, making the > process more logical for OpenWrt users using the package/symlinks target. > > Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> > --- > include/toplevel.mk | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/toplevel.mk b/include/toplevel.mk index > d8651d9..b3b344d 100644 > --- a/include/toplevel.mk > +++ b/include/toplevel.mk > @@ -178,6 +178,7 @@ ifeq ($(SDK),1) > else > > %:: > +ifeq ($(filter package/symlinks%,$(MAKECMDGOALS)),) > @+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq > @( \ > cp .config tmp/.config; \ > @@ -186,6 +187,7 @@ else > printf "$(_R)WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!$(_N)\n" >&2; \ > fi \ > ) > +endif > @+$(ULIMIT_FIX) $(SUBMAKE) -r $@ $(if $(WARN_PARALLEL_ERROR), || { \ > printf "$(_R)Build failed - please re-run with -j1 to see the real error message$(_N)\n" >&2; \ > false; \ > -- > 1.9.1
So if "make package/symlinks" is optional, when is it needed ? Sorry for the beginner q. On Mon, Apr 27, 2015 at 05:15:36PM -0700, Mathieu Olivari wrote: > I'm actually talking about the command below: > $ make package/symlinks > > Right after the git clone, it does open the menuconfig. Which ends-up in > generating a .config, which has to be deleted anyway as any package from > feed would get removed. > > Thanks, > Mathieu > > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] On > Behalf Of Toerless Eckert > Sent: Monday, April 27, 2015 4:59 PM > To: Mathieu Olivari > Cc: openwrt-devel@lists.openwrt.org > Subject: Re: [OpenWrt-Devel] [PATCH] build: don't call prereq for any > package/symlinks rules > > > Mathieu: > > I can't quite follow your explanations. I ahve been building what looks to > me perfectly well working 14.07 images by just doing: > > git clone git://git.openwrt.org/openwrt.git cd openwrt # Clean workspace now > > cp real.config .config > make defconfig > make > > Your mail seems to indicate that that supposedly does not work. Can you > please tell me what exactly is breaking when i do that ? > > Thanks > Toerless > > On Mon, Apr 27, 2015 at 04:46:49PM -0700, Mathieu Olivari wrote: > > Most of the time, we want to make sure OpenWrt has been configured and > > setup before start running make. However, in case of package/symlinks, > > forcing prereq as a dependency creates multiple issues: > > *when executed on a clean workspace, it will prompt for user input > > and open a menuconfig window before executing the feeds command *the > > only way around that is to provide a .config. However, the "prereq" > > target would then run a "make defconfig", which will remove all the > > packages in the .config but from external feeds, as feeds have not > > been installed yet. > > > > The only way to currently work around this, is to generate a fake > > config by running "make defconfig", then "make package/symlinks", copy > > the real config (which at this point disregards the previously > > generated config), and run make defconfig again. Something like this: > > > > make defconfig > > make package/symlinks > > cp real.config .config > > make defconfig > > > > This change is removing the need for the first defconfig, making the > > process more logical for OpenWrt users using the package/symlinks target. > > > > Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> > > --- > > include/toplevel.mk | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/include/toplevel.mk b/include/toplevel.mk index > > d8651d9..b3b344d 100644 > > --- a/include/toplevel.mk > > +++ b/include/toplevel.mk > > @@ -178,6 +178,7 @@ ifeq ($(SDK),1) > > else > > > > %:: > > +ifeq ($(filter package/symlinks%,$(MAKECMDGOALS)),) > > @+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq > > @( \ > > cp .config tmp/.config; \ > > @@ -186,6 +187,7 @@ else > > printf "$(_R)WARNING: your configuration is out of > sync. Please run make menuconfig, oldconfig or defconfig!$(_N)\n" >&2; \ > > fi \ > > ) > > +endif > > @+$(ULIMIT_FIX) $(SUBMAKE) -r $@ $(if $(WARN_PARALLEL_ERROR), || { \ > > printf "$(_R)Build failed - please re-run with -j1 to see > the real error message$(_N)\n" >&2; \ > > false; \ > > -- > > 1.9.1 > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
make package/symlinks can be used as an alternative to the ./scripts/feeds command to update & install all feeds available in feeds.conf Here is the code from the top Makefile: # update all feeds, re-create index files, install symlinks package/symlinks: $(SCRIPT_DIR)/feeds update -a $(SCRIPT_DIR)/feeds install -a # re-create index files, install symlinks package/symlinks-install: $(SCRIPT_DIR)/feeds update -i $(SCRIPT_DIR)/feeds install -a # remove all symlinks, don't touch ./feeds package/symlinks-clean: $(SCRIPT_DIR)/feeds uninstall -a Thanks, Mathieu -----Original Message----- From: 'Toerless Eckert' [mailto:tte@cs.fau.de] Sent: Monday, April 27, 2015 6:46 PM To: Mathieu Olivari Cc: 'Mathieu Olivari'; openwrt-devel@lists.openwrt.org Subject: Re: [OpenWrt-Devel] [PATCH] build: don't call prereq for any package/symlinks rules So if "make package/symlinks" is optional, when is it needed ? Sorry for the beginner q. On Mon, Apr 27, 2015 at 05:15:36PM -0700, Mathieu Olivari wrote: > I'm actually talking about the command below: > $ make package/symlinks > > Right after the git clone, it does open the menuconfig. Which ends-up > in generating a .config, which has to be deleted anyway as any package > from feed would get removed. > > Thanks, > Mathieu > > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] > On Behalf Of Toerless Eckert > Sent: Monday, April 27, 2015 4:59 PM > To: Mathieu Olivari > Cc: openwrt-devel@lists.openwrt.org > Subject: Re: [OpenWrt-Devel] [PATCH] build: don't call prereq for any > package/symlinks rules > > > Mathieu: > > I can't quite follow your explanations. I ahve been building what > looks to me perfectly well working 14.07 images by just doing: > > git clone git://git.openwrt.org/openwrt.git cd openwrt # Clean > workspace now > > cp real.config .config > make defconfig > make > > Your mail seems to indicate that that supposedly does not work. Can > you please tell me what exactly is breaking when i do that ? > > Thanks > Toerless > > On Mon, Apr 27, 2015 at 04:46:49PM -0700, Mathieu Olivari wrote: > > Most of the time, we want to make sure OpenWrt has been configured > > and setup before start running make. However, in case of > > package/symlinks, forcing prereq as a dependency creates multiple issues: > > *when executed on a clean workspace, it will prompt for user input > > and open a menuconfig window before executing the feeds command *the > > only way around that is to provide a .config. However, the "prereq" > > target would then run a "make defconfig", which will remove all the > > packages in the .config but from external feeds, as feeds have not > > been installed yet. > > > > The only way to currently work around this, is to generate a fake > > config by running "make defconfig", then "make package/symlinks", > > copy the real config (which at this point disregards the previously > > generated config), and run make defconfig again. Something like this: > > > > make defconfig > > make package/symlinks > > cp real.config .config > > make defconfig > > > > This change is removing the need for the first defconfig, making the > > process more logical for OpenWrt users using the package/symlinks target. > > > > Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> > > --- > > include/toplevel.mk | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/include/toplevel.mk b/include/toplevel.mk index > > d8651d9..b3b344d 100644 > > --- a/include/toplevel.mk > > +++ b/include/toplevel.mk > > @@ -178,6 +178,7 @@ ifeq ($(SDK),1) > > else > > > > %:: > > +ifeq ($(filter package/symlinks%,$(MAKECMDGOALS)),) > > @+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq > > @( \ > > cp .config tmp/.config; \ > > @@ -186,6 +187,7 @@ else > > printf "$(_R)WARNING: your configuration is out of > sync. Please run make menuconfig, oldconfig or defconfig!$(_N)\n" >&2; > \ > > fi \ > > ) > > +endif > > @+$(ULIMIT_FIX) $(SUBMAKE) -r $@ $(if $(WARN_PARALLEL_ERROR), || { \ > > printf "$(_R)Build failed - please re-run with -j1 to see > the real error message$(_N)\n" >&2; \ > > false; \ > > -- > > 1.9.1 > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel -- --- Toerless.Eckert@informatik.uni-erlangen.de /C=de/A=d400/P=uni-erlangen/OU=informatik/S=Eckert/G=Toerless/
On 2015-04-28 01:46, Mathieu Olivari wrote: > Most of the time, we want to make sure OpenWrt has been configured and > setup before start running make. However, in case of package/symlinks, > forcing prereq as a dependency creates multiple issues: > *when executed on a clean workspace, it will prompt for user input > and open a menuconfig window before executing the feeds command > *the only way around that is to provide a .config. However, the "prereq" > target would then run a "make defconfig", which will remove all the > packages in the .config but from external feeds, as feeds have not been > installed yet. > > The only way to currently work around this, is to generate a fake config > by running "make defconfig", then "make package/symlinks", copy the real > config (which at this point disregards the previously generated config), > and run make defconfig again. Something like this: > > make defconfig > make package/symlinks > cp real.config .config > make defconfig > > This change is removing the need for the first defconfig, making the > process more logical for OpenWrt users using the package/symlinks target. > > Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> > --- > include/toplevel.mk | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/toplevel.mk b/include/toplevel.mk > index d8651d9..b3b344d 100644 > --- a/include/toplevel.mk > +++ b/include/toplevel.mk > @@ -178,6 +178,7 @@ ifeq ($(SDK),1) > else > > %:: > +ifeq ($(filter package/symlinks%,$(MAKECMDGOALS)),) I think this is the wrong approach for solving this - this means that if somebody specifies multiple targets in addition to package/symlinks, the other targets will be excluded from this as well. It would make more sense to move the package/symlinks targets to include/toplevel.mk, where they can bypass the %:: target entirely. - Felix
diff --git a/include/toplevel.mk b/include/toplevel.mk index d8651d9..b3b344d 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -178,6 +178,7 @@ ifeq ($(SDK),1) else %:: +ifeq ($(filter package/symlinks%,$(MAKECMDGOALS)),) @+$(PREP_MK) $(NO_TRACE_MAKE) -r -s prereq @( \ cp .config tmp/.config; \ @@ -186,6 +187,7 @@ else printf "$(_R)WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!$(_N)\n" >&2; \ fi \ ) +endif @+$(ULIMIT_FIX) $(SUBMAKE) -r $@ $(if $(WARN_PARALLEL_ERROR), || { \ printf "$(_R)Build failed - please re-run with -j1 to see the real error message$(_N)\n" >&2; \ false; \
Most of the time, we want to make sure OpenWrt has been configured and setup before start running make. However, in case of package/symlinks, forcing prereq as a dependency creates multiple issues: *when executed on a clean workspace, it will prompt for user input and open a menuconfig window before executing the feeds command *the only way around that is to provide a .config. However, the "prereq" target would then run a "make defconfig", which will remove all the packages in the .config but from external feeds, as feeds have not been installed yet. The only way to currently work around this, is to generate a fake config by running "make defconfig", then "make package/symlinks", copy the real config (which at this point disregards the previously generated config), and run make defconfig again. Something like this: make defconfig make package/symlinks cp real.config .config make defconfig This change is removing the need for the first defconfig, making the process more logical for OpenWrt users using the package/symlinks target. Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com> --- include/toplevel.mk | 2 ++ 1 file changed, 2 insertions(+)