<div dir="ltr"><div class="gmail_default" style><div class="gmail_default" style><font face="courier new, monospace">Hello, </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">As of today, there are a few CONFIG_ variables that are used to change </font></div><div class="gmail_default" style><font face="courier new, monospace">the input or the result of the build process - i.e. the places where files </font></div><div class="gmail_default" style><font face="courier new, monospace">are stored or from where they are fetched. I haven't checked everything </font></div><div class="gmail_default" style><font face="courier new, monospace">but I will mention some of them: </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">  CONFIG_DOWNLOAD_FOLDER : the place where downloaded files are stored </font></div><div class="gmail_default" style><font face="courier new, monospace">   (and, consequently, the place from where they are retrieved during </font></div><div class="gmail_default" style><font face="courier new, monospace">   the prepare steps). </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">  CONFIG_BINARY_FOLDER : the bin directory where the build result is </font></div><div class="gmail_default" style><font face="courier new, monospace">   stored</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">  CONFIG_BUILD_SUFFIX : the suffix to add to a number of build </font></div><div class="gmail_default" style><font face="courier new, monospace">   directories. </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">There might be others. </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">It was my impression that these variables where fully handled when they </font></div><div class="gmail_default" style><font face="courier new, monospace">were passed as command line arguments to the make command. For example, </font></div><div class="gmail_default" style><font face="courier new, monospace">if I do</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">  make CONFIG_BUILD_SUFFIX=_my_router CONFIG_DOWNLOAD_FOLDER=/ramdisk/dl</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">Then it will just work. </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">Of course, this is correct most of the time. The few kernel_*config rules </font></div><div class="gmail_default" style><font face="courier new, monospace">are not honoring the command lines - meaning that if I fully built the </font></div><div class="gmail_default" style><font face="courier new, monospace">image with these command line vars then I cannot (for example) do a</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">  make CONFIG_BUILD_SUFFIX=_my_router CONFIG_DOWNLOAD_FOLDER=/ramdisk/dl kernel_menuconfig</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">It breaks. Here is a part of the --trace output I got for a similar command line: </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">me@home:~/openwrt$ make --trace CONFIG_DOWNLOAD_FOLDER=/home/me/dl CONFIG_BINARY_FOLDER=/home/me/bin/bpipro CONFIG_BUILD_SUFFIX=bpipro kernel_menuconfig</font></div><div class="gmail_default" style><font face="courier new, monospace">/home/me/openwrt/include/<a href="http://toplevel.mk:69">toplevel.mk:69</a>: update target 'prepare-tmpinfo' due to: FORCE</font></div><div class="gmail_default" style><font face="courier new, monospace">make -r -s staging_dir/host/.prereq-build OPENWRT_BUILD= QUIET=0</font></div><div class="gmail_default" style><font face="courier new, monospace">mkdir -p tmp/info</font></div><div class="gmail_default" style><font face="courier new, monospace">export MAKEFLAGS= ;make V=s -j1 -r -s -f include/<a href="http://scan.mk">scan.mk</a> SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="/home/me/openwrt/include/package*.mk /home/me/openwrt/overlay/*/*.mk" SCAN_DEPTH=5 SCAN_EXTRA=""</font></div><div class="gmail_default" style><font face="courier new, monospace">export MAKEFLAGS= ;make V=s -j1 -r -s -f include/<a href="http://scan.mk">scan.mk</a> SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPS="profiles/*.mk /home/me/openwrt/include/kernel*.mk /home/me/openwrt/include/<a href="http://target.mk">target.mk</a>" SCAN_DEPTH=2 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"</font></div><div class="gmail_default" style><font face="courier new, monospace">for type in package target; do \</font></div><div class="gmail_default" style><font face="courier new, monospace"><span class="" style="white-space:pre">    </span>f=tmp/.${type}info; t=tmp/.config-${type}.in; \</font></div><div class="gmail_default" style><font face="courier new, monospace"><span class="" style="white-space:pre">     </span>[ "$t" -nt "$f" ] || ./scripts/<a href="http://metadata.pl">metadata.pl</a> ${type}_config "$f" > "$t" || { rm -f "$t"; echo "Failed to build $t"; false; break; }; \</font></div><div class="gmail_default" style><font face="courier new, monospace">done</font></div><div class="gmail_default" style><font face="courier new, monospace">[ tmp/.<a href="http://config-feeds.in">config-feeds.in</a> -nt tmp/.packagefeeds ] || ./scripts/feeds feed_config > tmp/.<a href="http://config-feeds.in">config-feeds.in</a></font></div><div class="gmail_default" style><font face="courier new, monospace">./scripts/<a href="http://metadata.pl">metadata.pl</a> package_mk tmp/.packageinfo > tmp/.packagedeps || { rm -f tmp/.packagedeps; false; }</font></div><div class="gmail_default" style><font face="courier new, monospace">./scripts/<a href="http://metadata.pl">metadata.pl</a> package_feeds tmp/.packageinfo > tmp/.packagefeeds || { rm -f tmp/.packagefeeds; false; }</font></div><div class="gmail_default" style><font face="courier new, monospace">touch /home/me/openwrt/tmp/.build</font></div><div class="gmail_default" style><font face="courier new, monospace">/home/me/openwrt/include/<a href="http://toplevel.mk:83">toplevel.mk:83</a>: update target '.config' due to: prepare-tmpinfo</font></div><div class="gmail_default" style><font face="courier new, monospace">if [ \! -e .config ] || ! grep CONFIG_HAVE_DOT_CONFIG .config >/dev/null; then \</font></div><div class="gmail_default" style><font face="courier new, monospace"><span class="" style="white-space:pre">    </span>[ -e /home/me/.openwrt/defconfig ] && cp /home/me/.openwrt/defconfig .config; \</font></div><div class="gmail_default" style><font face="courier new, monospace"><span class="" style="white-space:pre">     </span>export MAKEFLAGS= ;make V=s menuconfig OPENWRT_BUILD= QUIET=0; \</font></div><div class="gmail_default" style><font face="courier new, monospace">fi</font></div><div class="gmail_default" style><font face="courier new, monospace">/home/me/openwrt/include/<a href="http://toplevel.mk:134">toplevel.mk:134</a>: update target 'kernel_menuconfig' due to: prepare_kernel_conf</font></div><div class="gmail_default" style><font face="courier new, monospace">export MAKEFLAGS= ;make V=s -C target/linux menuconfig</font></div><div class="gmail_default" style><font face="courier new, monospace">make[1]: Entering directory '/home/me/openwrt/target/linux'</font></div><div class="gmail_default" style><font face="courier new, monospace">make[2]: Entering directory '/home/me/openwrt/target/linux/mvebu'</font></div><div class="gmail_default" style><font face="courier new, monospace">mkdir -p /home/me/openwrt/dl</font></div><div class="gmail_default" style><font face="courier new, monospace">/home/me/openwrt/scripts/<a href="http://download.pl">download.pl</a> "/home/me/openwrt/dl" "linux-3.18.11.tar.xz" "2def91951c9cedf7896efb864e0c090c" "@KERNEL/linux/kernel/v3.x"</font></div><div class="gmail_default" style><font face="courier new, monospace">converted '<a href="ftp://ftp.all.kernel.org/pub/linux/kernel/v3.x/linux-3.18.11.tar.xz">ftp://ftp.all.kernel.org/pub/linux/kernel/v3.x/linux-3.18.11.tar.xz</a>' (ANSI_X3.4-1968) -> '<a href="ftp://ftp.all.kernel.org/pub/linux/kernel/v3.x/linux-3.18.11.tar.xz">ftp://ftp.all.kernel.org/pub/linux/kernel/v3.x/linux-3.18.11.tar.xz</a>' (UTF-8)</font></div><div class="gmail_default" style><font face="courier new, monospace">--2015-04-23 19:38:01--  <a href="ftp://ftp.all.kernel.org/pub/linux/kernel/v3.x/linux-3.18.11.tar.xz">ftp://ftp.all.kernel.org/pub/linux/kernel/v3.x/linux-3.18.11.tar.xz</a></font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">As you can see from these lines, the CONFIG_DOWNLOAD_FOLDER is ignored</font></div><div class="gmail_default" style><font face="courier new, monospace">(too bad because I don't have any internet access on this build </font></div><div class="gmail_default" style><font face="courier new, monospace">machine ; everything is already stored into a pre-built download </font></div><div class="gmail_default" style><font face="courier new, monospace">directory).</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">I identified the "culprit": the kernel_menuconfig (and the other related</font></div><div class="gmail_default" style><font face="courier new, monospace">rules) are calling $(_SINGLE)$(NO_TRACE_MAKE) ... - and $(_SINGLE) empties</font></div><div class="gmail_default" style><font face="courier new, monospace">MAKEFLAGS (export MAKEFLAGS= ;).</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">My problem is that I don't know how to fix this, as there might be a good</font></div><div class="gmail_default" style><font face="courier new, monospace">reason to do that - one I don't understand yet. My little, dirty solution</font></div><div class="gmail_default" style><font face="courier new, monospace">for now is to rewrtite the kernel_menuconfig rule as:</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">kernel_menuconfig: prepare_kernel_conf</font></div><div class="gmail_default" style><font face="courier new, monospace">       $(_SINGLE)$(NO_TRACE_MAKE) $(filter CONFIG_%,$(MAKEFLAGS)) -C target/linux menuconfig</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">Which works, but is probably not very clever. </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">So, a few questions: </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">* does someone has any information on why these kernel_*config rules </font></div><div class="gmail_default" style><font face="courier new, monospace">  have this $(_SINGLE) here?</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">* is there a way to have these CONFIG_* command line variables </font></div><div class="gmail_default" style><font face="courier new, monospace">  correctly honored in this specific case?</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">* is this even legal (from an OpenWRT point of view)? </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">Best regards, </font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">-- Emmanuel Deloget</font></div><div style="font-family:'courier new',monospace"><br></div></div></div>