Hacking Evergreen ILS / Development Notes

Notes and tips on development of Evergreen ILS.

Before Starting with Evergreen development, please read the dev:git page on the Evergreen Wiki.

Getting the Master

cd /usr/src
git clone git://git.evergreen-ils.org/OpenSRF.git
chown -R opensrf:opensrf ./OpenSRF
git clone git://git.evergreen-ils.org/Evergreen.git ./Evergreen
chown -R opensrf:opensrf ./Evergreen

Now Hack, following the coding standards evergreen-ils.org/dokuwiki/doku.php?id=code_formatting_standards

Hacking for Commit

Follow these steps to create a bug in Launchpad, fetch the git master, hack it and create a patch

  • Create a bug on Launchpad. Input as much detail as possible, describe motives and reasoning; encourage discussion.
  • Edit your Evergreen to create the patch, clone the repo and checkout a branch for your edits.
    cd /usr/src
    git clone git://git.evergreen-ils.org/Evergreen.git ./Evergreen
    cd Evergreen
    git co my_lp123456

Evergreen Working Repository

The Evergreen team maintains a hosted Working repo, contributors should send their work in a head ref like user/$name/lp1234567-fix-things. Sign-off on your commmits (-s)

$ cd /usr/src/Evergreen
$ git checkout master && git pull
$ git checkout -b lp1234567 origin/master
## Edit
$ git commit -as
$ git push working lp1234567:user/$name/lp1234567

Hacking Evergreen w/Github

One super easy way to get working with Evergreen is to fork the project on github, then start hacking. Sign in to github, then fork the evergreen project - we called ours evergreen-edoceo.

~ $ cd /usr/src
. $ git clone git@github.com:edoceo/evergreen-edoceo.git
. $ cd evergreen-edoceo/
. $ git remote add upstream git://github.com/evergreen-library-system/Evergreen.git
. $ git fetch upstream
. $ git merge upstream/master

Now it's time to create a branch, edit the code-base as necessary, then commit that stuff back to the core. First checkout your new branch, to keep things clean. Then hack away, but make sure your code looks nice :0 When finished commit to your branch and then push that back up to github

Sync you master to the Evergreen master

. $ git checkout master
. $ git fetch upstream
. $ git merge upstream/master

Make the branch, hack and push back

. $ git checkout -b lp921806
. $ git commit ...
. $ git commit ...
. $ git fetch upstream
. $ git merge upstream/master
. $ git commit ...
. $ git commit ...
. $ git push origin

Update from the Evergreen Master, push back to your github, rebase, hack and push to your github.

. $ git checkout master
. $ git pull upstream master
. $ git push origin
. $ git checkout my_work
. $ git rebase master
. $ git commit ...
. $ git push origin

Running the Evergreen Client

If you are behind a proxy you may need to try this

1) check the hostname by using it as url, are you able to connect to the server ??
2) If yes, then type about:config as url in firefox and type the word proxy to filter 
3) whatever comes you just need to add those things in your [client_package]/default/preferences/prefer.js 
4) restart the client again

Staff Client Console

This starts the staff client with a console window, showing some debug spew and some dump() information from the javascript. It's similar to debugging other xulrunner based applications/components, such as Firefox extensions.

cd "c:\program files\evergreen staff client 2.1"
xulrunner\xulrunner.exe application.ini -console

Staff client also runs nicely under Linux

cd /opt/evergreen/staff_client
~ $ ./xulrunner-bin  --app ./eg/application.ini --ilshost evergreen-server --ilsuser egsa --ilspassword egpw

Wiki about debug console

API Introspection

The srfsh tool as well as this XSL thing can show you details about the API. See the reference at demo.ils.edoceo.com/opac/extras/docgen.xsl

The docgen.xsl can be installed on your own system like so (assuming the Evergreen server and all that is running).

cp /usr/src/OpenSRF/src/extras/docgen.xsl \

Now navigate to the evergreen server /opac/extras/docgen.xsl. The application name should be one of the items listed in opensrf.xml.

See Also

Loading Comments from Disqus...