a) compression tests - artful - PASS
starting with the original artful packages:
ubuntu@artful-zstd:~$ dpkg -l|grep zstd
ii  libzstd1                                   1.3.1+dfsg-1                     
            amd64        fast lossless compression algorithm
ii  zstd                                       1.3.1+dfsg-1                     
            amd64        fast lossless compression algorithm -- CLI tool

ubuntu@artful-zstd:~$ zstd /usr/bin/snap -o snap.1.3.1.zst
/usr/bin/snap        : 31.03%   (11318760 => 3512707 bytes, snap.1.3.1.zst)

gives:
-rwxr-xr-x 1 ubuntu ubuntu 3.4M Nov 30 16:42 snap.1.3.1.zst

Now upgrading to the package in proposed:
The following additional packages will be installed:
  libzstd1
The following packages will be upgraded:
  libzstd1 zstd
...
Get:1 http://br.archive.ubuntu.com/ubuntu artful-proposed/universe amd64 zstd 
amd64 1.3.1+dfsg-1ubuntu0.1 [238 kB]
Get:2 http://br.archive.ubuntu.com/ubuntu artful-proposed/universe amd64 
libzstd1 amd64 1.3.1+dfsg-1ubuntu0.1 [152 kB]
...

Compressing with the new package:
ubuntu@artful-zstd:~$ zstd /usr/bin/snap -o snap.1.3.1-updated.zst
/usr/bin/snap        : 31.03%   (11318760 => 3512707 bytes, 
snap.1.3.1-updated.zst)

Decompressing the previous one:
ubuntu@artful-zstd:~$ zstd -d snap.1.3.1.zst -o snap.1.3.1
snap.1.3.1.zst      : 11318760 bytes

Decompressing the updated one:
ubuntu@artful-zstd:~$ zstd -d snap.1.3.1-updated.zst -o snap.1.3.1-updated
snap.1.3.1-updated.zst: 11318760 bytes

MD5 of everything:
ubuntu@artful-zstd:~$ md5sum /usr/bin/snap snap.1.3.1 snap.1.3.1-updated
0b65998bc775d444b2ee7d00cd18634a  /usr/bin/snap
0b65998bc775d444b2ee7d00cd18634a  snap.1.3.1
0b65998bc775d444b2ee7d00cd18634a  snap.1.3.1-updated

Downgrading back to the original artful version:
ubuntu@artful-zstd:~$ sudo apt install zstd=1.3.1+dfsg-1 libzstd1=1.3.1+dfsg-1
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be DOWNGRADED:
  libzstd1 zstd

Decompressing and another md5 snapshot:
ubuntu@artful-zstd:~$ zstd -d snap.1.3.1.zst -o snap.1.3.1-new
snap.1.3.1.zst      : 11318760 bytes
ubuntu@artful-zstd:~$ md5sum snap.1.3.1-new /usr/bin/snap
0b65998bc775d444b2ee7d00cd18634a  snap.1.3.1-new
0b65998bc775d444b2ee7d00cd18634a  /usr/bin/snap


** Description changed:

  [Special SRU Notes]
  
  The Artful SRU must be published before the Xenial SRU in order to
  preserve the upgrade path.
  
  [Impact]
  
   * libzstd v0.5.1 is an experimental version,
     which generates and read an experimental format
     incompatible with official libzstd v1+ format.
  
   * Backporting a newer version >= v1.0, such as artful's v1.3.1,
     fixes this issue
  
   * This backport/SRU is being requested by upstream.
  
  [Test Case]
  
  There are three major test cases: compression tests, package upgrade
  tests, and release upgrade tests.
  
  This SRU has so many tests because it's introducing a new package and a
  carefully thought out upgrade plan.
  
  a) compression tests
  
   * with the pristine package from each release, compress a big file. For
  example, /usr/bin/snap. Name the resulting compressed file according to
  the version that was used to compress it, like this:
  
  Xenial:
  $ zstd /usr/bin/snap -o snap.0.5.1.zst
  Compressed 15528016 bytes into 4134889 bytes ==> 26.63%
  
- Zesty:
- $ zstd /usr/bin/snap -o snap.1.1.2.zst
- /usr/bin/snap        : 30.59%   (10825608 => 3311295 bytes, snap.1.1.2.zst)
+ Artful:
+ $ zstd /usr/bin/snap -o snap.1.3.1.zst
+ /usr/bin/snap        : 31.03%   (11318760 => 3512707 bytes, snap.1.3.1.zst)   
 
  
   * Upgrade to the package made available through this SRU and compress
  it again:
  
  Xenial:
  $ zstd /usr/bin/snap -o snap.1.3.1.zst
  /usr/bin/snap        : 25.11%   (15528016 => 3899137 bytes, snap.1.3.1.zst)
  
- Zesty:
- $ zstd /usr/bin/snap -o snap.1.3.1.zst
- /usr/bin/snap        : 30.59%   (10825608 => 3311290 bytes, snap.1.3.1.zst)
+ Artful:
+ $ zstd /usr/bin/snap -o snap.1.3.1-updated.zst
+ /usr/bin/snap        : 31.03%   (11318760 => 3512707 bytes, 
snap.1.3.1-updated.zst) 
  
  * Uncompress all the generated files using the new version. This proves
  it can handle files compressed by the old one:
  
  Xenial:
  $ zstd -d snap.0.5.1.zst -o snap.0.5.1
  snap.0.5.1.zst      : 15528016 bytes
  $ zstd -d snap.1.3.1.zst -o snap.1.3.1
  snap.1.3.1.zst      : 15528016 bytes
  
- Zesty:
- $ zstd -d snap.1.1.2.zst -o snap.1.1.2
- snap.1.1.2.zst      : 10825608 bytes
+ Artful:
  $ zstd -d snap.1.3.1.zst -o snap.1.3.1
- snap.1.3.1.zst      : 10825608 bytes
+ snap.1.3.1.zst      : 11318760 bytes                                          
 
+ $ zstd -d snap.1.3.1-updated.zst -o snap.1.3.1-updated
+ snap.1.3.1-updated.zst: 11318760 bytes                                        
 
  
   * Take md5sums of all uncompressed files and the original. They must of
  course match:
  
  Xenial:
  $ md5sum /usr/bin/snap snap.0.5.1 snap.1.3.1
  0fa4fa69d79ef4685aaa93be5b3aa33f  /usr/bin/snap
  0fa4fa69d79ef4685aaa93be5b3aa33f  snap.0.5.1
  0fa4fa69d79ef4685aaa93be5b3aa33f  snap.1.3.1
  
- Zesty:
- $ md5sum /usr/bin/snap snap.1.1.2 snap.1.3.1
- ba0a3ef5f519688bc5b0b58f190e73a4  /usr/bin/snap
- ba0a3ef5f519688bc5b0b58f190e73a4  snap.1.1.2
- ba0a3ef5f519688bc5b0b58f190e73a4  snap.1.3.1
+ Artful:
+ $ md5sum /usr/bin/snap snap.1.3.1 snap.1.3.1-updated
+ 0b65998bc775d444b2ee7d00cd18634a  /usr/bin/snap
+ 0b65998bc775d444b2ee7d00cd18634a  snap.1.3.1
+ 0b65998bc775d444b2ee7d00cd18634a  snap.1.3.1-updated
  
  * Downgrade zstd back to the original version of the ubuntu release you
  are testing:
  
  Xenial:
  $ sudo apt install zstd=0.5.1-1
  
- Zesty:
- $ sudo apt install zstd=1.1.2-1 libzstd1=1.1.2-1
+ Artful:
+ $ sudo apt install zstd=1.3.1+dfsg-1 libzstd1=1.3.1+dfsg-1
  
  * Try to decompress the zst file created with the 1.3.1 version from the 
previous test. In xenial only, it should fail to recognize the format:
  $ zstd -d snap.1.3.1.zst -o /dev/null
  zstd: /dev/null already exists; do you wish to overwrite (y/N) ? y
  zstd: snap.1.3.1.zst: not in zstd format
  
- In zesty it should work:
+ In artful it should work:
  $ zstd -d snap.1.3.1.zst -o snap.1.3.1-new
- snap.1.3.1.zst      : 9909192 bytes
- 
- * Still in zesty, compare the md5, which should match:
+ snap.1.3.1.zst      : 11318760 bytes      
+ 
+ * Still in artful, compare the md5, which should match:
  $ md5sum snap.1.3.1-new /usr/bin/snap
- 7c980688861eef598a56c7970d952028  snap.1.3.1-new
- 7c980688861eef598a56c7970d952028  /usr/bin/snap
- 
+ 0b65998bc775d444b2ee7d00cd18634a  snap.1.3.1-new
+ 0b65998bc775d444b2ee7d00cd18634a  /usr/bin/snap
  
  b) package upgrade tests
  b.1)XENIAL
  
  * Install the xenial original packages:
  $ sudo apt install zstd=0.5.1-1 libzstd0=0.5.1-1 libzstd-dev=0.5.1-1
  
  * Enable xenial-proposed and verify that a dist-upgrade will upgrade zstd, 
pull in the new libzstd1, and leave libzstd-dev alone:
  $ sudo apt dist-upgrade
  ...
  The following NEW packages will be installed:
-   libzstd1
+   libzstd1
  The following packages will be upgraded:
-   zstd
+   zstd
  1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
  
  * In the end you will have these installed, at these versions:
- ii  libzstd-dev  0.5.1-1                     
- ii  libzstd0     0.5.1-1                     
+ ii  libzstd-dev  0.5.1-1
+ ii  libzstd0     0.5.1-1
  ii  libzstd1     1.3.1+dfsg-1~ubuntu0.16.04.1
  ii  zstd         1.3.1+dfsg-1~ubuntu0.16.04.1
- 
  
  * Installing the new versioned dev package should remove the unversioned one:
  $ sudo apt install libzstd1-dev
  Reading package lists... Done
- Building dependency tree       
+ Building dependency tree
  Reading state information... Done
  The following packages will be REMOVED:
-   libzstd-dev
- The following NEW packages will be installed:
-   libzstd1-dev
+   libzstd-dev
+ The following NEW packages will be installed:
+   libzstd1-dev
  0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
  
  * The end result being:
- ii  libzstd0       0.5.1-1                     
+ ii  libzstd0       0.5.1-1
  ii  libzstd1       1.3.1+dfsg-1~ubuntu0.16.04.1
  ii  libzstd1-dev   1.3.1+dfsg-1~ubuntu0.16.04.1
  ii  zstd           1.3.1+dfsg-1~ubuntu0.16.04.1
- 
  
  * Conversely, installing the unversioned dev package removes the versioned 
one::
  Installing libzstd-dev removes libzstd1-dev:
  $ sudo apt install libzstd-dev
  Reading package lists... Done
- Building dependency tree       
+ Building dependency tree
  Reading state information... Done
  The following packages will be REMOVED:
-   libzstd1-dev
- The following NEW packages will be installed:
-   libzstd-dev
+   libzstd1-dev
+ The following NEW packages will be installed:
+   libzstd-dev
  0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
  
  * Start from scratch and reinstall the original xenial zstd packages:
  $ sudo apt install zstd=0.5.1-1 libzstd0=0.5.1-1 libzstd-dev=0.5.1-1
  
  * Verify that a simple apt upgrade (not dist-upgrade) upgrades zstd and 
installs the new libzstd1:
  $ sudo apt upgrade
  Reading package lists... Done
  Building dependency tree
  Reading state information... Done
  Calculating upgrade... Done
  The following NEW packages will be installed:
-   libzstd1
+   libzstd1
  The following packages will be upgraded:
-   zstd
+   zstd
  1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
  Need to get 392 kB of archives.
  After this operation, 904 kB of additional disk space will be used.
  Do you want to continue? [Y/n]
  
  * After the upgrade, you should have:
  ii libzstd-dev 0.5.1-1
  ii libzstd0    0.5.1-1
  ii libzstd1    1.3.1+dfsg-1~ubuntu0.16.04.1
  ii zstd        1.3.1+dfsg-1~ubuntu0.16.04.1
  
- 
  b.2) ARTFUL
  * starting with all original artful zstd packages installed:
  ii  libzstd-dev 1.3.1+dfsg-1
  ii  libzstd1    1.3.1+dfsg-1
  ii  zstd        1.3.1+dfsg-1
  
- 
  * a dist-upgrade upgrades them just fine, with no new dependencies introduced:
  The following packages will be upgraded:
-   libzstd-dev libzstd1 zstd
+   libzstd-dev libzstd1 zstd
  3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
  
  * which results in:
  ii  libzstd-dev  1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1     1.3.1+dfsg-1ubuntu0.1
  ii  zstd         1.3.1+dfsg-1ubuntu0.1
  
  * libzstd1-dev, the transitional package, can also be installed just fine:
  $ sudo apt install libzstd1-dev
  The following NEW packages will be installed:
-   libzstd1-dev
+   libzstd1-dev
  0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
  
  * removing libzstd-dev also removes libzstd1-dev:
  The following packages will be REMOVED:
-   libzstd-dev* libzstd1-dev*
+   libzstd-dev* libzstd1-dev*
  0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
  
  * installing just the new libzstd1-dev pull in the unversioned dev package:
  $ sudo apt install libzstd1-dev
  The following additional packages will be installed:
-   libzstd-dev libzstd1
- The following NEW packages will be installed:
-   libzstd-dev libzstd1 libzstd1-dev
+   libzstd-dev libzstd1
+ The following NEW packages will be installed:
+   libzstd-dev libzstd1 libzstd1-dev
  0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
- 
  
  c) release upgrade tests
  RELEASE UPGRADE FROM XENIAL TO ARTFUL
  1) starting with the 0.5.1 dev package in xenial:
  ii  libzstd-dev 0.5.1-1
  ii  libzstd0    0.5.1-1
  ii  zstd        0.5.1-1
  
  dist-upgrade to proposed version:
- ii  libzstd-dev 0.5.1-1                          
- ii  libzstd0    0.5.1-1                          
+ ii  libzstd-dev 0.5.1-1
+ ii  libzstd0    0.5.1-1
  ii  libzstd1    1.3.1+dfsg-1~ubuntu0.16.04.1
  ii  zstd        1.3.1+dfsg-1~ubuntu0.16.04.1
  
  in the do-release-upgrade upgrade list:
  libzstd-dev libzstd1 zstd
  
  deemed obsolete and removed in the end: libzstd0
  
  end result in artful:
  ii  libzstd-dev 1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1    1.3.1+dfsg-1ubuntu0.1
  ii  zstd        1.3.1+dfsg-1ubuntu0.1
  
- 
  2) starting with the 1.3.1 dev package in xenial:
- ii  libzstd0     0.5.1-1                     
+ ii  libzstd0     0.5.1-1
  ii  libzstd1     1.3.1+dfsg-1~ubuntu0.16.04.1
  ii  libzstd1-dev 1.3.1+dfsg-1~ubuntu0.16.04.1
  ii  zstd         1.3.1+dfsg-1~ubuntu0.16.04.1
  
  do-release-upgrade stats:
  install list: libzstd-dev
  upgrade list: libzstd1 libzstd1-dev zstd
  remove (auto installed): libzstd0
- 
  
  end result:
  ii  libzstd-dev   1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1      1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1-dev  1.3.1+dfsg-1ubuntu0.1
  ii  zstd          1.3.1+dfsg-1ubuntu0.1
  
- 
  RELEASE UPGRADE FROM ARTFUL TO BIONIC
  
  - with all zstd packages installed:
  ii  libzstd-dev    1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1       1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1-dev   1.3.1+dfsg-1ubuntu0.1
  ii  zstd           1.3.1+dfsg-1ubuntu0.1
  
  do-release-upgrade stats:
  upgrade list: libzstd-dev libzstd1 libzstd1-dev zstd
  nothing else
  
  end result in bionic:
  ii  libzstd-dev   1.3.3+dfsg-1ubuntu1
  ii  libzstd1      1.3.3+dfsg-1ubuntu1
  ii  libzstd1-dev  1.3.3+dfsg-1ubuntu1
  ii  zstd          1.3.3+dfsg-1ubuntu1
  
- 
  - without the transitional package installed:
  ii  libzstd-dev 1.3.1+dfsg-1ubuntu0.1
  ii  libzstd1    1.3.1+dfsg-1ubuntu0.1
  ii  zstd        1.3.1+dfsg-1ubuntu0.1
  
  do-release-upgrade stats:
  upgrade list: libzstd-dev libzstd1 zstd
  nothing else
  
  end result in bionic:
  ii  libzstd-dev 1.3.3+dfsg-1ubuntu1
  ii  libzstd1    1.3.3+dfsg-1ubuntu1
  ii  zstd        1.3.3+dfsg-1ubuntu1
- 
  
  [Regression Potential]
  
   * During transition, if some user switches to newer zstd version, and
  then send compressed data to another user has not yet updated zstd, the
  receiver will not be able to decompress as long as he does not update.
  
   * Note though that newer version contains a compatibility module which
  makes it able to read data generated by older versions, such as v0.5.1.
  Any existing document compressed with v0.5.1 will still be readable
  after update to v1.3.1.
  
  [Other Info]
  
   * Linux kernel 4.14 now integrates zstd compression / decompression,
  primarily for BtrFS and SquashFS, with patches available for reiser4,
  zram, and initrd. Kernel version does not support compatibility module,
  hence cannot read data from v0.5.1. Userland tools associated with these
  services will fail if they link to Ubuntu LTS libzstd, as generating
  incompatible data.
  
   * On top of the incompatible format issue, libzstd v0.5.1 API is old
  and missing several features that applications relying on libzstd need,
  such as streaming interface, or bulk processing for dictionary
  compression.
  
  --- Original description ---
  
  Please backport libzstd 1.3.1+dfsg-1 (universe) from artful to xenial.
  
  Reason for the backport:
  ========================
  Current version in Xenial is v0.5.1,
  it's an experimental version, using its own, incompatible format.
  As a consequence, zstd on Ubuntu Xenial is not compatible with the rest of 
the world.
  
  This is of important concern for products using libzstd as a shared library :
  on Ubuntu Xenial, produced data is different, not compatible with v1+.
  
  This issue has been made more pressing with the integration of zstd in Linux 
Kernel,
  as userland tools must also be updated to read and generate zstd.
  
  Note : this request was first improperly filled at :
  https://bugs.launchpad.net/zesty-backports/+bug/1717037
  
  Testing:
  ========
  Mark off items in the checklist [X] as you test them, but please leave the 
checklist so that backporters can quickly evaluate the state of testing.
  
  Backport available from PPA:
  https://launchpad.net/~ginggs/+archive/ubuntu/backports
  
  * xenial:
  [X] Package builds without modification (needs debhelper 10)
  [X] zstd installs cleanly and runs
  [ ] zstd-dbgsym installs cleanly and runs
  [ ] libzstd1-dbgsym installs cleanly and runs
  [X] libzstd-dev installs cleanly and runs
  [X] libzstd1 installs cleanly and runs
  
  No reverse dependencies

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

Title:
  Please backport libzstd 1.3.1+dfsg-1 (universe) from artful

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

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to