aboutsummaryrefslogblamecommitdiffstats
path: root/priv/templates/bin.dtl
blob: 3398d63f57c086e01548211c11e3b20d551bbaf9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11



         






                                                

                 
                                                     
                               

                                   
        
                                

                                                                      

                                           
      


                   
                                            
                                   
                                  


      
                
                                             
                                       
                                   


      

               
            




                                                       
                               
                                                                          
             
 






                                                      
                                                                                     

                  
                  
#!/bin/sh

set -e

SCRIPT_DIR="$(dirname "$0")"
RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
REL_NAME="{{ rel_name }}"
REL_VSN="{{ rel_vsn }}"
ERTS_VSN="{{ erts_vsn }}"
REL_DIR="$RELEASE_ROOT_DIR/releases/$REL_VSN"
ERL_OPTS="{{ erl_opts }}"

find_erts_dir() {
    local erts_dir="$RELEASE_ROOT_DIR/erts-$ERTS_VSN"
    if [ -d "$erts_dir" ]; then
        ERTS_DIR="$erts_dir";
        ROOTDIR="$RELEASE_ROOT_DIR"
    else
        local erl="$(which erl)"
        code="io:format(\"~s\", [code:root_dir()])."
        local erl_root="$("$erl" -noshell -eval "$code" -s init stop)"
        ERTS_DIR="$erl_root/erts-$ERTS_VSN"
        ROOTDIR="$erl_root"
    fi
}

find_sys_config() {
    local possible_sys="$REL_DIR/sys.config"
    if [ -f "$possible_sys" ]; then
        SYS_CONFIG="$possible_sys"
    fi
}

find_vm_args() {
    local possible_vm_args="$REL_DIR/vm.args"
    if [ -f "$possible_vm_args" ]; then
        VM_ARGS="$possible_vm_args"
    fi
}

find_erts_dir
find_sys_config
find_vm_args
export ROOTDIR="$RELEASE_ROOT_DIR"
export BINDIR="$ERTS_DIR/bin"
export EMU="beam"
export PROGNAME="erl"
export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH"
ERTS_LIB_DIR="$ERTS_DIR/../lib"
[ -f "$REL_DIR/$REL_NAME.boot" ] && BOOTFILE="$REL_NAME" || BOOTFILE=start
cd "$ROOTDIR"

# Save extra arguments
ARGS="$@"

# Build arguments for erlexec
set -- "$ERL_OPTS"
[ "$SYS_CONFIG" ] && set -- "$@" -config "$SYS_CONFIG"
[ "$VM_ARGS" ] && set -- "$@" -args_file "$VM_ARGS"
set -- "$@" -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" -boot "$REL_DIR/$BOOTFILE" "$ARGS"

# Boot the release
$BINDIR/erlexec $@