<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.4%2FDevelopers%2FTutorials%2FContribute_Extension_Description_File</id>
	<title>Documentation/4.4/Developers/Tutorials/Contribute Extension Description File - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.4%2FDevelopers%2FTutorials%2FContribute_Extension_Description_File"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/Tutorials/Contribute_Extension_Description_File&amp;action=history"/>
	<updated>2026-04-08T11:49:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/Tutorials/Contribute_Extension_Description_File&amp;diff=40445&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.4/Developers/Tutorials/Contribute_Extension_Description_File&amp;diff=40445&amp;oldid=prev"/>
		<updated>2014-12-25T06:52:34Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.4&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
Extensions can be fully described with an [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|extension description file]] (*.s4ext). This file is automatically generated in the build tree of your extension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;p&amp;gt;For extension source code associated with git repository, for Slicer revision &amp;lt; [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=22231 r22231], the automatic generation will extract the read/write url.(i.e &amp;lt;code&amp;gt;git@github.com:jcfr/MyExtension.git&amp;lt;/code&amp;gt;) whereas the read-only one is expected (i.e &amp;lt;code&amp;gt;git://github.com/jcfr/MyExtension.git&amp;lt;/code&amp;gt;). For details see issue [http://www.na-mic.org/Bug/view.php?id=2032 2032] and [http://www.na-mic.org/Bug/view.php?id=2395 2395]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make your extension available for download to Slicer user, this file need to be added to the ExtensionsIndex repository.&lt;br /&gt;
&lt;br /&gt;
You can think of the ExtensionsIndex as a repository containing a list of extension description files (*.s4ext) used by the Slicer extensions build system to build, test, package and upload extensions on an extensions server.&lt;br /&gt;
&lt;br /&gt;
= Prerequisites =&lt;br /&gt;
* Extension belongs to Category 1 or Category 2 as described in [[Documentation/{{documentation/version}}/Extensions/CatalogPolicies|Slicer requirements]]&lt;br /&gt;
* Extension has been built, tested and installed on at least one platform (Linux, MacOSX or Windows)&lt;br /&gt;
&lt;br /&gt;
= Contributing a new extension =&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer trunk ==&lt;br /&gt;
&lt;br /&gt;
The following instruction describes how to contribute extension description file for an extension being built against slicer trunk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Fork the &amp;lt;code&amp;gt;ExtensionsIndex&amp;lt;/code&amp;gt;: http://github.com/Slicer/ExtensionsIndex. Click [http://help.github.com/forking/ here] for forking instructions.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Clone your fork, then create a topic named &amp;lt;code&amp;gt;add-&amp;amp;lt;ExtensionName&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@github.com:USER/ExtensionsIndex SlicerExtensionsIndex&lt;br /&gt;
cd SlicerExtensionsIndex&lt;br /&gt;
git checkout -b add-YourExtensionName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit your description file. Commit title should be &amp;lt;code&amp;gt;Add YourExtensionName extension&amp;lt;/code&amp;gt; and the content should provide details about the extension.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Push the topic to your fork&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin add-YourExtensionName&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;On your github fork, click on &amp;quot;Pull Request&amp;quot;. [https://help.github.com/articles/creating-a-pull-request Need help ?]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid darkgreen; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Slicer folks will be automatically notified.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;That's it !&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consider also reading [[Documentation/{{documentation/version}}/Developers/Extensions/DescriptionFile|Extension description file format]]&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer {{Documentation/currentversion}} ==&lt;br /&gt;
&lt;br /&gt;
* Follow instruction reported in section [[#Extensions_build_against_Slicer_trunk|above]] and select &amp;lt;code&amp;gt;{{documentation/currentversion}}&amp;lt;/code&amp;gt; branch when creating the pull request.&lt;br /&gt;
&lt;br /&gt;
= Requesting an extension update =&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The following tutorials will provide you with detailed instructions to update an extension description files for either the stable Slicer version (&amp;lt;code&amp;gt;{{documentation/currentversion}}&amp;lt;/code&amp;gt;) or the Slicer nightly (trunk).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
To summarize, after checking out the ExtensionsIndex, the idea will be to create the following topic branches:&lt;br /&gt;
* &amp;lt;code&amp;gt;update-&amp;lt;YourExtensionName&amp;gt;&amp;lt;/code&amp;gt; based of [https://github.com/Slicer/ExtensionsIndex/tree/master &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;] integration branch.&lt;br /&gt;
* &amp;lt;code&amp;gt;update-&amp;lt;YourExtensionName&amp;gt;-{{documentation/currentversion}}&amp;lt;/code&amp;gt; based of [https://github.com/Slicer/ExtensionsIndex/tree/{{documentation/currentversion}} &amp;lt;code&amp;gt;{{documentation/currentversion}}&amp;lt;/code&amp;gt;] integration branch.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer trunk ==&lt;br /&gt;
&lt;br /&gt;
The following instruction describes how to contribute extension description file updates for an extension being built against slicer trunk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Update the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch of both your local clone and your online &amp;lt;code&amp;gt;ExtensionsIndex&amp;lt;/code&amp;gt; fork&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add upstream git://github.com/Slicer/ExtensionsIndex   # Add reference to the authoritative ExtensionsIndex&lt;br /&gt;
git fetch upstream                                                # Fetch change of the authoritative ExtensionsIndex&lt;br /&gt;
git checkout master                                               # Checkout master&lt;br /&gt;
git reset --hard upstream/master                                  # Reset your local master branch using the authoritative master &lt;br /&gt;
git push origin master                                            # Update the master branch of your online fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;If needed, create branch named &amp;lt;code&amp;gt;update-YourExtensionName&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -B update-YourExtensionName master                   # Create branch update-YourExtensionName or ensure the existing one starts of updated master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Regenerate the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file by configuring your extension with CMake&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&amp;lt;p&amp;gt; If the svn server needs a username and a password, edit the newly generated &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file specifying &amp;lt;code&amp;gt;svnusername&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;svnpassword&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to your cloned ExtensionIndex repository (provide a meaningful commit comment)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Push modifications to your &amp;lt;code&amp;gt;ExtensionIndex&amp;lt;/code&amp;gt; fork on github&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin update-YourExtensionName --force                  # Publish the updated branch on your fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Create a &amp;quot;Pull Request&amp;quot; using a link similar to the following: &amp;lt;code&amp;gt;https://github.com/USER/ExtensionsIndex/pull/new/update-YourExtensionName&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&lt;br /&gt;
Note: If you are using github for hosting your extension source code, make sure to associated a '''Compare View link''' showing the differences in the source code of your extension (NOT ExtensionIndex!!!) between the previous and current revisions. Compare link is very helpful to summarize the changes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You can build the compare view URL manually with the following format: &lt;br /&gt;
&lt;br /&gt;
https://github.com/USER/REPO/compare/[USER:]GIT-REF…[USER:]GIT-REF&lt;br /&gt;
&lt;br /&gt;
USER is your GitHub username, REPO is your GitHub repository, and GIT-REF can be a tag, branch, or commit SHA1. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source: http://jbuckley.ca/2011/09/githubs-compare-view/&lt;br /&gt;
&lt;br /&gt;
As a concrete example, in [https://github.com/Slicer/ExtensionsIndex/commit/d8c064ea6f5b182fcf0b1b5c86c03afbd5853de5#diff-d5a6aa1d87d84077acf9eaf33bfcde05 this commit] the version of the LongitudinalPETCT extension was changed from 9b6d4b8 to d033772. The extension repository is located here: https://github.com/paulcm/LongitudinalPETCT/, and therefore the compare link is https://github.com/paulcm/LongitudinalPETCT/compare/9b6d4b8...d033772.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensions build against Slicer {{Documentation/currentversion}}  ==&lt;br /&gt;
&lt;br /&gt;
The following instruction describes how to contribute extension description file updates for an extension being built against slicer {{documentation/currentversion}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Update the {{Documentation/currentversion}} branch of both your local clone and your online ExtensionsIndex fork&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add upstream git://github.com/Slicer/ExtensionsIndex   # Add reference to the authoritative ExtensionsIndex&lt;br /&gt;
git fetch upstream                                                # Fetch change of the authoritative ExtensionsIndex&lt;br /&gt;
git checkout 4.3                                                  # Checkout 4.3&lt;br /&gt;
git reset --hard upstream/4.3                                     # Reset your local 4.3 branch using the authoritative 4.3&lt;br /&gt;
git push origin 4.3                                               # Update the 4.3 branch of your online fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;If needed, create branch named &amp;lt;code&amp;gt;update-YourExtensionName-{{Documentation/currentversion}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -B update-YourExtensionName-4.3 4.3                  # Create branch update-YourExtensionName-4.3 or ensure the existing one starts of updated 4.3 branch.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Regenerate the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file by configuring your extension with CMake&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
* See https://github.com/Slicer/ExtensionsIndex#build-your-own-set-of-extensions-against-slicer-trunk-build-tree.&lt;br /&gt;
* If the svn server needs a username and a password, edit the newly generated &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to add this information.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit the &amp;lt;code&amp;gt;YourExtensionName.s4ext&amp;lt;/code&amp;gt; file to your cloned ExtensionIndex repository providing a meaningful commit comment.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Push modifications to your &amp;lt;code&amp;gt;ExtensionIndex&amp;lt;/code&amp;gt; fork on github&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin update-YourExtensionName-4.3  --force             # Publish the updated branch on your fork&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Create a &amp;quot;Pull Request&amp;quot; using a link similar to the following: &amp;lt;code&amp;gt;https://github.com/USER/ExtensionsIndex/pull/new/update-YourExtensionName-{{Documentation/currentversion}}&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&lt;br /&gt;
Note: If you are using github for hosting your extension source code, make sure to associated a '''Compare View link''' showing the differences in the source code of your extension (NOT ExtensionIndex!!!) between the previous and current revisions. Compare link is very helpful to summarize the changes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You can build the compare view URL manually with the following format: &lt;br /&gt;
&lt;br /&gt;
https://github.com/USER/REPO/compare/[USER:]GIT-REF…[USER:]GIT-REF&lt;br /&gt;
&lt;br /&gt;
USER is your GitHub username, REPO is your GitHub repository, and GIT-REF can be a tag, branch, or commit SHA1. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source: http://jbuckley.ca/2011/09/githubs-compare-view/&lt;br /&gt;
&lt;br /&gt;
As a concrete example, in [https://github.com/Slicer/ExtensionsIndex/commit/d8c064ea6f5b182fcf0b1b5c86c03afbd5853de5#diff-d5a6aa1d87d84077acf9eaf33bfcde05 this commit] the version of the LongitudinalPETCT extension was changed from 9b6d4b8 to d033772. The extension repository is located here: https://github.com/paulcm/LongitudinalPETCT/, and therefore the compare link is https://github.com/paulcm/LongitudinalPETCT/compare/9b6d4b8...d033772.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= Submitting a pull request =&lt;br /&gt;
&lt;br /&gt;
The following gallery illustrates how to submit a pull request from your &amp;lt;code&amp;gt;ExtensionsIndex&amp;lt;/code&amp;gt; fork.&lt;br /&gt;
&lt;br /&gt;
To learn more about pull request. Consider reading: https://help.github.com/articles/using-pull-requests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=800px heights=300px perrow=1&amp;gt;&lt;br /&gt;
File:Extensions-4.2-pull-request-step1.png|1. Create Pull Request&lt;br /&gt;
File:Extensions-4.2-pull-request-step2.png|2. Select base&lt;br /&gt;
File:Extensions-4.2-pull-request-step3.png|3. Send Pull Request&lt;br /&gt;
File:Extensions-4.2-pull-request-step4.png|4. Verify&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>