[Ns-developers] Status of Python bindings
Tom Henderson
tomh at tomh.org
Thu Jun 5 06:28:58 PDT 2008
Gustavo Carneiro wrote:
> 2008/5/19 Gustavo Carneiro <gjcarneiro at gmail.com>:
>
>> The PyBindGen API changes are more or less complete:
>>
>> https://code.launchpad.net/~gjc/pybindgen/trunk<https://code.launchpad.net/%7Egjc/pybindgen/trunk>
>>
>> If nothing else comes up API-wise, next steps are:
>>
>> 1. Generate NS-3 API definitions as a single Python file and make it work;
>>
>> 2. Split the above file into several files, and support local modification
>> files;
>>
>> 3. Figure out issues related to splitting python bindings into a separate
>> repository;
>
>
> === Facts ===
>
> We should come to a decision regarding how to deploy python bindings after
> 3.1.
>
> Looking at the obtained result, I see that the ns-3-pybindgen-notracing dist
> tarball is 748 KiB, versus the no-python normal tarball which is 720 KiB.
> That is, only 4% increase. If I also add the pybindgen source tree, the
> total goes to 800KiB, or 11% increase. In any case, API definitions in this
> new format are much smaller than I had expected.
>
> === Proposal ===
>
> That being said, I think it will be vastly simpler and less painful if:
>
> 1. Python API definitions are kept in the main ns-3-dev branch;
>
> 2. For logistic reasons, and because pybindgen is an independent project
> useful to other people, I would prefer to pull the pybindgen source tree
> from a bzr branch hosted in code.launchpad.net, the same way regression
> traces are pulled from another branch;
>
> 3. The released ns-3 tarballs would ship both a pybindgen tree and API
> definitions. This means that whoever receives the tarball can:
>
> a) Build the python bindings easily, only needing Python (>= 2.3) with
> Python headers as external dependency;
>
> b) Add extra API definitions using the simplified pybindgen API (I
> already added support for this and an example, missing documentation only).
>
> === Problems Likely To Occur ===
>
> Problems that may occur regarding python bindings are:
>
> 1. A user that receives the tarball hacks NS-3 away, changing APIs in the
> process. The user will then see a compiler error message in the Python
> bindings, which may be blocking her work;
>
> a) I don't see any magical solution here. Needs documentation
> explaining to the user she needs to update the API definition or disable
> python bindings;
>
> 2. A NS-3 developer changes the API (I hope this will become rare!). If
> Python bindings are enabled, they will stop compiling and block further work
> until they are fixed. New we can decide whether Python bindings are enabled
> by default in development trees (read: branch checkout):
>
> a) Python bindings are enabled by default. This means that developers
> that change existing APIs will have to fix the corresponding pybindgen API
> definition or comment it out;
>
> b) Python bindings are disabled by default. This means that Python
> bindings will often not be compilable during development periods, but most
> developers are free from worrying about bindings. Some other developers
> will have to do the extra work.
> i) In this case we would need to discuss how to detect developer
> trees vs release trees...
>
> Please comment.
I would favor 2a), and also a regression environment to find these
faults as they occur (to the extent that we have API coverage in examples).
I'm guessing you will add some flag during the ./waf configure process
to disable bindings, if needed.
I think the rest of your proposal sounds reasonable.
Thanks,
Tom
More information about the Ns-developers
mailing list