[ 
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)

Reply via email to