<title>Release Procedures</title>
<a name="releaseProcedures"></a>
<h2>Release Procedures</h2>
<p>
Follow these steps to prepare a new release of System.Data.SQLite.
Unless otherwise noted, all steps need to be done in the order specified.
</p>
<a name="buildBinaries"></a>
<h2>Build x86 & x64 Binaries</h2>
<ol>
<li>
The binaries for all supported architectures and platforms must be built
using procedures very similar to those documented in the normal
[./build.wiki | build procedures].
</li>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to build all the x86 and x64 binaries:
<br />
<br />
<b>SET BUILD_FULL=1</b>
<br />
<b>SET BUILD_DEBUG=1</b>
<br />
<b>build_all.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="testBinaries"></a>
<h2>Test x86 & x64 Binaries</h2>
<ol>
<li>
The binaries for all supported architectures and platforms must be tested
using procedures very similar to those documented in the normal
[./test.wiki | test procedures].
</li>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to test all the x86 or x64 binaries, depending
on the processor architecture of the current machine:
<br />
<br />
<b>SET TEST_DEBUG=1</b>
<br />
<b>test_all.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
<li>
Locate a machine with a processor architecture different from the one tested
in the previous step and then repeat all the previous steps.
</li>
</ol>
<a name="buildCeBinaries"></a>
<h2>Build Windows CE Binaries</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following command to build all the binaries available for Windows
CE:
<br />
<br />
<b>SET BUILD_FULL=1</b>
<br />
<b>SET BUILD_DEBUG=1</b>
<br />
<b>build_ce_200x.bat</b>
<br />
<br />
<i>This assumes that Visual Studio 2005 and/or Visual Studio 2008,
"<b>Professional</b>" edition or "better" and the
bundled Pocket PC 2003 SDK are installed.</i>
</li>
<li>
Enter the following command to build all the binaries available for Windows
Embedded Compact 2013:
<br />
<br />
<b>SET BUILD_FULL=1</b>
<br />
<b>SET BUILD_DEBUG=1</b>
<br />
<b>build_ce_2013.bat</b>
<br />
<br />
<i>This assumes that Visual Studio 2012, "<b>Professional</b>"
edition or "better" and the Windows Embedded Compact 2013 Toolkit
are installed.</i>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="testCeBinariesAutomated"></a>
<h2>Test Windows CE Binaries via Automation</h2>
<ol>
<li>
Instead of testing the Windows CE binaries
<a href="#testCeBinariesManually">manually</a> as described in the next
section, the following steps may be used.
</li>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following command to test all the binaries available for Windows
CE:
<br />
<br />
<b>SET TEST_DEBUG=1</b>
<br />
<b>test_ce_200x.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="testCeBinariesManually"></a>
<h2>Test Windows CE Binaries Manually</h2>
<ol>
<li>
If the Windows CE binaries were already tested using the
<a href="#testCeBinariesAutomated">automation</a> described in the previous
section, skip this section.
</li>
<li>
Launch <b>Visual Studio 2005</b>, "<b>Professional</b>" edition or
"better" with the bundled Pocket PC 2003 SDK. As of this writing,
in January 2012, <b>Visual Studio 2010 and later will not work</b> as they
do not include the necessary built-in support for Windows CE and the .NET
Compact Framework.
</li>
<li>
Open the "<b>SQLite.NET.2008.sln</b>" solution file in the
"<root>" directory.
</li>
<li>
Change the active solution configuration to "<b>Debug</b>".
</li>
<li>
Change the active solution platform to "<b>Pocket PC 2003
(ARMV4)</b>".
</li>
<li>
Right-click the "<b>testce</b>" project in the Solution Explorer
window and select "<b>Set as StartUp Project</b>".
</li>
<li>
Select "<b>Start Debugging</b>" from the "<b>Debug</b>"
menu.
</li>
<li>
If any rebuild prompts appear (e.g. "<b>SQLite.Interop.CE.2008</b>",
"<b>Would you like to build it?</b>"), select "<b>Yes</b>".
</li>
<li>
When prompted for the device type to deploy the application to, select the
"<b>Pocket PC 2003 SE Emulator</b>" device.
</li>
<li>
Make sure all that the tests pass (i.e. they emit "<b>SUCCESS</b>").
</li>
</ol>
<a name="buildMonoBinaries"></a>
<h2>Build Mono Binaries</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following command to build all the binaries available for Mono:
<br />
<br />
<b>SET BUILD_FULL=</b>
<br />
<b>SET BUILD_DEBUG=1</b>
<br />
<b>build_mono.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="updateDocumentation"></a>
<h2>Update Documentation</h2>
<ol>
<li>
Update the "<root>\readme.htm" file with information about
all the major changes since the last released version.
</li>
<li>
Copy those changes to the
"<root>\Doc\Extra\Provider\version.html" and
"<root>\www\news.wiki" files, reformatting as necessary
to fit with the existing document conventions.
</li>
<li>Change the current directory to "<root>\Doc".</li>
<li>
Enter the following command to update all documentation that is
included from upstream (e.g. from the SQLite core library, etc):
<br />
<br />
<b>..\Externals\Eagle\bin\EagleShell.exe -file sync.eagle --verbose</b>
</li>
<li>
Enter the following command to update the embedded SQLite core library
virtual table documentation:
<br />
<br />
<b>tclsh.exe vtab.tcl</b>
<br />
<br />
<i>This assumes that [https://www.activestate.com/activetcl | ActiveTcl]
version 8.4 or later has been installed using the default settings.</i>
</li>
<li>
Make sure everything downloads with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildDocumentation"></a>
<h2>Build Documentation</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Doc".</li>
<li>
Enter the following command to build all the documentation in
[https://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help | CHM]
format:
<br />
<br />
<b>tclsh.exe buildChm.tcl</b>
<br />
<br />
<i>This assumes that [https://www.activestate.com/activetcl | ActiveTcl]
version 8.4 or later, the
[https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21138 | HTML Help Workshop],
and [https://sourceforge.net/projects/ndoc3/ | NDoc3] have all been installed using
the default settings.</i>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildSetupPackages"></a>
<h2>Build Setup Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to build all the setup packages for x86 and x64:
<br />
<br />
<b>SET BAKE_DEBUG=1</b>
<br />
<b>bake_all.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildBinaryPackages"></a>
<h2>Build x86 & x64 Binary Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to build all the binary release packages for x86
and x64:
<br />
<br />
<b>SET RELEASE_DEBUG=1</b>
<br />
<b>release_all.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildStaticBinaryPackages"></a>
<h2>Build x86 & x64 Static Binary Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to build all the static binary release packages
for x86 and x64:
<br />
<br />
<b>SET RELEASE_DEBUG=1</b>
<br />
<b>release_static.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildCeBinaryPackages"></a>
<h2>Build Windows CE Binary Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to build all the binary release packages for
Windows CE:
<br />
<br />
<b>SET RELEASE_DEBUG=1</b>
<br />
<b>release_ce_200x.bat</b>
</li>
<li>
Enter the following commands to build all the binary release packages for
Windows Embedded Compact 2013:
<br />
<br />
<b>SET RELEASE_DEBUG=1</b>
<br />
<b>release_ce_2013.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildMonoBinaryPackages"></a>
<h2>Build Mono Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following commands to build all the Mono release packages:
<br />
<br />
<b>SET RELEASE_DEBUG=1</b>
<br />
<b>release_mono.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildSourcePackages"></a>
<h2>Build Source Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following command to build the "standard" source
release package:
<br />
<br />
<b>SET ARCHIVE_FULL=</b>
<br />
<b>archive.bat</b>
</li>
<li>
Enter the following command to build the "full" source
release package:
<br />
<br />
<b>SET ARCHIVE_FULL=1</b>
<br />
<b>archive.bat</b>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="buildNuGetPackages"></a>
<h2>Build NuGet Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following command to build all the NuGet packages:
<br />
<br />
<b>build_nuget.bat</b>
<br />
<br />
<i>This assumes that the NuGet binary is available somewhere along the
[https://en.wikipedia.org/wiki/PATH_%28variable%29 | PATH].<br />Please refer
to [https://docs.nuget.org/ | NuGet Documentation] for further details.</i>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="verifyAllPackages"></a>
<h2>Verify All Release Packages</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Enter the following command to build all the source release packages:
<br />
<br />
<b>..\Externals\Eagle\bin\EagleShell.exe -file verify.eagle Output true</b>
<br />
<br />
<i>This assumes that the <a href="https://www.fossil-scm.org/">Fossil</a>,
<a href="https://sourceforge.net/projects/innounp/">Inno Setup Unpacker</a>,
<a href="http://www.rarlab.com/">UnRAR</a>, and
<a href="http://www.info-zip.org/">UnZip</a> binaries are available in the
locations specified via the "FossilTool",
"InnoUnpackTool", "UnRARTool", and "UnZipTool"
environment variables, respectively.</i>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
<br />
<br />
<i>If errors are generated, the file
"<root>\Setup\data\verify.lst" may need to be updated to
account for the files that have been added and/or removed from the release
archives since the previous release.</i>
</li>
</ol>
<a name="updateDownloadsPage"></a>
<h2>Update Downloads Page</h2>
<ol>
<li>Open a normal command prompt window with "cmd.exe".</li>
<li>Change the current directory to "<root>\Setup".</li>
<li>
Replace the version numbers for the previous release in the local working
copy of the [./downloads.wiki | downloads page] with the new version numbers
for System.Data.SQLite and the SQLite core.
</li>
<li>
Enter the following command to update the sizes and hashes on the downloads
page based on all the built release packages:
<br />
<br />
<b>tclsh.exe updateFileInfo.tcl</b>
<br />
<br />
<i>This assumes that [https://www.activestate.com/activetcl | ActiveTcl]
version 8.4 or later has been installed using the default settings and that
the Fossil binary is available somewhere along the
[https://en.wikipedia.org/wiki/PATH_%28variable%29 | PATH] (i.e. for
calculating the SHA1 hashes).</i>
</li>
<li>
Make sure everything succeeds with no errors; the console output may be
checked if any errors should occur.
</li>
</ol>
<a name="publishRelease"></a>
<h2>Publish Release</h2>
<ol>
<li>Upload all the release packages to the web site.</li>
<li>
Commit pending source code changes to the
[https://www.fossil-scm.org/ | Fossil] repository.
</li>
<li>Tag the release in the Fossil repository.</li>
<li>
Push the [https://www.nuget.org/ | NuGet] packages.<br />
<i>Please refer to [https://docs.nuget.org/ | NuGet Documentation] for
further details.</i>
</li>
<li>Announce the release on the System.Data.SQLite mailing list.</li>
</ol>