<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css"> <title>Erlang -- systools</title> </head> <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container"> <script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript"> <!-- function getWinHeight() { var myHeight = 0; if( typeof( window.innerHeight ) == 'number' ) { //Non-IE myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myHeight = document.body.clientHeight; } return myHeight; } function setscrollpos() { var objf=document.getElementById('loadscrollpos'); document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2; } function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, true); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } addEvent(window, 'load', setscrollpos); //--></script><div id="leftnav"><div class="innertube"> <img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/sasl-2.2.1.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>System Application Support Libraries (SASL)</strong><br><strong>Reference Manual</strong><br><small>Version 2.2.1</small></p> <br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p> <ul class="flipMenu"> <li title="sasl (App)"><a href="sasl_app.html">sasl (App) </a></li> <li id="no" title="alarm_handler " expanded="false">alarm_handler<ul> <li><a href="alarm_handler.html"> Top of manual page </a></li> <li title="clear_alarm-1"><a href="alarm_handler.html#clear_alarm-1">clear_alarm/1</a></li> <li title="get_alarms-0"><a href="alarm_handler.html#get_alarms-0">get_alarms/0</a></li> <li title="set_alarm-1"><a href="alarm_handler.html#set_alarm-1">set_alarm/1</a></li> </ul> </li> <li id="no" title="overload " expanded="false">overload<ul> <li><a href="overload.html"> Top of manual page </a></li> <li title="request-0"><a href="overload.html#request-0">request/0</a></li> <li title="get_overload_info-0"><a href="overload.html#get_overload_info-0">get_overload_info/0</a></li> </ul> </li> <li id="no" title="rb " expanded="false">rb<ul> <li><a href="rb.html"> Top of manual page </a></li> <li title="filter-1"><a href="rb.html#filter-1">filter/1</a></li> <li title="filter-2"><a href="rb.html#filter-2">filter/2</a></li> <li title="grep-1"><a href="rb.html#grep-1">grep/1</a></li> <li title="h-0"><a href="rb.html#h-0">h/0</a></li> <li title="help-0"><a href="rb.html#help-0">help/0</a></li> <li title="list-0"><a href="rb.html#list-0">list/0</a></li> <li title="list-1"><a href="rb.html#list-1">list/1</a></li> <li title="rescan-0"><a href="rb.html#rescan-0">rescan/0</a></li> <li title="rescan-1"><a href="rb.html#rescan-1">rescan/1</a></li> <li title="show-0"><a href="rb.html#show-0">show/0</a></li> <li title="show-1"><a href="rb.html#show-1">show/1</a></li> <li title="start-0"><a href="rb.html#start-0">start/0</a></li> <li title="start-1"><a href="rb.html#start-1">start/1</a></li> <li title="start_log-1"><a href="rb.html#start_log-1">start_log/1</a></li> <li title="stop-0"><a href="rb.html#stop-0">stop/0</a></li> <li title="stop_log-0"><a href="rb.html#stop_log-0">stop_log/0</a></li> </ul> </li> <li id="no" title="release_handler " expanded="false">release_handler<ul> <li><a href="release_handler.html"> Top of manual page </a></li> <li title="check_install_release-1"><a href="release_handler.html#check_install_release-1">check_install_release/1</a></li> <li title="check_install_release-2"><a href="release_handler.html#check_install_release-2">check_install_release/2</a></li> <li title="create_RELEASES-4"><a href="release_handler.html#create_RELEASES-4">create_RELEASES/4</a></li> <li title="install_file-2"><a href="release_handler.html#install_file-2">install_file/2</a></li> <li title="install_release-1"><a href="release_handler.html#install_release-1">install_release/1</a></li> <li title="install_release-2"><a href="release_handler.html#install_release-2">install_release/2</a></li> <li title="make_permanent-1"><a href="release_handler.html#make_permanent-1">make_permanent/1</a></li> <li title="remove_release-1"><a href="release_handler.html#remove_release-1">remove_release/1</a></li> <li title="reboot_old_release-1"><a href="release_handler.html#reboot_old_release-1">reboot_old_release/1</a></li> <li title="set_removed-1"><a href="release_handler.html#set_removed-1">set_removed/1</a></li> <li title="set_unpacked-2"><a href="release_handler.html#set_unpacked-2">set_unpacked/2</a></li> <li title="unpack_release-1"><a href="release_handler.html#unpack_release-1">unpack_release/1</a></li> <li title="which_releases-0"><a href="release_handler.html#which_releases-0">which_releases/0</a></li> <li title="which_releases-1"><a href="release_handler.html#which_releases-1">which_releases/1</a></li> <li title="upgrade_app-2"><a href="release_handler.html#upgrade_app-2">upgrade_app/2</a></li> <li title="downgrade_app-2"><a href="release_handler.html#downgrade_app-2">downgrade_app/2</a></li> <li title="downgrade_app-3"><a href="release_handler.html#downgrade_app-3">downgrade_app/3</a></li> <li title="upgrade_script-2"><a href="release_handler.html#upgrade_script-2">upgrade_script/2</a></li> <li title="downgrade_script-3"><a href="release_handler.html#downgrade_script-3">downgrade_script/3</a></li> <li title="eval_appup_script-4"><a href="release_handler.html#eval_appup_script-4">eval_appup_script/4</a></li> </ul> </li> <li id="loadscrollpos" title="systools " expanded="true">systools<ul> <li><a href="systools.html"> Top of manual page </a></li> <li title="make_relup-3"><a href="systools.html#make_relup-3">make_relup/3</a></li> <li title="make_relup-4"><a href="systools.html#make_relup-4">make_relup/4</a></li> <li title="make_script-1"><a href="systools.html#make_script-1">make_script/1</a></li> <li title="make_script-2"><a href="systools.html#make_script-2">make_script/2</a></li> <li title="make_tar-1"><a href="systools.html#make_tar-1">make_tar/1</a></li> <li title="make_tar-2"><a href="systools.html#make_tar-2">make_tar/2</a></li> <li title="script2boot-1"><a href="systools.html#script2boot-1">script2boot/1</a></li> </ul> </li> <li title="appup"><a href="appup.html">appup</a></li> <li title="rel"><a href="rel.html">rel</a></li> <li title="relup"><a href="relup.html">relup</a></li> <li title="script"><a href="script.html">script</a></li> </ul> </div></div> <div id="content"> <div class="innertube"> <!-- refpage --><center><h1>systools</h1></center> <h3>MODULE</h3> <div class="REFBODY">systools</div> <h3>MODULE SUMMARY</h3> <div class="REFBODY">A Set of Release Handling Tools.</div> <h3>DESCRIPTION</h3> <div class="REFBODY"><p> <p>This module contains functions to generate boot scripts (<span class="code">.boot</span>, <span class="code">.script</span>), release upgrade scripts (<span class="code">relup</span>), and release packages.</p> </p></div> <h3>EXPORTS</h3> <p><a name="make_relup-3"><span class="bold_code">make_relup(Name, UpFrom, DownTo) -> Result</span></a><br><a name="make_relup-4"><span class="bold_code">make_relup(Name, UpFrom, DownTo, [Opt]) -> Result</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Name = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">UpFrom = DownTo = [Name | {Name,Descr}]</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Descr = term()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Opt = {path,[Dir]} | restart_emulator | silent | noexec | {outdir,Dir} | warnings_as_errors</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Dir = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Result = ok | error | {ok,Relup,Module,Warnings} | {error,Module,Error}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Relup - see relup(4)</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Warnings = Error = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Generates a release upgrade file <span class="code">relup</span> containing a script which describes how to upgrade the system from a number of previous releases, and how to downgrade to a number of previous releases. The script is used by <span class="code">release_handler</span> when installing a new version of a release in run-time.</p> <p>By default, <span class="code">relup</span> is placed in the current working directory. If the option <span class="code">{outdir,Dir}</span> is provided, <span class="code">relup</span> is placed in <span class="code">Dir</span> instead.</p> <p>The release resource file <span class="code">Name.rel</span> is compared with all release resource files <span class="code">Name2.rel</span> specified in <span class="code">UpFrom</span> and <span class="code">DownTo</span>. For each such pair, it is deducted:</p> <ul> <li> <p>Which applications should be deleted, that is applications which are listed in <span class="code">Name.rel</span> but not in <span class="code">Name2.rel</span>.</p> </li> <li> <p>Which applications should be added, that is applications which are listed in <span class="code">Name2.rel</span> but not in <span class="code">Name.rel</span>.</p> </li> <li> <p>Which applications should be upgraded/downgraded, that is applications listed in both <span class="code">Name.rel</span> and <span class="code">Name2.rel</span>, but with different versions.</p> </li> <li> <p>If the emulator needs to be restarted after upgrading or downgrading, that is if the ERTS version differs between <span class="code">Name.rel</span> and <span class="code">Name2.rel</span>.</p> </li> </ul> <p>Instructions for this are added to the <span class="code">relup</span> script in the above order. Instructions for upgrading or downgrading between application versions are fetched from the relevant application upgrade files <span class="code">App.appup</span>, sorted in the same order as when generating a boot script, see <span class="code">make_script/1,2</span>. High-level instructions are translated into low-level instructions and the result is printed to <span class="code">relup</span>.</p> <p>The optional <span class="code">Descr</span> parameter is included as-is in the <span class="code">relup</span> script, see <span class="code">relup(4)</span>. Defaults to the empty list.</p> <p>All the files are searched for in the code path. It is assumed that the <span class="code">.app</span> and <span class="code">.appup</span> file for an application is located in the same directory.</p> <p>If the option <span class="code">{path,[Dir]}</span> is provided, this path is appended to the current path. The wildcard <span class="code">*</span> is expanded to all matching directories. Example: <span class="code">lib/*/ebin</span>.</p> <p>If the <span class="code">restart_emulator</span> option is supplied, a low-level instruction to restart the emulator is appended to the relup scripts. This ensures that a complete reboot of the system is done when the system is upgraded or downgraded.</p> <p>If an upgrade includes a change from an emulator earlier than OTP R15 to OTP R15 or later, the warning <span class="code">pre_R15_emulator_upgrade</span> is issued. See <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','doc/design_principles','appup_cookbook.html');">Design Principles</a></span> for more information about this.</p> <p>By default, errors and warnings are printed to tty and the function returns <span class="code">ok</span> or <span class="code">error</span>. If the option <span class="code">silent</span> is provided, the function instead returns <span class="code">{ok,Relup,Module,Warnings}</span> where <span class="code">Relup</span> is the release upgrade script, or it returns <span class="code">{error,Module,Error}</span>. Warnings and errors can be converted to strings by calling <span class="code">Module:format_warning(Warnings)</span> or <span class="code">Module:format_error(Error)</span>.</p> <p>If the option <span class="code">noexec</span> is provided, the function returns the same values as for <span class="code">silent</span> but no <span class="code">relup</span> file is created.</p> <p>If the option <span class="code">warnings_as_errors</span> is provided, warnings are treated as errors.</p> </p></div> <p><a name="make_script-1"><span class="bold_code">make_script(Name) -> Result</span></a><br><a name="make_script-2"><span class="bold_code">make_script(Name, [Opt]) -> Result</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Name = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | {exref,[App]}] | silent | {outdir,Dir} | no_warn_sasl | warnings_as_errors</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Dir = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Var = {VarName,Prefix}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> VarName = Prefix = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> App = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Result = ok | error | {ok,Module,Warnings} | {error,Module,Error}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Warnings = Error = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Generates a boot script <span class="code">Name.script</span> and its binary version, the boot file <span class="code">Name.boot</span>. The boot file specifies which code should be loaded and which applications should be started when the Erlang runtime system is started. See <span class="code">script(4)</span>.</p> <p>The release resource file <span class="code">Name.rel</span> is read to find out which applications are included in the release. Then the relevant application resource files <span class="code">App.app</span> are read to find out which modules should be loaded and if and how the application should be started. (Keys <span class="code">modules</span> and <span class="code">mod</span>, see <span class="code">app(4)</span>).</p> <p>By default, the boot script and boot file are placed in the same directory as <span class="code">Name.rel</span>. That is, in the current working directory unless <span class="code">Name</span> contains a path. If the option <span class="code">{outdir,Dir}</span> is provided, they are placed in <span class="code">Dir</span> instead.</p> <p>The correctness of each application is checked:</p> <ul> <li> <p>The version of an application specified in the <span class="code">.rel</span> file should be the same as the version specified in the <span class="code">.app</span> file.</p> </li> <li> <p>There should be no undefined applications, that is, dependencies to applications which are not included in the release. (Key <span class="code">applications</span> in <span class="code">.app</span> file).</p> </li> <li> <p>There should be no circular dependencies among the applications.</p> </li> <li> <p>There should be no duplicated modules, that is, modules with the same name but belonging to different applications.</p> </li> <li> <p>If the <span class="code">src_tests</span> option is specified, a warning is issued if the source code for a module is missing or newer than the object code.</p> </li> </ul> <p>The applications are sorted according to the dependencies between the applications. Where there are no dependencies, the order in the <span class="code">.rel</span> file is kept.</p> <p>The function will fail if the mandatory applications <span class="code">kernel</span> and <span class="code">stdlib</span> are not included in the <span class="code">.rel</span> file and have start type <span class="code">permanent</span> (default).</p> <p>If <span class="code">sasl</span> is not included as an application in the <span class="code">.rel</span> file, a warning is emitted because such a release can not be used in an upgrade. To turn off this warning, add the option <span class="code">no_warn_sasl</span>.</p> <p>All files are searched for in the current path. It is assumed that the <span class="code">.app</span> and <span class="code">.beam</span> files for an application is located in the same directory. The <span class="code">.erl</span> files are also assumed to be located in this directory, unless it is an <span class="code">ebin</span> directory in which case they may be located in the corresponding <span class="code">src</span> directory.</p> <p>If the option <span class="code">{path,[Dir]}</span> is provided, this path is appended to the current path. A directory in the path can be given with a wildcard <span class="code">*</span>, this is expanded to all matching directories. Example: <span class="code">"lib/*/ebin"</span>.</p> <p>In the generated boot script all application directories are structured as <span class="code">App-Vsn/ebin</span> and assumed to be located in <span class="code">$ROOT/lib</span>, where <span class="code">$ROOT</span> is the root directory of the installed release. If the <span class="code">local</span> option is supplied, the actual directories where the applications were found are used instead. This is a useful way to test a generated boot script locally.</p> <p>The <span class="code">variables</span> option can be used to specify an installation directory other than <span class="code">$ROOT/lib</span> for some of the applications. If a variable <span class="code">{VarName,Prefix}</span> is specified and an application is found in a directory <span class="code">Prefix/Rest/App[-Vsn]/ebin</span>, this application will get the path <span class="code">VarName/Rest/App-Vsn/ebin</span> in the boot script. If an application is found in a directory <span class="code">Prefix/Rest</span>, the path will be <span class="code">VarName/Rest/App-Vsn/ebin</span>. When starting Erlang, all variables <span class="code">VarName</span> are given values using the <span class="code">boot_var</span> command line flag.</p> <p>Example: If the option <span class="code">{variables,[{"TEST","lib"}]}</span> is supplied, and <span class="code">myapp.app</span> is found in <span class="code">lib/myapp/ebin</span>, then the path to this application in the boot script will be <span class="code">"$TEST/myapp-1/ebin"</span>. If <span class="code">myapp.app</span> is found in <span class="code">lib/test</span>, then the path will be <span class="code">$TEST/test/myapp-1/ebin</span>.</p> <p>The checks performed before the boot script is generated can be extended with some cross reference checks by specifying the <span class="code">exref</span> option. These checks are performed with the Xref tool. All applications, or the applications specified with <span class="code">{exref,[App]}</span>, are checked by Xref and warnings are generated for calls to undefined functions.</p> <p>By default, errors and warnings are printed to tty and the function returns <span class="code">ok</span> or <span class="code">error</span>. If the option <span class="code">silent</span> is provided, the function instead returns <span class="code">{ok,Module,Warnings}</span> or <span class="code">{error,Module,Error}</span>. Warnings and errors can be converted to strings by calling <span class="code">Module:format_warning(Warnings)</span> or <span class="code">Module:format_error(Error)</span>.</p> <p>If the option <span class="code">warnings_as_errors</span> is provided, warnings are treated as errors.</p> </p></div> <p><a name="make_tar-1"><span class="bold_code">make_tar(Name) -> Result</span></a><br><a name="make_tar-2"><span class="bold_code">make_tar(Name, [Opt]) -> Result</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Name = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Opt = {dirs,[IncDir]} | {path,[Dir]} | {variables,[Var]} | {var_tar,VarTar} | {erts,Dir} | src_tests | exref | {exref,[App]} | silent | {outdir,Dir}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Dir = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> IncDir = src | include | atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Var = {VarName,PreFix}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> VarName = Prefix = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> VarTar = include | ownfile | omit</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Machine = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> App = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Result = ok | error | {ok,Module,Warnings} | {error,Module,Error}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Warning = Error = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Creates a release package file <span class="code">Name.tar.gz</span>. file. This file must be uncompressed and unpacked on the target system using the <span class="code">release_handler</span>, before the new release can be installed.</p> <p>The release resource file <span class="code">Name.rel</span> is read to find out which applications are included in the release. Then the relevant application resource files <span class="code">App.app</span> are read to find out the version and modules of each application. (Keys <span class="code">vsn</span> and <span class="code">modules</span>, see <span class="code">app(4)</span>).</p> <p>By default, the release package file is placed in the same directory as <span class="code">Name.rel</span>. That is, in the current working directory unless <span class="code">Name</span> contains a path. If the option <span class="code">{outdir,Dir}</span> is provided, it is placed in <span class="code">Dir</span> instead.</p> <p>By default, the release package contains the directories <span class="code">lib/App-Vsn/ebin</span> and <span class="code">lib/App-Vsn/priv</span> for each included application. If more directories, the option <span class="code">dirs</span> is supplied. Example: <span class="code">{dirs,[src,examples]}</span>.</p> <p>All these files are searched for in the current path. If the option <span class="code">{path,[Dir]}</span> is provided, this path is appended to the current path. The wildcard <span class="code">*</span> is expanded to all matching directories. Example: <span class="code">"lib/*/ebin"</span>.</p> <p>The <span class="code">variables</span> option can be used to specify an installation directory other than <span class="code">lib</span> for some of the applications. If a variable <span class="code">{VarName,Prefix}</span> is specified and an application is found in a directory <span class="code">Prefix/Rest/App[-Vsn]/ebin</span>, this application will be packed into a separate <span class="code">VarName.tar.gz</span> file as <span class="code">Rest/App-Vsn/ebin</span>.</p> <p>Example: If the option <span class="code">{variables,[{"TEST","lib"}]}</span> is supplied, and <span class="code">myapp.app</span> is found in <span class="code">lib/myapp-1/ebin</span>, the the application <span class="code">myapp</span> is included in <span class="code">TEST.tar.gz</span>:</p> <div class="example"><pre> % <span class="bold_code">tar tf TEST.tar</span> myapp-1/ebin/myapp.app ... </pre></div> <p>The <span class="code">{var_tar,VarTar}</span> option can be used to specify if and where a separate package should be stored. In this option, <span class="code">VarTar</span> is:</p> <ul> <li> <p><span class="code">include</span>. Each separate (variable) package is included in the main <span class="code">ReleaseName.tar.gz</span> file. This is the default.</p> </li> <li> <p><span class="code">ownfile</span>. Each separate (variable) package is generated as separate files in the same directory as the <span class="code">ReleaseName.tar.gz</span> file.</p> </li> <li> <p><span class="code">omit</span>. No separate (variable) packages are generated and applications which are found underneath a variable directory are ignored.</p> </li> </ul> <p>A directory called <span class="code">releases</span> is also included in the release package, containing <span class="code">Name.rel</span> and a subdirectory called <span class="code">RelVsn</span>. <span class="code">RelVsn</span> is the release version as specified in <span class="code">Name.rel</span>.</p> <p><span class="code">releases/RelVsn</span> contains the boot script <span class="code">Name.boot</span> renamed to <span class="code">start.boot</span> and, if found, the files <span class="code">relup</span> and <span class="code">sys.config</span>. These files are searched for in the same directory as <span class="code">Name.rel</span>, in the current working directory, and in any directories specified using the <span class="code">path</span> option.</p> <p>If the release package should contain a new Erlang runtime system, the <span class="code">bin</span> directory of the specified runtime system <span class="code">{erts,Dir}</span> is copied to <span class="code">erts-ErtsVsn/bin</span>.</p> <p>All checks performed with the <span class="code">make_script</span> function are performed before the release package is created. The <span class="code">src_tests</span> and <span class="code">exref</span> options are also valid here.</p> <p>The return value and the handling of errors and warnings are the same as described for <span class="code">make_script</span> above.</p> </p></div> <p><a name="script2boot-1"><span class="bold_code">script2boot(File) -> ok | error</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">File = string()</span><br> </div> </div> <div class="REFBODY"><p> <p>The Erlang runtime system requires that the contents of the script used to boot the system is a binary Erlang term. This function transforms the <span class="code">File.script</span> boot script to a binary term which is stored in the file <span class="code">File.boot</span>.</p> <p>A boot script generated using the <span class="code">make_script</span> function is already transformed to the binary form.</p> </p></div> <h3><a name="id72834">SEE ALSO</a></h3> <div class="REFBODY"> <p>app(4), appup(4), erl(1), rel(4), release_handler(3), relup(4), script(4)</p> </div> </div> <div class="footer"> <hr> <p>Copyright © 1997-2012 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>