Hello community, here is the log from the commit of package csync2 for openSUSE:Factory checked in at 2018-08-20 16:19:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/csync2 (Old) and /work/SRC/openSUSE:Factory/.csync2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "csync2" Mon Aug 20 16:19:05 2018 rev:22 rq:629416 version:2.0+git.1529072214.b66d298 Changes: -------- --- /work/SRC/openSUSE:Factory/csync2/csync2.changes 2017-08-13 14:59:31.285999838 +0200 +++ /work/SRC/openSUSE:Factory/.csync2.new/csync2.changes 2018-08-20 16:19:07.656797667 +0200 @@ -1,0 +2,13 @@ +Wed Aug 15 14:20:12 UTC 2018 - [email protected] + +- comparison of peer names provided via command line should not be case sensitive (bsc#1082576) +- fix for inetd stderr >& stdout +- fix log message when generating backup files, demote log level +- document -l and -N switches + +------------------------------------------------------------------- +Tue Aug 14 14:10:16 UTC 2018 - [email protected] + +- Avoid systemd service removal errors when uninstalling (bsc#1093165) + +------------------------------------------------------------------- Old: ---- csync2-2.0+git.1461714863.10636a4.tar.bz2 New: ---- csync2-2.0+git.1529072214.b66d298.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ csync2.spec ++++++ --- /var/tmp/diff_new_pack.pFo3oL/_old 2018-08-20 16:19:08.188798417 +0200 +++ /var/tmp/diff_new_pack.pFo3oL/_new 2018-08-20 16:19:08.188798417 +0200 @@ -1,7 +1,7 @@ # # spec file for package csync2 # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,10 +17,10 @@ Name: csync2 -Version: 2.0+git.1461714863.10636a4 +Version: 2.0+git.1529072214.b66d298 Release: 0 Summary: Cluster synchronization tool -License: GPL-2.0+ +License: GPL-2.0-or-later Group: Productivity/Clustering/HA Url: http://oss.linbit.com/csync2/ #Source0: http://oss.linbit.com/csync2/%{name}-%{version}.tar.gz @@ -109,7 +109,7 @@ fi %preun -%service_del_preun csync2.socket [email protected] +%service_del_preun csync2.socket # Cleanup all databases upon last removal if [ $1 -eq 0 ]; then rm -f %{_localstatedir}/lib/csync2/* ++++++ _service ++++++ --- /var/tmp/diff_new_pack.pFo3oL/_old 2018-08-20 16:19:08.212798451 +0200 +++ /var/tmp/diff_new_pack.pFo3oL/_new 2018-08-20 16:19:08.212798451 +0200 @@ -1,6 +1,6 @@ <services> <service name="tar_scm" mode="disabled"> - <param name="url">git://git.linbit.com/csync2.git</param> + <param name="url">https://github.com/LINBIT/csync2.git</param> <param name="scm">git</param> <param name="exclude">.git</param> <param name="versionformat">2.0+git.%ct.%h</param> ++++++ csync2-2.0+git.1461714863.10636a4.tar.bz2 -> csync2-2.0+git.1529072214.b66d298.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/check.c new/csync2-2.0+git.1529072214.b66d298/check.c --- old/csync2-2.0+git.1461714863.10636a4/check.c 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/check.c 2018-06-15 16:16:54.000000000 +0200 @@ -290,7 +290,7 @@ if ( check_type>0 && lstat_strict(prefixsubst(file), &st) != 0 ) { if ( ignnoent ) return 0; csync_fatal("This should not happen: " - "Can't stat %s.\n", file); + "Can't stat %s.\n", prefixsubst(file)); } switch ( check_type ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/configure.ac new/csync2-2.0+git.1529072214.b66d298/configure.ac --- old/csync2-2.0+git.1461714863.10636a4/configure.ac 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/configure.ac 2018-06-15 16:16:54.000000000 +0200 @@ -43,7 +43,7 @@ dnl inspired by rsync's configure.ac -AC_CHECK_FUNCS(fchmod setmode open64 mkstemp64) +AC_CHECK_FUNCS(fchmod setmode open64 mkstemp64 strlcpy) AC_CACHE_CHECK([for secure mkstemp],csync_cv_HAVE_SECURE_MKSTEMP,[ AC_TRY_RUN([#include <stdlib.h> #include <sys/types.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/csync2.1 new/csync2-2.0+git.1529072214.b66d298/csync2.1 --- old/csync2-2.0+git.1461714863.10636a4/csync2.1 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/csync2.1 2018-06-15 16:16:54.000000000 +0200 @@ -1,12 +1,14 @@ .\" Hey, EMACS: -*- nroff -*- -.TH CSYNC2 "1" "March 2013" "csync2 " "User Commands" +.TH CSYNC2 "1" "October 2017" "csync2 " "User Commands" .SH NAME -csync2 \- cluster synchronization tool, 2nd generation +csync2 2.0 \- cluster synchronization tool, 2nd generation .SH SYNOPSIS .B csync2 .RI [ -v.. ] " [-C config-name]" " [-D database-dir]" " [-N hostname]" " [-p port]" ... .SH COPYRIGHT -csync2 is copyright \(co 2004 \- 2013 by LINBIT Information Technologies GmbH +csync2 is copyright \(co 2004 \- 2017 by LINBIT Information Technologies GmbH +.IP +http://www.linbit.com .PP csync2 is distributed under the GNU public license. See the file COPYING for details. @@ -81,9 +83,9 @@ .TP \fB\-TT\fR As \fB\-T\fR, but print the unified diffs. -.IP -The modes \fB\-H\fR, \fB\-L\fR, \fB\-M\fR and \fB\-S\fR return 2 if the requested db is empty. -The mode \fB\-T\fR returns 2 if both hosts are in sync. +.TP +\fB\-R\fR +Remove files from database which do not match config entries. .TP \fB\-i\fR Run in inetd server mode. @@ -94,8 +96,10 @@ \fB\-iii\fR Run in stand\-alone server mode (one connect only). .TP -\fB\-R\fR -Remove files from database which do not match config entries. +\fB\-l\fR +Send some messages to syslog instead of stderr to not clobber +the protocol in case stdout and stderr point to the same fd. +Default for inetd mode. .SS "Exit codes:" .IP The modes \fB\-H\fR, \fB\-L\fR, \fB\-M\fR and \fB\-S\fR return 2 if the requested db is empty. @@ -121,6 +125,13 @@ corruption if the operating system crashes or the computer loses power. .TP +\fB\-N\fR address +When running in stand\-alone mode with \fB\-ii\fR bind to a +.IP +specific interface. You can pass either a hostname or ip +address. If used, this value must match exactly the host +value in each csync2.cfg file. +.TP \fB\-I\fR Init\-run. Use with care and read the documentation first! You usually do not need this option unless you are @@ -159,7 +170,7 @@ .HP \fB\-D\fR database\-dir or url .IP -default: /var/lib/csync2 +default: \fI\,/var/lib/csync2\/\fP Absolute path: use sqlite database in that directory. .IP URLs: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/csync2.c new/csync2-2.0+git.1529072214.b66d298/csync2.c --- old/csync2-2.0+git.1461714863.10636a4/csync2.c 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/csync2.c 2018-06-15 16:16:54.000000000 +0200 @@ -144,11 +144,15 @@ "\n" " -TT As -T, but print the unified diffs.\n" "\n" +" -R Remove files from database which do not match config entries.\n" +"\n" " -i Run in inetd server mode.\n" " -ii Run in stand-alone server mode.\n" " -iii Run in stand-alone server mode (one connect only).\n" "\n" -" -R Remove files from database which do not match config entries.\n" +" -l Send some messages to syslog instead of stderr to not clobber\n" +" the protocol in case stdout and stderr point to the same fd.\n" +" Default for inetd mode.\n" "\n" "Exit codes:\n" " The modes -H, -L, -M and -S return 2 if the requested db is empty.\n" @@ -578,7 +582,7 @@ /* Some inetd connect stderr to stdout. The debug level messages on * stderr would confuse the csync2 protocol. Log to syslog instead. */ - if ( mode == MODE_INETD && csync_debug_level && !csync_syslog ) + if ( mode == MODE_INETD && !csync_syslog ) csync_openlog(); if ( *myhostname == 0 ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/daemon.c new/csync2-2.0+git.1529072214.b66d298/daemon.c --- old/csync2-2.0+git.1461714863.10636a4/daemon.c 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/daemon.c 2018-06-15 16:16:54.000000000 +0200 @@ -264,13 +264,13 @@ struct stat buf; int rc = stat((filename + backupDirLength), &buf); if (rc == 0) { - csync_debug(0, "Stating original file %s rc: %d mode: %o", (filename + backupDirLength), rc, buf.st_mode); + csync_debug(1, "Stating original file %s rc: %d mode: %o \n", (filename + backupDirLength), rc, buf.st_mode); rc = chown(filename, buf.st_uid, buf.st_gid); - csync_debug(0, "Changing owner of %s to user %d and group %d, rc= %d \n", filename, buf.st_uid, buf.st_gid, rc); + csync_debug(rc == 0, "Changing owner of %s to user %d and group %d, rc= %d \n", filename, buf.st_uid, buf.st_gid, rc); rc = chmod(filename, buf.st_mode); - csync_debug(0, "Changing mode of %s to mode %d, rc= %d \n", filename, buf.st_mode, rc); + csync_debug(rc == 0, "Changing mode of %s to mode %o, rc= %d \n", filename, buf.st_mode, rc); } else { csync_debug(0, "Error getting mode and owner ship from %s \n", (filename + backupDirLength)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/db_sqlite.c new/csync2-2.0+git.1529072214.b66d298/db_sqlite.c --- old/csync2-2.0+git.1461714863.10636a4/db_sqlite.c 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/db_sqlite.c 2018-06-15 16:16:54.000000000 +0200 @@ -56,16 +56,16 @@ static void db_sqlite3_dlopen(void) { - csync_debug(2, "Opening shared library libsqlite3.so\n"); + csync_debug(2, "Opening shared library libsqlite3.so.0\n"); - dl_handle = dlopen("libsqlite3.so", RTLD_LAZY); + dl_handle = dlopen("libsqlite3.so.0", RTLD_LAZY); if (dl_handle == NULL) { csync_fatal - ("Could not open libsqlite3.so: %s\n" + ("Could not open libsqlite3.so.0: %s\n" "Please install sqlite3 client library (libsqlite3) or use other database (postgres, mysql)\n", dlerror()); } - csync_debug(2, "Reading symbols from shared library libsqlite3.so\n"); + csync_debug(2, "Reading symbols from shared library libsqlite3.so.0\n"); LOOKUP_SYMBOL(dl_handle, sqlite3_open); LOOKUP_SYMBOL(dl_handle, sqlite3_close); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/doc/csync2_paper.tex new/csync2-2.0+git.1529072214.b66d298/doc/csync2_paper.tex --- old/csync2-2.0+git.1461714863.10636a4/doc/csync2_paper.tex 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/doc/csync2_paper.tex 2018-06-15 16:16:54.000000000 +0200 @@ -569,7 +569,7 @@ \begin{tiny} \begin{verbatim} csync2 2.0 - cluster synchronization tool, 2nd generation -Copyright (C) 2004 - 2015 LINBIT Information Technologies GmbH +Copyright (C) 2004 - 2017 LINBIT Information Technologies GmbH http://www.linbit.com See also: http://git.linbit.com/csync2.git/?a=blob;f=AUTHORS @@ -617,6 +617,10 @@ -ii Run in stand-alone server mode. -iii Run in stand-alone server mode (one connect only). + -l Send some messages to syslog instead of stderr to not clobber + the protocol in case stdout and stderr point to the same fd. + Default for inetd mode. + -R Remove files from database which do not match config entries. Exit codes: @@ -644,6 +648,11 @@ corruption if the operating system crashes or the computer loses power. + -N address When running in stand-alone mode with -ii bind to a + specific interface. You can pass either a hostname or ip + address. If used, this value must match exactly the host + value in each csync2.cfg file. + -I Init-run. Use with care and read the documentation first! You usually do not need this option unless you are initializing groups with really large file lists. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/rsync.c new/csync2-2.0+git.1529072214.b66d298/rsync.c --- old/csync2-2.0+git.1461714863.10636a4/rsync.c 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/rsync.c 2018-06-15 16:16:54.000000000 +0200 @@ -49,6 +49,7 @@ * * @return index of the terminating byte. **/ +#ifndef HAVE_STRLCPY static size_t strlcpy(char *d, const char *s, size_t bufsize) { size_t len = strlen(s); @@ -61,6 +62,7 @@ } return ret; } +#endif /* splits filepath at the last '/', if any, like so: * dirname basename filepath diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/tests/include.sh new/csync2-2.0+git.1529072214.b66d298/tests/include.sh --- old/csync2-2.0+git.1461714863.10636a4/tests/include.sh 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/tests/include.sh 2018-06-15 16:16:54.000000000 +0200 @@ -283,19 +283,35 @@ csync2_u() { + local tmp kid now client_exit nc_exit server_exit if csync2 -N $1 -M > /dev/null; then csync2 -N $2 -iii -vvv & kid=$! + # try to avoid the connect-before-listen race, + # wait for the expected listening socket to show up, + # with timeout using bash magic $SECONDS. + now=$SECONDS + while ! ss -tnl src $2:csync2 | grep -q ^LISTEN; do + kill -0 $kid + (( SECONDS - now < 2 )) + sleep 0.1 + done + csync2 -N $1 -uvvv client_exit=$? - # server still alive? - # then no connection was made... - # attempt do one now. - tmp=$(nc $2 $CSYNC2_PORT <<<"BYE" ) - nc_exit=$? + if ss -tnl src $2:csync2 | grep -q ^LISTEN; then + # server still alive? + # then no connection was made... + # attempt to do one now. + tmp=$(nc $2 $CSYNC2_PORT <<<"BYE" ) + nc_exit=$? + [[ $nc_exit = 0 ]] || kill $kid + else + nc_exit=1 + fi wait $kid server_exit=$? [[ $client_exit = 0 && $server_exit = 0 && $nc_exit != 0 ]] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/tests/t/0002.long-and-strange-file-names.t new/csync2-2.0+git.1529072214.b66d298/tests/t/0002.long-and-strange-file-names.t --- old/csync2-2.0+git.1461714863.10636a4/tests/t/0002.long-and-strange-file-names.t 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/tests/t/0002.long-and-strange-file-names.t 2018-06-15 16:16:54.000000000 +0200 @@ -1,5 +1,8 @@ #!/bin/bash +# cd to canonical path of . +cd -P . + . $(dirname $0)/../include.sh # That prepared some "node names" ($N1 .. $N9) and corresponding diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/tests/t/0003.case-compare.t new/csync2-2.0+git.1529072214.b66d298/tests/t/0003.case-compare.t --- old/csync2-2.0+git.1461714863.10636a4/tests/t/0003.case-compare.t 1970-01-01 01:00:00.000000000 +0100 +++ new/csync2-2.0+git.1529072214.b66d298/tests/t/0003.case-compare.t 2018-06-15 16:16:54.000000000 +0200 @@ -0,0 +1,37 @@ +#!/bin/bash + +. $(dirname $0)/../include.sh + +# That prepared some "node names" ($N1 .. $N9) and corresponding +# IPv4 addresses in /etc/hosts ($IP1 .. $IP9, 127.2.1.1 -- *.9) +# as well as variables $D1 .. $D9 to point to the respective sub tree +# of those "test node" instances. + +# Cleanup does clean the data base and the test directories. +# You probably want to do a cleanup first thing in each test script. +# You may even do it several times throughout such a script. +cleanup + +# populate $D1 +# ------------ + +create_some_files() +{ + date | tee $D1/1.txt $D1/hello.txt + date | tee $D1/1.TXT $D1/Hello.txt +} + +TEST "create some files" create_some_files +TEST "check" csync2 -N $N1 -cr $D1 +TEST "list dirty" csync2 -N $N1 -M + +# compare and sync between both instances +# --------------------------------------- +TEST "csync2 -uv" csync2_u $N1 $N2 +TEST "diff -rq" diff -rq $D1 $D2 + +# redirty only one +date | tee -a $D1/1.txt $D1/hello.txt +TEST "check" csync2 -N $N1 -cr $D1 +t() { [[ $(csync2 -N $N1 -M | wc -l) = 2 ]] ; } +TEST "only lower case should be dirty" t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/csync2-2.0+git.1461714863.10636a4/update.c new/csync2-2.0+git.1529072214.b66d298/update.c --- old/csync2-2.0+git.1461714863.10636a4/update.c 2016-04-27 11:48:11.000000000 +0200 +++ new/csync2-2.0+git.1529072214.b66d298/update.c 2018-06-15 16:16:54.000000000 +0200 @@ -838,7 +838,7 @@ int i=0, pnamelen = strlen(t->value); while (active_peerlist[i]) { - if ( !strncmp(active_peerlist+i, t->value, pnamelen) && + if ( !strncasecmp(active_peerlist+i, t->value, pnamelen) && (active_peerlist[i+pnamelen] == ',' || !active_peerlist[i+pnamelen]) ) goto found_asactive; while (active_peerlist[i]) ++++++ fix-sonames.patch ++++++ --- /var/tmp/diff_new_pack.pFo3oL/_old 2018-08-20 16:19:08.328798615 +0200 +++ /var/tmp/diff_new_pack.pFo3oL/_new 2018-08-20 16:19:08.328798615 +0200 @@ -48,31 +48,6 @@ LOOKUP_SYMBOL(dl_handle, PQconnectdb); LOOKUP_SYMBOL(dl_handle, PQstatus); -Index: csync2-2.0+git.1368794815.cf835a7/db_sqlite.c -=================================================================== ---- csync2-2.0+git.1368794815.cf835a7.orig/db_sqlite.c -+++ csync2-2.0+git.1368794815.cf835a7/db_sqlite.c -@@ -56,16 +56,16 @@ static void *dl_handle; - - static void db_sqlite3_dlopen(void) - { -- csync_debug(2, "Opening shared library libsqlite3.so\n"); -+ csync_debug(2, "Opening shared library libsqlite3.so.0\n"); - -- dl_handle = dlopen("libsqlite3.so", RTLD_LAZY); -+ dl_handle = dlopen("libsqlite3.so.0", RTLD_LAZY); - if (dl_handle == NULL) { - csync_fatal -- ("Could not open libsqlite3.so: %s\n" -+ ("Could not open libsqlite3.so.0: %s\n" - "Please install sqlite3 client library (libsqlite3) or use other database (postgres, mysql)\n", - dlerror()); - } -- csync_debug(2, "Reading symbols from shared library libsqlite3.so\n"); -+ csync_debug(2, "Reading symbols from shared library libsqlite3.so.0\n"); - - LOOKUP_SYMBOL(dl_handle, sqlite3_open); - LOOKUP_SYMBOL(dl_handle, sqlite3_close); Index: csync2-2.0+git.1368794815.cf835a7/db_sqlite2.c =================================================================== --- csync2-2.0+git.1368794815.cf835a7.orig/db_sqlite2.c
