I downloaded rsync-3.2.3pre1.tar.gz this morning and started builds on
a modest set of hosts; due to a machine-room A/C failure, many of my
normal build hosts have been shutdown.

To my surprise, ALL of the builds failed, and examination of the build
logs showed they were all due to missing libraries or header files,
notably for one or more of lz4, openssl, xxhash, and zstd.  Once I
installed those packages, I got successful builds.

Our site has a small number of servers for each O/S + CPU combination,
and hundreds of clients.  Thus, it is important that any new libraries
added to a server to get a build to complete must also be installed on
ALL of the clients, which is a big job.  xxhash in particular is not a
package that we have needed before, so none of the clients has it.
Thus, to get a distributable rsync executable, I need to add various
--disable-XXX options to ensure that server builds do not require
additional software installation on clients.

I also noted that the configure script asks for installation of
cmarkgfm or commonmark, because they are needed for documentation
builds.  In my view, that is wrong: docs in software distributions
should not require any building, and should be ready to install by
simple copy commands as standard manual pages in groff format,
possibly supplemented by .html and .pdf variants.

The configure script bails out when a library is not found, which is
akin to a compiler that quits on the first syntax error.  In both
cases, repeated attempts are necessary, fixing one problem at a time.

I believe that it would be much better to simply disable the code that
needs the missing library or its header files, and keep on running the
configure script, with a prominent final report, something like:

        WARNING: configuration is complete, but some features are
        missing because libraries and/or header files were not
        found, or were too old, for these packages:

            lz4 xxhash

We have a large software installation base at my site, with more than
25,000 installed executables in our search paths, and I've never
before had to install cmarkgfm or commonmark, so until my work this
morning, none of our servers had those packages.

With these package installations, I got successful builds and "make
check" runs on almost all of the systems I worked on today, except as
noted below.

After this posting, I continue to do builds on other systems, so I
might have further reports.  Of the systems below, the O/S versions
are mostly recent ones on x86_64, although in many cases, I have
several older O/S versions, and machines with numerous other CPU
types; they all remain to be tested as our test farm is gradually
brought back up, A/C conditions permitting.

------------------------------------------------------------------------
CentOS 7:

    yum install                                     \
                cmark-lib cmark-devel cmark         \
                lz4 lz4-devel lz4-static            \
                xxhash xxhash-devel xxhash-libs     \
                zstd libzstd libzstd-devel          \
                openssl-devel openssl-static

------------------------------------------------------------------------
CentOS 8 and Oracle 8:

    yum install                                     \
                cmark-lib cmark-devel cmark         \
                lz4 lz4-devel                       \
                xxhash xxhash-devel xxhash-libs     \
                zstd libzstd libzstd-devel          \
                openssl-devel

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

Fedora 33:

    dnf install                                     \
                cmark-lib cmark-devel cmark         \
                lz4-devel lz4-libs lz4-static       \
                xxhash xxhash-devel xxhash-libs     \
                zstd libzstd libzstd-devel          \
                openssl-devel openssl-static

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

FreeBSD 10.4:

    pkg install \
                cmark liblz4 openssl py36-gfm py36-xxhash xxhash zstd

            configure.sh: error: Failed to find ZSTD_minCLevel function in zstd 
lib.
            Use --disable-zstd to continue without zstd compression.

            ./configure --disable-zstd --prefix=$prefix && gmake all check

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

FreeBSD 11.4 and 12:

    pkg install \
                cmark liblz4 openssl py37-cmarkgfm py37-xxhash zstd

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

FreeBSD 13:
    pkg install \
                cmark cmarkgfm liblz4 openssl py37-xxhash zstd

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

ClonOS 19.09:
    pkg install \
                cmark liblz4 openssl py37-cmarkgfm py37-xxhash zstd

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

NetBSD 9.0:
    pkg_add                                         \
                cmark lz4 openssl xxhash zstd

        configure.sh: error: Failed to find XXH64_createState function in 
xxhash lib.
        Use --disable-xxhash to continue without xxhash checksums.

        configure.sh: error: Failed to find ZSTD_minCLevel function in zstd lib.
        Use --disable-zstd to continue without zstd compression.

        configure.sh: error: Failed to find LZ4_compress_default function in 
lz4 lib.
        Use --disable-lz4 to continue without lz4 compression.

        ./configure --disable-lz4 --disable-xxhash --disable-zstd 
CFLAGS=-I/usr/pkg/include 
        gmake LDFLAGS='-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib' LIBS='-lcrypto 
-liconv' all check

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

OpenBSD 6.6:

    pkg_add                                         \
                    cmark lz4 openssl py3-pygfm     \
                    openssl xxhash zstd

        Despite having these libraries installed, I still had to add
        some --disable-XXX options:
        
        env CFLAGS=-I/usr/local/include ./configure --disable-lz4 \
             --disable-xxhash --disable-zstd --prefix=$prefix && gmake all check

    The configure log reports:

        checking zlib.h usability... yes
        checking zlib.h presence... yes
        checking for zlib.h... yes
        checking xxhash.h usability... yes
        checking xxhash.h presence... no
        configure.sh: WARNING: xxhash.h: accepted by the compiler, rejected by 
the preprocessor!
        configure.sh: WARNING: xxhash.h: proceeding with the compiler's result
        checking for xxhash.h... yes
        checking openssl/md4.h usability... yes
        checking openssl/md4.h presence... yes
        checking for openssl/md4.h... yes
        checking openssl/md5.h usability... yes
        checking openssl/md5.h presence... yes
        checking for openssl/md5.h... yes
        checking zstd.h usability... yes
        checking zstd.h presence... no
        configure.sh: WARNING: zstd.h: accepted by the compiler, rejected by 
the preprocessor!
        configure.sh: WARNING: zstd.h: proceeding with the compiler's result
        checking for zstd.h... yes
        checking lz4.h usability... yes
        checking lz4.h presence... no
        configure.sh: WARNING: lz4.h: accepted by the compiler, rejected by the 
preprocessor!
        configure.sh: WARNING: lz4.h: proceeding with the compiler's result
        checking for lz4.h... yes

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

Ubuntu 20.04:

    apt-get install                                 \
                    cmark cmark-gfm                 \
                    libssl-dev                      \
                    lz4 liblz4-dev                  \
                    python3-cmarkgfm                \
                    xxhash libxxhash-dev            \
                    zstd libzstd-dev

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

-------------------------------------------------------------------------------
- Nelson H. F. Beebe                    Tel: +1 801 581 5254                  -
- University of Utah                    FAX: +1 801 581 4148                  -
- Department of Mathematics, 110 LCB    Internet e-mail: be...@math.utah.edu  -
- 155 S 1400 E RM 233                       be...@acm.org  be...@computer.org -
- Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------

-- 
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to