The branch, master has been updated via c3cf174e More changes to NEWS, README, INSTALL, & configure.ac via a0a7c9f2 Enable xattrs on Cygwin. via a8f61ba9 Add Cygwin package info into INSTALL.md. via 842d6edf Fix devices-fake test if rsync can't link specials via 92a8855f Install python3 for cygwin [buildall] via def96fd7 Install python36 for cygwin [buildall] via f624a73b Change the --mkpath message. via 93a373f6 Some INSTALL improvements. from 01742c07 Add --mkpath option. Fixes bugzilla bug 4621.
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit c3cf174e5ed52e709ecdfd65c7d5da34c7574b96 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 11:53:16 2020 -0700 More changes to NEWS, README, INSTALL, & configure.ac commit a0a7c9f2e3eee43837a35af6a0d2c16574b5c4b5 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 11:38:14 2020 -0700 Enable xattrs on Cygwin. - Tweak configure.ac to have Cygwin use linux xattrs. - Change CI setup to install attr packages on Cygwin. [buildall] commit a8f61ba9377d0433b0adfdfbe609c64e6ba01aae Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 11:37:50 2020 -0700 Add Cygwin package info into INSTALL.md. commit 842d6edfdcd1e0b2df819cdff321a1854c074112 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 11:33:21 2020 -0700 Fix devices-fake test if rsync can't link specials - Add info about hardlinked specials to --version output. - Use "no hardlink-special" info to ensure that the devices-fake test will not fail. commit 92a8855ff3cbe2d5053952678510d27deb057262 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 10:10:26 2020 -0700 Install python3 for cygwin [buildall] commit def96fd7c418733758d88cb2e98997f52a788262 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 09:57:41 2020 -0700 Install python36 for cygwin [buildall] commit f624a73bbc1ce6edb370f783ab2bf5be42901fb5 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 09:45:47 2020 -0700 Change the --mkpath message. commit 93a373f6ba466244675bb5524f2f4363abfcb4c1 Author: Wayne Davison <wa...@opencoder.net> Date: Fri Jul 24 09:42:49 2020 -0700 Some INSTALL improvements. ----------------------------------------------------------------------- Summary of changes: .github/workflows/build.yml | 2 +- INSTALL.md | 101 ++++++++++++++++++++++++++------------------ NEWS.md | 6 ++- README.md | 61 +++++++++++++------------- configure.ac | 4 +- main.c | 2 +- options.c | 5 +++ testsuite/devices.test | 12 ++++-- 8 files changed, 113 insertions(+), 80 deletions(-) Changeset truncated at 500 lines: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 87f4fc8c..e1d63d99 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: args: install -y --no-progress cygwin cyg-get - name: prep run: | - cyg-get make autoconf automake gcc-core libssl-devel libzstd-devel liblz4-devel python36-commonmark + cyg-get make autoconf automake gcc-core attr libattr-devel python3 python36-commonmark libzstd-devel liblz4-devel libssl-devel echo "::add-path::C:/tools/cygwin/bin" - name: configure run: bash -c './configure --disable-xxhash' diff --git a/INSTALL.md b/INSTALL.md index dc0b3be9..93b700af 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,7 +1,7 @@ # How to build and install rsync When building rsync, you'll want to install various libraries in order to get -all the new features enabled. The configure script will alert you when the +all the features enabled. The configure script will alert you when the newest libraries are missing and tell you the appropriate `--disable-LIB` option to use if you want to just skip that feature. What follows are various support libraries that you may want to install to build rsync with the maximum @@ -35,67 +35,77 @@ installed to manipulate xattrs and to run the rsync testsuite. ## xxhash -The [xxHash library](https://cyan4973.github.io/xxHash/) provides extremely -fast checksum functions that can make the "rsync algorithm" run much more -quickly, especially when matching blocks in large files. Installing this -development library adds xxhash checksums as the default checksum algorithm. +The [xxHash library][1] provides extremely fast checksum functions that can +make the "rsync algorithm" run much more quickly, especially when matching +blocks in large files. Installing this development library adds xxhash +checksums as the default checksum algorithm. + +[1]: https://cyan4973.github.io/xxHash/ ## zstd -The [zstd library](http://facebook.github.io/zstd/) compression algorithm that -uses a lot less CPU than the default zlib algorithm at the same compression -level. Note that you need at least version 1.4, so you might need to skip the -zstd compression if you can only install a 1.3 release. Installing this -development library adds zstd compression as the default compression algorithm. +The [zstd library][2] compression algorithm that uses a lot less CPU than +the default zlib algorithm at the same compression level. Note that you +need at least version 1.4, so you might need to skip the zstd compression if +you can only install a 1.3 release. Installing this development library +adds zstd compression as the default compression algorithm. + +[2]: http://facebook.github.io/zstd/ ## lz4 -The [lz4 library](https://lz4.github.io/lz4/) compression algorithm that uses -very little CPU, though it also has the smallest compression ratio of other -algorithms. Installing this development library adds lz4 compression as an -available compression algorithm. +The [lz4 library][3] compression algorithm that uses very little CPU, though +it also has the smallest compression ratio of other algorithms. Installing +this development library adds lz4 compression as an available compression +algorithm. + +[3]: https://lz4.github.io/lz4/ ## openssl crypto -The [openssl crypto library](https://www.openssl.org/docs/man1.0.2/man3/crypto.html) -provides some hardware accelerated checksum algorithms for MD4 and MD5. -Installing this development library makes rsync use the (potentially) faster -checksum routines when computing MD4 & MD5 checksums. +The [openssl crypto library][4] provides some hardware accelerated checksum +algorithms for MD4 and MD5. Installing this development library makes rsync +use the (potentially) faster checksum routines when computing MD4 & MD5 +checksums. + +[4]: https://www.openssl.org/docs/man1.0.2/man3/crypto.html ## Package summary -To sum up, here are some package install commands for various OSes: +To help you get the libraries installed, here are some package install commands +for various OSes. The commands are split up to correspond with the above +items, but feel free to combine the package names into a single install, if you +like. - For Debian and Ubuntu (Debian Buster users may want to briefly(?) enable buster-backports to update zstd from 1.3 to 1.4): - > sudo apt install gcc g++ autoconf automake python3-cmarkgfm - > sudo apt install acl libacl1-dev - > sudo apt install attr libattr1-dev - > sudo apt install libxxhash-dev - > sudo apt install libzstd-dev - > sudo apt install libzlz4-dev - > sudo apt install libssl-dev + > sudo apt install -y gcc g++ autoconf automake python3-cmarkgfm + > sudo apt install -y acl libacl1-dev + > sudo apt install -y attr libattr1-dev + > sudo apt install -y libxxhash-dev + > sudo apt install -y libzstd-dev + > sudo apt install -y libzlz4-dev + > sudo apt install -y libssl-dev - For CentOS (use EPEL for python3-pip): - > sudo yum install epel-release - > sudo yum install gcc g++ autoconf automake python3-pip - > sudo yum install acl libacl-devel - > sudo yum install attr libattr-devel - > sudo yum install xxhash-devel - > sudo yum install libzstd-devel - > sudo yum install lz4-devel - > sudo yum install openssl-devel + > sudo yum -y install epel-release + > sudo yum -y install gcc g++ autoconf automake python3-pip + > sudo yum -y install acl libacl-devel + > sudo yum -y install attr libattr-devel + > sudo yum -y install xxhash-devel + > sudo yum -y install libzstd-devel + > sudo yum -y install lz4-devel + > sudo yum -y install openssl-devel > pip3 install --user commonmark - For FreeBSD (this assumes that the python3 version is 3.7): - > sudo pkg install -y gcc g++ autotools python3 + > sudo pkg install -y autotools python3 py37-CommonMark > sudo pkg install -y xxhash > sudo pkg install -y zstd > sudo pkg install -y liblz4 - > sudo pkg install -y py37-CommonMark - For macOS: @@ -105,6 +115,14 @@ To sum up, here are some package install commands for various OSes: > brew install lz4 > brew install openssl + - For Cygwin (with all cygwin programs stopped, run the appropriate setup program from a cmd shell): + + > .\setup-x86_64.exe --quiet-mode -P make,autoconf,automake,gcc-core,python3,python36-commonmark + > .\setup-x86_64.exe --quiet-mode -P attr,libattr-devel + > .\setup-x86_64.exe --quiet-mode -P libzstd-devel + > .\setup-x86_64.exe --quiet-mode -P liblz4-devel + > .\setup-x86_64.exe --quiet-mode -P libssl-devel + ## Build and install After installing the various libraries, you need to configure, build, and @@ -114,8 +132,8 @@ install the source: > make > sudo make install -You may set the installation directory and other parameters by options -to ./configure. To see them, use: +The default install path is /usr/local/bin, but you can set the installation +directory and other parameters using options to ./configure. To see them, use: > ./configure --help @@ -178,9 +196,10 @@ Install gcc or HP's "ANSI/C Compiler". Some versions of Mac OS X (Darwin) seem to have an IPv6 stack, but do not completely implement the "New Sockets" API. -[This site](http://www.ipv6.org/impl/mac.html) says that Apple started to -support IPv6 in 10.2 (Jaguar). If your build fails, try again after running -configure with --disable-ipv6. +[This site][5] says that Apple started to support IPv6 in 10.2 (Jaguar). If +your build fails, try again after running configure with --disable-ipv6. + +[5]: http://www.ipv6.org/impl/mac.html ## IBM AIX notes diff --git a/NEWS.md b/NEWS.md index 27e8eef8..08cac043 100644 --- a/NEWS.md +++ b/NEWS.md @@ -39,8 +39,8 @@ protocol (so if you used this patch in the past, be sure to update your converter script to use newlines instead of null chars). - - Added `--crtimes` (`-N`) option for preserving the file's create time (on - an OS that supports that, such as macOS). + - Added `--crtimes` (`-N`) option for preserving the file's create time (I + believe that this is macOS only at the moment). - Added `--mkpath` option to tell rsync that it should create a non-existing path component of the destination arg. @@ -60,6 +60,8 @@ error to go from the receiver to the generator to the sender. To disable this new default you can use the `--no-msgs2stderr` option. + - Change configure to know that Cywin supports Linux xattrs. + - Improved the testsuite on FreeBSD & Cygwin. - Added some compatibility code for HPE NonStop platforms. diff --git a/README.md b/README.md index 4c3894b5..f9875182 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,15 @@ options. To get a complete list of supported options type: See the manpage for more detailed information. +BUILDING AND INSTALLING +----------------------- + +If you need to build rsync yourself, check out the [INSTALL][1] page for +information on what libraries and packages you can use to get the maximum +features in your build. + +[1]: https://download.samba.org/pub/rsync/INSTALL + SETUP ----- @@ -63,9 +72,9 @@ connect to an rsync daemon. WEB SITE -------- -The main rsync web site is here: +For more information, visit the [main rsync web site][2]. -> https://rsync.samba.org/ +[2]: https://rsync.samba.org/ You'll find a FAQ list, downloads, resources, HTML versions of the manpages, etc. @@ -77,25 +86,25 @@ MAILING LISTS There is a mailing list for the discussion of rsync and its applications that is open to anyone to join. New releases are announced on this list, and there is also an announcement-only mailing list for those that -want official announcements. See the mailing-list page for full -details: +want official announcements. See the [mailing-list page][3] for full +details. -> https://rsync.samba.org/lists.html +[3]: https://rsync.samba.org/lists.html BUG REPORTS ----------- -To visit this web page for full the details on bug reporting: +The [bug-tracking web page][4] has full details on bug reporting. -> https://rsync.samba.org/bugtracking.html +[4]: https://rsync.samba.org/bug-tracking.html -That page contains links to the current bug list, and information on how -to report a bug well. You might also like to try searching the Internet -for the error message you've received, or looking in the mailing list -archives at: +That page contains links to the current bug list, and information on how to +do a good job when reporting a bug. You might also like to try searching +the Internet for the error message you've received, or looking in the +[mailing list archives][5]. -> https://mail-archive.com/rsync@lists.samba.org/ +[5]: https://mail-archive.com/rsync@lists.samba.org/ To send a bug report, follow the instructions on the bug-tracking page of the web site. @@ -108,18 +117,15 @@ GIT REPOSITORY If you want to get the very latest version of rsync direct from the source code repository, then you will need to use git. The git repo -is hosted on github and on samba's site. Feel free to access it here: - -> https://github.com/WayneD/rsync +is hosted [on GitHub][6] and [on Samba's site][7]. -A backup git repo is available on the samba site: +[6]: https://github.com/WayneD/rsync +[7]: https://git.samba.org/?p=rsync.git;a=summary -> git clone git://git.samba.org/rsync.git +See [the download page][8] for full details on all the ways to grab the +source. -See the download page for full details on all the ways to grab the -source: - -> https://rsync.samba.org/download.html +[8]: https://rsync.samba.org/download.html COPYRIGHT @@ -130,13 +136,8 @@ maintained by Wayne Davison. It has been improved by many developers from around the world. Rsync may be used, modified and redistributed only under the terms of -the GNU General Public License, found in the file COPYING in this -distribution, or at: - -> https://www.fsf.org/licenses/gpl.html - - -AVAILABILITY ------------- +the GNU General Public License, found in the file [COPYING][9] in this +distribution, or at [the Free Software Foundation][10]. -The main web site for rsync is https://rsync.samba.org/ +[9]: https://download.samba.org/pub/rsync/COPYING +[10]: https://www.fsf.org/licenses/gpl.html diff --git a/configure.ac b/configure.ac index d9636962..8030eebc 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([rsync],[ ],[https://rsync.samba.org/bugtracking.html]) +AC_INIT([rsync],[ ],[https://rsync.samba.org/bug-tracking.html]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([byteorder.h]) @@ -1290,7 +1290,7 @@ if test x"$enable_xattr_support" = x"no"; then AC_MSG_RESULT(no) else case "$host_os" in - *linux*|*netbsd*) + *linux*|*netbsd*|*cygwin*) AC_MSG_RESULT(Using Linux xattrs) AC_DEFINE(HAVE_LINUX_XATTRS, 1, [True if you have Linux xattrs (or equivalent)]) AC_DEFINE(SUPPORT_XATTRS, 1) diff --git a/main.c b/main.c index 1130e24c..04b32e74 100644 --- a/main.c +++ b/main.c @@ -722,7 +722,7 @@ static char *get_local_name(struct file_list *flist, char *dest_path) if (INFO_GTE(NAME, 1)) { if (file_total == 1 || trailing_slash) *cp = '\0'; - rprintf(FINFO, "created %s %s\n", ret == 1 ? "directory" : "path", dest_path); + rprintf(FINFO, "created %d director%s for %s\n", ret, ret == 1 ? "y" : "ies", dest_path); if (file_total == 1 || trailing_slash) *cp = '/'; } diff --git a/options.c b/options.c index d92a7665..aa61d348 100644 --- a/options.c +++ b/options.c @@ -608,6 +608,11 @@ static void print_info_flags(enum logcode f) #endif "hardlinks", +#ifndef CAN_HARDLINK_SPECIAL + "no " +#endif + "hardlink-special", + #ifndef SUPPORT_LINKS "no " #endif diff --git a/testsuite/devices.test b/testsuite/devices.test index 773c543f..56ab2c52 100644 --- a/testsuite/devices.test +++ b/testsuite/devices.test @@ -97,6 +97,8 @@ esac # TODO: Need to test whether hardlinks are possible on this OS/filesystem +$RSYNC --version | grep "[, ] hardlink-special" >/dev/null && CAN_HLINK_SPECIAL=yes || CAN_HLINK_SPECIAL=no + mkdir "$fromdir" mkdir "$todir" mknod "$fromdir/char" c 41 67 || test_skipped "Can't create char device node" @@ -105,7 +107,11 @@ mknod "$fromdir/char3" c 42 69 || test_skipped "Can't create char device node" mknod "$fromdir/block" b 42 69 || test_skipped "Can't create block device node" mknod "$fromdir/block2" b 42 73 || test_skipped "Can't create block device node" mknod "$fromdir/block3" b 105 73 || test_skipped "Can't create block device node" -ln "$fromdir/block3" "$fromdir/block3.5" || echo "Skipping hard-linked device test..." +if test "$CAN_HLINK_SPECIAL" = yes; then + ln "$fromdir/block3" "$fromdir/block3.5" +else + echo "Skipping hard-linked device test..." +fi mkfifo "$fromdir/fifo" || mknod "$fromdir/fifo" p || test_skipped "Can't run mkfifo" # Work around time rounding/truncating issue by touching both files. touch -r "$fromdir/block" "$fromdir/block" "$fromdir/block2" @@ -147,7 +153,7 @@ cD$all_plus char2 cD$all_plus char3 cS$all_plus fifo EOT -if test ! -r "$fromdir/block3.5"; then +if test "$CAN_HLINK_SPECIAL" = no; then grep -v block3.5 <"$chkfile" >"$chkfile.new" mv "$chkfile.new" "$chkfile" fi @@ -159,7 +165,7 @@ echo "" ( cd "$todir" && rsync_ls_lR . ) > "$tmpdir/ls-to" diff $diffopt "$tmpdir/ls-from" "$tmpdir/ls-to" -if test -r "$fromdir/block3.5"; then +if test "$CAN_HLINK_SPECIAL" = yes; then set -x $RSYNC -aii --link-dest="$todir" "$fromdir/" "$chkdir/" \ | tee "$outfile" -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs