Bug in net-tools' build system?

Ronald Hummelink ronald at hummelink.xs4all.nl
Mon Apr 28 12:38:10 PDT 2003


On Mon, 2003-04-28 at 19:21, Oliver Brakmann wrote:
> On Mon, 2003-04-28 01:43, Steve Crosby wrote...
> 
> > To be honest, even the "make" stage appears superflous, since the make 
> > update target includes "all" as a dependency, and should perform the 
> > necessary steps. I'll just go and test that now...
> > 
> > Yep...issuing *only* a 
> > 
> >     	yes "" | make update
> > 
> > from a freshly untarred source works as expected (answers the questions 
> > with defaults, compiles and installs fine).
> 
> *sigh* I never argued that net-tools wouldn't build with the defaults. But
> with the current instructions it builds _ONLY_ the defaults. Even if you ran
> `yes | make' instead of `yes "" | make'.
>  
> > Adminttedly the defaults do not install mii-tools, which I think was the 
> > original problem
> 
> *sigh* Nope, read the thread again. The problem is that, if you deviate from
> the defaults, it will still only build the defaults.
> 
> Try this: untar the fresh tarball, run make manually (that is, without `yes'),
> and answer `y' to the last three questions (because they are the easiest
> to verify):

Okay, I confirm you are right, at least in part.
When you only run 'make update' it won't build the mii-tool, iptunnel
and ipmadrr tools, nor try to install them. This is caused by at the
time of invoking the top level make config.make doesn't exist.

#---------- Fragment from Makefile
PROGS   := ifconfig hostname arp netstat route rarp slattach plipconfig
nameif
                                                                                                                                                        
-include config.make
ifeq ($(HAVE_IP_TOOLS),1)
PROGS   += iptunnel ipmaddr
endif
ifeq ($(HAVE_MII),1)
PROGS   += mii-tool
endif
#----------

As you see the PROGS variable will not be extended to include the 3
optional programs, unless you pass another 'make' with HAVE_IP_TOOLS 1
and HAVE_MII 1 in config.make

What does happen during only 'make update' is the config.h gets build
with the settings you choose as first thing, then compilation is
started. Since config.h is created properly the tools will be built
according to the options you specified. I verified this by adding the
following bit of code somewhere in between the section that prints
--help of hostname.c

#---------- Snippet of code
#if I18N
fprintf(stderr, _("I18N enabled even though by default it's not!\n"));
#endif
#----------

I do consider the net-tools build system buggy, however it is less bad
then Oliver thought. The options entered do get used, but the optional
tools will not when you issue 'make update'
As was suggested, 'make config && make update' is a proper workaround.
(the second pass of make will include config.make succesfully and hence
build the optional programs)

Ronald

-- 
Linux is like a small snowball rolling downhill. Microsoft is just
waiting down the mountain...

-- 
Unsubscribe: send email to listar at linuxfromscratch.org
and put 'unsubscribe lfs-dev' in the subject header of the message



More information about the lfs-dev mailing list