Updating ebuild and gnutls patch. Fixes bug 293835, 293866, 298333. Thanks Giampaolo...
authorKacper Kowalik <xarthisius@gentoo.org>
Thu, 17 Jun 2010 20:08:04 +0000 (20:08 +0000)
committerKacper Kowalik <xarthisius@gentoo.org>
Thu, 17 Jun 2010 20:08:04 +0000 (20:08 +0000)
Package-Manager: portage-2.1.8.3/cvs/Linux x86_64

sys-cluster/csync2/ChangeLog
sys-cluster/csync2/Manifest
sys-cluster/csync2/csync2-1.34-r1.ebuild [new file with mode: 0644]
sys-cluster/csync2/files/csync2-1.34-gnutls.patch [new file with mode: 0644]

index b405db38a6b43eef20cfc3642426e6a070326a14..ae46cc6f5f7240311a63b39d1aec29f638dd5147 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for sys-cluster/csync2
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/csync2/ChangeLog,v 1.27 2009/11/15 13:38:29 xmerlin Exp $
+# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/csync2/ChangeLog,v 1.28 2010/06/17 20:08:04 xarthisius Exp $
+
+*csync2-1.34-r1 (17 Jun 2010)
+
+  17 Jun 2010; Kacper Kowalik <xarthisius@gentoo.org>
+  +csync2-1.34-r1.ebuild, +files/csync2-1.34-gnutls.patch:
+  Updating ebuild and gnutls patch. Fixes bug 293835, 293866, 298333. Thanks
+  Giampaolo Tomassoni for patch
 
   15 Nov 2009; Christian Zoffoli <xmerlin@gentoo.org> csync2-1.34.ebuild:
   Fixed compilation with gnutls-2.xx, thanks to Giampaolo Tomassoni
index 69493497ba22773c2fe2760ddbafc23d028f2a9b..f5258097e74ff6a77ec6c64c31c8160054ddd699 100644 (file)
@@ -1,16 +1,20 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
+AUX csync2-1.34-gnutls.patch 8226 RMD160 2cac45c9a43dab135ef3132aeca4c0f89be13b3d SHA1 184b63d83c6901efec381ee1ece7d80d10d46deb SHA256 aecfc03ca63ee4842b762ca856782dd0193aa39fecfa903b3443c9645786b5f3
 AUX csync2.xinetd 388 RMD160 d1d6cd433c34356b649936958a43b16f247e7cd9 SHA1 60fd6dc9a8eb7c8ee2adf00e66049c3b650e6421 SHA256 c281d7e494088abd84ef09b5487482cfa886f12aa0ab717f4cb579b729cc7ee9
 DIST csync2-1.34-pure-gnutls.patch.bz2 32879 RMD160 281e393fd9cd831467dc0219c5fd3599d82a7659 SHA1 7f392f575af1080f4417e4ae46418f43ac57dbc1 SHA256 292121b82711b2988f7b98d0fa488262b6bb453aed4bc331a0673802b1ba5846
 DIST csync2-1.34.tar.gz 222765 RMD160 d79ddf0e608934d40f0095dde8aa5785c6094d84 SHA1 59b95388d378b659d64d17f7b736068dec7bf7ed SHA256 32b250dd4a0353f71015c5c3961174b975dd5e799e4a084e8f6d00792bd8c833
+EBUILD csync2-1.34-r1.ebuild 2477 RMD160 b1659ea72b050354cde8da4309064100def2c59e SHA1 bc2bc1c9ee9e069d84e3a7cb3b3c817c0f272fed SHA256 2cced61d0f383bb409014d74db325f0bfce94844aab50880e13ca72667ca2b74
 EBUILD csync2-1.34.ebuild 2576 RMD160 4a6f158e282f8f92961e8ee3f453431dfd491568 SHA1 f637817e135cb18e528426c582aab583809c77f0 SHA256 e5d0c5a43df02e3b6e3e81e9dc0bd857c0104cec3a6246ca2133a3f715742883
-MISC ChangeLog 4121 RMD160 ecc6b78ff5f3a55c180e9adbec034b55d7897180 SHA1 48df155108528a9f3ccc0e2a21511e7577169d28 SHA256 0ba778ba531c6598af34bc57e826e8665970d4cb9f0ed9b7900a2db59e72dbb7
+MISC ChangeLog 4378 RMD160 b8a927fe56082abe1790a9337d264101f0b074d2 SHA1 3a07dab26880ae902d2295f3732a08d26f3f07ad SHA256 df8caf2873838f7d77ba24e5e903efb8f9a0b52bd3565cf8b8088ac638d18e27
 MISC metadata.xml 229 RMD160 4dcf17b88c5f4db2e817f473f3e8269b0bff2e6e SHA1 e6315be43241c55bdc0d12a42fa05632c5ff9b79 SHA256 49e13d2d49bef7298e3bb665ebeceeff9b0880fae5ff639cb8405993504f244f
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.9 (GNU/Linux)
+Version: GnuPG v2.0.15 (GNU/Linux)
 
-iEYEARECAAYFAksAKXIACgkQgMUyd/cdjWu4aQCfQz6RLNRXVSINzn1NcGUTEkLX
-BsUAnRaC/ZmZHLz9zcUw4Hmed3G4Zi3E
-=Ek3B
+iJwEAQECAAYFAkwagK0ACgkQIiMqcbOVdxRA2AP/WSuO6G8lu1PJUuB2Jx220lGF
+j6DhDWXEl+4cDlXQkgTOKP5RQvkDsSUpu31iHQG4f+g300VmCEDCAjKtKEBcyQ7r
+KkjuUHzMpLImwD+1JvUJPCXEL8zjbyPQ8aU4NRnRzLVPYLlWNye/Y/+FGBThrENB
+zdFzK3qe9peu4NYKLBQ=
+=vAyD
 -----END PGP SIGNATURE-----
diff --git a/sys-cluster/csync2/csync2-1.34-r1.ebuild b/sys-cluster/csync2/csync2-1.34-r1.ebuild
new file mode 100644 (file)
index 0000000..8381373
--- /dev/null
@@ -0,0 +1,96 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/csync2/csync2-1.34-r1.ebuild,v 1.1 2010/06/17 20:08:04 xarthisius Exp $
+
+EAPI=2
+
+inherit autotools eutils
+
+DESCRIPTION="Cluster synchronization tool."
+HOMEPAGE="http://oss.linbit.com/csync2/"
+SRC_URI="http://oss.linbit.com/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="ssl"
+
+RDEPEND=">=net-libs/librsync-0.9.5
+       =dev-db/sqlite-2.8*
+       >=net-libs/gnutls-2.7.3"
+DEPEND="${RDEPEND}
+       dev-util/pkgconfig"
+
+SLOT="0"
+
+src_prepare() {
+       epatch "${FILESDIR}"/${P}-gnutls.patch #274213
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               --localstatedir=/var \
+               --sysconfdir=/etc/csync2 \
+               $(use_enable ssl gnutls)
+}
+
+src_install() {
+       emake DESTDIR="${D}" \
+               localstatedir=/var \
+               sysconfdir=/etc/csync2 \
+               install || die "install problem"
+
+       insinto /etc/xinetd.d
+       newins "${FILESDIR}"/${PN}.xinetd ${PN} || die
+
+       dodir /var/lib/csync2/ || die
+       keepdir /var/lib/csync2/
+
+       dodoc AUTHORS ChangeLog INSTALL NEWS README TODO csync2_locheck.sh || die
+}
+
+pkg_postinst() {
+       echo
+       einfo "After you setup your conf file, edit the xinetd"
+       einfo "entry in /etc/xinetd.d/${PN} to enable, then"
+       einfo "start xinetd: /etc/init.d/xinetd start"
+       echo
+       einfo "To add ${PN} to your services file just run"
+       einfo "this command after you install:"
+       echo
+       einfo "emerge  --config =${PF}"
+       echo
+       einfo "Now you can find csync2.cfg under /etc/${PN}"
+       einfo "Please move you old config to the right location"
+       echo
+}
+
+pkg_config() {
+       einfo "Updating ${ROOT}/etc/services"
+       { grep -v ^${PN} "${ROOT}"/etc/services;
+       echo "csync2  30865/tcp"
+       } > "${ROOT}"/etc/services.new
+       mv -f "${ROOT}"/etc/services.new "${ROOT}"/etc/services
+
+       if [ ! -f "${ROOT}"/etc/${PN}/csync2_ssl_key.pem ]; then
+               einfo "Creating default certificate in ${ROOT}/etc/${PN}"
+
+               openssl genrsa -out "${ROOT}"/etc/${PN}/csync2_ssl_key.pem 1024 &> /dev/null
+
+               yes '' | \
+               openssl req -new \
+                       -key "${ROOT}"/etc/${PN}/csync2_ssl_key.pem \
+                       -out "${ROOT}"/etc/${PN}/csync2_ssl_cert.csr \
+                       &> "${ROOT}"/dev/null
+
+               openssl x509 -req -days 600 \
+                       -in "${ROOT}"/etc/${PN}/csync2_ssl_cert.csr \
+                       -signkey "${ROOT}"/etc/${PN}/csync2_ssl_key.pem \
+                       -out "${ROOT}"/etc/${PN}/csync2_ssl_cert.pem \
+                       &> "${ROOT}"/dev/null
+
+               rm "${ROOT}"/etc/${PN}/csync2_ssl_cert.csr
+               chmod 400 "${ROOT}"/etc/${PN}/csync2_ssl_key.pem "${ROOT}"/etc/${PN}/csync2_ssl_cert.pem
+       fi
+}
diff --git a/sys-cluster/csync2/files/csync2-1.34-gnutls.patch b/sys-cluster/csync2/files/csync2-1.34-gnutls.patch
new file mode 100644 (file)
index 0000000..64af522
--- /dev/null
@@ -0,0 +1,279 @@
+Fixes build with >=net-libs/gnutls-2.7.1
+
+http://bugs.gentoo.org/show_bug.cgi?id=274213
+
+--- conn.c
++++ conn.c
+@@ -32,7 +32,7 @@
+ 
+ #ifdef HAVE_LIBGNUTLS_OPENSSL
+ #  include <gnutls/gnutls.h>
+-#  include <gnutls/openssl.h>
++#  include <gnutls/x509.h>
+ #endif
+ 
+ int conn_fd_in  = -1;
+@@ -42,9 +42,8 @@
+ #ifdef HAVE_LIBGNUTLS_OPENSSL
+ int csync_conn_usessl = 0;
+ 
+-SSL_METHOD *conn_ssl_meth;
+-SSL_CTX *conn_ssl_ctx;
+-SSL *conn_ssl;
++static gnutls_session_t conn_tls_session;
++static gnutls_certificate_credentials_t conn_x509_cred;
+ #endif
+ 
+ int conn_open(const char *peername)
+@@ -112,41 +111,104 @@
+ 
+ #ifdef HAVE_LIBGNUTLS_OPENSSL
+ 
+-char *ssl_keyfile = ETCDIR "/csync2_ssl_key.pem";
+-char *ssl_certfile = ETCDIR "/csync2_ssl_cert.pem";
++static void ssl_log(int level, const char* msg)
++{ csync_debug(level, "%s", msg); }
++
++static const char *ssl_keyfile = ETCDIR "/csync2_ssl_key.pem";
++static const char *ssl_certfile = ETCDIR "/csync2_ssl_cert.pem";
+ 
+ int conn_activate_ssl(int server_role)
+ {
+-      static int sslinit = 0;
++      gnutls_alert_description_t alrt;
++      int err;
+ 
+       if (csync_conn_usessl)
+               return 0;
+ 
+-      if (!sslinit) {
+-              SSL_load_error_strings();
+-              SSL_library_init();
+-              sslinit=1;
++      gnutls_global_init();
++      gnutls_global_set_log_function(ssl_log);
++      gnutls_global_set_log_level(10);
++
++      gnutls_certificate_allocate_credentials(&conn_x509_cred);
++
++      err = gnutls_certificate_set_x509_key_file(conn_x509_cred, ssl_certfile, ssl_keyfile, GNUTLS_X509_FMT_PEM);
++      if(err != GNUTLS_E_SUCCESS) {
++              gnutls_certificate_free_credentials(conn_x509_cred);
++              gnutls_global_deinit();
++
++              csync_fatal(
++                      "SSL: failed to use key file %s and/or certificate file %s: %s (%s)\n",
++                      ssl_keyfile,
++                      ssl_certfile,
++                      gnutls_strerror(err),
++                      gnutls_strerror_name(err)
++              );
+       }
+ 
+-      conn_ssl_meth = (server_role ? SSLv23_server_method : SSLv23_client_method)();
+-      conn_ssl_ctx = SSL_CTX_new(conn_ssl_meth);
+-
+-      if (SSL_CTX_use_PrivateKey_file(conn_ssl_ctx, ssl_keyfile, SSL_FILETYPE_PEM) <= 0)
+-              csync_fatal("SSL: failed to use key file %s.\n", ssl_keyfile);
+-
+-      if (SSL_CTX_use_certificate_file(conn_ssl_ctx, ssl_certfile, SSL_FILETYPE_PEM) <= 0)
+-              csync_fatal("SSL: failed to use certificate file %s.\n", ssl_certfile);
++      if(server_role) {
++              gnutls_certificate_free_cas(conn_x509_cred);
+ 
+-      if (! (conn_ssl = SSL_new(conn_ssl_ctx)) )
+-              csync_fatal("Creating a new SSL handle failed.\n");
+-
+-      gnutls_certificate_server_set_request(conn_ssl->gnutls_state, GNUTLS_CERT_REQUIRE);
++              if(gnutls_certificate_set_x509_trust_file(conn_x509_cred, ssl_certfile, GNUTLS_X509_FMT_PEM) < 1) {
++                      gnutls_certificate_free_credentials(conn_x509_cred);
++                      gnutls_global_deinit();
++
++                      csync_fatal(
++                              "SSL: failed to use certificate file %s as CA.\n",
++                              ssl_certfile
++                      );
++              }
++      } else
++              gnutls_certificate_free_ca_names(conn_x509_cred);
+ 
+-      SSL_set_rfd(conn_ssl, conn_fd_in);
+-      SSL_set_wfd(conn_ssl, conn_fd_out);
++      gnutls_init(&conn_tls_session, (server_role ? GNUTLS_SERVER : GNUTLS_CLIENT));
++      gnutls_priority_set_direct(conn_tls_session, "PERFORMANCE", NULL);
++      gnutls_credentials_set(conn_tls_session, GNUTLS_CRD_CERTIFICATE, conn_x509_cred);
++
++      if(server_role) {
++              gnutls_certificate_send_x509_rdn_sequence(conn_tls_session, 0);
++              gnutls_certificate_server_set_request(conn_tls_session, GNUTLS_CERT_REQUIRE);
++      }
+ 
+-      if ( (server_role ? SSL_accept : SSL_connect)(conn_ssl) < 1 )
+-              csync_fatal("Establishing SSL connection failed.\n");
++      gnutls_transport_set_ptr2(
++              conn_tls_session,
++              (gnutls_transport_ptr_t)conn_fd_in,
++              (gnutls_transport_ptr_t)conn_fd_out
++      );
++
++      err = gnutls_handshake(conn_tls_session);
++      switch(err) {
++      case GNUTLS_E_SUCCESS:
++              break;
++
++      case GNUTLS_E_WARNING_ALERT_RECEIVED:
++              alrt = gnutls_alert_get(conn_tls_session);
++              fprintf(
++                      csync_debug_out,
++                      "SSL: warning alert received from peer: %d (%s).\n",
++                      alrt, gnutls_alert_get_name(alrt)
++              );
++              break;
++
++      case GNUTLS_E_FATAL_ALERT_RECEIVED:
++              alrt = gnutls_alert_get(conn_tls_session);
++              fprintf(
++                      csync_debug_out,
++                      "SSL: fatal alert received from peer: %d (%s).\n",
++                      alrt, gnutls_alert_get_name(alrt)
++              );
++
++      default:
++              gnutls_bye(conn_tls_session, GNUTLS_SHUT_RDWR);
++              gnutls_deinit(conn_tls_session);
++              gnutls_certificate_free_credentials(conn_x509_cred);
++              gnutls_global_deinit();
++
++              csync_fatal(
++                      "SSL: handshake failed: %s (%s)\n",
++                      gnutls_strerror(err),
++                      gnutls_strerror_name(err)
++              );
++      }
+ 
+       csync_conn_usessl = 1;
+ 
+@@ -155,15 +217,15 @@
+ 
+ int conn_check_peer_cert(const char *peername, int callfatal)
+ {
+-      const X509 *peercert;
++      const gnutls_datum_t *peercerts;
++      unsigned npeercerts;
+       int i, cert_is_ok = -1;
+ 
+       if (!csync_conn_usessl)
+               return 1;
+ 
+-      peercert = SSL_get_peer_certificate(conn_ssl);
+-
+-      if (!peercert || peercert->size <= 0) {
++      peercerts = gnutls_certificate_get_peers(conn_tls_session, &npeercerts);
++      if(peercerts == NULL || npeercerts == 0) {
+               if (callfatal)
+                       csync_fatal("Peer did not provide an SSL X509 cetrificate.\n");
+               csync_debug(1, "Peer did not provide an SSL X509 cetrificate.\n");
+@@ -171,11 +233,11 @@
+       }
+ 
+       {
+-              char certdata[peercert->size*2 + 1];
++              char certdata[2*peercerts[0].size + 1];
+ 
+-              for (i=0; i<peercert->size; i++)
+-                      sprintf(certdata+i*2, "%02X", peercert->data[i]);
+-              certdata[peercert->size*2] = 0;
++              for (i=0; i<peercerts[0].size; i++)
++                      sprintf(&certdata[2*i], "%02X", peercerts[0].data[i]);
++              certdata[2*i] = 0;
+ 
+               SQL_BEGIN("Checking peer x509 certificate.",
+                       "SELECT certdata FROM x509_cert WHERE peername = '%s'",
+@@ -222,7 +284,12 @@
+       if ( !conn_clisok ) return -1;
+ 
+ #ifdef HAVE_LIBGNUTLS_OPENSSL
+-      if ( csync_conn_usessl ) SSL_free(conn_ssl);
++      if ( csync_conn_usessl ) {
++              gnutls_bye(conn_tls_session, GNUTLS_SHUT_RDWR);
++              gnutls_deinit(conn_tls_session);
++              gnutls_certificate_free_credentials(conn_x509_cred);
++              gnutls_global_deinit();
++      }
+ #endif
+ 
+       if ( conn_fd_in != conn_fd_out) close(conn_fd_in);
+@@ -239,7 +306,7 @@
+ {
+ #ifdef HAVE_LIBGNUTLS_OPENSSL
+       if (csync_conn_usessl)
+-              return SSL_read(conn_ssl, buf, count);
++              return gnutls_record_recv(conn_tls_session, buf, count);
+       else
+ #endif
+               return read(conn_fd_in, buf, count);
+@@ -251,7 +318,7 @@
+ 
+ #ifdef HAVE_LIBGNUTLS_OPENSSL
+       if (csync_conn_usessl)
+-              return SSL_write(conn_ssl, buf, count);
++              return gnutls_record_send(conn_tls_session, buf, count);
+       else
+ #endif
+       {
+--- configure.ac
++++ configure.ac
+@@ -17,11 +17,10 @@
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ 
+ # Process this file with autoconf to produce a configure script.
+-AC_INIT(csync2, 1.34, clifford@clifford.at)
++AC_INIT([csync2], [1.34], clifford@clifford.at)
+ AM_INIT_AUTOMAKE
+ 
+ AC_CONFIG_SRCDIR(csync2.c)
+-AM_CONFIG_HEADER(config.h)
+ 
+ # Use /etc and /var instead of $prefix/...
+ test "$localstatedir" = '${prefix}/var' && localstatedir=/var
+@@ -32,6 +31,7 @@
+ AC_PROG_INSTALL
+ AC_PROG_YACC
+ AM_PROG_LEX
++PKG_PROG_PKG_CONFIG
+ 
+ # Check for librsync.
+ AC_ARG_WITH([librsync-source],
+@@ -58,19 +58,10 @@
+ 
+ if test "$enable_gnutls" != no
+ then
+-
+-      # Check for gnuTLS.
+-      AM_PATH_LIBGNUTLS(1.0.0, , [ AC_MSG_ERROR([[gnutls not found; install gnutls, gnutls-openssl and libtasn1 packages for your system or run configure with --disable-gnutls]]) ])
+-
+-      # This is a bloody hack for fedora core
+-      CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
+-      LIBS="$LIBS $LIBGNUTLS_LIBS -ltasn1"
+-
+-      # Check gnuTLS SSL compatibility lib.
+-      AC_CHECK_LIB([gnutls-openssl], [SSL_new], , [AC_MSG_ERROR([[gnutls-openssl not found; install gnutls, gnutls-openssl and libtasn1 packages for your system or run configure with --disable-gnutls]])])
+-
++  PKG_CHECK_MODULES([LIBGNUTLS], [gnutls] , [AC_DEFINE(HAVE_LIBGNUTLS_OPENSSL, 1, [Define to 1 if GnuTLS is available])])
+ fi
+ 
++AM_CONFIG_HEADER([config.h])
+ AC_CONFIG_FILES([Makefile])
+ AC_OUTPUT
+ 
+--- Makefile.am
++++ Makefile.am
+@@ -24,6 +24,8 @@
+ csync2_SOURCES = action.c cfgfile_parser.y cfgfile_scanner.l check.c  \
+                  checktxt.c csync2.c daemon.c db.c error.c getrealfn.c        \
+                  groups.c rsync.c update.c urlencode.c conn.c prefixsubst.c
++csync2_LDADD = @LIBGNUTLS_LIBS@
++csync2_CFLAGS = @LIBGNUTLS_CFLAGS@
+ 
+ AM_YFLAGS = -d
+ BUILT_SOURCES = cfgfile_parser.h