The branch, master has been updated
       via  0c7fdf7 Add solaris xattr support to the tests. Change the xattr 
case statements to use $HOST_OS. (Slightly tweaked version of a Ben Walton 
patch.)
       via  439d5d8 Better fakeroot support helps Solaris.
      from  de21910 Change stat order for better ELOOP determination.

;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0c7fdf705ec0ef4393d4af3f87de5f13956ece45
Author: Wayne Davison <way...@samba.org>
Date:   Tue Sep 20 13:19:39 2011 -0700

    Add solaris xattr support to the tests.
    Change the xattr case statements to use $HOST_OS.
    (Slightly tweaked version of a Ben Walton patch.)

commit 439d5d89295a27ba57a11b17633601d8c5d7f8e6
Author: Wayne Davison <way...@samba.org>
Date:   Tue Sep 20 13:10:02 2011 -0700

    Better fakeroot support helps Solaris.

-----------------------------------------------------------------------

Summary of changes:
 configure.ac           |    6 +++++-
 shconfig.in            |    5 ++++-
 testsuite/chown.test   |   19 +++++++++++++++----
 testsuite/devices.test |   24 ++++++++++++++++++++----
 testsuite/xattrs.test  |   25 +++++++++++++++++++++++--
 5 files changed, 67 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/configure.ac b/configure.ac
index 8962b15..58aeea0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -134,6 +134,10 @@ else
     MAKE_MAN=man-copy
 fi
 
+# Some programs on solaris are only found in /usr/xpg4/bin (or work better 
than others versions).
+AC_PATH_PROG(SHELL_PATH, sh, /bin/sh, [/usr/xpg4/bin$PATH_SEPARATOR$PATH])
+AC_PATH_PROG(FAKEROOT_PATH, fakeroot, /usr/bin/fakeroot, 
[/usr/xpg4/bin$PATH_SEPARATOR$PATH])
+
 AC_ARG_WITH(nobody-group,
     AC_HELP_STRING([--with-nobody-group=GROUP],
                   [set the default unprivileged group (default nobody or 
nogroup)]),
@@ -942,7 +946,7 @@ else
        AC_DEFINE(HAVE_UNIXWARE_ACLS, 1, [true if you have UnixWare ACLs])
        AC_DEFINE(SUPPORT_ACLS, 1, [Define to 1 to add support for ACLs])
        ;;
-    *solaris*|*cygwin*)
+    solaris*|*cygwin*)
        AC_MSG_RESULT(Using solaris ACLs)
        AC_DEFINE(HAVE_SOLARIS_ACLS, 1, [true if you have solaris ACLs])
        AC_DEFINE(SUPPORT_ACLS, 1)
diff --git a/shconfig.in b/shconfig.in
index 9e5dd55..5d1fdc5 100755
--- a/shconfig.in
+++ b/shconfig.in
@@ -8,5 +8,8 @@
 ECHO_T="@ECHO_T@"
 ECHO_N="@ECHO_N@"
 ECHO_C="@ECHO_C@"
+HOST_OS="@host_os@"
+SHELL_PATH="@SHELL_PATH@"
+FAKEROOT_PATH="@FAKEROOT_PATH@"
 
-export ECHO_T ECHO_N ECHO_C
+export ECHO_T ECHO_N ECHO_C HOST_OS SHELL_PATH FAKEROOT_PATH
diff --git a/testsuite/chown.test b/testsuite/chown.test
index d238a8f..30a3a94 100644
--- a/testsuite/chown.test
+++ b/testsuite/chown.test
@@ -18,14 +18,25 @@ case $0 in
     $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs 
xattrs for fake device tests"
     RSYNC="$RSYNC --fake-super"
     TLS_ARGS="$TLS_ARGS --fake-super"
-    case "`xattr 2>&1 || true`" in
-    *--list:*)
+    case "$HOST_OS" in
+    darwin*)
        chown() {
            own=$1
            shift
            xattr -s 'rsync.%stat' "100644 0,0 $own" "${@}"
        }
        ;;
+    solaris*)
+       chown() {
+           own=$1
+           shift
+           for fn in "${@}"; do
+               runat "$fn" "$SHELL_PATH" <<EOF
+echo "100644 0,0 $own" > rsync.%stat
+EOF
+           done
+       }
+       ;;
     *)
        chown() {
            own=$1
@@ -40,9 +51,9 @@ case $0 in
     case `get_testuid` in
     '') ;; # If "id" failed, try to continue...
     0)  ;;
-    *)  if [ -f /usr/bin/fakeroot ]; then
+    *)  if [ -e "$FAKEROOT_PATH" ]; then
            echo "Let's try re-running the script under fakeroot..."
-           exec /usr/bin/fakeroot /bin/sh "$0"
+           exec "$FAKEROOT_PATH" "$SHELL_PATH" "$0"
        fi
        ;;
     esac
diff --git a/testsuite/devices.test b/testsuite/devices.test
index a85954b..a924513 100644
--- a/testsuite/devices.test
+++ b/testsuite/devices.test
@@ -19,8 +19,8 @@ case $0 in
     $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs 
xattrs for fake device tests"
     RSYNC="$RSYNC --fake-super"
     TLS_ARGS="$TLS_ARGS --fake-super"
-    case "`xattr 2>&1 || true`" in
-    *--list:*)
+    case "$HOST_OS" in
+    darwin*)
        mknod() {
            fn="$1"
            case "$2" in
@@ -34,6 +34,22 @@ case $0 in
            xattr -s 'rsync.%stat' "$mode $maj,$min 0:0" "$fn"
        }
        ;;
+    solaris*)
+       mknod() {
+           fn="$1"
+           case "$2" in
+           p) mode=10644 ;;
+           c) mode=20644 ;;
+           b) mode=60644 ;;
+           esac
+           maj="${3:-0}"
+           min="${4:-0}"
+           touch "$fn"
+           runat "$fn" "$SHELL_PATH" <<EOF
+echo "$mode $maj,$min 0:0" > rsync.%stat
+EOF
+       }
+       ;;
     *)
        mknod() {
            fn="$1"
@@ -54,9 +70,9 @@ case $0 in
     case `get_testuid` in
     '') ;; # If "id" failed, try to continue...
     0)  ;;
-    *)  if [ -f /usr/bin/fakeroot ]; then
+    *)  if [ -e "$FAKEROOT_PATH" ]; then
            echo "Let's try re-running the script under fakeroot..."
-           exec /usr/bin/fakeroot /bin/sh $RUNSHFLAGS "$0"
+           exec "$FAKEROOT_PATH" "$SHELL_PATH" $RUNSHFLAGS "$0"
        fi
        test_skipped "Rsync needs root/fakeroot for device tests"
        ;;
diff --git a/testsuite/xattrs.test b/testsuite/xattrs.test
index c1846df..06afcba 100644
--- a/testsuite/xattrs.test
+++ b/testsuite/xattrs.test
@@ -10,8 +10,8 @@ lnkdir="$tmpdir/lnk"
 
 $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync is 
configured without xattr support"
 
-case "`xattr 2>&1 || true`" in
-*--list:*)
+case "$HOST_OS" in
+darwin*)
     xset() {
        xnam="$1"
        xval="$2"
@@ -24,6 +24,27 @@ case "`xattr 2>&1 || true`" in
     RSYNC_PREFIX='rsync'
     RUSR='rsync.nonuser'
     ;;
+solaris*)
+    xset() {
+       xnam="$1"
+       xval="$2"
+       shift 2
+       for fn in "${@}"; do
+           runat "$fn" "$SHELL_PATH" <<EOF
+echo "${xval}" > "${xnam}"
+EOF
+       done
+    }
+    xls() {
+       for fn in "${@}"; do
+           runat "$fn" "$SHELL_PATH" <<EOF
+for x in *; do echo "\$x=\`cat \$x\`"; done
+EOF
+       done
+    }
+    RSYNC_PREFIX='rsync'
+    RUSR='rsync.nonuser'
+    ;;
 *)
     xset() {
        xnam="$1"


-- 
The rsync repository.
_______________________________________________
rsync-cvs mailing list
rsync-cvs@lists.samba.org
https://lists.samba.org/mailman/listinfo/rsync-cvs

Reply via email to