rsync: fix ipv6 detection 12605/head
authorMaxim Storchak <m.storchak@gmail.com>
Sun, 28 Jun 2020 11:54:18 +0000 (14:54 +0300)
committerRosen Penev <rosenp@gmail.com>
Sun, 28 Jun 2020 20:56:21 +0000 (13:56 -0700)
Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
net/rsync/Makefile
net/rsync/patches/000-fix-ipv6-detection.patch [new file with mode: 0644]
net/rsync/patches/010-disable-ssh-46-hint.patch [deleted file]

index ff4231a1a8bd6e0e1358b4b299abac5824ae52ec..9d154b840e5d34321065e012191893b97a05f13f 100644 (file)
@@ -20,6 +20,7 @@ PKG_LICENSE:=GPL-3.0-or-later
 PKG_LICENSE_FILES:=COPYING
 PKG_CPE_ID:=cpe:/a:rsync:rsync
 
+PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
 
@@ -57,6 +58,11 @@ CONFIGURE_ARGS += \
        --with$(if $(CONFIG_RSYNC_zlib),,out)-included-zlib \
        --$(if $(CONFIG_IPV6),en,dis)able-ipv6
 
+define Build/Configure
+       $(call Build/Configure/Default)
+       $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" reconfigure
+endef
+
 define Package/rsyncd
   SECTION:=net
   CATEGORY:=Network
diff --git a/net/rsync/patches/000-fix-ipv6-detection.patch b/net/rsync/patches/000-fix-ipv6-detection.patch
new file mode 100644 (file)
index 0000000..b2fcb8c
--- /dev/null
@@ -0,0 +1,170 @@
+commit f25dc9d21a9aba2d4c5f3d21273e1f7924d591be
+Author: Maxim Storchak <m.storchak@gmail.com>
+Date:   Sun Jun 28 14:23:03 2020 +0300
+
+    Based on Pierre-Olivier Mercier's patch for https://bugzilla.samba.org/show_bug.cgi?id=10715
+    
+    Original commit message:
+    
+    From 811db086507aceaec0022798dd418956cdd4b54e Mon Sep 17 00:00:00 2001
+    From: Pierre-Olivier Mercier <nemunaire@nemunai.re>
+    Date: Mon, 4 Sep 2017 22:29:55 +0200
+    Subject: [PATCH] Test IPv6 compatibility instead of relying on library probes.
+    
+    Legacy configure behaviour was to detect IPv6 support through known IPv6
+    capable version of common standard libraries. Now: it runs a POSIX test
+    to determine if IPv6 is usable (in case it has not been disabled).
+    ---
+
+diff --git a/configure.ac b/configure.ac
+index 28865ea..7a2bbfe 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -339,119 +339,36 @@ if test x"$rsync_cv_HAVE_BROKEN_LARGEFILE" != x"yes"; then
+    AC_SYS_LARGEFILE
+ fi
+-ipv6type=unknown
+-ipv6lib=none
+-ipv6trylibc=yes
+-
++# Checks if IPv6 is requested
++AC_MSG_CHECKING([whether to enable ipv6])
+ AC_ARG_ENABLE(ipv6,
+-      AS_HELP_STRING([--disable-ipv6],[turn off IPv6 support]))
+-if test x"$enable_ipv6" != x"no"; then
+-      AC_MSG_CHECKING([ipv6 stack type])
+-      for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta cygwin; do
+-              case $i in
+-              inria)
+-                      # http://www.kame.net/
+-                      AC_EGREP_CPP(yes, [
+-#include <netinet/in.h>
+-#ifdef IPV6_INRIA_VERSION
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])
+-                              ])
+-                      ;;
+-              kame)
+-                      # http://www.kame.net/
+-                      AC_EGREP_CPP(yes, [
+-#include <netinet/in.h>
+-#ifdef __KAME__
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              linux-glibc)
+-                      # http://www.v6.linux.or.jp/
+-                      AC_EGREP_CPP(yes, [
+-#include <features.h>
+-#if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              linux-inet6)
+-                      # http://www.v6.linux.or.jp/
+-                      if test -d /usr/inet6 -o -f /usr/inet6/lib/libinet6.a; then
+-                              ipv6type=$i
+-                              ipv6lib=inet6
+-                              ipv6libdir=/usr/inet6/lib
+-                              ipv6trylibc=yes;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])
+-                              CFLAGS="-I/usr/inet6/include $CFLAGS"
+-                      fi
+-                      ;;
+-              solaris)
+-                      # http://www.sun.com
+-                      AC_EGREP_CPP(yes, [
+-#include <netinet/ip6.h>
+-#ifdef __sun
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              toshiba)
+-                      AC_EGREP_CPP(yes, [
+-#include <sys/param.h>
+-#ifdef _TOSHIBA_INET6
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              ipv6lib=inet6;
+-                              ipv6libdir=/usr/local/v6/lib;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              v6d)
+-                      AC_EGREP_CPP(yes, [
+-#include </usr/local/v6/include/sys/v6config.h>
+-#ifdef __V6D__
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              ipv6lib=v6;
+-                              ipv6libdir=/usr/local/v6/lib;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              zeta)
+-                      AC_EGREP_CPP(yes, [
+-#include <sys/param.h>
+-#ifdef _ZETA_MINAMI_INET6
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              ipv6lib=inet6;
+-                              ipv6libdir=/usr/local/v6/lib;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              cygwin)
+-                      AC_EGREP_CPP(yes, [
+-#include <netinet/in.h>
+-#ifdef _CYGWIN_IN6_H
+-yes
+-#endif],
+-                              [ipv6type=$i;
+-                              AC_DEFINE(INET6, 1, [true if you have IPv6])])
+-                      ;;
+-              esac
+-              if test "$ipv6type" != "unknown"; then
+-                      break
+-              fi
+-      done
+-      AC_MSG_RESULT($ipv6type)
++[  --disable-ipv6          disable ipv6 support],
++[ case "$enableval" in
++  no)
++        AC_MSG_RESULT(no)
++      ;;
++  *)    AC_MSG_RESULT(yes)
++        AC_DEFINE(INET6, 1, [true if you have IPv6])
++      ;;
++  esac ],
+-      AC_SEARCH_LIBS(getaddrinfo, inet6)
+-fi
++  AC_TRY_RUN([ /* AF_INET6 avalable check */
++#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/socket.h>
++main()
++{
++   if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
++     exit(1);
++   else
++     exit(0);
++}
++],
++  AC_MSG_RESULT(yes)
++  AC_DEFINE(INET6, 1, [true if you have IPv6]),
++  AC_MSG_RESULT(no),
++  AC_MSG_RESULT(no)
++))
+ dnl Do you want to disable use of locale functions
+ AC_ARG_ENABLE([locale],
diff --git a/net/rsync/patches/010-disable-ssh-46-hint.patch b/net/rsync/patches/010-disable-ssh-46-hint.patch
deleted file mode 100644 (file)
index cecee54..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/main.c b/main.c
-index b41a394..dd49f87 100644
---- a/main.c
-+++ b/main.c
-@@ -572,14 +572,6 @@ static pid_t do_cmd(char *cmd, char *machine, char *user, char **remote_argv, in
-                       args[argc++] = "-l";
-                       args[argc++] = user;
-               }
--#ifdef AF_INET
--              if (default_af_hint == AF_INET && strcmp(t, "ssh") == 0)
--                      args[argc++] = "-4"; /* we're using ssh so we can add a -4 option */
--#endif
--#ifdef AF_INET6
--              if (default_af_hint == AF_INET6 && strcmp(t, "ssh") == 0)
--                      args[argc++] = "-6"; /* we're using ssh so we can add a -6 option */
--#endif
-               args[argc++] = machine;
- #endif