[Bug 1934992] Re: rsync 3.2.x in Groovy depends on broken libxxhash 0.7.x

wdoekes 1934992 at bugs.launchpad.net
Fri Jul 9 13:06:24 UTC 2021


How about this case:

- I make a hypothetical package that depends on libxxhash < 0.8 because
I want the "broken/old" xxh128 support;

- I have libxxhash 0.7.3 (that came with Focal);

- I have rsync 3.1.x (that came with Focal);

- Now I release-upgrade my system from Focal to Groovy;

- I get all kinds of new packages, including rsync 3.2.3;

- Dependency resolution fixes that I _don't_ get libxxhash 0.8 _because_
I have:

- (a) my hypothetical package pinned and it depends on libxxhash<0.8;

- (b) rsync that depends on libxxhash>=0.7.1.

- The dependencies are all still satisfied and I get to keep
libxxhash=0.7.3.

In this new situation I have completed the upgrade to Groovy. As long as
my hypothetical package that depends on libxxhash <0.8 exists, Ubuntu
will not upgrade libxxhash.

And then I'm in the same situation as I am now:


root at groovy-rsync:~# apt-mark hold hypothetical-pkg
hypothetical-pkg set on hold.

root at groovy-rsync:~# apt-cache show hypothetical-pkg | grep ^Depe
Depends: libxxhash0 (<= 0.8)

root at groovy-rsync:~# apt-get install rsync
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  openssh-server
The following NEW packages will be installed:
  rsync

root at groovy-rsync:~# dpkg -l | grep -E 'rsync|libxxhash'
hi  hypothetical-pkg                 1.0
ii  libxxhash0:amd64                 0.7.3-1
ii  rsync                            3.2.3-2ubuntu1

root at groovy-rsync:~# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libxxhash0
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.


This may not be the commonest of cases. But this would be an impossible situation if rsync_3.2.3 simply depended on 0.8+ instead of on 0.7.1+. (An impossible situation is good in this case, because you have to choose between either hypothetical-pkg or rsync.)

So, I still feel that this is a bug in the rsync control file in Groovy.
Not a bug in the rsync source.

(Ok, in fact, I think it's ultimately a bug in soname-version/symbol
handling of libxxhash. But that's not where the problem manifests
itself.)

I'll leave it as is if you still feel it should be closed. But at least
it has some visibility/presence on the internet so others are helped if
they also run into this issue.

Cheers :)
Walter

** Changed in: rsync (Ubuntu)
       Status: Incomplete => New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to rsync in Ubuntu.
https://bugs.launchpad.net/bugs/1934992

Title:
  rsync 3.2.x in Groovy depends on broken libxxhash 0.7.x

Status in rsync package in Ubuntu:
  New

Bug description:
  **Problem**

    $ rsync root at focal-system:/etc/.pwd.lock . 
    ERROR: .pwd.lock failed verification -- update discarded.
    rsync error: some files/attrs were not transferred (see previous errors)
      (code 23) at main.c(1816) [generator=3.2.3]

  
    $ rsync root at focal-system:/etc/.pwd.lock . --debug=all
    opening connection using: ssh -l root focal-system rsync --server --sender \
      -e.LsfxCIvu . /etc/.pwd.lock  (10 args)
    (Client) Protocol versions: remote=31, negotiated=31
    Client negotiated checksum: xxh128
    ...

  
  **Cause**

    focal-system# dpkg -l | grep -E 'libxxhash|rsync'
    ii  libxxhash0:amd64  0.7.3-1         amd64
    ii  rsync             3.2.3-2ubuntu1  amd64

  
  **Why this affects only us and not more people?**

  On Ubuntu/Focal, there is no rsync 3.2.3, only 3.1.3-8. But because we
  need the lz4 compression support we've fetched a newer rsync (from
  Groovy).

  However: the rsync 3.2.3 depends on libxxhash0 0.7.1+, while in fact
  it needs 0.8+.

  
  **Details**
    
  On a Ubuntu/Focal system we have installed a rsync 3.2.3 package from Ubuntu/Groovy because we need the lz4 compression support.

  
  focal-system# apt-cache show rsync
  Package: rsync
  ...
  Version: 3.2.3-2ubuntu1
  Depends: lsb-base, libacl1 (>= 2.2.23), libc6 (>= 2.15),
    liblz4-1 (>= 0.0~r130), libpopt0 (>= 1.14), libssl1.1 (>= 1.1.0),
    libxxhash0 (>= 0.7.1), libzstd1 (>= 1.3.8), zlib1g (>= 1:1.1.4)
  ...

  
  Alongside this we had libxxhash0 0.7.3-1 from Focal:

  focal-system# apt-cache policy libxxhash0
  libxxhash0:
    Installed: 0.7.3-1
    Candidate: 0.7.3-1
    Version table:
   *** 0.7.3-1 500
          500 http://ARCHIVE/ubuntu focal/universe amd64 Packages
          100 /var/lib/dpkg/status

  
  According to the dependencies, this should work. But the combination does not, as this quote from the rsync maintainer would tell you:
  https://github.com/WayneD/rsync/issues/122#issuecomment-737690913
  > Yeah, Cyan4973 could have told you that the 128-bit xxhash only
  > just stabilized in its 0.8.0 release, so anything older than
  > that isn't compatible.

  
  **The fix**

  As the maintainer points out, version 0.7 is not stable (= broken for
  our intents and purposes) and thus not fit for use with rsync 3.2.

  I would argue that it's a good idea to bump the dependency of rsync
  3.2.3 on Groovy to libxxhash0>=0.8

  After all, in Groovy there is a libxxhash0 0.8.0-1ubuntu1.20.10.1, so
  that would not be a problem. And it would fix issues for those mixing
  and matching packages.

  
  Thanks!

  Walter Doekes
  OSSO B.V.

  
  (*) possible patch:

  $ diff -pu debian/control{.orig,}
  --- debian/control.orig	2021-07-08 09:56:57.646861644 +0200
  +++ debian/control	2021-07-08 09:57:38.499029903 +0200
  @@ -8,7 +8,7 @@ Build-Depends: debhelper-compat (= 13),
                  libacl1-dev,
                  libpopt-dev,
                  liblz4-dev,
  -               libxxhash-dev,
  +               libxxhash-dev (>= 0.8),
                  libzstd-dev,
                  zlib1g-dev,
                  libssl-dev

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rsync/+bug/1934992/+subscriptions



More information about the foundations-bugs mailing list