On Monday, Feb 2, 2004, at 16:03 America/New_York, guenter geiger wrote:
On Mon, 2 Feb 2004, d.lj wrote:
i m not sure if such a policy is the key to this dilemma given guenthers statement of resistance against structuring, since its only more of structuring, more specifically a top-down structuring and i think the other way round would be preferable.
I think a common build system for all platforms (where the developers just have to drop in their external) and some basic guideline how to do it would not necessarily be restrictive.
It would rather help the developers. They just would not need to think about the build system anymore, and if something in the install paths changes (e.g. we decide to split the externals in subdirectories) it would happen in an organized way and easy to communicate to users.
Guenter
This is definitely the best approach. Instead of a policy, we could define an 'interface' that a developer would need to implement in order for their externals to be included in the packages. For example, in order to have your externals included in the MacOS X installer, you would need to implement "make pkg", which would compile everything in that externals collection and generate a MacOS X package to be included in the installer.
In order for this to work, there would need to be some standard make targets and a standard internal layout for Pd, with $PDDIR being freely redefinable (/usr, /usr/local, /Applications, C:\Program Files, etc.). Here a suggested internal layout based on what exists:
abstractions bin doc 0.tutorials/ 1.manual/ 2.control.examples/ 3.audio.examples/ 4.fft.examples/ 5.reference/ 6.externals flext/ GEM/ 7.stuff/ sound/ extra lib (for external libraries)
Another thing is to have a suggested file layout for developer's files, so that the paths to the pd sources, for example, are the same for everyone. I think most people basically are doing it the same way now, but I'll lay it out just for discussion's sake. I think everything should be laid out as if you just run 'cvs checkout' for everything in the same dir:
abstractions doc externals packages pd
I would ultimately like to see various 'extensions' to pd in this tree also, maybe in a directory/cvs module called 'extensions':
extensions Gem GemLibs Framestein gripd xgui etc. etc.
I think the key to making this work with the pd community is not making it a 'requirement' for the CVS per se. Instead a developer will have to provide the standard interface to the package makers in order for the maintainers to include their externals in the packages. I would love to be able to include every piece of software written for Pd in the installers, but I do not have time or an inclination to figure out each individual build system. But if someone else wants to include it in the build systems themselves, they can.
The other key is providing clear examples and documentation about the standard interfaces and path layout. I am guilty of not doing this yet for sure, but I do think its quite important and will start working on it while I working making new installers for 0.37-1.
.hc
the cvs right now fullfils at least the function of a more or less complete collection spot for externals regardless of the state they're in, which is pretty good, so exlcuding stuff via some policy will only generate regress in this aspect. i think the same goes for using libaries in externals.
a lot of stuff is being created by a devel-user hybrid and commitment stops if a local solution is achieved, i.e. bringing a little project into some formal shape is a bunch of work with no more direct benefit.
maybe a proper example external would help here, since a lot of stuff is being made via copy and pasting from existing externals.
this means that the work fixing makefiles and putting stuff into common locations is being shifted to those packaging stuff for particular distribution formats. but exactly the work thats being done there could be folded back into the cvs?
i dont think that agreeing on any general common location for stuff is necessary as long as there's a configure script providing a --prefix option.
furthermore, i dont think its productive to moan about stuff being strewn all over the place. just have a quick glance over the stuff you're compiling and you can figure where make install will put it. if there's no install target at all, its even more your responsibility to pass in the proper path when doing a cp *.pd_platform /path/to/pd/externs
i do install a lot of externals here and there and somehow i manage to get them all under /usr/lib/pd and i m not applying any kind of voodoo or excessively timeconsuming techniques to achieve this, which is not to say that i dont (massively) appreciate doing "cvs co externals" instead of clicking 20 plus websites and downloading tar.gz's.
and given that probably most "users" use binary packages anyway its again back to the responsibility of the package maintainer.
i think this boils down to: if you think you can fix something, fix it and commit it.
if not, spend money on a commercial package or hire someone to fix it for you.
make sense? make: *** No rule to make target `sense'. Stop.
bst,jdl
-- i x D ¥ · o r G GPG-key at http://xdv.org/~jdl/jdl.pub.asc
PD-dev mailing list PD-dev@iem.at http://iem.at/cgi-bin/mailman/listinfo/pd-dev
PD-dev mailing list PD-dev@iem.at http://iem.at/cgi-bin/mailman/listinfo/pd-dev
________________________________________________________________________ ____
Man has survived hitherto because he was too ignorant to know how to realize his wishes. Now that he can realize them, he must either change them, or perish. -William Carlos Williams