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