Skip to content

Instantly share code, notes, and snippets.

@jcfr
Created July 24, 2012 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcfr/3171634 to your computer and use it in GitHub Desktop.
Save jcfr/3171634 to your computer and use it in GitHub Desktop.
This document aims at describing the steps required to integrate a topic into the Slicer ExtensionsIndex

Integrate a topic into the ExtensionsIndex

This document described what are the steps to follow when a Slicer developer requests the integration of a new extension in the Slicer ExtensionsIndex repository.

It is assumed that the extension is compliant with the slicer requirements.

Additonally, since extensions published in the index will be taken as example by other developers in the community, Slicer coding style and testing practice should be applied (indent, naming convention, test data uploaded on midas, ...)

The rest of the document will consider the example of issue #33 associated to the request of Andriy Fedorov regarding the integration of the Reporting module. See Slicer/ExtensionsIndex#33

Checkout ExtensionsIndex source

Either clone the repository or get the latest changes

Clone repository

$ git checkout git@github.com:Slicer/ExtensionsIndex.git

Get latest changes

git fetch origin
git checkout master
git reset --hard origin/master

Checkout the topic to integrate

$ git remote add fedorov git://github.com/fedorov/ExtensionsIndex.git
$ git fetch fedorov
[...]
 * [new branch]      33-add-Reporting -> fedorov/33-add-Reporting
[...]
$ git checkout -b 33-add-Reporting fedorov/33-add-Reporting

Locally integrate topic to master

$ git checkout master
$ git merge 33-add-Reporting fedorov --log --no-ff

Note: To speed up the experimental build of the Extension index. Extra s4ext files could locally be deleted.

Build the extension(s)

$ cmake -DSlicer_DIR:PATH=/home/jchris/Projects/Slicer4-Superbuild-Debug/Slicer-build/ \
 -DSlicer_EXTENSION_DESCRIPTION_DIR:PATH=/home/jchris/Projects/SlicerExtensionsIndex \
 -DMIDAS_PACKAGE_URL:STRING=http://slicer.kitware.com/midas3/
 -DMIDAS_PACKAGE_EMAIL:STRING=<YOUR-MIDAS_LOGIN>
 -DMIDAS_PACKAGE_API_KEY:STRING=<YOUR-API-KEY>
 ../Slicer4/Extensions/CMake/
$ make -j4

For additional details: https://github.com/Slicer/ExtensionsIndex#build-your-own-set-of-extensions-against-slicer-trunk-build-tree

Check the dashboards

To be integrated into the Slicer ExtensionsIndex, the tested extension should build without any error and all test passing on the platform you are testing with.

If there are build issues, or if you fail to install the extension, add a note on the associated issue. For example: Slicer/ExtensionsIndex#33 (comment) or Slicer/ExtensionsIndex#34 (comment)

Integrate into master

In case the ExtensionsIndex has been updated by an other ExtensionsIndex maintainer, let's make sure the latested changes have been been fetched.

$ git checkout master
$ git reset --hard HEAD^
$ git pull origin master 

Integrate the topic and publish changes:

git merge 33-add-Reporting --no-log --no-ff
git push origin master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment