On Thursday, 2 July 2015 at 18:28:50 UTC, Russel Winder wrote:
On Tue, 2015-06-30 at 18:20 +0000, John Colvin via Digitalmars-d
-announce
[…]
Ditched distutils in favour of dub. This is easier for me to
maintain and fits much better with the rest of the D ecosystem
I am not convinced by this, though cleary my feeling carry no
weight in decision making :-)
For building C, and C++ extension (and indeed Chapel ones) it
is assumed distutils will be used, allowing for:
python3 setup.py build
python3 setup.py install
SCons can do this but every one demands distutils. Can dub
really replace distutils for installing extensions as well as
building them? Will people installing extensions be prepared to
switch to a non -standard system? Whilst perhaps they should,
they won't. I fear that without a distutils installation, the
extension will never be installed outside the development team.
It's not the D community that must be convinced, it is the
Python one.
There are 2 seperate points where a build/install system is
needed:
1) Installing the extension. It's just one python file, which
makes it a good fit for %install_ext but of course I could wrap
it in a trivial setup.py to make people feel more comfortable /
make it fit in with easy_install/pip or related tools.
2) building the inline D code and sorting out linking to other
libraries etc. The basics of this can be done with distutils
(it's how pyd traditionally does it), but seeing as it's all D
code from this point, dub is a better fit, otherwise people have
to have manually install any D libraries they want to use.
I originally modelled PydMagic on how the %%cython inline magic
works. %%cython uses distutils under the scenes with minor
leakage for the compilation options and PydMagic uses dub, with
similar levels of leakage.
The recently-spun-off-from-PydMagic work of making a nicer API
for pyd ( github.com/John-Colvin/ppyd which PydMagic pulls in via
dub) is independent of the build system, so you can use pyd's
distutils extensions or dub. This is the project you would use if
you want to write a proper python extension in D, as opposed to
little snippets in a Jupyter notebook.