[Ns-developers] build stuff and downloading external deps

Tom Henderson tomh at tomh.org
Thu Sep 4 08:08:00 PDT 2008


>-----Original Message-----
>From: Mathieu Lacage [mailto:mathieu.lacage at sophia.inria.fr]
>Sent: Wednesday, September 3, 2008 01:58 PM
>To: 'ns-developers'
>Subject: [Ns-developers] build stuff and downloading external deps
>
>hi,
>
>While trying to look at some of the nsc build issues, it occured to me
>that we do a lot of things when running waf which require network access
>and that this can be problematic in a lot of situations (for example,
>such as yesterday when the nsc repo server times out) where network
>access is spotty. I noticed also that we have quite a bit of different
>code to download different bits and pieces:
>  - pybindgen if we don't find the right version for python bindings
>  - ns-3-dev-traces if we want to run regression tests
>  - nsc if we want to use nsc tcp stacks
>
>To summarize, I would like to split all the network access from our
>build stuff proper and:
>
>  1) provide a small download.py file (find a better name if you care)
>which will attempt to download missing bits and pieces, depending
>whether this is a release tarball or a snapshot from the ns-3-dev main
>tree. It could have a couple of command-line options which say which
>bits to download and/or update
>
>  2) rework the build scripts to not download anything, try to find
>things under the current dir, disable the feature if they can't find it
>there, and provide a --with-foo=/location switch for each of the
>optional stuff to look for these optional features in a separate
>location.
>

First, to clarify, this is mainly about people working from ns-3-dev, not from our releases.

I find that automatic downloading of things is nice as a default.  Particularly the regression traces.  However, sometimes I am offline or at a disadvantaged location; for those cases, I wouldn't mind a "--offline" or "--local" option to configure, to prevent any fetching globally.

I think a --with-foo=/location switch and a --disable-foo for each optional feature is preferable.  --disable-foo would prevent whatever downloading might automatically occur.

Another feature that would be nice is a status report at the end of the configuration step that stated what happened to each optional feature; e.g.:

ns-3 configuration options
--------------------------
nsc:  disabled
python-bindings:  enabled
regression:  not found

with the distinction between "disabled" and "not found" being that the former is used when the user explicitly disables (or doesn't enable, when disabling is the default) a feature, and the latter when the configure script is unsuccessful in trying for the option, for whatever reason (version mismatch, no web access, not found in the user-specified location).

So, I don't see much extra advantage of having a separately invoked download.py script to run if the above options work.

Tom 







More information about the Ns-developers mailing list