From fa958f4a995d686b03c353b763760c5cd78aa2b8 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Wed, 14 Mar 2018 14:47:05 +0800 Subject: openvswitch: bump to version 2.8.2 Changes since 2.8.2 as recorded in NEWS-2.8.2 - NSH implementation now conforms to latest draft (draft-ietf-sfc-nsh-28). - Bug fixes 0006-adapt-ovs-scripts.patch was splited into two separate patches as the original patch does not apply against 2.8.2 anymore. Other patches are just re-numbered without actual function change Signed-off-by: Yousong Zhou --- .../patches/0001-musl-compatibility.patch | 39 ++++++++++++++ ...tdev-linux-Use-unsigned-int-for-ifi_flags.patch | 28 ---------- ...x-Let-interface-flag-survive-internal-por.patch | 41 --------------- ...rate-host-target-python-for-cross-compile.patch | 59 ---------------------- .../patches/0004-musl-compatibility.patch | 39 -------------- .../patches/0006-adapt-ovs-scripts.patch | 30 ----------- ...tdev-linux-Use-unsigned-int-for-ifi_flags.patch | 28 ++++++++++ ...x-Let-interface-flag-survive-internal-por.patch | 41 +++++++++++++++ ...rate-host-target-python-for-cross-compile.patch | 59 ++++++++++++++++++++++ .../0103-ovs-ctl-fix-setting-hostname.patch | 33 ++++++++++++ .../patches/0104-ovs-lib-fix-install_dir.patch | 31 ++++++++++++ 11 files changed, 231 insertions(+), 197 deletions(-) create mode 100644 net/openvswitch/patches/0001-musl-compatibility.patch delete mode 100644 net/openvswitch/patches/0001-netdev-linux-Use-unsigned-int-for-ifi_flags.patch delete mode 100644 net/openvswitch/patches/0002-netdev-linux-Let-interface-flag-survive-internal-por.patch delete mode 100644 net/openvswitch/patches/0003-python-separate-host-target-python-for-cross-compile.patch delete mode 100644 net/openvswitch/patches/0004-musl-compatibility.patch delete mode 100644 net/openvswitch/patches/0006-adapt-ovs-scripts.patch create mode 100644 net/openvswitch/patches/0100-netdev-linux-Use-unsigned-int-for-ifi_flags.patch create mode 100644 net/openvswitch/patches/0101-netdev-linux-Let-interface-flag-survive-internal-por.patch create mode 100644 net/openvswitch/patches/0102-python-separate-host-target-python-for-cross-compile.patch create mode 100644 net/openvswitch/patches/0103-ovs-ctl-fix-setting-hostname.patch create mode 100644 net/openvswitch/patches/0104-ovs-lib-fix-install_dir.patch (limited to 'net/openvswitch/patches') diff --git a/net/openvswitch/patches/0001-musl-compatibility.patch b/net/openvswitch/patches/0001-musl-compatibility.patch new file mode 100644 index 000000000..ddcc5fc61 --- /dev/null +++ b/net/openvswitch/patches/0001-musl-compatibility.patch @@ -0,0 +1,39 @@ +diff --git a/configure.ac b/configure.ac +index e6a23a6..8a7c6d6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -118,7 +118,6 @@ OVS_CHECK_XENSERVER_VERSION + OVS_CHECK_GROFF + OVS_CHECK_GNU_MAKE + OVS_CHECK_TLS +-OVS_CHECK_ATOMIC_LIBS + OVS_CHECK_GCC4_ATOMICS + OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(1) + OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(2) +diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c +index 712cb5a..e840f10 100644 +--- a/lib/netdev-linux.c ++++ b/lib/netdev-linux.c +@@ -40,7 +40,9 @@ + #include + #include + #include ++#if defined(__UCLIBC__) || defined(__GLIBC__) + #include ++#endif + #include + #include + #include +diff --git a/lib/ovs-atomic.h b/lib/ovs-atomic.h +index 9ead907..0a131d7 100644 +--- a/lib/ovs-atomic.h ++++ b/lib/ovs-atomic.h +@@ -318,7 +318,7 @@ + #include "util.h" + + #define IN_OVS_ATOMIC_H +- #if __CHECKER__ ++ #if 1 + /* sparse doesn't understand some GCC extensions we use. */ + #include "ovs-atomic-pthreads.h" + #elif __has_extension(c_atomic) diff --git a/net/openvswitch/patches/0001-netdev-linux-Use-unsigned-int-for-ifi_flags.patch b/net/openvswitch/patches/0001-netdev-linux-Use-unsigned-int-for-ifi_flags.patch deleted file mode 100644 index ed537d10c..000000000 --- a/net/openvswitch/patches/0001-netdev-linux-Use-unsigned-int-for-ifi_flags.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 12edcd800d924f69630768eeece842373dee5bb0 Mon Sep 17 00:00:00 2001 -From: Helmut Schaa -Date: Wed, 8 Jan 2014 13:48:33 +0100 -Subject: [PATCH 1/2] netdev-linux: Use unsigned int for ifi_flags - -ifi_flags is unsigned, the local equivalents should do the same. - -Signed-off-by: Helmut Schaa ---- - lib/netdev-linux.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c -index 9bdbbdf..9eaac33 100644 ---- a/lib/netdev-linux.c -+++ b/lib/netdev-linux.c -@@ -2709,7 +2709,7 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off, - enum netdev_flags on, enum netdev_flags *old_flagsp) - OVS_REQUIRES(netdev->mutex) - { -- int old_flags, new_flags; -+ unsigned int old_flags, new_flags; - int error = 0; - - old_flags = netdev->ifi_flags; --- -1.8.1.4 - diff --git a/net/openvswitch/patches/0002-netdev-linux-Let-interface-flag-survive-internal-por.patch b/net/openvswitch/patches/0002-netdev-linux-Let-interface-flag-survive-internal-por.patch deleted file mode 100644 index b31816ab3..000000000 --- a/net/openvswitch/patches/0002-netdev-linux-Let-interface-flag-survive-internal-por.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b9284f535e93c337ab21f330753e60e1038f9a27 Mon Sep 17 00:00:00 2001 -From: Helmut Schaa -Date: Wed, 8 Jan 2014 13:48:49 +0100 -Subject: [PATCH 2/2] netdev-linux: Let interface flag survive internal port - setup - -Due to a race condition when bringing up an internal port on Linux -some interface flags (e.g. IFF_MULTICAST) are falsely reset. This -happens because netlink events may be processed after the according -netdev has been brought up (which sets interface flags). - -Fix this by reading the interface flags just before updating them -if they have not been updated by from the kernel yet. - -Signed-off-by: Helmut Schaa ---- - lib/netdev-linux.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c -index 9eaac33..423e72e 100644 ---- a/lib/netdev-linux.c -+++ b/lib/netdev-linux.c -@@ -2712,7 +2712,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off, - unsigned int old_flags, new_flags; - int error = 0; - -- old_flags = netdev->ifi_flags; -+ if (!(netdev->cache_valid & VALID_DRVINFO)) { -+ /* Most likely the debvice flags are not in sync yet, fetch them now */ -+ get_flags(&netdev->up, &old_flags); -+ } else { -+ old_flags = netdev->ifi_flags; -+ } -+ - *old_flagsp = iff_to_nd_flags(old_flags); - new_flags = (old_flags & ~nd_to_iff_flags(off)) | nd_to_iff_flags(on); - if (new_flags != old_flags) { --- -1.8.1.4 - diff --git a/net/openvswitch/patches/0003-python-separate-host-target-python-for-cross-compile.patch b/net/openvswitch/patches/0003-python-separate-host-target-python-for-cross-compile.patch deleted file mode 100644 index bef698803..000000000 --- a/net/openvswitch/patches/0003-python-separate-host-target-python-for-cross-compile.patch +++ /dev/null @@ -1,59 +0,0 @@ -From dd52bf474a8c03a3b7a5d73229b64971d76adafd Mon Sep 17 00:00:00 2001 -From: Yousong Zhou -Date: Wed, 28 Feb 2018 13:42:44 +0800 -Subject: [PATCH] python: separate host/target python for cross-compile - -At the moment, python-six is a requirement for openvswitch python -library on target machine. - -Signed-off-by: Yousong Zhou ---- - Makefile.am | 2 +- - m4/openvswitch.m4 | 12 ++++-------- - 2 files changed, 5 insertions(+), 9 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 31d6331..4b9e8d4 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -59,7 +59,7 @@ endif - # foo/__init__.pyc will cause Python to ignore foo.py. - run_python = \ - PYTHONPATH=$(top_srcdir)/python$(psep)$$PYTHONPATH \ -- PYTHONDONTWRITEBYTECODE=yes $(PYTHON) -+ PYTHONDONTWRITEBYTECODE=yes $(PYTHON_HOST) - - ALL_LOCAL = - BUILT_SOURCES = -diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 -index 00ffad3..52f207b 100644 ---- a/m4/openvswitch.m4 -+++ b/m4/openvswitch.m4 -@@ -347,20 +347,16 @@ else: - if test $ovs_cv_python = no; then - AC_MSG_ERROR([cannot find python 2.7 or higher.]) - fi -- AM_MISSING_PROG([PYTHON], [python]) -+ AC_SUBST([PYTHON]) - PYTHON=$ovs_cv_python -+ AM_MISSING_PROG([PYTHON_HOST], [python]) -+ PYTHON_HOST=$ovs_cv_python_host - - # HAVE_PYTHON is always true. (Python has not always been a build - # requirement, so this variable is now obsolete.) - AC_SUBST([HAVE_PYTHON]) - HAVE_PYTHON=yes -- AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes]) -- -- AC_MSG_CHECKING([whether $PYTHON has six library]) -- if ! $PYTHON -c 'import six ; six.moves.range' >&AS_MESSAGE_LOG_FD 2>&1; then -- AC_MSG_ERROR([Missing Python six library or version too old.]) -- fi -- AC_MSG_RESULT([yes])]) -+ AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes])]) - - dnl Checks for Python 3.x, x >= 4. - AC_DEFUN([OVS_CHECK_PYTHON3], --- -1.8.3.1 - diff --git a/net/openvswitch/patches/0004-musl-compatibility.patch b/net/openvswitch/patches/0004-musl-compatibility.patch deleted file mode 100644 index ddcc5fc61..000000000 --- a/net/openvswitch/patches/0004-musl-compatibility.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index e6a23a6..8a7c6d6 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -118,7 +118,6 @@ OVS_CHECK_XENSERVER_VERSION - OVS_CHECK_GROFF - OVS_CHECK_GNU_MAKE - OVS_CHECK_TLS --OVS_CHECK_ATOMIC_LIBS - OVS_CHECK_GCC4_ATOMICS - OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(1) - OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(2) -diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c -index 712cb5a..e840f10 100644 ---- a/lib/netdev-linux.c -+++ b/lib/netdev-linux.c -@@ -40,7 +40,9 @@ - #include - #include - #include -+#if defined(__UCLIBC__) || defined(__GLIBC__) - #include -+#endif - #include - #include - #include -diff --git a/lib/ovs-atomic.h b/lib/ovs-atomic.h -index 9ead907..0a131d7 100644 ---- a/lib/ovs-atomic.h -+++ b/lib/ovs-atomic.h -@@ -318,7 +318,7 @@ - #include "util.h" - - #define IN_OVS_ATOMIC_H -- #if __CHECKER__ -+ #if 1 - /* sparse doesn't understand some GCC extensions we use. */ - #include "ovs-atomic-pthreads.h" - #elif __has_extension(c_atomic) diff --git a/net/openvswitch/patches/0006-adapt-ovs-scripts.patch b/net/openvswitch/patches/0006-adapt-ovs-scripts.patch deleted file mode 100644 index a0034c832..000000000 --- a/net/openvswitch/patches/0006-adapt-ovs-scripts.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in -index dc1d02c..61ecf2f 100755 ---- a/utilities/ovs-ctl.in -+++ b/utilities/ovs-ctl.in -@@ -108,7 +108,7 @@ set_system_ids () { - esac - set "$@" external-ids:system-id="\"$SYSTEM_ID\"" - -- set "$@" external-ids:hostname="\"$(hostname -f)\"" -+ set "$@" external-ids:hostname="\"$(cat /proc/sys/kernel/hostname)\"" - - set "$@" external-ids:rundir="\"$rundir\"" - -diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in -index 8665698..7931bc6 100644 ---- a/utilities/ovs-lib.in -+++ b/utilities/ovs-lib.in -@@ -157,7 +157,11 @@ install_dir () { - [ "${OVS_USER##*:}" != "" ] && INSTALL_GROUP="${OVS_USER##*:}" - - if test ! -d "$DIR"; then -- install -d -m "$INSTALL_MODE" -o "$INSTALL_USER" -g "$INSTALL_GROUP" "$DIR" -+ mkdir -p "$DIR" -+ [ -n "$INSTALL_MODE" ] && chmod "$INSTALL_MODE" "$DIR" -+ local OWN="$INSTALL_USER" -+ [ -n "$OWN" ] && [ -n "$INSTALL_GROUP" ] && OWN="${OWN}:${INSTALL_GROUP}" -+ [ -n "$OWN" ] && chown "$OWN" "$DIR" - restorecon "$DIR" >/dev/null 2>&1 - fi - } diff --git a/net/openvswitch/patches/0100-netdev-linux-Use-unsigned-int-for-ifi_flags.patch b/net/openvswitch/patches/0100-netdev-linux-Use-unsigned-int-for-ifi_flags.patch new file mode 100644 index 000000000..290e44f7a --- /dev/null +++ b/net/openvswitch/patches/0100-netdev-linux-Use-unsigned-int-for-ifi_flags.patch @@ -0,0 +1,28 @@ +From c27232c954cdbe0207252ad88fddad4fd6ac0fbc Mon Sep 17 00:00:00 2001 +From: Helmut Schaa +Date: Wed, 8 Jan 2014 13:48:33 +0100 +Subject: [PATCH 100/104] netdev-linux: Use unsigned int for ifi_flags + +ifi_flags is unsigned, the local equivalents should do the same. + +Signed-off-by: Helmut Schaa +--- + lib/netdev-linux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c +index c0471be15..0750e5f2c 100644 +--- a/lib/netdev-linux.c ++++ b/lib/netdev-linux.c +@@ -2788,7 +2788,7 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off, + enum netdev_flags on, enum netdev_flags *old_flagsp) + OVS_REQUIRES(netdev->mutex) + { +- int old_flags, new_flags; ++ unsigned int old_flags, new_flags; + int error = 0; + + old_flags = netdev->ifi_flags; +-- +2.16.2 + diff --git a/net/openvswitch/patches/0101-netdev-linux-Let-interface-flag-survive-internal-por.patch b/net/openvswitch/patches/0101-netdev-linux-Let-interface-flag-survive-internal-por.patch new file mode 100644 index 000000000..c8bbd31eb --- /dev/null +++ b/net/openvswitch/patches/0101-netdev-linux-Let-interface-flag-survive-internal-por.patch @@ -0,0 +1,41 @@ +From a6df8dd455c8be7c0c2ba79f35cf5390e892b39e Mon Sep 17 00:00:00 2001 +From: Helmut Schaa +Date: Wed, 8 Jan 2014 13:48:49 +0100 +Subject: [PATCH 101/104] netdev-linux: Let interface flag survive internal + port setup + +Due to a race condition when bringing up an internal port on Linux +some interface flags (e.g. IFF_MULTICAST) are falsely reset. This +happens because netlink events may be processed after the according +netdev has been brought up (which sets interface flags). + +Fix this by reading the interface flags just before updating them +if they have not been updated by from the kernel yet. + +Signed-off-by: Helmut Schaa +--- + lib/netdev-linux.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c +index 0750e5f2c..59e7b9c96 100644 +--- a/lib/netdev-linux.c ++++ b/lib/netdev-linux.c +@@ -2791,7 +2791,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off, + unsigned int old_flags, new_flags; + int error = 0; + +- old_flags = netdev->ifi_flags; ++ if (!(netdev->cache_valid & VALID_DRVINFO)) { ++ /* Most likely the debvice flags are not in sync yet, fetch them now */ ++ get_flags(&netdev->up, &old_flags); ++ } else { ++ old_flags = netdev->ifi_flags; ++ } ++ + *old_flagsp = iff_to_nd_flags(old_flags); + new_flags = (old_flags & ~nd_to_iff_flags(off)) | nd_to_iff_flags(on); + if (new_flags != old_flags) { +-- +2.16.2 + diff --git a/net/openvswitch/patches/0102-python-separate-host-target-python-for-cross-compile.patch b/net/openvswitch/patches/0102-python-separate-host-target-python-for-cross-compile.patch new file mode 100644 index 000000000..4c4f623e4 --- /dev/null +++ b/net/openvswitch/patches/0102-python-separate-host-target-python-for-cross-compile.patch @@ -0,0 +1,59 @@ +From b3cc748d502f7f87aeb103b3f69573b0e640e2ba Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Wed, 28 Feb 2018 13:42:44 +0800 +Subject: [PATCH 102/104] python: separate host/target python for cross-compile + +At the moment, python-six is a requirement for openvswitch python +library on target machine. + +Signed-off-by: Yousong Zhou +--- + Makefile.am | 2 +- + m4/openvswitch.m4 | 12 ++++-------- + 2 files changed, 5 insertions(+), 9 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 31d633179..4b9e8d491 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -59,7 +59,7 @@ endif + # foo/__init__.pyc will cause Python to ignore foo.py. + run_python = \ + PYTHONPATH=$(top_srcdir)/python$(psep)$$PYTHONPATH \ +- PYTHONDONTWRITEBYTECODE=yes $(PYTHON) ++ PYTHONDONTWRITEBYTECODE=yes $(PYTHON_HOST) + + ALL_LOCAL = + BUILT_SOURCES = +diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 +index 00ffad35f..52f207bda 100644 +--- a/m4/openvswitch.m4 ++++ b/m4/openvswitch.m4 +@@ -347,20 +347,16 @@ else: + if test $ovs_cv_python = no; then + AC_MSG_ERROR([cannot find python 2.7 or higher.]) + fi +- AM_MISSING_PROG([PYTHON], [python]) ++ AC_SUBST([PYTHON]) + PYTHON=$ovs_cv_python ++ AM_MISSING_PROG([PYTHON_HOST], [python]) ++ PYTHON_HOST=$ovs_cv_python_host + + # HAVE_PYTHON is always true. (Python has not always been a build + # requirement, so this variable is now obsolete.) + AC_SUBST([HAVE_PYTHON]) + HAVE_PYTHON=yes +- AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes]) +- +- AC_MSG_CHECKING([whether $PYTHON has six library]) +- if ! $PYTHON -c 'import six ; six.moves.range' >&AS_MESSAGE_LOG_FD 2>&1; then +- AC_MSG_ERROR([Missing Python six library or version too old.]) +- fi +- AC_MSG_RESULT([yes])]) ++ AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes])]) + + dnl Checks for Python 3.x, x >= 4. + AC_DEFUN([OVS_CHECK_PYTHON3], +-- +2.16.2 + diff --git a/net/openvswitch/patches/0103-ovs-ctl-fix-setting-hostname.patch b/net/openvswitch/patches/0103-ovs-ctl-fix-setting-hostname.patch new file mode 100644 index 000000000..473f211ba --- /dev/null +++ b/net/openvswitch/patches/0103-ovs-ctl-fix-setting-hostname.patch @@ -0,0 +1,33 @@ +From 05a6fa94778f9d6c54ca676de80708d03d6c365a Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Wed, 14 Mar 2018 16:40:01 +0800 +Subject: [PATCH 103/104] ovs-ctl: fix setting hostname + +The command "hostname" is not available in OpenWrt by default. + +The other thing to note is that currently kernel.hostname is not a fully +qualitied name + +Signed-off-by: Yousong Zhou +--- + utilities/ovs-ctl.in | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in +index 4ddc450fb..52018e6d3 100755 +--- a/utilities/ovs-ctl.in ++++ b/utilities/ovs-ctl.in +@@ -68,9 +68,7 @@ ovs_vsctl () { + } + + set_hostname () { +- # 'hostname -f' needs network connectivity to work. So we should +- # call this only after ovs-vswitchd is running. +- ovs_vsctl set Open_vSwitch . external-ids:hostname="$(hostname -f)" ++ ovs_vsctl set Open_vSwitch . external-ids:hostname="$(sysctl -n kernel.hostname)" + } + + set_system_ids () { +-- +2.16.2 + diff --git a/net/openvswitch/patches/0104-ovs-lib-fix-install_dir.patch b/net/openvswitch/patches/0104-ovs-lib-fix-install_dir.patch new file mode 100644 index 000000000..f6f6747c7 --- /dev/null +++ b/net/openvswitch/patches/0104-ovs-lib-fix-install_dir.patch @@ -0,0 +1,31 @@ +From d8dd661e1c100a2d2ba0361cf6c91dcdedfeeb70 Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Wed, 14 Mar 2018 16:44:13 +0800 +Subject: [PATCH 104/104] ovs-lib: fix install_dir() + +The command "install" is not available in OpenWrt by default + +Signed-off-by: Yousong Zhou +--- + utilities/ovs-lib.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in +index 1bccea0c5..457297f3f 100644 +--- a/utilities/ovs-lib.in ++++ b/utilities/ovs-lib.in +@@ -157,7 +157,10 @@ install_dir () { + [ "${OVS_USER##*:}" != "" ] && INSTALL_GROUP="${OVS_USER##*:}" + + if test ! -d "$DIR"; then +- install -d -m "$INSTALL_MODE" -o "$INSTALL_USER" -g "$INSTALL_GROUP" "$DIR" ++ mkdir -p "$DIR" ++ chmod "$INSTALL_MODE" ++ chown "$INSTALL_USER" "$DIR" ++ chgrp "$INSTALL_GROUP" "$DIR" + restorecon "$DIR" >/dev/null 2>&1 + fi + } +-- +2.16.2 + -- cgit v1.2.3