[PD-dev] pd-double: how to selectively build external libs for development?

katja katjavetter at gmail.com
Mon Oct 17 14:29:56 CEST 2011


On Wed, Oct 12, 2011 at 4:27 AM, Hans-Christoph Steiner <hans at at.or.at> wrote:

> I recommend removing the pd from svn and replacing it with the pd-double.git
> folder named as 'pd'.  THen its all the same tree.  That'll save you a lot
> of headaches.

In the end, this seems to be the best option indeed, for selective
development of external libs in the attempt to make them
double-precision-ready. Description of all the steps required:

- clone pd-double.git ("pd-double')
- checkout pure-data.svn ("pd-svn")
- replace sources in pd-svn/pd with the sources from pd-double,
- optionally hack pd-svn/pd/src/m_pd.h to hardcode float precision to your need
- from within pd-svn/pd, build pd with ./autogen.sh && ./configure && make
- from within pd-svn/externals, selectively build a lib, like so:
      make DESTDIR=/path/to/your/pd-svn creb_clean creb creb_install
- the external lib will be installed in pd-svn/pd/extra
- skip pd-svn/pd when updating, or repeat the replace procedure after updating

In order to use pd together with the external lib(s) in pd-svn/pd/extra:
- in pd-svn/pd, create a directory named 'bin'
- copy or move executables pd, pd-watchdog, pdreceive and pdsend from
pd-svn/pd/src to pd-svn/pd/bin
- a copy of executable pd must remain in pd-svn/pd/src for the linker,
if you want to compile more
- start pd from pd-svn/pd/bin

None of the stuff in pd-svn/pd/extra is loaded at start up. In the
help browser, corresponding help files are visible, but trying to load
these files from the browser will make pd hang. I have observed this
behaviour with all local ("uninstalled") test builds of vanilla Pd,
with old buildsystem and new buildsystem alike.

The only way to instantiate external objects is by using namespaces.
Once the object created, it's corresponding help file can be found in
the regular way. Test patches must be designed with namespaces for all
external objects.

Now that I have a way to develop, albeit rather cumbersome, I started
working on creb, one of the libs which refuse to be compiled with
double precision. There is a lot of type punning involved, for various
purposes. It took me a couple of hours to rewrite things in such a way
as to get it compiled. Testpatches must still be developed. Helpfiles
do not always give sufficient proof of proper functioning. Only when
tests have proven proper functioning, code can be commited to
pure-data.svn, since there is no development branch for this.

There's a few more libs which defy double precision compilation. So
it's obvious now, that even a first test build of pd-double on the
autobuild system is still far away. All "pd-double" nightly builds so
far have been single precision, or at best a double precision core
with single precision externals. Or a core-only build, like
Pd-0.43.1-double-20111016-ubuntu-lucid-amd64.deb.

I would propose that we do not publicly announce pd-double extended
test builds before they are really there. In the meantime, pointing to
pd-double.git is a good thing. From there it's easy to build one's own
vanilla pd for double precision. I'll edit the announcement on
puredata.info accordingly.

Katja



More information about the Pd-dev mailing list