[ https://issues.apache.org/jira/browse/KARAF-5190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16520974#comment-16520974 ]
ASF GitHub Bot commented on KARAF-5190: --------------------------------------- jbonofre closed pull request #533: [KARAF-5190] Enhance realpath() function to better manage awk on Solaris URL: https://github.com/apache/karaf/pull/533 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/client b/assemblies/features/base/src/main/filtered-resources/resources/bin/client index c4d1d429be..dc48f77d90 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/client +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/client @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) - if [ -z "${READLINK_EXISTS}" ]; then + if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 @@ -35,7 +45,7 @@ realpath() { cd "$(dirname "${1}")" || exit 2 LINK=$(readlink "$(basename "${1}")") while [ "${LINK}" ]; do - echo "link: ${LINK}" >&2 + echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 LINK=$(readlink "$(basename "${1}")") done diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/inc b/assemblies/features/base/src/main/filtered-resources/resources/bin/inc index bbdd495732..f9b7050d2a 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/inc +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/inc @@ -218,17 +218,17 @@ detectJVM() { checkJvmVersion() { # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk if ${solaris}; then if [ -x /usr/xpg4/bin/awk ]; then - VERSION=$("${JAVA}" -version 2>&1 | /usr/xpg4/bin/awk -F '"' '/version/ {print $2}' | sed -e 's/_.*//g; s/^1\.//g; s/\..*//g; s/-.*//g;') + AWK=/usr/xpg4/bin/awk elif [ -x /usr/bin/nawk ]; then - VERSION=$("${JAVA}" -version 2>&1 | /usr/bin/nawk -F '"' '/version/ {print $2}' | sed -e 's/_.*//g; s/^1\.//g; s/\..*//g; s/-.*//g;') - else - VERSION=$("${JAVA}" -version 2>&1 | awk -F '"' '/version/ {print $2}' | sed -e 's/_.*//g; s/^1\.//g; s/\..*//g; s/-.*//g;') + AWK=/usr/bin/nawk fi - else - VERSION=$("${JAVA}" -version 2>&1 | awk -F '"' '/version/ {print $2}' | sed -e 's/_.*//g; s/^1\.//g; s/\..*//g; s/-.*//g;') fi + + VERSION=$("${JAVA}" -version 2>&1 | ${AWK} -F '"' '/version/ {print $2}' | sed -e 's/_.*//g; s/^1\.//g; s/\..*//g; s/-.*//g;') + # java must be at least version 8 if [ "${VERSION}" -lt "8" ]; then die "JVM must be greater than 1.8" diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance index 89e9ef3323..733ef7461b 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) - if [ -z "${READLINK_EXISTS}" ]; then + if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 @@ -35,7 +45,7 @@ realpath() { cd "$(dirname "${1}")" || exit 2 LINK=$(readlink "$(basename "${1}")") while [ "${LINK}" ]; do - echo "link: ${LINK}" >&2 + echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 LINK=$(readlink "$(basename "${1}")") done diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf index c144365658..c79a40b0a9 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell b/assemblies/features/base/src/main/filtered-resources/resources/bin/shell index f5d473a725..3f833f88d8 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/shell @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) - if [ -z "${READLINK_EXISTS}" ]; then + if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 @@ -35,7 +45,7 @@ realpath() { cd "$(dirname "${1}")" || exit 2 LINK=$(readlink "$(basename "${1}")") while [ "${LINK}" ]; do - echo "link: ${LINK}" >&2 + echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 LINK=$(readlink "$(basename "${1}")") done diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/start b/assemblies/features/base/src/main/filtered-resources/resources/bin/start index b1b384481c..047ed1bec1 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/start +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/start @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) - if [ -z "${READLINK_EXISTS}" ]; then + if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 @@ -35,7 +45,7 @@ realpath() { cd "$(dirname "${1}")" || exit 2 LINK=$(readlink "$(basename "${1}")") while [ "${LINK}" ]; do - echo "link: ${LINK}" >&2 + echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 LINK=$(readlink "$(basename "${1}")") done diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/status b/assemblies/features/base/src/main/filtered-resources/resources/bin/status index 53e10a7268..ab05b60519 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/status +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/status @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) - if [ -z "${READLINK_EXISTS}" ]; then + if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 @@ -35,7 +45,7 @@ realpath() { cd "$(dirname "${1}")" || exit 2 LINK=$(readlink "$(basename "${1}")") while [ "${LINK}" ]; do - echo "link: ${LINK}" >&2 + echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 LINK=$(readlink "$(basename "${1}")") done diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop b/assemblies/features/base/src/main/filtered-resources/resources/bin/stop index 60b498df49..014e71aadc 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/stop @@ -17,15 +17,25 @@ # realpath() { + # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated + AWK=awk + if ${solaris}; then + if [ -x /usr/xpg4/bin/awk ]; then + AWK=/usr/xpg4/bin/awk + elif [ -x /usr/bin/nawk ]; then + AWK=/usr/bin/nawk + fi + fi + READLINK_EXISTS=$(command -v readlink &> /dev/null) - if [ -z "${READLINK_EXISTS}" ]; then + if [ -z "$READLINK_EXISTS" ]; then OURPWD=${PWD} cd "$(dirname "${1}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') while [ "${LINK}" ]; do echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 - LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" cd "${OURPWD}" || exit 2 @@ -35,7 +45,7 @@ realpath() { cd "$(dirname "${1}")" || exit 2 LINK=$(readlink "$(basename "${1}")") while [ "${LINK}" ]; do - echo "link: ${LINK}" >&2 + echo "link: ${LINK}" >&2 cd "$(dirname "${LINK}")" || exit 2 LINK=$(readlink "$(basename "${1}")") done ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > start.sh fails in realpath function under Solaris 10 > ---------------------------------------------------- > > Key: KARAF-5190 > URL: https://issues.apache.org/jira/browse/KARAF-5190 > Project: Karaf > Issue Type: Bug > Affects Versions: 4.0.9 > Environment: SunOS 5.10 (aka Solaris 10) SPARC, awk from /usr/bin > Reporter: Christian Brüssow > Priority: Major > > Trying to start Apache Karaf 4.0.9 under Solaris 10 (SPARC) the start-script > exits with a syntax error: > {quote} > $ /opt/test/karaf/bin/start: syntax error at line 22: `LINK=$' unexpected > {quote} > I have investigated this and found, the script relies on a feature the > standard awk for this plattform does not support - at least on our machine. > The \-F"\-> " paramter will only use the dash "\-" as the field separator. > When using the XPG4 version of awk the script works. > Examples on the command line: > With XPG4 awk: > {quote} > $ ls \-l "$(basename ".bashrc")" | /usr/xpg4/bin/awk \-F"\-> " '\{print $2\}' > $ > {quote} > Empty output, which is fine as the file used is no link. > With the standard awk: > {quote} > $ ls \-l "$(basename ".bashrc")" | /usr/bin/awk \-F"\-> " '\{print $2\}' > rw > $ > {quote} > The "rw" is returned, because only the dash is used as a seperator to split > "ls \-l .bashrc" which looks like > {quote} > \-rw\-r\-\-r\-\- 1 devel other 392 Jun 30 2015 .bashrc > {quote} > in this case. > Sadly, under Solaris, one should not presume the awk in the PATH is a GNU or > nawk. Some adminstrator will also not include the XPG4 "bin"-directory at the > beginning of the PATH. So the script itfself must handle this. -- This message was sent by Atlassian JIRA (v7.6.3#76005)