[PD-dev] [PD] packaging pd and friends WAS: GIT repo
Hans-Christoph Steiner
hans at at.or.at
Mon May 18 06:42:57 CEST 2009
On May 17, 2009, at 9:46 AM, Claude Heiland-Allen wrote:
> Hans-Christoph Steiner wrote:
>> Since you are also thinking about packaging, it would be good to
>> open up a discussion about how to handle some things. If you plan
>> on just packaging pd-vanilla, then its easy. If you want to
>> support multiple versions of Pd then it gets a bit more complicated.
>
> Yes, because they are incompatible.
Far from it. Yes, there are some incompatibilities, but mostly not.
Unless pure:dyne is changing code from the pure-data SVN, we are using
the same code built against the same API. They will be ABI compatible
between pd-vanilla and pd-extended. As for desiredata, I don't really
know, but I think Matju's aim is to keep it compatible.
>> Basically, libraries/externals can't be installed into 'pd/extra'
>> because then the packages would conflict.
>
> Huh? You can't have two packages installing the same file (but
> there are mechanisms to cope with this even then), but you can have
> different packages installing files into the same directory (/usr/
> bin/ for example).
If all packages install into /usr/lib/pd/extra, then if there is a
package that is not compatible with pd-vanilla, it'll be installed
into the same place. Also, unless the objects that are normally in
'extra' pd-vanilla are packaged separately, each 'pd' package will
want to install some of the same files into /usr/lib/pd/extra, which
means conflicts.
So say pd-extended uses /usr/lib/pd-extended, but then all the library
packages install into /usr/lib/pd/extra, then Pd-extended will look
there, and then the second copy of the 'extra' files.
>> I proposed
>> /usr/lib/pd-externals/ as a place to install all packaged
>> externals, so then you could have pd-vanilla, pd-extended,
>> desiredata, etc. installed and they could all use the externals.
>> Claude of pure-dyne had an objection to this, but he didn't follow
>> up on the details.
>
> It's broken by design.
>
> Where is the guarantee that pd, pd-extended, desiredata, etc all
> have exactly equal binary API for externals? Some externals (that
> use GUI features, for example) won't work with desiredata while they
> work fine with pd. Also, some abstractions (that use [initbang],
> for example) won't work with pd while they work fine with pd-extended.
The guarantee comes from the package, it includes the dependency of
'pd' (the generic virtual package for pdish things), 'puredata', 'pd-
extended', and 'desiredata'. Most of the libraries that are packaged
can easily be built against one, and used with the others. They are
binary compatible. If a library uses [initbang], then that package
would have a dependency on 'pd-extended' rather than the generic 'pd'.
So there could be a folder for the 'pd' dependencies that is shared by
all, like /usr/lib/pd-externals. Then a package that relies on
specific features would have a dependency on that specific version and
install into its 'extra' folder. This isn't the only way to handle
this for sure, I am certainly open to suggestions.
> I suggest something like: /usr/lib/pd for pd, /usr/lib/pd-extended
> for pd-extended, /usr/lib/desiredata for desiredata. Otherwise
> you'll end up with a lot of broken-ness.
>
> Claude
That makes perfect sense. The question is then, how do you then
package 'zexy', for example, so that it can be used by 'puredata', 'pd-
extended', and 'desiredata'?
.hc
----------------------------------------------------------------------------
There is no way to peace, peace is the way. -A.J. Muste
More information about the Pd-dev
mailing list