Age | Commit message (Collapse) | Author |
|
Add boot_var ERTS_LIB_DIR to relx_get_nodename
|
|
* Extended start script command extensions
Provide a mechanism that allows for the application
to extend the list of commands available to be invoked
from the start script. An application may be able to
define a 'foo' extension that is associated with a 'foo_script'
written and maintained by the applicationr, (this association is
kept in rebar.config), upon invocation of bin/<release_name> foo
the 'foo_script' will then be invoked.
* Add test coverage for extension script
* Ensure extended script usage argument
|
|
|
|
vm.args check for name/sname parameter
|
|
- distinction between non-existing and existing but non-readable args_file
- fixed circularity check to include the base vm.args file
|
|
vm.args and referenced args_files will now be checked for:
- non-existing -args_files
- circular dependencies between -args_files
- relative paths in -args_files
- multiple/mixed occurences of -name and -sname parameters
- missing -name or -sname parameters
|
|
|
|
|
|
usage of \s in awk regexp is a gawk extension. OSX comes with a different variant of awk. This fix should make the awk code POSIX-compliant and should work in all variants of awk (tested with gawk --traditional)
|
|
The current version of extended_bin checks if there is a name or sname parameter in vm.args and refuses to start if there is none. However, it is allowed that the vm.args file (more abstract, any -args_file that is given to erl/erlexec etc) itself may contain -args_file parameters (see http://erlang.org/doc/man/erl.html), which may contain the name/sname parameters.
This change will recursively scan the files mentioned in -args_file parameters in vm.args as well as -args_file parameters in the mentioned files etcetc, and return the first occurence of a name/sname parameter.
Two points are worth mentioning, though:
- The name/sname check works only with absolute paths in the args_file parameters. Relative paths are probably a bad idea there, anyway, since it would make any setup rather fragile.
- There is no check for circular dependencies. There was none before, and this change does not add any.
|
|
As mentioned in the (closed) issue #127, the default pipe directory is not multi-user friendly. When running multiple relx-generated releases as different users, the first to be started will create the /tmp/erl_pipes directory, which the ones starting after that cannot create their pipe dirs in. The ticket mentions that this should be fixed by #154, but I cannot see how this is supposed to solve the issue. Right now, the only way I see is to use prefix the start command with env PIPE_DIR=/some/other/dir/, which is quite cumbersome.
This change will work exactly as before when PIPE_DIR is explicitly set. In case PIPE_DIR is not set, however, it will first attempt to create the parent dir /tmp/erl_pipes with mode 1777, which should enable releases being run as other users to create their pipe dirs.
|
|
Any output string from .erlang to stdout will be prepend to
code:root_dir(), so it will cause the retrieved dir incorrect.
The fix is to start erl with the no_dot_erlang boot file.
|
|
|
|
Provide a status command to start script which,
by default, runs a builtin hook that simply prints
which applications are running in the node.
This hook can then be customized to print whatever
the user wants by adding
{status, [{custom, "path/to/hook"}]}
to already existing extended_start_script_hooks.
|
|
|
|
Fix OSX readlink
|
|
It does not support the -f option.
|
|
When replacing OS vars only create multi-node sys.config
files (ie. filenames containing the node name) only if explicitly
requested. This is necessary because inclusion of other config
files inside of sys.config is only allowed if the file is actually called
sys.config and nothing else.
|
|
|
|
New 'extended_start_script_hooks' directive that allows the
developer to define six different hook shell scripts to be invoked
at pre/post start/stop/install upgrade phases.
Besides these custom defined scripts, other types of builtin
scripts are also available, these offer pre-packaged functionality
that can be used directly, they are:
pid - writes the beam pid to a configurable file location
(/var/run/<rel_name>.pid by default).
wait_for_vm_start - waits for the vm to start (ie. when it responds to pings)
wait_for_process - waits for a configurable name
to appear in the erlang process registry
The hook scripts are invoked with the 'source' command, therefore
they have access to all the variables in the start script.
|
|
Move it next to console since it's mostly the
same thing but with extra parameters.
|
|
|
|
Support a command line argument to the `upgrade`/`downgrade`
commands: `--no-permanent`, if this is set the release will be unpacked,
installed and be made current but not permanent, when the user
is confortable with the outcomehe can issue the same command a
second time without the `--no-permanent` option.
|
|
|
|
|
|
|
|
Instead of forcing the user to put the tarball package
with the expected name (<relname>.tar.gz)and in the
expected location (releases/<version>) symlink this
fixed file name to a tarball existing in one of three different
places (releases/, releases/<version>,
releases/<version>/<relname>.tar.gz).
Refactor the install/upgrade escript to make it more
dynamic, it now runs commands that are passed from
the start script while accepting a variable number
of arguments.
Add a `versions` command to the extended start
script that prints out the currently installed versions
and their status.
|
|
The second argument is actually the version and
not the package name.
|
|
Issue 1: If RELX_REPLACE_OS_VARS is true then existing vm.args (sys.config) file
is renamed to vm.arg.orig (sys.config.orig) and a new vm.args (sys.config) is
generated. However, if for some reason new vm.args (sys.config) is not generated
then system ends up without a valid vm.args (sys.config) file and keeps failing
thereafter.
Issue 2: Continuing from issue 1, if the system does not have sufficient
disk space or the current directory is immutable then new vm.args (sys.config)
will not be generated.
This patch tries to fix both the above issues by keeping the existing
vm.args (sys.config) untouched and creates a new vm.args (sys.config)
in /tmp directory
|
|
useful if deploying erlang nodes via capistrano
when TERM is not set correctly attaching to the
node will result in weirdness
|
|
(see: http://erlang.org/pipermail/erlang-patches/2010-March/000883.html)
|
|
To allow manually loading and starting up
applications.
|
|
The first run would correctly replace the environment
variables, however it would also overwrite the original
vm.args and sys.config thus preventing any further
substitution in subsequent runs.
Dev mode runs were also broken, all runs after the
first were required to also define the
RELX_REPLACE_OS_VARS variable in order not to
overwrite the current vm.args with the original one,
this prevented simply attaching to an already running
node that was started this way.
Add tests to exercise this functionality.
|
|
|
|
|
|
|
|
get nodename from erlang, not hostname
|
|
|
|
|
|
The -X flag is not supported on BusyBox for example.
Using -t x should give the same behavior as -X.
|
|
|
|
|
|
|
|
|
|
Add ability to also run shell commands contained in the sys.config.
E.g.:
# In this example the node name defaults to name of the release
# and can be overriden at run-time, appended with current year
$ head -1 vm.args
-sname ${NODE_NAME:-$REL_NAME}$(date +%Y)
# If the $NAME is 'abc2015', and hostname is 'MyHost', below the 'node'
# parameter gets set to 'Abc2015@myhost'
$ grep node sys.config
{node, $(echo ${NAME^})@${HOSTNAME,,}}
|
|
This patch addresses the following issues:
* When RELX_REPLACE_OS_VARS is set, evaluation of environment vars
is done by the shell rather than awk, this allows to use more
powerful notation of environment variables in sys.config and vm.args
(e.g. `-sname abc@${HOSTNAME,,}` or `{myapp, [{user, ${USER:-unknown}}]}`
* Using shell vars rather than unnecessarily forking awk/grep/etc
|
|
|
|
bug description:
if vm.arg use '-sname xxx' option, When exec upgrade/install/unpack command, it will report "Hostname yyy is illegal" error.
|
|
|
|
Fixed a regression that occurs when using readlink
on a Mac, which crashes the startup script if the startup
script is not a link but an actual file (which is
the most common case)
|