[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