Bug 466 - "./waf" without previous "./waf configure" breakage
: "./waf" without previous "./waf configure" breakage
Status: RESOLVED FIXED
: ns-3
build system
: ns-3-dev
: All All
: P1 normal
Assigned To:
:
:
:
:
  Show dependency treegraph
 
Reported: 2009-01-12 13:27 EDT by
Modified: 2009-01-17 13:28 EDT (History)


Attachments
test waf (78.32 KB, application/octet-stream)
2009-01-12 14:56 EDT, Gustavo J. A. M. Carneiro
Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2009-01-12 13:27:11 EDT
Using a fresh version of ns-3-dev, using just "./waf":

Reconfiguring the project
Checking for program g++                 : ok /usr/bin/g++ 
Checking for compiler version            : ok 4.0.1 
Checking for program cpp                 : ok /usr/bin/cpp 
Checking for program ar                  : ok /usr/bin/ar 
Checking for program ranlib              : ok /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for program pkg-config          : ok /sw/bin/pkg-config 
Traceback (most recent call last):
  File "./waf", line 127, in ?
    Scripting.prepare(t, cwd, VERSION, wafdir)
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 122, in prepare
    prepare_impl(t,cwd,ver,wafdir)
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 115, in prepare_impl
    main()
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 143, in main
    configure()
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 40, in configure
    conf.sub_config('')
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Configure.py",
line 77, in sub_config
    ret=mod.configure(self)
  File "/Users/Raj/code.nsnam.org/ns-3-dev/wscript", line 199, in configure
    variant_env['INCLUDEDIR'] = os.path.join(variant_env['PREFIX'], 'include')
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/posixpath.py",
line 62, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'list' object has no attribute 'endswith'

This is on Python 2.4.4 on OS X.
------- Comment #1 From 2009-01-12 13:47:29 EDT -------
I removed the offending line, as it is actually not needed for anything. 
Please check if it fixes the bug.
------- Comment #2 From 2009-01-12 14:17:39 EDT -------
Fixes one issue, adds another (this time it shows up after checking for python,
instead of after pkg-config

Checking for program python                             : ok
/Library/Frameworks/Python.framework/Versions/Current/bin/python 
Traceback (most recent call last):
  File "./waf", line 127, in ?
    Scripting.prepare(t, cwd, VERSION, wafdir)
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 122, in prepare
    prepare_impl(t,cwd,ver,wafdir)
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 115, in prepare_impl
    main()
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 143, in main
    configure()
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Scripting.py",
line 40, in configure
    conf.sub_config('')
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Configure.py",
line 77, in sub_config
    ret=mod.configure(self)
  File "/Users/Raj/code.nsnam.org/ns-3-dev/wscript", line 235, in configure
    conf.sub_config('bindings/python')
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Configure.py",
line 77, in sub_config
    ret=mod.configure(self)
  File "/Users/Raj/code.nsnam.org/ns-3-dev/bindings/python/wscript", line 130,
in configure
    conf.check_python_version((2,3))
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-e69116b0d3441cd20aea90dfddba6efd/wafadmin/Tools/python.py",
line 241, in check_python_version
    python_LIBDEST=os.path.join(conf.env['PREFIX'],"lib","python"+pyver)
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/posixpath.py",
line 62, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'list' object has no attribute 'endswith'
------- Comment #3 From 2009-01-12 14:22:37 EDT -------
Grr! conf.env['PREFIX'] should return a string, not a list :|  And this doesn't
happen on darwin-ppc regression host :(
------- Comment #4 From 2009-01-12 14:29:45 EDT -------
Does the following command print anything?

   python -c "import os; print repr(os.environ['PREFIX'])"
------- Comment #5 From 2009-01-12 14:34:21 EDT -------
python -c "import os; print repr(os.environ['PREFIX'])"
Traceback (most recent call last):
  File "<string>", line 1, in ?
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/UserDict.py",
line 17, in __getitem__
    def __getitem__(self, key): return self.data[key]
KeyError: 'PREFIX'
------- Comment #6 From 2009-01-12 14:56:50 EDT -------
Created an attachment (id=349) [details]
test waf

Could you try this replacement waf, just to see what it prints?
------- Comment #7 From 2009-01-12 15:05:09 EDT -------
Ah, I suspect all this is due to not running "./waf configure".  "./waf" may
trigger an autoconfig, but there's a possible bug with that autoconfig...
------- Comment #8 From 2009-01-12 15:27:05 EDT -------
Yes, I am using just "waf", not waf configure.  waf configure works just fine
actually.
------- Comment #9 From 2009-01-12 15:28:21 EDT -------
(In reply to comment #6)
> Created an attachment (id=349) [details] [details]
> test waf
> 
> Could you try this replacement waf, just to see what it prints?
> 

This latest waf gives the same error:
Traceback (most recent call last):
  File "./waf", line 127, in ?
    Scripting.prepare(t, cwd, VERSION, wafdir)
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Scripting.py",
line 122, in prepare
    prepare_impl(t,cwd,ver,wafdir)
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Scripting.py",
line 115, in prepare_impl
    main()
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Scripting.py",
line 143, in main
    configure()
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Scripting.py",
line 40, in configure
    conf.sub_config('')
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Configure.py",
line 77, in sub_config
    ret=mod.configure(self)
  File "/Users/Raj/code.nsnam.org/ns-3-dev/wscript", line 235, in configure
    conf.sub_config('bindings/python')
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Configure.py",
line 77, in sub_config
    ret=mod.configure(self)
  File "/Users/Raj/code.nsnam.org/ns-3-dev/bindings/python/wscript", line 130,
in configure
    conf.check_python_version((2,3))
  File
"/Users/Raj/code.nsnam.org/ns-3-dev/.waf-1.5.2-4adb452c4913bedee081db758adc6276/wafadmin/Tools/python.py",
line 241, in check_python_version
    python_LIBDEST=os.path.join(conf.env['PREFIX'],"lib","python"+pyver)
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/posixpath.py",
line 62, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'list' object has no attribute 'endswith'
------- Comment #10 From 2009-01-12 15:29:32 EDT -------
./waf configure gave the following:

rajib-bhattacharjeas-computer:~/code.nsnam.org/ns-3-dev Raj$ ./waf configure
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for program g++                 : ok /usr/bin/g++ 
Checking for compiler version            : ok 4.0.1 
Checking for program cpp                 : ok /usr/bin/cpp 
Checking for program ar                  : ok /usr/bin/ar 
Checking for program ranlib              : ok /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for program pkg-config          : ok /sw/bin/pkg-config 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for -Wno-error=deprecated-declarations support : no 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header stdlib.h                            :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header signal.h                            :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for library rt                                 :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
not found 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header pthread.h                           :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Checking for high precision time implementation         : 128-bit integer 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header stdint.h                            :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header inttypes.h                          :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header sys/inttypes.h                      :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
not found 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header linux/if_ether.h                    :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
not found 
Package pango was not found in the pkg-config search path.
Perhaps you should add the directory containing `pango.pc'
to the PKG_CONFIG_PATH environment variable
Package 'pango', required by 'GDK', not found
Checking for pkg-config flags for GTK_CONFIG_STORE      : not found 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for library sqlite3                            :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Package goocanvas was not found in the pkg-config search path.
Perhaps you should add the directory containing `goocanvas.pc'
to the PKG_CONFIG_PATH environment variable
No package 'goocanvas' found
Checking for pkg-config flags for MOBILITY_VISUALIZER   : not found 
Checking for program python                             : ok
/Library/Frameworks/Python.framework/Versions/Current/bin/python 
Checking for Python version >= 2.3                      : ok 2.4.4 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for library python2.4                          :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
not found 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for library python2.4                          :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Checking for program python2.4-config                   : not found 
Checking for program python-config-2.4                  : not found 
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Checking for header Python.h                            :
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'
ok 
Checking for Python module pybindgen                    : not found 
pybindgen missing => no python bindings
Checking for program diff                               : ok /usr/bin/diff 
Checking for program sudo                               : ok /usr/bin/sudo 
Checking for program hg                                 : ok
/Library/Frameworks/Python.framework/Versions/Current/bin/hg 
---- Summary of optional NS-3 features:
Threading Primitives          : enabled
Real Time Simulator           : enabled
Emulated Net Device           : not enabled (<linux/if_ether.h> include not
detected)
GtkConfigStore                : not enabled (library 'gtk+-2.0 >= 2.12' not
found)
SQlite stats data output      : enabled
Network Simulation Cradle     : not enabled (--with-nsc configure option not
given)
Python Bindings               : not enabled (PyBindGen missing)
Options.options.prefix: '/usr/local/'
os.path.abspath(os.path.expanduser(Options.options.prefix)): '/usr/local'
self['PREFIX']: '/usr/local'

The issue is only with the so called autoconfig.
------- Comment #11 From 2009-01-13 06:25:50 EDT -------
I can reproduce; not OSX specific.
------- Comment #12 From 2009-01-16 03:11:08 EDT -------
*** Bug 470 has been marked as a duplicate of this bug. ***