summaryrefslogtreecommitdiff
path: root/docs/Pack/html/createPackPublish.html
blob: 466f7fb2cf49183d72e6562510b1f0b70d1d5420 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Publish a Pack</title>
<title>CMSIS-Pack: Publish a Pack</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-Pack
   &#160;<span id="projectnumber">Version 1.6.0</span>
   </div>
   <div id="projectbrief">Delivery Mechanism for Software Packs</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('createPackPublish.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Publish a Pack </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>There are multiple ways to distribute a software pack:</p>
<h1><a class="anchor" id="cp_prerequisites"></a>
Prerequisites</h1>
<p>Before you start to distribute a software pack, you need to make sure that it does not contain errors. An error- and warning-free run of the <code>gen_pack.bat</code> script from the <a class="el" href="cp_Packs.html#PackTutorials">Pack Tutorial</a> is a good start. but you also need to make sure that the schema has been validated. Pack Installer provides an easy mechanism to check the XML schema:</p>
<ul>
<li>Install the pack using Pack Installer.</li>
<li>Right-click on the pack version number and select <b>Schema Check</b>: <br/>
 <div class="image">
<img src="schema_check.png" alt="schema_check.png"/>
</div>
</li>
<li>The <b>Output</b> window shows the result. If errors are reported, please make sure to fix them before continuing.<br/>
 <div class="image">
<img src="schema_check_output.png" alt="schema_check_output.png"/>
</div>
 This is especially important when handing in the pack to be indexed by <a class="el" href="createPackPublish.html#cp_KeilComPack">Arm's pack index service</a>. The pack importer will ignore all PDSC files that do not pass the check against the most recently published PACK.xsd schema file and thus your pack will not be available for download.</li>
</ul>
<h1><a class="anchor" id="cp_LocalInstallation"></a>
Local Installation</h1>
<p>The easiest way to distribute a software pack is attaching it to an email or using other means of electronic distribution (for example using a company internal file server). The installation of a software pack is usually triggered by double-clicking the Pack file. The pack management tool is invoked and the Pack is installed on the local machine. After installation, the Pack will be shown in the list of installed packs (tool dependent). If the PDSC file does not contain a valid <code>&lt;url&gt;</code> element, a manual installation is required to update a software pack. Otherwise, pack management tools can check for updates on the server or the local machine that is specified by <code>&lt;url&gt;</code>.</p>
<div class="image">
<img src="LocalInstallation.png" alt="LocalInstallation.png"/>
<div class="caption">
Local installation and update from URL</div></div>
 <dl class="section note"><dt>Note</dt><dd>For automatic updates on a local machine, specify the <code>&lt;url&gt;</code> using the <a href="https://en.wikipedia.org/wiki/File_URI_scheme" target="_blank">file URI scheme</a>.</dd></dl>
<h1><a class="anchor" id="cp_WebDownload"></a>
Web Download</h1>
<p>Any web server can be used to host a software pack (specified by the <code>&lt;url&gt;</code> element in the PDSC file). At this location, the following files can be present:</p>
<ol type="1">
<li><b>&lt;vendor&gt;</b>.<b>&lt;name&gt;</b>.pdsc [required]: pack description file.</li>
<li><b>&lt;vendor&gt;</b>.<b>&lt;name&gt;</b>.<b>&lt;version&gt;</b>.pack [required]: pack file where <b>&lt;version&gt;</b> refers to the latest version specified in the PDSC file.</li>
<li><b>&lt;vendor&gt;</b>.pidx [optional]: list with all packs hosted and maintained by the vendor (refer to <a class="el" href="packIndexFile.html#pidxFile">Package Index File (pidx)</a>)</li>
<li><b>&lt;vendor&gt;</b>.vidx [optional]: list of package index files known to the vendor (refer to <a class="el" href="packIndexFile.html#vidxFile">Vendor Index File (vidx)</a>)</li>
</ol>
<p>All previous versions listed in the <b>&lt;releases&gt;</b> section of the PDSC file should be present in that folder as well. This will enable customers to revert updates or to be able to download a specific version of a software pack (for code maintenance purposes for example).</p>
<div class="image">
<img src="WebInstallation.png" alt="WebInstallation.png"/>
<div class="caption">
Web installation and update</div></div>
 <dl class="section note"><dt>Note</dt><dd><ul>
<li>It is important to understand how the &lt;url&gt; element works. If you specify a URL, for example <a href="http://www.keil.com/pack/" target="_blank">www.keil.com/pack</a>, then you have to make the PDSC file and the corresponding PACK file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:<br/>
 <a href="http://www.keil.com/pack/ARM.CMSIS.pdsc" target="_blank">www.keil.com/pack/ARM.CMSIS.pdsc</a> and <br/>
 <a href="http://www.keil.com/pack/ARM.CMSIS.5.0.1.pack" target="_blank">www.keil.com/pack/ARM.CMSIS.5.0.1.pack</a> and <br/>
 <a href="http://www.keil.com/pack/ARM.CMSIS.5.0.0.pack" target="_blank">www.keil.com/pack/ARM.CMSIS.5.0.0.pack</a> and ... <br/>
 At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned Pack files, but at least the latest one.</li>
<li>If the URL or the PDSC/Pack files become unavailable (temporarily or permanently), users will not be able to retrieve updates.</li>
<li>Do not replace PDSC/Pack files without updating the version number because the Pack management tools will not recognize the update unless the version has been changed.</li>
<li>Older packs should remain available.</li>
</ul>
</dd></dl>
<h1><a class="anchor" id="cp_KeilComPack"></a>
Publishing using Arm's Pack Index Service</h1>
<p>Arm maintains a list of available software packs. If you wish to add your packs to that list, send either your vendor.pidx file or your PDSC file to the following email address: <a href="#" onclick="location.href='mai'+'lto:'+'CMS'+'IS'+'@ar'+'m.'+'com'; return false;">CMSIS@arm.com</a>. The PIDX file will be processed and all referenced PDSC files will be validated. The following content will be processed in order to generate the web site (<a href="https://developer.arm.com/embedded/cmsis/cmsis-packs">https://developer.arm.com/embedded/cmsis/cmsis-packs</a>):</p>
<ul>
<li>Version</li>
<li>Release Notes</li>
<li>Devices</li>
<li>Boards</li>
<li>Examples</li>
<li>Software Components</li>
</ul>
<p>Please allow up to seven working days for the process. If the files contain any errors, you will be notified. Otherwise, the information is added to the index server.</p>
<h1><a class="anchor" id="cp_PackRehosting"></a>
Moving a pack from one URL to another</h1>
<p>Sometimes, it is necessary to rehost a pack. This implies that you need to change the &lt;url&gt; element in the PDSC file. To ensure that the pack is found by the indexer of the keil.com server, follow this procedure:</p>
<ul>
<li>Create a new version of the pack: update the PDSC file with the new URL ("url_B") and make sure to increment the version</li>
<li>Place a copy of this latest PDSC at url_B and url_A (the original URL).</li>
<li>Place a copy of the new pack in url_B (only)</li>
<li>Copy all packs from url_A to url_B</li>
<li>Inform Arm about the new URL by either<ul>
<li>updating the &lt;vendor&gt;.pidx with url_B for this pack <em>or</em> </li>
<li>sending a link to the PDSC file via email if your company does not maintain a &lt;vendor&gt;.pidx</li>
</ul>
</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>PDSC and pack versions need to be accessible from the same new URL</li>
<li>You must keep url_A alive as is. But there is no need to maintain/update url_A going forward otherwise users with an old PDSC file will no longer find the pack versions. </li>
</ul>
</dd></dl>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Wed Jul 10 2019 15:21:00 for CMSIS-Pack Version 1.6.0 by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
	-->
	</li>
  </ul>
</div>
</body>
</html>