[Ns-developers] build system proposal

Gustavo Carneiro gjcarneiro at gmail.com
Tue Oct 7 03:05:06 PDT 2008


2008/10/7 Tom Henderson <tomh at tomh.org>

> Mathieu Lacage wrote:
>
>> comments below,
>>
>> On Tue, 2008-09-30 at 16:36 +0000, Tom Henderson wrote:
>>
>>  ns-3-allinone/
>>>             download.py
>>>             install.py
>>>
>>> After invoking download.py, it would look something like this:
>>>
>>> ns-3-allinone/
>>>             ns-3-dev/
>>>             pybindgen-dev/
>>>             nsc-dev/
>>>             ns-3-dev-ref-traces/
>>>             download.py
>>>             install.py
>>>
>>> At any time when invoked later, download.py will synchronize all
>>> repos, or if passed an argument or set of arguments, will synchronize all
>>> of
>>> the named repos only.  Note:  Craig has suggested that maybe a separate
>>> script called "sync.py" or something like that could be used to do the
>>> later synchronization, and not reuse "download.py".
>>>
>>
>>
>> I would support instead making download.py require a mandatory argument.
>>
>> ./download.py --> do nothing, print help output.
>> ./download.py all --> download everything
>> ./download.py nsc --> download nsc
>> ./download.py nsc ns-3 --> download nsc and ns-3.
>>
>>  To update ns-3-dev, a developer in the ns-3-dev directory may either:
>>> i) hg pull (as usual)
>>> ii) ../sync.py ns-3-dev  (same outcome as i)
>>> iii) ../sync.py in which case everything is synchronized
>>>
>>
>> I would suggest again "../sync.py all" to avoid spurious unwanted
>> updates.
>>
>> Mathieu
>>
>>
> Any other comments on this proposal?  If not, we'll take steps to implement
> it with Mathieu's additional suggestion.


Just one comment.  I really _really_ think you should rename install.py to
build.py.  "Installation" usually means something completely different than
what you want this script to do.  I don't care if NS 2 has an install
script, if NS 3 is not to be system installed then we shouldn't call the
script install.

Otherwise it sounds fine in principle.  Well, just a couple more of details:
1. I would make the allinone dist a python/shell script instead of waf
wscript (otherwise waf might get confused, god knows it's not hard, by the
nested waf project), 2. I'm not sure how easy it will be to figure out the
version of each external component to rename the folders for the allinone
dist.

Regards,

-- 
Gustavo J. A. M. Carneiro
INESC Porto, Telecommunications and Multimedia Unit
"The universe is always one step beyond logic." -- Frank Herbert


More information about the Ns-developers mailing list