Software Update:HowToManuallyGenerateMARFiles: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
 
Line 14: Line 14:
** <code>[http://mxr.mozilla.org/mozilla-release/source/tools/update-packaging/make_incremental_update.sh?raw=1 make_incremental_update.sh]</code>
** <code>[http://mxr.mozilla.org/mozilla-release/source/tools/update-packaging/make_incremental_update.sh?raw=1 make_incremental_update.sh]</code>
** <code>[http://mxr.mozilla.org/mozilla-release/source/tools/update-packaging/unwrap_full_update.pl?raw=1 unwrap_full_update.pl]</code>
** <code>[http://mxr.mozilla.org/mozilla-release/source/tools/update-packaging/unwrap_full_update.pl?raw=1 unwrap_full_update.pl]</code>
* will need the <code>mbsdiff</code> and <code>mar</code> binaries in your path
* will need the <code>mbsdiff(.exe)</code> and <code>mar(.exe)</code> binaries in your path
** available in the [https://developer.mozilla.org/en/Gecko_SDK Gecko SDK], under the folder <code>/host/bin</code>
** available in the [https://developer.mozilla.org/en/Gecko_SDK Gecko SDK], under the folder <code>/host/bin</code>
** (sources: <code>[http://mxr.mozilla.org/mozilla-release/source/other-licenses/bsdiff/ mozilla/other-licenses/bsdiff]</code> and  <code>[http://mxr.mozilla.org/mozilla-release/source/modules/libmar/tool/ mozilla/modules/libmar/tool]</code>)


=== Source ===
=== Source ===

Latest revision as of 08:07, 10 February 2012

How To Manually Generate a MAR file

Here are some notes for generating your own partial and complete mars for testing purposes.

Important Note: this is is not how the official mars are created, this is just how (as a developer), you can generate mars for testing software update.

Getting set up

Tools

Source

Get a mar to start with as your "source", for example firefox-10.0.complete.mar

Unwrap the original mar

mkdir old
cd old
perl ../unwrap_full_update.pl ../firefox-10.0.complete.mar
cd ..
cp -r old new

Make Changes

Make changes to the files in the "new" directory.

Create the partial mar

./make_incremental_update.sh partial.mar old new

for your update snippet, do:

ls -al partial.mar | awk '{print $5}'
openssl dgst -sha512 partial.mar | awk '{print $2}'
<patch type="partial" URL="http://foo.bar.com/partial.mar" hashFunction="SHA512" hashValue="e06fbd6c2989f83594dbee9c92dc6724965d0f5c99ce28091ff1a3e5b894de7e8d64ac1a99840c7b9f59b5cdd7592f6f46bf5e1b3ecaef2cc0d364e025e4c8bb" size="785"/>

Create the complete mar

./make_full_update.sh complete.mar new

for your update snippet, do:

ls -al complete.mar | awk '{print $5}'
openssl dgst -sha512 complete.mar | awk '{print $2}'
<patch type="complete" URL="http://foo.bar.com/complete.mar" hashFunction="SHA512" hashValue="b481cdb5a0e01aa8e5b419a455696650facebc269636591663e9d94bb0a300ad707f6626b98ae3bb738c0b75525e539b5659d933b4095cd913dfcf5f40dcad16" size="8258749"/>

Update Snippets

For more on update snippets, see Software_Update:HowToTestMajorUpdateUI