Bug 1228

Summary: object 'ns3-network--lib' was not found in uselib_local (required by 'bench-packets')
Product: ns-3 Reporter: Hemant <hemantr>
Component: clickAssignee: Mitch Watrous <watrous>
Status: RESOLVED FIXED    
Severity: major CC: ns-bugs, suresh.lalith, tomh
Priority: P5    
Version: pre-release   
Hardware: PC   
OS: Linux   

Description Hemant 2011-08-01 04:42:20 EDT
Hi,

While following the installation and testing of NS3 as given in http://www.nsnam.org/wiki/index.php/Installation and http://www.nsnam.org/wiki/index.php/Troubleshooting, when I run ./test.py, I come across the following errors. Kindly help.

Waf: Entering directory `/home/lab/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/lab/repos/ns-3-allinone/ns-3-dev/build'
object 'ns3-network--lib' was not found in uselib_local (required by 'bench-packets')
Waf died. Not running tests

Prior to running ./test.py, I executed 

./waf configure --enable-examples --enable-tests --enable-modules=core

and the output I had received is as follows:

Checking for program gcc or cc           : /usr/bin/gcc 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for gcc                         : ok  
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for program pkg-config          : /usr/bin/pkg-config 
Checking for -Wl,--soname=foo support    : yes 
Checking for type uint128_t              : not found 
Checking for type __uint128_t            : not found 
Checking for high precision time implementation : cairo 128-bit integer 
Checking for header stdint.h                    : yes 
Checking for header inttypes.h                  : yes 
Checking for header sys/inttypes.h              : not found 
Checking for header sys/types.h                 : yes 
Checking for header sys/stat.h                  : yes 
Checking for header dirent.h                    : yes 
Checking for header stdlib.h                    : yes 
Checking for header signal.h                    : yes 
Checking for header pthread.h                   : yes 
Checking for header stdint.h                    : yes 
Checking for header inttypes.h                  : yes 
Checking for header sys/inttypes.h              : not found 
Checking for library rt                         : yes 
Checking for header netpacket/packet.h          : yes 
Checking for header linux/if_tun.h              : yes 
Checking for pkg-config flags for GTK_CONFIG_STORE  : ok  
Checking for pkg-config flags for LIBXML2           : ok  
Checking for NSC location                           : ok ../nsc (guessed) 
Checking for library dl                             : yes 
Checking for NSC supported architecture i686        : ok  
Checking for header sys/socket.h                    : yes 
Checking for header netinet/in.h                    : yes 
Checking for click location                         : not found 
boost headers                                       : not found 
library boost_signals                               : not found 
library boost_filesystem                            : not found 
boost headers                                       : not found 
library boost_signals                               : not found 
library boost_filesystem                            : not found 
Checking for library sqlite3                        : yes 
Checking for program python                         : /usr/bin/python 
Checking for Python version >= 2.3                  : ok 2.6.5 
Checking for library python2.6                      : yes 
Checking for program python2.6-config               : /usr/bin/python2.6-config 
Checking for header Python.h                        : yes 
Checking for -fvisibility=hidden support            : yes 
Checking for pybindgen location                     : ok ../pybindgen (guessed) 
Checking for Python module pybindgen                : ok  
Checking for pybindgen version                      : ok 0.15.0.794 
Checking for types uint64_t and unsigned long equivalency : no 
Checking for types uint64_t and unsigned long long equivalency : yes 
Checking for the apidefs that can be used for Python bindings  : gcc-ILP32 
Checking for type of bindings to build                         : modular 
Checking for Python module pygccxml                            : not found 
Checking for program mpic++                                    : not found 
Checking for program sudo                                      : /usr/bin/sudo 
Checking for program valgrind                                  : /usr/bin/valgrind 
Checking for pkg-config flags for GSL                          : ok  
Checking for -Wno-error=deprecated-declarations support        : yes 
Checking for -Wno-error=deprecated-declarations support        : yes 
Checking for -fstrict-aliasing support                         : yes 
Checking for -fstrict-aliasing support                         : yes 
Checking for -Wstrict-aliasing support                         : yes 
Checking for -Wstrict-aliasing support                         : yes 
Checking for program doxygen                                   : /usr/bin/doxygen 
---- Summary of optional NS-3 features:
Static build                  : not enabled (option --enable-static not selected)
Threading Primitives          : enabled
Real Time Simulator           : enabled
Emulated Net Device           : enabled
Tap Bridge                    : enabled
GtkConfigStore                : enabled
XmlIo                         : enabled
Network Simulation Cradle     : enabled
NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration     : not enabled (Required boost libraries not found)
SQlite stats data output      : enabled
Python Bindings               : enabled
Python API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
MPI Support                   : not enabled (option --enable-mpi not selected)
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
Build tests                   : enabled
Build examples                : enabled
GNU Scientific Library (GSL)  : enabled
'configure' finished successfully (2.848s)

Kindly help. Thanks in Advance.

Regards,

-Hemant
Comment 1 Lalith Suresh 2011-08-01 04:55:22 EDT
Hi Hemant,

(In reply to comment #0)
> Hi,
> 
> While following the installation and testing of NS3 as given in
> http://www.nsnam.org/wiki/index.php/Installation and
> http://www.nsnam.org/wiki/index.php/Troubleshooting, when I run ./test.py, I
> come across the following errors. Kindly help.
> 
> Waf: Entering directory `/home/lab/repos/ns-3-allinone/ns-3-dev/build'
> Waf: Leaving directory `/home/lab/repos/ns-3-allinone/ns-3-dev/build'
> object 'ns3-network--lib' was not found in uselib_local (required by
> 'bench-packets')
> Waf died. Not running tests
> 
> Prior to running ./test.py, I executed 
> 
> ./waf configure --enable-examples --enable-tests --enable-modules=core
> 

That's because utils/wscript tries to build bench-packets along with the test-runner, and bench-packets requires the network module to be enabled.

Any particular reason you need to do a build with just 'core' enabled?
Comment 2 Hemant 2011-08-01 05:21:58 EDT
Thanks Suresh. If I execute ./waf configure --enable-examples --enable-tests instead of ./waf configure --enable-examples --enable-tests --enable-modules=core, then ./test.py does not give any problem. All 174 tests are passed successfully.

Thanks.

(In reply to comment #1)
> Hi Hemant,
> 
> (In reply to comment #0)
> > Hi,
> > 
> > While following the installation and testing of NS3 as given in
> > http://www.nsnam.org/wiki/index.php/Installation and
> > http://www.nsnam.org/wiki/index.php/Troubleshooting, when I run ./test.py, I
> > come across the following errors. Kindly help.
> > 
> > Waf: Entering directory `/home/lab/repos/ns-3-allinone/ns-3-dev/build'
> > Waf: Leaving directory `/home/lab/repos/ns-3-allinone/ns-3-dev/build'
> > object 'ns3-network--lib' was not found in uselib_local (required by
> > 'bench-packets')
> > Waf died. Not running tests
> > 
> > Prior to running ./test.py, I executed 
> > 
> > ./waf configure --enable-examples --enable-tests --enable-modules=core
> > 
> 
> That's because utils/wscript tries to build bench-packets along with the
> test-runner, and bench-packets requires the network module to be enabled.
> 
> Any particular reason you need to do a build with just 'core' enabled?
Comment 3 Tom Henderson 2011-08-01 09:40:37 EDT
wscript says this:

    obj = bld.create_ns3_program('bench-packets', ['network'])
    obj.source = 'bench-packets.cc'

but build is failing on this program when only 'core' is enabled
Comment 4 Lalith Suresh 2011-08-01 11:00:13 EDT
(In reply to comment #3)
> wscript says this:
> 
>     obj = bld.create_ns3_program('bench-packets', ['network'])
>     obj.source = 'bench-packets.cc'
> 
> but build is failing on this program when only 'core' is enabled

I'm not really good with the build system stuff, but here's my hunch:

- In the top level wscript, the code block between line 727 and 734 is what decides whether a program should be built or not depending on whether the dependencies for that program have been built.
- Line 795 is where the utils/ folder is added to the build list, and no dependency checking is performed after that point.

I guess the reason this went unnoticed for so long is that no one really does a build with only 'core' enabled (and no 'network'). :)
Comment 5 Mitch Watrous 2011-08-11 18:31:03 EDT
Bug closed.

ns-3-dev changeset:  710d6ff1d227