[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