[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Fri Jul 24 00:31:42 UTC 2020


The branch, master has been updated
       via  e00662f2 Add packages to INSTALL.md; put INSTALL.md on ftp site
       via  491ddb08 Simplify md_parser assignment.
       via  918cb39f Fix multi-line code blocks.
       via  1369fe43 Tweak ubuntu configure args.
      from  150f3416 Setup commonmark on Cygwin.

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e00662f2637ccf81e5d4b36feeebb8a1b3ec65e8
Author: Wayne Davison <wayne at opencoder.net>
Date:   Thu Jul 23 17:29:13 2020 -0700

    Add packages to INSTALL.md; put INSTALL.md on ftp site

commit 491ddb08a48d9e230444ef3db96d16ea6550392e
Author: Wayne Davison <wayne at opencoder.net>
Date:   Thu Jul 23 17:28:34 2020 -0700

    Simplify md_parser assignment.

commit 918cb39fed973e75aae01ad07310525fdd74db30
Author: Wayne Davison <wayne at opencoder.net>
Date:   Thu Jul 23 16:20:07 2020 -0700

    Fix multi-line code blocks.

commit 1369fe43e185481984a4c52fc84cd731f2f57fd4
Author: Wayne Davison <wayne at opencoder.net>
Date:   Thu Jul 23 12:32:41 2020 -0700

    Tweak ubuntu configure args.

-----------------------------------------------------------------------

Summary of changes:
 .github/workflows/build.yml |   2 +-
 INSTALL.md                  | 154 +++++++++++++++++++++++++++++++++++++-------
 md2man                      |   6 +-
 packaging/md2html           |  10 +--
 packaging/release-rsync     |   2 +-
 5 files changed, 136 insertions(+), 38 deletions(-)


Changeset truncated at 500 lines:

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ee39040e..87f4fc8c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,7 +21,7 @@ jobs:
         sudo apt-get install acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev python3-cmarkgfm openssl
         echo "::add-path::/usr/local/bin"
     - name: configure
-      run: ./configure --with-included-popt --with-included-zlib
+      run: ./configure
     - name: make
       run: make
     - name: install
diff --git a/INSTALL.md b/INSTALL.md
index a504fb78..dc0b3be9 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,13 +1,123 @@
-To build and install rsync:
+# How to build and install rsync
 
-    $ ./configure
-    $ make
-    # make install
+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
+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
+features (the impatient can skip down to the package summary):
+
+## The basic setup
+
+You need to have a C compiler installed and optionally a C++ compiler in order
+to try to build some hardware-accelerated checksum routines.  If you're
+installing from the git repo (instead of a release tar file) you'll also need
+the GNU autotools (autoconf & automake) and your choice of 2 python3 markdown
+libraries: cmarkgfm or commonmark (needed to generate the man pages).
+
+If your OS doesn't provide a python3-cmarkgfm or python3-commonmark package,
+you can run the following to install the commonmark python library for your
+build user (after installing python3's pip package):
+
+>     pip3 install --user commonmark
+
+## ACL support
+
+To support copying ACL file information, make sure you have an acl
+development library installed. It also helps to have the helper programs
+installed to manipulate ACLs and to run the rsync testsuite.
+
+## Xattr support
+
+To support copying xattr file information, make sure you have an xattr
+development library installed. It also helps to have the helper programs
+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.
+
+## 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.
+
+## 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.
+
+## 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.
+
+## Package summary
+
+To sum up, here are some package install commands for various OSes:
+
+ -  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
+
+ -  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
+    >     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 xxhash
+    >     sudo pkg install -y zstd
+    >     sudo pkg install -y liblz4
+    >     sudo pkg install -y py37-CommonMark
+
+ -  For macOS:
+
+    >     brew install automake
+    >     brew install xxhash
+    >     brew install zstd
+    >     brew install lz4
+    >     brew install openssl
+
+## Build and install
+
+After installing the various libraries, you need to configure, build, and
+install the source:
+
+>      ./configure
+>      make
+>      sudo make install
 
 You may set the installation directory and other parameters by options
 to ./configure.  To see them, use:
 
-    $ ./configure --help
+>     ./configure --help
 
 Configure tries to figure out if the local system uses group "nobody" or
 "nogroup" by looking in the /etc/group file.  (This is only used for the
@@ -37,50 +147,46 @@ a "detached head" git position then you'll need to manually chdir into
 the build dir to run make.  I also like to create 2 more symlinks in the
 sourc dir:  ln -s build/rsync . ; ln -s build/testtmp .
 
-MAKE COMPATIBILITY
-------------------
+## Make compatibility
 
 Note that Makefile.in has a rule that uses a wildcard in a prerequisite.  If
 your make has a problem with this rule, you will see an error like this:
 
     Don't know how to make ./*.c
 
-You can change the "proto.h-tstamp" target in Makefile.in to list all the *.c
+You can change the "proto.h-tstamp" target in Makefile.in to list all the \*.c
 filenames explicitly in order to avoid this issue.
 
-RPM NOTES
----------
+## RPM notes
 
 Under packaging you will find .spec files for several distributions.
 The .spec file in packaging/lsb can be used for Linux systems that
 adhere to the Linux Standards Base (e.g., RedHat and others).
 
-HP-UX NOTES
------------
+## HP-UX notes
 
 The HP-UX 10.10 "bundled" C compiler seems not to be able to cope with
 ANSI C.  You may see this error message in config.log if ./configure
 fails:
 
-  (Bundled) cc: "configure", line 2162: error 1705: Function prototypes are an ANSI feature.
+    (Bundled) cc: "configure", line 2162: error 1705: Function prototypes are an ANSI feature.
 
 Install gcc or HP's "ANSI/C Compiler".
 
-MAC OSX NOTES
--------------
+## Mac OS X notes
 
 Some versions of Mac OS X (Darwin) seem to have an IPv6 stack, but do
-not completely implement the "New Sockets" API.  
+not completely implement the "New Sockets" API.
 
-<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
+[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.
 
-IBM AIX NOTES
--------------
+## IBM AIX notes
 
 IBM AIX has a largefile problem with mkstemp.  See IBM PR-51921.
-The workaround is to append the below to config.h
-	#ifdef _LARGE_FILES
-	#undef HAVE_SECURE_MKSTEMP
-	#endif
+The workaround is to append the following to config.h:
+
+>     #ifdef _LARGE_FILES
+>     #undef HAVE_SECURE_MKSTEMP
+>     #endif
diff --git a/md2man b/md2man
index 992d7320..7f783c56 100755
--- a/md2man
+++ b/md2man
@@ -144,10 +144,6 @@ def main():
             fh.write(txt)
 
 
-def html_via_cmarkgfm(txt):
-    return cmarkgfm.markdown_to_html(txt)
-
-
 def html_via_commonmark(txt):
     return commonmark.HtmlRenderer().render(commonmark.Parser().parse(txt))
 
@@ -376,7 +372,7 @@ if __name__ == '__main__':
 
     try:
         import cmarkgfm
-        md_parser = html_via_cmarkgfm
+        md_parser = cmarkgfm.markdown_to_html
     except:
         try:
             import commonmark
diff --git a/packaging/md2html b/packaging/md2html
index 0ee7c405..21e42c66 100755
--- a/packaging/md2html
+++ b/packaging/md2html
@@ -75,7 +75,7 @@ def main():
 
         html = md_parser(txt)
 
-        html = re.sub(r'(<code>)([\s\S]*?)(</code>)', lambda m: m[1] + re.sub(r'\s', '\xa0', m[2]) + m[3], html)
+        html = re.sub(r'(?<!<pre>)(<code>)([\s\S]*?)(</code>)', lambda m: m[1] + re.sub(r'\s', '\xa0', m[2]) + m[3], html)
         html = html.replace('--', '‑‑').replace("\xa0-", ' ‑').replace("\xa0", ' ')
         html = re.sub(r'(\W)-', r'\1‑', html)
 
@@ -88,11 +88,6 @@ def main():
             fh.write(HTML_END)
 
 
-def html_via_cmarkgfm(txt):
-    # Our NEWS.md file has a gfm table in it.
-    return cmarkgfm.github_flavored_markdown_to_html(txt)
-
-
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(description='Output html for md pages.', add_help=False)
     parser.add_argument("--help", "-h", action="help", help="Output this help message and exit.")
@@ -101,7 +96,8 @@ if __name__ == '__main__':
 
     try:
         import cmarkgfm
-        md_parser = html_via_cmarkgfm
+        # Our NEWS.md file has a gfm table in it.
+        md_parser = cmarkgfm.github_flavored_markdown_to_html
     except:
         die("Failed to find cmarkgfm for python3.")
 
diff --git a/packaging/release-rsync b/packaging/release-rsync
index d1a3f590..08779e4f 100755
--- a/packaging/release-rsync
+++ b/packaging/release-rsync
@@ -324,7 +324,7 @@ About to:
     shutil.rmtree(rsync_ver)
 
     print(f"Updating the other files in {dest} ...")
-    md_files = 'README.md NEWS.md'.split()
+    md_files = 'README.md NEWS.md INSTALL.md'.split()
     html_files = [ fn for fn in gen_pathnames if fn.endswith('.html') ]
     cmd_chk(['rsync', '-a', *md_files, *html_files, dest])
     cmd_chk(["packaging/md2html"] + [ dest +'/'+ fn for fn in md_files ])


-- 
The rsync repository.



More information about the rsync-cvs mailing list