[Chandler-dev] Feeds parcel is now a plugin egg - please "make
purge"
Phillip J. Eby
pje at telecommunity.com
Wed Apr 12 13:19:38 PDT 2006
I've now ported the feeds parcel to a plugin project (under
projects/Chandler-FeedsPlugin), using the approach described here:
http://lists.osafoundation.org/pipermail/chandler-dev/2006-March/005552.html
If you're going to work on the feeds parcel, please see the README.txt I've
included in that directory, and let me know if you have any questions.
If anybody wants to experiment with porting other plugin parcels to the new
project format, feel free to use the existing projects as examples.
In the case of the feeds parcel, no code changes were necessary; I simply
did the following (from the 'chandler' directory):
mkdir projects/Chandler-FeedsPlugin
svn mv parcels/feeds projects/Chandler-FeedsPlugin
cd projects/Chandler-FeedsPlugin
cp ../Chandler-HelloWorldPlugin/setup.py .
cp ../Chandler-HelloWorldPlugin/README.txt .
And then I edited the setup.py, focusing mainly on things like the
description, project name/version number, specifying the test package, and
updating the "entry points" list to include the feeds parcel. You can
compare the two existing plugins' setup.py files to get an idea of what
things to change, and these two documentation links provide additional
background on the options you can specify in a setup script:
http://python.org/doc/2.4.1/dist/setup-script.html
http://peak.telecommunity.com/DevCenter/setuptools#new-and-changed-setup-keywords
Once this was done, I ran the plugin's unit tests using:
RunPython setup.py test
Since I'd set the test_suite to 'feeds.tests', this ran the plugin's unit
tests. Or rather, it tried and failed, because 'feeds/tests' wasn't
actually a package for some reason. So I added an __init__.py:
touch feeds/tests/__init__.py
RunPython setup.py test
and reran the tests, which then passed.
I then installed the plugin in development mode, so I could run Chandler
with it, and fix any bugs without having to build and install an .egg file:
RunPython setup.py develop
cd ../..
./chandler.exe --create
Everything seemed to be working okay, so I edited the chandler/Makefile to
add the plugin to the BUNDLED_PLUGINS and BUILD_PLUGINS variables. Then I ran:
make binaries-Chandler-FeedsPlugin
make install
Which builds a .egg file in the ../downloads directory, and then installs it.
Minus the time I spent running tests and fixing a minor Makefile issue, the
total port time was a matter of minutes. Of course, I've done a lot of
work with setup scripts before, so it might take other folks a little bit
longer to do one. Still, the plugin setup scripts are only 15 lines long,
and you'll edit only maybe 7 or 8 of those, mostly to change the names for
your project.
Finally, I checked in my changes... and broke the build because the .egg
file has to be manually approved to get to the download
directory. Oops. Bear and I are now discussing how to deal with that
issue, but for now, be sure to check with him before checking in a new
plugin project (or new version of an existing one), so that the changed
egg(s) will get staged correctly.
More information about the chandler-dev
mailing list