Bug 2235

Summary: Running ./waf install just after configure fails
Product: ns-3 Reporter: Matthieu Coudron <mattator>
Component: build systemAssignee: Gustavo J. A. M. Carneiro <gjcarneiro>
Status: PATCH WANTED ---    
Severity: enhancement CC: mattator, ns-bugs, tomh
Priority: P5    
Version: ns-3.24   
Hardware: PC   
OS: Linux   

Description Matthieu Coudron 2015-11-30 07:10:46 EST
I configure waf with gcc5:
CXX="g++" CXXFLAGS=" -Wno-reorder -Wno-unused-variable -std=c++11 -include sstream" ./waf configure --prefix=install --build-profile=debug

If I run directly: ./waf install I get the following error:
+ install /home/teto/ns3off/install/include/ns3-dev/ns3/send-params.h (from src/wimax/model/send-params.h)
+ install /home/teto/ns3off/install/include/ns3-dev/ns3/bs-scheduler-simple.h (from src/wimax/model/bs-scheduler-simple.h)
+ install /home/teto/ns3off/install/include/ns3-dev/ns3/ss-service-flow-manager.h (from src/wimax/model/ss-service-flow-manager.h)
+ install /home/teto/ns3off/install/include/ns3-dev/ns3/simple-ofdm-wimax-channel.h (from src/wimax/model/simple-ofdm-wimax-channel.h)
Waf: Leaving directory `/home/teto/ns3off/build'
Build failed
Traceback (most recent call last):
  File "/home/teto/ns3off/.waf-1.8.16-62b1bd1a26843637845309e604a98bca/waflib/Runner.py", line 150, in task_status
    return tsk.runnable_status()
  File "/home/teto/ns3off/.waf-1.8.16-62b1bd1a26843637845309e604a98bca/waflib/Build.py", line 451, in runnable_status
  File "/home/teto/ns3off/.waf-1.8.16-62b1bd1a26843637845309e604a98bca/waflib/Task.py", line 311, in runnable_status
  File "/home/teto/ns3off/.waf-1.8.16-62b1bd1a26843637845309e604a98bca/waflib/Task.py", line 296, in signature
  File "/home/teto/ns3off/.waf-1.8.16-62b1bd1a26843637845309e604a98bca/waflib/Task.py", line 349, in sig_explicit_deps
    raise Errors.WafError('Missing node signature for %r (required by %r)'%(x,self))
WafError: Missing node signature for /home/teto/ns3off/build/src/fd-net-device/ns3-dev-tap-device-creator-debug (required by 
	{task 140243053566352: inst ns3-dev-tap-device-creator-debug -> })

If I run ./waf build and only then ./waf install, it works perfectly. Here is my config:
Waf: Entering directory `/home/teto/ns3off/build'
Waf: Leaving directory `/home/teto/ns3off/build'
Build commands will be stored in build/compile_commands.json
'build' finished successfully (0.347s)

Modules built:
antenna                   aodv                      applications              
bridge                    buildings                 config-store              
core                      csma                      csma-layout               
dsdv                      dsr                       energy                    
fd-net-device             flow-monitor              internet                  
internet-apps             lr-wpan                   lte                       
mesh                      mobility                  mpi                       
netanim (no Python)       network                   nix-vector-routing        
olsr                      point-to-point            point-to-point-layout     
propagation               sixlowpan                 spectrum                  
stats                     tap-bridge                test (no Python)          
topology-read             uan                       virtual-net-device        
wave                      wifi                      wimax                     

Modules not built (see ns-3 tutorial for explanation):
brite                     click                     openflow    
Comment 1 Tom Henderson 2016-01-04 17:43:33 EST
I was able to reproduce.  Agree that waf should behave like make does and allow to install directly; it seems to work elsewhere this way:


but marking as PATCH WANTED and I don't intend to prioritize since workarounds obviously exist.