aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Fenoll <[email protected]>2017-12-14 18:18:47 +0100
committerPierre Fenoll <[email protected]>2018-03-14 11:42:35 +0100
commit1862f8e631fa0bd03ffea10bf6f18ee07f1db178 (patch)
treec5b25dd7628561789abd4fe9436fac479e20211a
parentbc10d04fd94c967ca687dd8177f24177a0891ded (diff)
downloadkerl-1862f8e631fa0bd03ffea10bf6f18ee07f1db178.tar.gz
kerl-1862f8e631fa0bd03ffea10bf6f18ee07f1db178.tar.bz2
kerl-1862f8e631fa0bd03ffea10bf6f18ee07f1db178.zip
shellcheck: turn some "s into 's
-rwxr-xr-xkerl510
1 files changed, 219 insertions, 291 deletions
diff --git a/kerl b/kerl
index 25b1c45..19cbd6e 100755
--- a/kerl
+++ b/kerl
@@ -24,19 +24,20 @@
unset ERL_TOP
-KERL_VERSION="1.8.2"
+KERL_VERSION='1.8.2'
-DOCSH_GITHUB_URL="https://github.com/erszcz/docsh.git"
-ERLANG_DOWNLOAD_URL="http://www.erlang.org/download"
-KERL_CONFIG_STORAGE_FILENAME=".kerl_config"
+DOCSH_GITHUB_URL='https://github.com/erszcz/docsh.git'
+ERLANG_DOWNLOAD_URL='http://www.erlang.org/download'
+KERL_CONFIG_STORAGE_FILENAME='.kerl_config'
if [ -z "$HOME" ]; then
- echo "Error: \$HOME is empty or not set." 1>&2
+ # shellcheck disable=SC2016
+ echo 'Error: $HOME is empty or not set.' 1>&2
exit 1
fi
# Default values
-OTP_GITHUB_URL=${OTP_GITHUB_URL:="https://github.com/erlang/otp"}
+OTP_GITHUB_URL=${OTP_GITHUB_URL:='https://github.com/erlang/otp'}
KERL_BASE_DIR=${KERL_BASE_DIR:="$HOME"/.kerl}
KERL_CONFIG=${KERL_CONFIG:="$HOME"/.kerlrc}
KERL_DOWNLOAD_DIR=${KERL_DOWNLOAD_DIR:="${KERL_BASE_DIR:?}"/archives}
@@ -139,22 +140,22 @@ if [ -n "$_KBB" ]; then
fi
if [ -z "$KERL_SASL_STARTUP" ]; then
- INSTALL_OPT=-minimal
+ INSTALL_OPT='-minimal'
else
- INSTALL_OPT=-sasl
+ INSTALL_OPT='-sasl'
fi
if [ -z "$KERL_BUILD_BACKEND" ]; then
- KERL_BUILD_BACKEND="tarball"
+ KERL_BUILD_BACKEND='tarball'
else
- KERL_BUILD_BACKEND="git"
+ KERL_BUILD_BACKEND='git'
KERL_USE_AUTOCONF=1
fi
KERL_SYSTEM=$(uname -s)
case "$KERL_SYSTEM" in
Darwin|FreeBSD|OpenBSD)
- MD5SUM="openssl md5"
+ MD5SUM='openssl md5'
MD5SUM_FIELD=2
SED_OPT=-E
CP_OPT=-a
@@ -168,34 +169,32 @@ case "$KERL_SYSTEM" in
esac
-usage()
-{
- echo "kerl: build and install Erlang/OTP"
+usage() {
+ echo 'kerl: build and install Erlang/OTP'
echo "usage: $0 <command> [options ...]"
- printf "\n <command> Command to be executed\n\n"
- echo "Valid commands are:"
- echo " build Build specified release or git repository"
- echo " install Install the specified release at the given location"
- echo " deploy Deploy the specified installation to the given host and location"
- echo " update Update the list of available releases from your source provider"
- echo " list List releases, builds and installations"
- echo " delete Delete builds and installations"
- echo " install-docsh Install erl shell documentation access extension - docsh"
- echo " path Print the path of a given installation"
- echo " active Print the path of the active installation"
- echo " plt Print Dialyzer PLT path for the active installation"
- echo " status Print available builds and installations"
- echo " prompt Print a string suitable for insertion in prompt"
- echo " cleanup Remove compilation artifacts (use after installation)"
+ printf '\n <command> Command to be executed\n\n'
+ echo 'Valid commands are:'
+ echo ' build Build specified release or git repository'
+ echo ' install Install the specified release at the given location'
+ echo ' deploy Deploy the specified installation to the given host and location'
+ echo ' update Update the list of available releases from your source provider'
+ echo ' list List releases, builds and installations'
+ echo ' delete Delete builds and installations'
+ echo ' install-docsh Install erl shell documentation access extension - docsh'
+ echo ' path Print the path of a given installation'
+ echo ' active Print the path of the active installation'
+ echo ' plt Print Dialyzer PLT path for the active installation'
+ echo ' status Print available builds and installations'
+ echo ' prompt Print a string suitable for insertion in prompt'
+ echo ' cleanup Remove compilation artifacts (use after installation)'
echo " version Print current version (current: $KERL_VERSION)"
exit 1
}
if [ $# -eq 0 ]; then usage; fi
-get_releases()
-{
- if [ "$KERL_BUILD_BACKEND" = "git" ]
+get_releases() {
+ if [ "$KERL_BUILD_BACKEND" = 'git' ]
then
get_git_releases
else
@@ -203,8 +202,7 @@ get_releases()
fi
}
-get_git_releases()
-{
+get_git_releases() {
git ls-remote --tags "$OTP_GITHUB_URL" \
| grep -E -o 'OTP[_-][^^{}]+' \
| sed $SED_OPT 's/OTP[_-]//' \
@@ -212,41 +210,36 @@ get_git_releases()
| uniq
}
-get_tarball_releases()
-{
+get_tarball_releases() {
curl -f -q -L -s $ERLANG_DOWNLOAD_URL/ | \
- sed $SED_OPT -e 's/^.*<[aA] [hH][rR][eE][fF]=\"\otp_src_([-0-9A-Za-z_.]+)\.tar\.gz\">.*$/\1/' \
+ sed $SED_OPT -e 's/^.*<[aA] [hH][rR][eE][fF]=\"otp_src_([-0-9A-Za-z_.]+)\.tar\.gz\">.*$/\1/' \
-e '/^R1|^[0-9]/!d' | \
- sed -e "s/^R\(.*\)/\1:R\1/" | sed -e "s/^\([^\:]*\)$/\1-z:\1/" | sort | cut -d':' -f2
+ sed -e 's/^R\(.*\)/\1:R\1/' | sed -e 's/^\([^\:]*\)$/\1-z:\1/' | sort | cut -d: -f2
}
-update_checksum_file()
-{
- if [ "$KERL_BUILD_BACKEND" = "git" ];
+update_checksum_file() {
+ if [ "$KERL_BUILD_BACKEND" = 'git' ];
then
return 0
else
- echo "Getting checksum file from erlang.org..."
- curl -f -L -o "$KERL_DOWNLOAD_DIR/MD5" "$ERLANG_DOWNLOAD_URL/MD5" || exit 1
+ echo 'Getting checksum file from erlang.org...'
+ curl -f -L -o "$KERL_DOWNLOAD_DIR"/MD5 "$ERLANG_DOWNLOAD_URL"/MD5 || exit 1
fi
}
-ensure_checksum_file()
-{
+ensure_checksum_file() {
if [ ! -s "$KERL_DOWNLOAD_DIR"/MD5 ]; then
update_checksum_file
fi
}
-check_releases()
-{
+check_releases() {
if [ ! -f "$KERL_BASE_DIR"/otp_releases ]; then
get_releases >"$KERL_BASE_DIR"/otp_releases
fi
}
-is_valid_release()
-{
+is_valid_release() {
check_releases
while read -r rel; do
if [ "$1" = "$rel" ]; then
@@ -256,8 +249,7 @@ is_valid_release()
return 1
}
-assert_valid_release()
-{
+assert_valid_release() {
if ! is_valid_release "$1"; then
echo "$1 is not a valid Erlang/OTP release"
exit 1
@@ -265,12 +257,11 @@ assert_valid_release()
return 0
}
-get_release_from_name()
-{
+get_release_from_name() {
if [ -f "$KERL_BASE_DIR"/otp_builds ]; then
while read -r l; do
- rel=$(echo "$l" | cut -d "," -f 1)
- name=$(echo "$l" | cut -d "," -f 2)
+ rel=$(echo "$l" | cut -d, -f1)
+ name=$(echo "$l" | cut -d, -f2)
if [ "$name" = "$1" ]; then
echo "$rel"
return 0
@@ -280,8 +271,7 @@ get_release_from_name()
return 1
}
-get_newest_valid_release()
-{
+get_newest_valid_release() {
check_releases
rel=$(tail -1 "$KERL_BASE_DIR"/otp_releases)
@@ -294,12 +284,11 @@ get_newest_valid_release()
return 1
}
-is_valid_installation()
-{
+is_valid_installation() {
if [ -f "$KERL_BASE_DIR"/otp_installations ]; then
while read -r l; do
- name=$(echo "$l" | cut -d " " -f 1)
- path=$(echo "$l" | cut -d " " -f 2)
+ name=$(echo "$l" | cut -d' ' -f1)
+ path=$(echo "$l" | cut -d' ' -f2)
if [ "$name" = "$1" ] || [ "$path" = "$1" ]; then
if [ -f "$path"/activate ]; then
return 0
@@ -310,8 +299,7 @@ is_valid_installation()
return 1
}
-assert_valid_installation()
-{
+assert_valid_installation() {
if ! is_valid_installation "$1"; then
echo "$1 is not a kerl-managed Erlang/OTP installation"
exit 1
@@ -319,11 +307,10 @@ assert_valid_installation()
return 0
}
-assert_build_name_unused()
-{
+assert_build_name_unused() {
if [ -f "$KERL_BASE_DIR"/otp_builds ]; then
while read -r l; do
- name=$(echo "$l" | cut -d "," -f 2)
+ name=$(echo "$l" | cut -d, -f2)
if [ "$name" = "$1" ]; then
echo "There's already a build named $1"
exit 1
@@ -332,14 +319,13 @@ assert_build_name_unused()
fi
}
-_check_required_pkgs()
-{
+_check_required_pkgs() {
has_dpkg=$(which dpkg)
has_rpm=$(which rpm)
if [ -n "$has_dpkg" ] || [ -n "$has_rpm" ]; then
# found either dpkg or rpm (or maybe even both!)
if [ -n "$has_dpkg" ] && [ -n "$has_rpm" ]; then
- echo "WARNING: You appear to have BOTH rpm and dpkg. This is very strange. No package checks done."
+ echo 'WARNING: You appear to have BOTH rpm and dpkg. This is very strange. No package checks done.'
elif [ -n "$has_dpkg" ]; then
_check_dpkg
elif [ -n "$has_rpm" ]; then
@@ -348,25 +334,22 @@ _check_required_pkgs()
fi
}
-_dpkg_is_installed()
-{
+_dpkg_is_installed() {
# gratefully stolen from
# https://superuser.com/questions/427318/test-if-a-package-is-installed-in-apt
# returns 0 (true) if found, 1 otherwise
dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'
}
-_check_dpkg()
-{
- required="
+_check_dpkg() {
+ required='
libssl-dev
make
automake
autoconf
libncurses5-dev
gcc
-"
-
+'
for pkg in $required; do
if ! _dpkg_is_installed "$pkg"; then
echo "WARNING: It appears that a required development package '$pkg' is not installed."
@@ -374,22 +357,19 @@ gcc
done
}
-_rpm_is_installed()
-{
+_rpm_is_installed() {
rpm --quiet -q "$1" >/dev/null 2>&1
}
-_check_rpm()
-{
- required="
+_check_rpm() {
+ required='
openssl-devel
make
automake
autoconf
ncurses-devel
gcc
-"
-
+'
for pkg in $required; do
if ! _rpm_is_installed "$pkg"; then
echo "WARNING: It appears a required development package '$pkg' is not installed."
@@ -397,8 +377,7 @@ gcc
done
}
-do_git_build()
-{
+do_git_build() {
assert_build_name_unused "$3"
GIT=$(printf '%s' "$1" | $MD5SUM | cut -d ' ' -f $MD5SUM_FIELD)
@@ -407,13 +386,13 @@ do_git_build()
echo "Checking out Erlang/OTP git repository from $1..."
if [ ! -d "$GIT" ]; then
if ! git clone -q --mirror "$1" "$GIT" >/dev/null 2>&1; then
- echo "Error mirroring remote git repository"
+ echo 'Error mirroring remote git repository'
exit 1
fi
fi
cd "$GIT" || exit 1
if ! git remote update --prune >/dev/null 2>&1; then
- echo "Error updating remote git repository"
+ echo 'Error updating remote git repository'
exit 1
fi
@@ -421,19 +400,19 @@ do_git_build()
mkdir -p "$KERL_BUILD_DIR/$3" || exit 1
cd "$KERL_BUILD_DIR/$3" || exit 1
if ! git clone -l "$KERL_GIT_DIR/$GIT" otp_src_git >/dev/null 2>&1; then
- echo "Error cloning local git repository"
+ echo 'Error cloning local git repository'
exit 1
fi
cd otp_src_git || exit 1
if ! git checkout "$2" >/dev/null 2>&1; then
if ! git checkout -b "$2" "$2" >/dev/null 2>&1; then
- echo "Couldn't checkout specified version"
+ echo 'Could not checkout specified version'
rm -Rf "${KERL_BUILD_DIR:?}/$3"
exit 1
fi
fi
if [ ! -x otp_build ]; then
- echo "Not a valid Erlang/OTP repository"
+ echo 'Not a valid Erlang/OTP repository'
rm -Rf "${KERL_BUILD_DIR:?}/$3"
exit 1
fi
@@ -441,29 +420,26 @@ do_git_build()
if [ -z "$KERL_BUILD_AUTOCONF" ]; then
KERL_USE_AUTOCONF=1
fi
- _do_build "git" "$3"
+ _do_build 'git' "$3"
echo "Erlang/OTP $3 from git has been successfully built"
- list_add builds "git,$3"
+ list_add builds git,"$3"
}
-get_otp_version()
-{
+get_otp_version() {
echo "$1" | sed $SED_OPT -e 's/R?([0-9]{1,2}).+/\1/'
}
-get_perl_version()
-{
+get_perl_version() {
if assert_perl; then
# This is really evil but it's portable and it works. Don't @ me bro
perl -e 'print int(($] - 5)*1000)'
else
- echo "FATAL: I couldn't find perl which is required to compile Erlang."
+ echo 'FATAL: could not find perl which is required to compile Erlang.'
exit 1
fi
}
-assert_perl()
-{
+assert_perl() {
perl_loc=$(which perl)
if [ -z "$perl_loc" ]; then
return 1
@@ -473,20 +449,18 @@ assert_perl()
fi
}
-get_javac_version()
-{
+get_javac_version() {
java_loc=$(which javac)
if [ -z "$java_loc" ]; then
# Java's not installed, so just return 0
0
else
javaout=$(javac -version 2>&1)
- echo "$javaout" | cut -d' ' -f2 | cut -d'.' -f2
+ echo "$javaout" | cut -d' ' -f2 | cut -d. -f2
fi
}
-show_configuration_warnings()
-{
+show_configuration_warnings() {
# $1 is logfile
# $2 is section header (E.g. "APPLICATIONS DISABLED")
# Find the row number for the section we are looking for
@@ -505,16 +479,14 @@ show_configuration_warnings()
fi
}
-show_logfile()
-{
+show_logfile() {
echo "$1"
tail "$2"
echo
echo "Please see $2 for full details."
}
-maybe_patch()
-{
+maybe_patch() {
# $1 = OS platform e.g., Darwin, etc
# $2 = OTP release
@@ -533,8 +505,7 @@ maybe_patch()
maybe_patch_all "$release"
}
-maybe_patch_all()
-{
+maybe_patch_all() {
perlver=$(get_perl_version)
if [ "$perlver" -ge 22 ]; then
case "$1" in
@@ -565,11 +536,10 @@ maybe_patch_all()
fi
}
-maybe_patch_darwin()
-{
+maybe_patch_darwin() {
# Reminder: $1 = OTP release version
if [ "$1" -le 14 ]; then
- CFLAGS="-DERTS_DO_INCL_GLB_INLINE_FUNC_DEF"
+ CFLAGS='-DERTS_DO_INCL_GLB_INLINE_FUNC_DEF'
apply_darwin_compiler_patch >>"$LOGFILE"
elif [ "$1" -eq 16 ]; then
# TODO: Maybe check if clang version == 9
@@ -579,29 +549,27 @@ maybe_patch_darwin()
fi
}
-maybe_patch_sunos()
-{
+maybe_patch_sunos() {
if [ "$1" -le 14 ]; then
apply_solaris_networking_patch >>"$LOGFILE"
fi
}
-do_normal_build()
-{
+do_normal_build() {
assert_valid_release "$1"
assert_build_name_unused "$2"
FILENAME=""
download "$1"
mkdir -p "$KERL_BUILD_DIR/$2" || exit 1
if [ ! -d "$KERL_BUILD_DIR/$2/$FILENAME" ]; then
- echo "Extracting source code"
+ echo 'Extracting source code'
UNTARDIRNAME="$KERL_BUILD_DIR/$2/$FILENAME-kerluntar-$$"
rm -rf "$UNTARDIRNAME"
mkdir -p "$UNTARDIRNAME" || exit 1
# github tarballs have a directory in the form of "otp[_-]TAGNAME"
# Ericsson tarballs have the classic otp_src_RELEASE pattern
# Standardize on Ericsson format because that's what the rest of the script expects
- (cd "$UNTARDIRNAME" && tar xzf "$KERL_DOWNLOAD_DIR/$FILENAME.tar.gz" && mv -f ./* "$KERL_BUILD_DIR/$2/otp_src_$1")
+ (cd "$UNTARDIRNAME" && tar xzf "$KERL_DOWNLOAD_DIR/$FILENAME".tar.gz && mv -f ./* "$KERL_BUILD_DIR/$2/otp_src_$1")
rm -rf "$UNTARDIRNAME"
fi
@@ -611,9 +579,7 @@ do_normal_build()
list_add builds "$1,$2"
}
-_flags()
-{
-
+_flags() {
# We need to munge the LD and DED flags for clang 9 shipped with
# High Sierra (macOS 10.13)
case "$KERL_SYSTEM" in
@@ -624,10 +590,10 @@ _flags()
# Make sure we don't overwrite values that someone who
# knows better than us set.
if [ -z "$DED_LD" ]; then
- DED_LD="clang"
+ DED_LD='clang'
fi
if [ -z "$CC" ]; then
- CC="clang"
+ CC='clang'
fi
if [ -z "$DED_LDFLAGS" ]; then
host=$(./erts/autoconf/config.guess)
@@ -644,11 +610,9 @@ _flags()
CFLAGS="$CFLAGS" "$@"
;;
esac
-
}
-_do_build()
-{
+_do_build() {
case "$KERL_SYSTEM" in
Darwin)
OSVERSION=$(uname -r)
@@ -656,24 +620,24 @@ _do_build()
# Ensure that the --enable-darwin-64bit flag is set on all macOS
# That way even on older Erlangs we get 64 bit Erlang builds
# macOS has been mandatory 64 bit for a while
- if ! echo "$KERL_CONFIGURE_OPTIONS" | grep "darwin-64bit" >/dev/null 2>&1; then
- KERL_CONFIGURE_OPTIONS="$KERL_CONFIGURE_OPTIONS --enable-darwin-64bit"
+ if ! echo "$KERL_CONFIGURE_OPTIONS" | grep 'darwin-64bit' >/dev/null 2>&1; then
+ KERL_CONFIGURE_OPTIONS="$KERL_CONFIGURE_OPTIONS "--enable-darwin-64bit
fi
case "$OSVERSION" in
17*|16*|15*)
- if ! echo "$KERL_CONFIGURE_OPTIONS" | grep "ssl" >/dev/null 2>&1; then
+ if ! echo "$KERL_CONFIGURE_OPTIONS" | grep 'ssl' >/dev/null 2>&1; then
whichbrew=$(which brew)
if [ -n "$whichbrew" ] && [ -x "$whichbrew" ]; then
brew_prefix=$(brew --prefix openssl)
if [ -n "$brew_prefix" ] && [ -d "$brew_prefix" ]; then
- KERL_CONFIGURE_OPTIONS="$KERL_CONFIGURE_OPTIONS --with-ssl=$brew_prefix"
+ KERL_CONFIGURE_OPTIONS="$KERL_CONFIGURE_OPTIONS "--with-ssl=$brew_prefix
fi
elif [ ! -d /usr/include/openssl ] || [ ! -d /usr/local/include/openssl ]; then
# Apple removed OpenSSL from El Capitan, but its still in this
# funky location, so set ssl headers to look here
xc_ssl='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/usr'
- if [ -d "$xc_ssl/include/openssl" ]; then
+ if [ -d "$xc_ssl"/include/openssl ]; then
KERL_CONFIGURE_OPTIONS="$KERL_CONFIGURE_OPTIONS --with-ssl=$xc_ssl"
fi
unset xc_ssl
@@ -712,27 +676,27 @@ _do_build()
echo "$KERL_CONFIGURE_OPTIONS" >>"$TMPOPT"
SUM=$($MD5SUM "$TMPOPT" | cut -d ' ' -f $MD5SUM_FIELD)
# Check for a .kerl_config.md5 file
- if [ -e "./$KERL_CONFIG_STORAGE_FILENAME.md5" ]; then
+ if [ -e ./"$KERL_CONFIG_STORAGE_FILENAME".md5 ]; then
# Compare our current options to the saved ones
- read -r OLD_SUM <"./$KERL_CONFIG_STORAGE_FILENAME.md5"
+ read -r OLD_SUM <./"$KERL_CONFIG_STORAGE_FILENAME".md5
if [ "$SUM" != "$OLD_SUM" ]; then
- echo "Configure options have changed. Reconfiguring..."
+ echo 'Configure options have changed. Reconfiguring...'
rm -f configure
- mv "$TMPOPT" "./$KERL_CONFIG_STORAGE_FILENAME"
- echo "$SUM" >"./$KERL_CONFIG_STORAGE_FILENAME.md5"
+ mv "$TMPOPT" ./"$KERL_CONFIG_STORAGE_FILENAME"
+ echo "$SUM" >./"$KERL_CONFIG_STORAGE_FILENAME".md5
else
# configure options are the same
rm -f "$TMPOPT"
fi
else
# no file exists, so write one
- mv "$TMPOPT" ./.kerl_config
- echo "$SUM" >./.kerl_config.md5
+ mv "$TMPOPT" .kerl_config
+ echo "$SUM" >.kerl_config.md5
fi
# Don't apply patches to "custom" git builds. We have no idea if they will apply
# cleanly or not.
- if [ "$1" != "git" ]; then
+ if [ "$1" != 'git' ]; then
maybe_patch "$KERL_SYSTEM" "$1"
fi
if [ -n "$KERL_USE_AUTOCONF" ]; then
@@ -744,19 +708,19 @@ _do_build()
_flags ./otp_build configure $KERL_CONFIGURE_OPTIONS >>"$LOGFILE" 2>&1
fi
- if ! echo "$KERL_CONFIGURE_OPTIONS" | grep "--enable-native-libs" >/dev/null 2>&1; then
+ if ! echo "$KERL_CONFIGURE_OPTIONS" | grep '--enable-native-libs' >/dev/null 2>&1; then
make clean >>"$LOGFILE" 2>&1
# shellcheck disable=SC2086
if ! _flags ./otp_build configure $KERL_CONFIGURE_OPTIONS >>"$LOGFILE" 2>&1; then
- show_logfile "Configure failed." "$LOGFILE"
+ show_logfile 'Configure failed.' "$LOGFILE"
list_remove builds "$1 $2"
exit 1
fi
fi
- for SECTION in "APPLICATIONS DISABLED" \
- "APPLICATIONS INFORMATION" \
- "DOCUMENTATION INFORMATION"; do
+ for SECTION in 'APPLICATIONS DISABLED' \
+ 'APPLICATIONS INFORMATION' \
+ 'DOCUMENTATION INFORMATION'; do
show_configuration_warnings "$LOGFILE" "$SECTION"
done
@@ -781,19 +745,19 @@ _do_build()
# shellcheck disable=SC2086
if ! _flags ./otp_build boot -a $KERL_CONFIGURE_OPTIONS >>"$LOGFILE" 2>&1; then
- show_logfile "Build failed." "$LOGFILE"
+ show_logfile 'Build failed.' "$LOGFILE"
list_remove builds "$1 $2"
exit 1
fi
if [ -n "$KERL_BUILD_DOCS" ]; then
- echo "Building docs..."
+ echo 'Building docs...'
if ! make docs >>"$LOGFILE" 2>&1; then
- show_logfile "Building docs failed." "$LOGFILE"
+ show_logfile 'Building docs failed.' "$LOGFILE"
list_remove builds "$1 $2"
exit 1
fi
if ! make install-docs >>"$LOGFILE" 2>&1; then
- show_logfile "Installing docs failed." "$LOGFILE"
+ show_logfile 'Installing docs failed.' "$LOGFILE"
list_remove builds "$1 $2"
exit 1
fi
@@ -804,8 +768,7 @@ _do_build()
./Install $INSTALL_OPT "$KERL_BUILD_DIR/$2/release_$1" >/dev/null 2>&1
}
-do_install()
-{
+do_install() {
if ! rel=$(get_release_from_name "$1"); then
echo "No build named $1"
exit 1
@@ -826,8 +789,7 @@ do_install()
list_add installations "$1 $absdir";
cat <<ACTIVATE >"$absdir"/activate
# credits to virtualenv
-kerl_deactivate()
-{
+kerl_deactivate() {
if [ -n "\$_KERL_SAVED_ERL_AFLAGS" ]; then
ERL_AFLAGS="\$_KERL_SAVED_ERL_AFLAGS"
export ERL_AFLAGS
@@ -910,11 +872,11 @@ if [ -d "$absdir/lib/docsh" ]; then
export DOCSH_USER_DEFAULT="$absdir/lib/docsh/user_default"
export _KERL_DOCSH_USER_DEFAULT=yes
if [ -f "\$HOME/.erlang" ]; then
- if [ ! x"\$KERL_DOCSH_DOT_ERLANG" = x"exists" ]; then
+ if [ ! x"\$KERL_DOCSH_DOT_ERLANG" = x'exists' ]; then
echo "Couldn't symlink correct \$HOME/.erlang - file exists - docsh might not work."
echo "Please make sure \$HOME/.erlang contains code"
echo "from $absdir/lib/docsh/dot.erlang"
- echo "and export KERL_DOCSH_DOT_ERLANG=exists to suppress this warning."
+ echo 'and export KERL_DOCSH_DOT_ERLANG=exists to suppress this warning.'
fi
else
ln -s "$absdir/lib/docsh/dot.erlang" "\$HOME/.erlang"
@@ -926,7 +888,7 @@ if [ -n "\$BASH" -o -n "\$ZSH_VERSION" ]; then
fi
ACTIVATE
- cat <<ACTIVATE_FISH >"$absdir/activate.fish"
+ cat <<ACTIVATE_FISH >"$absdir"/activate.fish
# credits to virtualenv
function _kerl_remove_el --description 'remove element from array'
set -l new_array
@@ -1013,7 +975,7 @@ if test -d "$absdir/lib/docsh"
end
ACTIVATE_FISH
- cat <<ACTIVATE_CSH >"$absdir/activate.csh"
+ cat <<ACTIVATE_CSH >"$absdir"/activate.csh
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
@@ -1080,28 +1042,28 @@ rehash
ACTIVATE_CSH
if [ -n "$KERL_BUILD_DOCS" ]; then
- DOC_DIR="$KERL_BUILD_DIR/$1/release_$rel/lib/erlang"
+ DOC_DIR="$KERL_BUILD_DIR/$1/release_$rel"/lib/erlang
if [ -d "$DOC_DIR" ]; then
- echo "Installing docs..."
- cp $CP_OPT "$DOC_DIR/" "$absdir/lib"
- if [ -d "$absdir/lib/erlang/man" ]; then
- ln -s "$absdir/lib/erlang/man" "$absdir/man"
- ln -s "$absdir/lib/erlang/doc" "$absdir/html"
- elif [ -d "$absdir/lib/man" ]; then
- ln -s "$absdir/lib/man" "$absdir/man"
- ln -s "$absdir/lib/doc" "$absdir/html"
+ echo 'Installing docs...'
+ cp $CP_OPT "$DOC_DIR/" "$absdir"/lib
+ if [ -d "$absdir"/lib/erlang/man ]; then
+ ln -s "$absdir"/lib/erlang/man "$absdir"/man
+ ln -s "$absdir"/lib/erlang/doc "$absdir"/html
+ elif [ -d "$absdir"/lib/man ]; then
+ ln -s "$absdir"/lib/man "$absdir"/man
+ ln -s "$absdir"/lib/doc "$absdir"/html
fi
fi
else
- if [ "$KERL_BUILD_BACKEND" = "tarball" ]; then
- if [ "$rel" != "git" ]; then
+ if [ "$KERL_BUILD_BACKEND" = 'tarball' ]; then
+ if [ "$rel" != 'git' ]; then
if [ -n "$KERL_INSTALL_MANPAGES" ]; then
- echo "Fetching and installing manpages..."
+ echo 'Fetching and installing manpages...'
download_manpages "$rel"
fi
if [ -n "$KERL_INSTALL_HTMLDOCS" ]; then
- echo "Fetching and installing HTML docs..."
+ echo 'Fetching and installing HTML docs...'
download_htmldocs "$rel"
fi
fi
@@ -1112,7 +1074,7 @@ ACTIVATE_CSH
[ -e "$KERL_CONFIG_STORAGE_PATH" ] && cp "$KERL_CONFIG_STORAGE_PATH" "$absdir/$KERL_CONFIG_STORAGE_FILENAME"
if [ -n "$KERL_BUILD_PLT" ]; then
- echo "Building Dialyzer PLT..."
+ echo 'Building Dialyzer PLT...'
build_plt "$absdir"
fi
@@ -1122,25 +1084,25 @@ ACTIVATE_CSH
PARENT_CMD=$(ps -p $PARENT_PID -o ucomm | tail -n 1)
case "$PARENT_CMD" in
fish)
- SHELL_SUFFIX=".fish"
+ SHELL_SUFFIX='.fish'
;;
csh)
- SHELL_SUFFIX=".csh"
+ SHELL_SUFFIX='.csh'
;;
*)
- SHELL_SUFFIX=""
+ SHELL_SUFFIX=''
;;
esac
- echo "You can activate this installation running the following command:"
- echo ". ${absdir}/activate${SHELL_SUFFIX}"
- echo "Later on, you can leave the installation typing:"
- echo "kerl_deactivate"
+ echo 'You can activate this installation running the following command:'
+ echo ". $absdir/activate$SHELL_SUFFIX"
+ echo 'Later on, you can leave the installation typing:'
+ echo 'kerl_deactivate'
}
install_docsh() {
REPO_URL=$DOCSH_GITHUB_URL
- GIT=$(printf '%s' $REPO_URL | $MD5SUM | cut -d ' ' -f $MD5SUM_FIELD)
+ GIT=$(printf '%s' $REPO_URL | $MD5SUM | cut -d' ' -f $MD5SUM_FIELD)
BUILDNAME="$1"
DOCSH_DIR="$KERL_BUILD_DIR/$BUILDNAME/docsh"
DOCSH_REF='0.5.0'
@@ -1156,16 +1118,16 @@ install_docsh() {
mkdir -p "$KERL_GIT_DIR" || exit 1
cd "$KERL_GIT_DIR" || exit 1
- echo "Checking out docsh git repository from ${REPO_URL}..."
+ echo "Checking out docsh git repository from $REPO_URL..."
if [ ! -d "$GIT" ]; then
if ! git clone -q --mirror "$REPO_URL" "$GIT" >/dev/null 2>&1; then
- echo "Error mirroring remote git repository"
+ echo 'Error mirroring remote git repository'
exit 1
fi
fi
cd "$GIT" || exit 1
if ! git remote update --prune >/dev/null 2>&1; then
- echo "Error updating remote git repository"
+ echo 'Error updating remote git repository'
exit 1
fi
@@ -1173,20 +1135,20 @@ install_docsh() {
mkdir -p "$DOCSH_DIR" || exit 1
cd "$DOCSH_DIR" || exit 1
if ! git clone -l "$KERL_GIT_DIR/$GIT" "$DOCSH_DIR" >/dev/null 2>&1; then
- echo "Error cloning local git repository"
+ echo 'Error cloning local git repository'
exit 1
fi
cd "$DOCSH_DIR" || exit 1
if ! git checkout "$DOCSH_REF" >/dev/null 2>&1; then
if ! git checkout -b "$DOCSH_REF" "$DOCSH_REF" >/dev/null 2>&1; then
- echo "Couldn't checkout specified version"
+ echo 'Could not checkout specified version'
rm -Rf "$DOCSH_DIR"
exit 1
fi
fi
if ! ./rebar3 compile; then
- echo "Couldn't compile docsh"
+ echo 'Could not compile docsh'
rm -Rf "$DOCSH_DIR"
exit 1
fi
@@ -1212,7 +1174,7 @@ install_docsh() {
echo "$HOME/.erlang exists - kerl won't be able to symlink a docsh-compatible version."
echo "Please make sure your $HOME/.erlang contains code"
echo "from $ACTIVE_PATH/lib/docsh/dot.erlang"
- echo "and export KERL_DOCSH_DOT_ERLANG=exists to suppress further warnings"
+ echo 'and export KERL_DOCSH_DOT_ERLANG=exists to suppress further warnings'
fi
## Install docsh user_default
if [ -f "$ACTIVE_PATH"/lib/docsh/user_default.beam ]; then
@@ -1224,25 +1186,21 @@ install_docsh() {
fi
}
-download_manpages()
-{
+download_manpages() {
FILENAME=otp_doc_man_$1.tar.gz
tarball_download "$FILENAME"
- echo "Extracting manpages"
+ echo 'Extracting manpages'
cd "$absdir" && tar xzf "$KERL_DOWNLOAD_DIR/$FILENAME"
}
-download_htmldocs()
-{
- FILENAME="otp_doc_html_$1.tar.gz"
+download_htmldocs() {
+ FILENAME=otp_doc_html_"$1".tar.gz
tarball_download "$FILENAME"
- echo "Extracting HTML docs"
- (cd "$absdir" && mkdir -p html && \
- tar -C "$absdir/html" -xzf "$KERL_DOWNLOAD_DIR/$FILENAME")
+ echo 'Extracting HTML docs'
+ (cd "$absdir" && mkdir -p html && tar -C "$absdir"/html -xzf "$KERL_DOWNLOAD_DIR/$FILENAME")
}
-build_plt()
-{
+build_plt() {
dialyzerd="$1"/dialyzer
mkdir -p "$dialyzerd" || exit 1
plt="$dialyzerd"/plt
@@ -1261,42 +1219,39 @@ build_plt()
fi
}
-do_plt()
-{
+do_plt() {
ACTIVE_PATH="$1"
if [ -n "$ACTIVE_PATH" ]; then
plt="$ACTIVE_PATH"/dialyzer/plt
if [ -f "$plt" ]; then
- echo "Dialyzer PLT for the active installation is:"
+ echo 'Dialyzer PLT for the active installation is:'
echo "$plt"
return 0
else
- echo "There's no Dialyzer PLT for the active installation"
+ echo 'There is no Dialyzer PLT for the active installation'
return 1
fi
else
- echo "No Erlang/OTP installation is currently active"
+ echo 'No Erlang/OTP installation is currently active'
return 2
fi
}
-print_buildopts()
-{
+print_buildopts() {
buildopts="$1/$KERL_CONFIG_STORAGE_FILENAME"
if [ -f "$buildopts" ]; then
- echo "The build options for the active installation are:"
+ echo 'The build options for the active installation are:'
cat "$buildopts"
return 0
else
- echo "The build options for the active installation are not available."
+ echo 'The build options for the active installation are not available.'
return 1
fi
}
-do_deploy()
-{
+do_deploy() {
if [ -z "$1" ]; then
- echo "No host given"
+ echo 'No host given'
exit 1
fi
host="$1"
@@ -1338,8 +1293,8 @@ do_deploy()
echo "On $host, you can activate this installation running the following command:"
echo ". $remotepath/activate"
- echo "Later on, you can leave the installation typing:"
- echo "kerl_deactivate"
+ echo 'Later on, you can leave the installation typing:'
+ echo 'kerl_deactivate'
}
@@ -1411,13 +1366,11 @@ _canonicalize_file_path() {
# END QUOTE
-is_valid_install_path()
-{
-
+is_valid_install_path() {
# don't allow installs into .erlang because
# it's a special configuration file location for OTP
- if [ "$(basename -- "$1")" = ".erlang" ]; then
- echo "ERROR: You cannot install a build into '.erlang'. (It's a special configuration file location for OTP.)"
+ if [ "$(basename -- "$1")" = '.erlang' ]; then
+ echo 'ERROR: You cannot install a build into .erlang. (It is a special configuration file location for OTP.)'
return 1
fi
@@ -1461,8 +1414,7 @@ is_valid_install_path()
return 0
}
-maybe_remove()
-{
+maybe_remove() {
candidate=$(realpath "$1")
canonical_home=$(realpath "$HOME")
@@ -1473,17 +1425,16 @@ maybe_remove()
ACTIVE_PATH="$(get_active_path)"
if [ "$candidate" = "$ACTIVE_PATH" ]; then
- echo "ERROR: You cannot delete the active installation. Deactivate it first."
+ echo 'ERROR: You cannot delete the active installation. Deactivate it first.'
exit 1
fi
rm -Rf "$1"
}
-list_print()
-{
+list_print() {
if [ -f "$KERL_BASE_DIR/otp_$1" ]; then
- if [ "$(wc -l "$KERL_BASE_DIR/otp_$1")" != "0" ]; then
+ if [ "$(wc -l "$KERL_BASE_DIR/otp_$1")" -ne 0 ]; then
if [ -z "$2" ]; then
cat "$KERL_BASE_DIR/otp_$1"
else
@@ -1495,8 +1446,7 @@ list_print()
echo "There are no $1 available"
}
-list_add()
-{
+list_add() {
if [ -f "$KERL_BASE_DIR/otp_$1" ]; then
while read -r l; do
if [ "$l" = "$2" ]; then
@@ -1509,85 +1459,73 @@ list_add()
fi
}
-list_remove()
-{
+list_remove() {
if [ -f "$KERL_BASE_DIR/otp_$1" ]; then
sed $SED_OPT -i -e "/^.*$2$/d" "$KERL_BASE_DIR/otp_$1" || exit 1
fi
}
-list_has()
-{
+list_has() {
if [ -f "$KERL_BASE_DIR/otp_$1" ]; then
grep "$2" "$KERL_BASE_DIR/otp_$1" >/dev/null 2>&1 && return 0
fi
return 1
}
-path_usage()
-{
+path_usage() {
echo "usage: $0 path [<install_name>]"
}
-list_usage()
-{
+list_usage() {
echo "usage: $0 list <releases|builds|installations>"
}
-delete_usage()
-{
+delete_usage() {
echo "usage: $0 delete <build|installation> <build_name or path>"
}
-cleanup_usage()
-{
+cleanup_usage() {
echo "usage: $0 cleanup <build_name|all>"
}
-update_usage()
-{
+update_usage() {
echo "usage: $0 update releases"
}
-get_active_path()
-{
+get_active_path() {
if [ -n "$_KERL_ACTIVE_DIR" ]; then
echo "$_KERL_ACTIVE_DIR"
fi
return 0
}
-get_name_from_install_path()
-{
+get_name_from_install_path() {
if [ -f "$KERL_BASE_DIR"/otp_installations ]; then
grep -m1 -E "$1$" "$KERL_BASE_DIR"/otp_installations | cut -d' ' -f1
fi
return 0
}
-get_install_path_from_name()
-{
+get_install_path_from_name() {
if [ -f "$KERL_BASE_DIR"/otp_installations ]; then
grep -m1 -E "$1$" "$KERL_BASE_DIR"/otp_installations | cut -d' ' -f2
fi
return 0
}
-do_active()
-{
+do_active() {
ACTIVE_PATH="$(get_active_path)"
if [ -n "$ACTIVE_PATH" ]; then
- echo "The current active installation is:"
+ echo 'The current active installation is:'
echo "$ACTIVE_PATH"
return 0
else
- echo "No Erlang/OTP installation is currently active"
+ echo 'No Erlang/OTP installation is currently active'
return 1
fi
}
-make_filename()
-{
+make_filename() {
release=$(get_otp_version "$1")
if [ "$release" -ge 17 ]; then
echo "OTP-$1"
@@ -1596,20 +1534,18 @@ make_filename()
fi
}
-download()
-{
+download() {
mkdir -p "$KERL_DOWNLOAD_DIR" || exit 1
- if [ "$KERL_BUILD_BACKEND" = "git" ]; then
+ if [ "$KERL_BUILD_BACKEND" = 'git' ]; then
FILENAME=$(make_filename "$1")
- github_download "$FILENAME.tar.gz"
+ github_download "$FILENAME".tar.gz
else
FILENAME="otp_src_$1"
- tarball_download "$FILENAME.tar.gz"
+ tarball_download "$FILENAME".tar.gz
fi
}
-github_download()
-{
+github_download() {
# if the file doesn't exist or the file has no size
if [ ! -s "$KERL_DOWNLOAD_DIR/$1" ]; then
echo "Downloading $1 to $KERL_DOWNLOAD_DIR"
@@ -1617,17 +1553,16 @@ github_download()
fi
}
-tarball_download()
-{
+tarball_download() {
if [ ! -s "$KERL_DOWNLOAD_DIR/$1" ]; then
echo "Downloading $1 to $KERL_DOWNLOAD_DIR"
curl -f -L -o "$KERL_DOWNLOAD_DIR/$1" "$ERLANG_DOWNLOAD_URL/$1" || exit 1
update_checksum_file
fi
ensure_checksum_file
- echo "Verifying archive checksum..."
- SUM="$($MD5SUM "$KERL_DOWNLOAD_DIR/$1" | cut -d ' ' -f $MD5SUM_FIELD)"
- ORIG_SUM="$(grep -F "$1" "$KERL_DOWNLOAD_DIR"/MD5 | cut -d ' ' -f 2)"
+ echo 'Verifying archive checksum...'
+ SUM="$($MD5SUM "$KERL_DOWNLOAD_DIR/$1" | cut -d' ' -f $MD5SUM_FIELD)"
+ ORIG_SUM="$(grep -F "$1" "$KERL_DOWNLOAD_DIR"/MD5 | cut -d' ' -f2)"
if [ "$SUM" != "$ORIG_SUM" ]; then
echo "Checksum error, check the files in $KERL_DOWNLOAD_DIR"
exit 1
@@ -1635,8 +1570,7 @@ tarball_download()
echo "Checksum verified ($SUM)"
}
-apply_solaris_networking_patch()
-{
+apply_solaris_networking_patch() {
patch -p1 <<_END_PATCH
--- otp-a/erts/emulator/drivers/common/inet_drv.c
+++ otp-b/erts/emulator/drivers/common/inet_drv.c
@@ -1661,8 +1595,7 @@ apply_solaris_networking_patch()
_END_PATCH
}
-apply_darwin_compiler_patch()
-{
+apply_darwin_compiler_patch() {
patch -p0 <<_END_PATCH
--- erts/emulator/beam/beam_bp.c.orig 2011-10-03 13:12:07.000000000 -0500
+++ erts/emulator/beam/beam_bp.c 2013-10-04 13:42:03.000000000 -0500
@@ -1712,8 +1645,7 @@ _END_PATCH
# javadoc 8 includes always-enabled document linting which causes
# documentation builds to fail on older OTP releases.
-apply_javadoc_linting_patch()
-{
+apply_javadoc_linting_patch() {
# The _END_PATCH token is quoted below to disable parameter substitution
patch -p0 <<'_END_PATCH'
--- lib/jinterface/doc/src/Makefile.orig 2016-05-23 14:34:48.000000000 -0500
@@ -1731,8 +1663,7 @@ _END_PATCH
}
# perl 5.24 fatalizes the warning this causes
-apply_r14_beam_makeops_patch()
-{
+apply_r14_beam_makeops_patch() {
patch -p0 <<'_END_PATCH'
--- erts/emulator/utils/beam_makeops.orig 2016-05-23 21:40:42.000000000 -0500
+++ erts/emulator/utils/beam_makeops 2016-05-23 21:41:08.000000000 -0500
@@ -1749,8 +1680,7 @@ _END_PATCH
}
# https://github.com/erlang/otp/commit/21ca6d3a137034f19862db769a5b7f1c5528dbc4.diff
-apply_r15_beam_makeops_patch()
-{
+apply_r15_beam_makeops_patch() {
patch -p1 <<'_END_PATCH'
--- a/erts/emulator/utils/beam_makeops
+++ b/erts/emulator/utils/beam_makeops
@@ -1766,8 +1696,7 @@ _END_PATCH
}
#https://github.com/erlang/otp/commit/a64c4d806fa54848c35632114585ad82b98712e8.diff
-apply_wx_ptr_patch()
-{
+apply_wx_ptr_patch() {
patch -p1 <<'_END_PATCH'
diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
index 0d2da5d4a79..8118136d30e 100644
@@ -1794,8 +1723,7 @@ index 0d2da5d4a79..8118136d30e 100644
_END_PATCH
}
-apply_r16_wx_ptr_patch()
-{
+apply_r16_wx_ptr_patch() {
patch -p1 <<'_END_PATCH'
diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
index cc9bcc995..1b1912630 100644
@@ -1915,7 +1843,7 @@ case "$1" in
exit 0
;;
build)
- if [ "$2" = "git" ]; then
+ if [ "$2" = 'git' ]; then
if [ $# -ne 5 ]; then
echo "usage: $0 $1 $2 <git_url> <git_version> <build_name>"
exit 1
@@ -1958,9 +1886,9 @@ case "$1" in
BUILDNAME="$ACTIVE_NAME"
fi
install_docsh "$BUILDNAME" "$ACTIVE_PATH"
- echo "Please kerl_deactivate and activate again to enable docsh"
+ echo 'Please kerl_deactivate and activate again to enable docsh'
else
- echo "No Erlang/OTP installation is currently active - can't install docsh"
+ echo 'No Erlang/OTP installation is currently active - cannot install docsh'
exit 1
fi
;;
@@ -1975,7 +1903,7 @@ case "$1" in
if [ $# -eq 3 ]; then
do_deploy "$2" "$3"
else
- do_deploy "$2" '.'
+ do_deploy "$2" .
fi
fi
;;
@@ -1988,7 +1916,7 @@ case "$1" in
releases)
rm -f "${KERL_BASE_DIR:?}"/otp_releases
check_releases
- echo "The available releases are:"
+ echo 'The available releases are:'
list_print releases spaces
;;
*)
@@ -2030,7 +1958,7 @@ case "$1" in
if [ -z "$2" ]; then
activepath=$(get_active_path)
if [ -z "$activepath" ]; then
- echo "No active kerl-managed erlang installation"
+ echo 'No active kerl-managed erlang installation'
exit 1
fi
echo "$activepath"
@@ -2045,13 +1973,13 @@ case "$1" in
if [ -z "$match" ]; then
match="$ins"
else
- echo "Error: too many matching installations" >&2
+ echo 'Error: too many matching installations' >&2
exit 2
fi
fi
done
[ -n "$match" ] && echo "$match" && exit 0
- echo "Error: no matching installation found" >&2 && exit 1
+ echo 'Error: no matching installation found' >&2 && exit 1
fi
;;
delete)
@@ -2103,26 +2031,26 @@ case "$1" in
fi
;;
status)
- echo "Available builds:"
+ echo 'Available builds:'
list_print builds
- echo "----------"
- echo "Available installations:"
+ echo '----------'
+ echo 'Available installations:'
list_print installations
- echo "----------"
+ echo '----------'
if do_active; then
ACTIVE_PATH=$(get_active_path)
if [ -n "$ACTIVE_PATH" ]; then
do_plt "$ACTIVE_PATH"
print_buildopts "$ACTIVE_PATH"
else
- echo "No Erlang/OTP installation is currently active"
+ echo 'No Erlang/OTP installation is currently active'
exit 1
fi
fi
exit 0
;;
prompt)
- FMT=" (%s)"
+ FMT=' (%s)'
if [ -n "$2" ]; then
FMT="$2"
fi
@@ -2146,7 +2074,7 @@ case "$1" in
fi
case "$2" in
all)
- echo "Cleaning up compilation products for ALL builds"
+ echo 'Cleaning up compilation products for ALL builds'
rm -rf "${KERL_BUILD_DIR:?}"/*
rm -rf "${KERL_DOWNLOAD_DIR:?}"/*
rm -rf "${KERL_GIT_DIR:?}"/*