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
|
%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%
-module(systools).
%% Usage:
%% systools:make_script("RelName")
%% Make a boot file from RelName.rel.
%% Generates RelName.{script,boot}
%% systools:make_tar("RelName")
%% Make a release package from RelName.rel.
%% Generates RelName.tar,Z
%% systools:script2boot(File)
%% File.script -> File.boot
%% systools:mk_relup("Target", ["UpFromRel"...], ["DownToRel"...], Opts)
%% Gather all relup scripts to the relup file
%%
-export([script2boot/1, script2boot/3, compile_rel/3,
make_script/1, make_script/2,
make_tar/1, make_tar/2,
make_relup/3, make_relup/4]).
-include("erl_compile.hrl").
%%% The behaviour_info functions have been moved to erl_internal in stdlib.
%%-----------------------------------------------------------------
%% Options is a list of {path, Path} | silent | local where path sets
%% the search path, silent supresses error message printing on console,
%% local generates a script with references to the directories there
%% the applications are found.
%%-----------------------------------------------------------------
make_script([RelName|Opts]) when is_atom(RelName) ->
make_script([RelName], Opts);
make_script(RelName) -> make_script(RelName, []).
make_script(RelName, Opt) ->
systools_make:make_script(RelName, Opt).
%%-----------------------------------------------------------------
%% Options is a list of {path, Path} | silent |
%% {dirs, [src,include,examples,..]} | {erts, ErtsDir} where path
%% sets the search path, silent supresses error message printing on console,
%% dirs includes the specified directories (per application) in the
%% release package and erts specifies that the erts-Vsn/bin directory
%% should be included in the release package and there it can be found.
%%-----------------------------------------------------------------
make_tar(RelName) -> make_tar(RelName, []).
make_tar(RelName, Opt) ->
systools_make:make_tar(RelName, Opt).
%%-----------------------------------------------------------------
%% Create a binary form of a boot script.
%%-----------------------------------------------------------------
script2boot(File) ->
case systools_lib:file_term2binary(File ++ ".script", File ++ ".boot") of
{error,Error} ->
io:format(systools_make:format_error(Error)),
error;
_ ->
ok
end.
script2boot(File, Output0, _Opt) ->
Input = File++".script",
Output = Output0++".boot",
case systools_lib:file_term2binary(Input, Output) of
{error,Error} ->
io:format(systools_make:format_error(Error)),
error;
_ ->
ok
end.
%%-----------------------------------------------------------------
%% Options is a list of {path, Path} | silent | noexec where path sets
%% search path, silent supresses error message printing on console,
%% noexec supresses writing the output "relup" file
%%-----------------------------------------------------------------
make_relup(ReleaseName, UpNameList, DownNameList) ->
systools_relup:mk_relup(ReleaseName, UpNameList, DownNameList, []).
make_relup(ReleaseName, UpNameList, DownNameList, Opts) ->
systools_relup:mk_relup(ReleaseName, UpNameList, DownNameList, Opts).
%%-----------------------------------------------------------------
%% Interface for erl_compile to compile .rel files.
%%-----------------------------------------------------------------
compile_rel(Input, Output, Options) ->
systools_make:make_script(Input, Output, translate_options(Options)).
translate_options(Opts) ->
[{path, Opts#options.includes}|Opts#options.specific].
|