Difference between revisions of "Documentation/Nightly/Developers/Tutorials/BuildTestPackageDistributeExtensions"
m |
m |
||
Line 1: | Line 1: | ||
− | |||
<!-- | <!-- | ||
The process of creating an extension is as follows: | The process of creating an extension is as follows: | ||
Line 7: | Line 6: | ||
* Talk to the slicer team to integrate it into the nightly build process. | * Talk to the slicer team to integrate it into the nightly build process. | ||
--> | --> | ||
+ | |||
+ | == What is an extension ? == | ||
+ | {{:Documentation/{{documentation/version}}/Extensions/Description}} | ||
+ | |||
+ | |||
= Prerequisites = | = Prerequisites = |
Revision as of 13:50, 12 June 2013
Home < Documentation < Nightly < Developers < Tutorials < BuildTestPackageDistributeExtensions
Contents
What is an extension ?
An extension could be seen as a delivery package bundling together one or more Slicer modules. After installing an extension, the associated modules will be presented to the user as built-in ones
The Slicer community maintains a website referred to as the Slicer Extensions Catalog to support finding, downloading and installing of extensions. Access to this website is integral to Slicer and facilitated by the Extensions Manager functionality built into the distributed program.
The Catalog classifies extensions into three levels of compliance:
- Category 1: Fully compliant Slicer Extensions: Slicer license, open source, maintained.
- Category 2: Open source, contact exists.
- Category 3: All other extensions (work in progress, beta, closed source etc).
To publish extensions, developers should consider reading the following pages:
Prerequisites
Create an extension using the Wizard
- Create an extension using the Wizard
Upload an extension in the experimental folder
Contributing a new extension
Extensions build against Slicer trunk
The following instruction describes how to contribute extension description file for an extension being built against slicer trunk.
Fork the
ExtensionsIndex
: http://github.com/Slicer/ExtensionsIndex. Click here for forking instructions.Clone your fork, then create a topic named
add-<ExtensionName>
Commit your description file. Commit title should be
Add YourExtensionName extension
and the content should provide details about the extension.Push the topic to your fork
On your github fork, click on "Pull Request". Slicer folks will be automatically notified.
That's it !
git clone git@github.com:USER/ExtensionsIndex SlicerExtensionsIndex cd SlicerExtensionsIndex git checkout -b add-YourExtensionName
git push origin
- See instructions on github
- Consider also reading Extension description file format
Extensions build against Slicer 4.10
- Follow instruction reported in section Requesting an extension version update / Extensions_build_against_Slicer_4.10 and set the title of the commit to be
add-<ExtensionName>
.
Requesting an extension update
On your local fork, the idea is to create the following topic branches:
update-<YourExtensionName>
based ofmaster
integration branch.update-<YourExtensionName>-4.2
based of4.2
integration branch.
Extensions build against Slicer trunk
The following instruction describes how to contribute extension description file updates for an extension being built against slicer trunk.
Update the
master
branch of both your local clone and your onlineExtensionsIndex
forkIf needed, create branch named
update-YourExtensionName
Regenerate the
YourExtensionName.s4ext
file by configuring your extension with CMake- See https://github.com/Slicer/ExtensionsIndex#build-your-own-set-of-extensions-against-slicer-trunk-build-tree
- If the svn server needs a username and a password, edit the newly generated
YourExtensionName.s4ext
file to add this information Commit the
YourExtensionName.s4ext
file to your cloned ExtensionIndex repository (provide a meaningful commit comment)Push modifications to your
ExtensionIndex
fork on githubCreate a pull request:
- Visiting your fork on http://github.com/USER/ExtensionsIndex and, if available, clicking on the
Pull request
link as explained here. - Using a link similar to the following:
https://github.com/USER/ExtensionsIndex/pull/new/update-YourExtensionName
git remote add upstream git://github.com/Slicer/ExtensionsIndex # Add reference to the authoritative ExtensionsIndex git fetch upstream # Fetch change of the authoritative ExtensionsIndex git checkout master # Checkout master git reset --hard upstream/master # Reset your local master branch using the authoritative master git push origin master # Update the master branch of your online fork
git checkout -b update-YourExtensionName # Create branch update-YourExtensionName
git push origin update-YourExtensionName # Publish the updated branch on your fork
or
Note: If you are using github for hosting your extension source code, make sure to associated a Compare View link. This is very helpful to summarize the changes.
You can build the compare view URL manually with the following format: https://github.com/USER/REPO/compare/[USER:]GIT-REF…[USER:]GIT-REF USER is your GitHub username, REPO is your GitHub repository, and GIT-REF can be a tag, branch, or commit SHA1.
Extensions build against Slicer 4.10
The following instruction describes how to contribute extension description file updates for an extension being built against slicer trunk.
Update the 4.10 branch of both your local clone and your online ExtensionsIndex fork
If needed, create branch named
update-YourExtensionName-4.2
Regenerate the
YourExtensionName.s4ext
file by configuring your extension with CMake- See https://github.com/Slicer/ExtensionsIndex#build-your-own-set-of-extensions-against-slicer-trunk-build-tree.
- If the svn server needs a username and a password, edit the newly generated
YourExtensionName.s4ext
file to add this information. Commit the
YourExtensionName.s4ext
file to your cloned ExtensionIndex repository providing a meaningful commit comment.Push modifications to your
ExtensionIndex
fork on githubCreate a pull request:
- Visiting your fork on http://github.com/USER/ExtensionsIndex and, if available, clicking on the
Pull request
link as explained here. - Using a link similar to the following:
https://github.com/USER/ExtensionsIndex/pull/new/update-YourExtensionName-4.2
git remote add upstream git://github.com/Slicer/ExtensionsIndex # Add reference to the authoritative ExtensionsIndex git fetch upstream # Fetch change of the authoritative ExtensionsIndex git checkout 4.2 # Checkout 4.2 git reset --hard upstream/4.2 # Reset your local 4.2 branch using the authoritative 4.2 git push origin 4.2 # Update the 4.2 branch of your online fork
git checkout -b update-YourExtensionName-4.2 # Create branch update-YourExtensionName-4.2
git push origin update-YourExtensionName-4.2 # Publish the updated branch on your fork
or
Note: If you are using github for hosting your extension source code, make sure to associated a Compare View link. This is very helpful to summarize the changes.
You can build the compare view URL manually with the following format: https://github.com/USER/REPO/compare/[USER:]GIT-REF…[USER:]GIT-REF USER is your GitHub username, REPO is your GitHub repository, and GIT-REF can be a tag, branch, or commit SHA1.