Control: severity -1 grave

On Thu, Jul 25, 2019 at 11:53:39PM +0300, Коля Гурьев wrote:
>Package: pristine-tar
>Version: 1.46
>Severity: important
>
>pristine-tar of version 1.46 available in Debian Unstable can't unpack
>deltas of versions 2 generated by pristine-tar 1.33 from Ubuntu Xenial.
>
>I've committed a tarball for the rlottie package into my Git repository
>using pristine-tar 1.33. Then I try to regenerate the tarball inside
>Debian chroot and get the next error.
>
>$ pristine-tar --debug --verbose checkout 
>../rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz
>pristine-tar: git archive --format=tar 
>9fed0d3da5cfa7eabd4fa8c2590dd86e5b1442e1 | (cd '/tmp/pristine-tar.2a5pcCDc3n' 
>&& tar x)
>pristine-tar: tar xf /tmp/pristine-tar.cBbx8nKDp6/tmpin -C 
>/tmp/pristine-tar.Dvxlxlx8Qn
>pristine-tar: set subdir to rlottie
>pristine-tar: subdir is rlottie
>pristine-tar: mkdir /tmp/pristine-tar.o0lKEjWozz/workdir
>pristine-tar: mv /tmp/pristine-tar.2a5pcCDc3n 
>/tmp/pristine-tar.o0lKEjWozz/workdir/rlottie
>pristine-tar: rlottie/example/resource/360\302\272_degree.json is listed in 
>the manifest but may not be present in the source directory
>pristine-tar: creating missing rlottie/example/resource/360\302\272_degree.json
>pristine-tar: doing full tree sweep to catch missing files
>pristine-tar: tar cf /tmp/pristine-tar.o0lKEjWozz/recreatetarball --owner 0 
>--group 0 --numeric-owner -C /tmp/pristine-tar.o0lKEjWozz/workdir 
>--no-recursion --mode 0644 --verbatim-files-from --files-from 
>/tmp/pristine-tar.o0lKEjWozz/manifest
>pristine-tar: xdelta patch --pristine /tmp/pristine-tar.Dvxlxlx8Qn/delta 
>/tmp/pristine-tar.o0lKEjWozz/recreatetarball 
>/tmp/pristine-tar.i1k0xBo1aP/rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz.tmp
>xdelta: expected from file (/tmp/pristine-tar.o0lKEjWozz/recreatetarball) of 
>length 12779520 bytes
>pristine-tar: tar cf /tmp/pristine-tar.o0lKEjWozz/recreatetarball --owner 0 
>--group 0 --numeric-owner -C /tmp/pristine-tar.o0lKEjWozz/workdir 
>--no-recursion --mode 0644 --verbatim-files-from --files-from 
>/tmp/pristine-tar.o0lKEjWozz/manifest
>pristine-tar: xdelta patch --pristine /tmp/pristine-tar.Dvxlxlx8Qn/delta 
>/tmp/pristine-tar.o0lKEjWozz/recreatetarball 
>/tmp/pristine-tar.i1k0xBo1aP/rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz.tmp
>xdelta: expected from file (/tmp/pristine-tar.o0lKEjWozz/recreatetarball) of 
>length 12779520 bytes
>pristine-tar: set subdir to rlottie
>pristine-tar: subdir is rlottie
>pristine-tar: mkdir /tmp/pristine-tar.4XNCSF8pDG/workdir
>pristine-tar: mv /tmp/pristine-tar.o0lKEjWozz/workdir/rlottie 
>/tmp/pristine-tar.4XNCSF8pDG/workdir/rlottie
>pristine-tar: tar cf /tmp/pristine-tar.4XNCSF8pDG/recreatetarball --owner 0 
>--group 0 --numeric-owner -C /tmp/pristine-tar.4XNCSF8pDG/workdir 
>--no-recursion --mode 0644 --verbatim-files-from --files-from 
>/tmp/pristine-tar.4XNCSF8pDG/manifest -H gnu
>pristine-tar: xdelta patch --pristine /tmp/pristine-tar.Dvxlxlx8Qn/delta 
>/tmp/pristine-tar.4XNCSF8pDG/recreatetarball 
>/tmp/pristine-tar.i1k0xBo1aP/rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz.tmp
>xdelta: expected from file (/tmp/pristine-tar.4XNCSF8pDG/recreatetarball) of 
>length 12779520 bytes
>pristine-tar: set subdir to rlottie
>pristine-tar: subdir is rlottie
>pristine-tar: mkdir /tmp/pristine-tar.SY9ZY0yfKg/workdir
>pristine-tar: mv /tmp/pristine-tar.4XNCSF8pDG/workdir/rlottie 
>/tmp/pristine-tar.SY9ZY0yfKg/workdir/rlottie
>pristine-tar: tar cf /tmp/pristine-tar.SY9ZY0yfKg/recreatetarball --owner 0 
>--group 0 --numeric-owner -C /tmp/pristine-tar.SY9ZY0yfKg/workdir 
>--no-recursion --mode 0644 --verbatim-files-from --files-from 
>/tmp/pristine-tar.SY9ZY0yfKg/manifest -H posix
>pristine-tar: xdelta patch --pristine /tmp/pristine-tar.Dvxlxlx8Qn/delta 
>/tmp/pristine-tar.SY9ZY0yfKg/recreatetarball 
>/tmp/pristine-tar.i1k0xBo1aP/rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz.tmp
>xdelta: expected from file (/tmp/pristine-tar.SY9ZY0yfKg/recreatetarball) of 
>length 12779520 bytes
>pristine-tar: tar cf /tmp/pristine-tar.SY9ZY0yfKg/recreatetarball --owner 0 
>--group 0 --numeric-owner -C /tmp/pristine-tar.SY9ZY0yfKg/workdir 
>--no-recursion --mode 0644 --verbatim-files-from --files-from 
>/tmp/pristine-tar.SY9ZY0yfKg/manifest
>pristine-tar: xdelta patch --pristine /tmp/pristine-tar.Dvxlxlx8Qn/delta 
>/tmp/pristine-tar.SY9ZY0yfKg/recreatetarball 
>/tmp/pristine-tar.i1k0xBo1aP/rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz.tmp
>xdelta: expected from file (/tmp/pristine-tar.SY9ZY0yfKg/recreatetarball) of 
>length 12779520 bytes
>pristine-tar: Failed to reproduce original tarball. Please file a bug report.
>pristine-tar: failed to generate tarball
>
>You'll find problematic delta in the repository of the rlottie package
>under the mymedia/weird-delta tag. Steps to reproduce:
>
>    git clone https://salsa.debian.org/debian/rlottie.git
>    git branch pristine-tar mymedia/weird-delta
>    pristine-tar checkout ../rlottie_0~git20190721.24346d0+dfsg.orig.tar.gz
>
>Here is version numbers of dependencies of both programs.

Also seeing this problem with a repo of the erlang package. Older
revisions of pristine-tar were used to make the repo, but version 1.46
in buster shows exactly the same problem as described here on that
repo. Log:

erlang$ pristine-tar checkout --debug --verbose erlang_21.2.6+dfsg.orig.tar.xz
pristine-tar: git archive --format=tar 11e992e50fb4ae6890d612a17a0d0b4d47cc900e 
| (cd '/tmp/pristine-tar.RSjPOnC1An' && tar x)
pristine-tar: tar xf /tmp/pristine-tar.5g30csWjKL/tmpin -C 
/tmp/pristine-tar.zcgIesmb_Q
pristine-tar: set subdir to otp-OTP-21.2.6
pristine-tar: subdir is otp-OTP-21.2.6
pristine-tar: mkdir /tmp/pristine-tar.AMBDcqQ1Hg/workdir
pristine-tar: mv /tmp/pristine-tar.RSjPOnC1An 
/tmp/pristine-tar.AMBDcqQ1Hg/workdir/otp-OTP-21.2.6
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/F\344\270\200.txt
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/F\344\270\200.txt
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/big.txt
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/big.txt
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/d1/
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/d1/
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/d1/f1
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/d1/f1
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/d1/f2
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/d1/f2
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/f2.txt
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/f2.txt
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/f3.txt
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/f3.txt
pristine-tar: 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/g\345\233\233.txt
 is listed in the manifest but may not be present in the source directory
pristine-tar: creating missing 
otp-OTP-21.2.6/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_\351\253\230\345\205\264/g\345\233\233.txt
pristine-tar: doing full tree sweep to catch missing files
pristine-tar: tar cf /tmp/pristine-tar.AMBDcqQ1Hg/recreatetarball --owner 0 
--group 0 --numeric-owner -C /tmp/pristine-tar.AMBDcqQ1Hg/workdir 
--no-recursion --mode 0644 --verbatim-files-from --files-from 
/tmp/pristine-tar.AMBDcqQ1Hg/manifest
pristine-tar: xdelta patch --pristine /tmp/pristine-tar.zcgIesmb_Q/delta 
/tmp/pristine-tar.AMBDcqQ1Hg/recreatetarball 
/tmp/pristine-tar.1f_dVtajKN/erlang_21.2.6+dfsg.orig.tar.xz.tmp
xdelta: expected from file (/tmp/pristine-tar.AMBDcqQ1Hg/recreatetarball) of 
length 170475520 bytes
pristine-tar: tar cf /tmp/pristine-tar.AMBDcqQ1Hg/recreatetarball --owner 0 
--group 0 --numeric-owner -C /tmp/pristine-tar.AMBDcqQ1Hg/workdir 
--no-recursion --mode 0644 --verbatim-files-from --files-from 
/tmp/pristine-tar.AMBDcqQ1Hg/manifest
pristine-tar: xdelta patch --pristine /tmp/pristine-tar.zcgIesmb_Q/delta 
/tmp/pristine-tar.AMBDcqQ1Hg/recreatetarball 
/tmp/pristine-tar.1f_dVtajKN/erlang_21.2.6+dfsg.orig.tar.xz.tmp
xdelta: expected from file (/tmp/pristine-tar.AMBDcqQ1Hg/recreatetarball) of 
length 170475520 bytes
pristine-tar: set subdir to otp-OTP-21.2.6
pristine-tar: subdir is otp-OTP-21.2.6
pristine-tar: mkdir /tmp/pristine-tar.OQqz11KMwG/workdir
pristine-tar: mv /tmp/pristine-tar.AMBDcqQ1Hg/workdir/otp-OTP-21.2.6 
/tmp/pristine-tar.OQqz11KMwG/workdir/otp-OTP-21.2.6
pristine-tar: tar cf /tmp/pristine-tar.OQqz11KMwG/recreatetarball --owner 0 
--group 0 --numeric-owner -C /tmp/pristine-tar.OQqz11KMwG/workdir 
--no-recursion --mode 0644 --verbatim-files-from --files-from 
/tmp/pristine-tar.OQqz11KMwG/manifest -H gnu
pristine-tar: xdelta patch --pristine /tmp/pristine-tar.zcgIesmb_Q/delta 
/tmp/pristine-tar.OQqz11KMwG/recreatetarball 
/tmp/pristine-tar.1f_dVtajKN/erlang_21.2.6+dfsg.orig.tar.xz.tmp
xdelta: expected from file (/tmp/pristine-tar.OQqz11KMwG/recreatetarball) of 
length 170475520 bytes
pristine-tar: set subdir to otp-OTP-21.2.6
pristine-tar: subdir is otp-OTP-21.2.6
pristine-tar: mkdir /tmp/pristine-tar.OVrlMr95XO/workdir
pristine-tar: mv /tmp/pristine-tar.OQqz11KMwG/workdir/otp-OTP-21.2.6 
/tmp/pristine-tar.OVrlMr95XO/workdir/otp-OTP-21.2.6
pristine-tar: tar cf /tmp/pristine-tar.OVrlMr95XO/recreatetarball --owner 0 
--group 0 --numeric-owner -C /tmp/pristine-tar.OVrlMr95XO/workdir 
--no-recursion --mode 0644 --verbatim-files-from --files-from 
/tmp/pristine-tar.OVrlMr95XO/manifest -H posix
pristine-tar: xdelta patch --pristine /tmp/pristine-tar.zcgIesmb_Q/delta 
/tmp/pristine-tar.OVrlMr95XO/recreatetarball 
/tmp/pristine-tar.1f_dVtajKN/erlang_21.2.6+dfsg.orig.tar.xz.tmp
xdelta: expected from file (/tmp/pristine-tar.OVrlMr95XO/recreatetarball) of 
length 170475520 bytes
pristine-tar: tar cf /tmp/pristine-tar.OVrlMr95XO/recreatetarball --owner 0 
--group 0 --numeric-owner -C /tmp/pristine-tar.OVrlMr95XO/workdir 
--no-recursion --mode 0644 --verbatim-files-from --files-from 
/tmp/pristine-tar.OVrlMr95XO/manifest
pristine-tar: xdelta patch --pristine /tmp/pristine-tar.zcgIesmb_Q/delta 
/tmp/pristine-tar.OVrlMr95XO/recreatetarball 
/tmp/pristine-tar.1f_dVtajKN/erlang_21.2.6+dfsg.orig.tar.xz.tmp
xdelta: expected from file (/tmp/pristine-tar.OVrlMr95XO/recreatetarball) of 
length 170475520 bytes
pristine-tar: Failed to reproduce original tarball. Please file a bug report.
pristine-tar: failed to generate tarball

IMHO this has to be a grave bug - without reimporting this repo we
can't get our older revisions back. Then I'm worried that this will
break things if we need to go back and rebuild older versions (using
older tooling). pristine-tar needs to be safe for data here. :-(

I've done a git bisect of the pristine-tar repo to see where things
broke, and that clearly tells me:

...
f287f10b48c3ca5a30db13dbf3ba918c47a943bb is the first bad commit
commit f287f10b48c3ca5a30db13dbf3ba918c47a943bb
Author: Tomasz Buchert <tom...@debian.org>
Date:   Fri Jan 13 23:28:04 2017 +0100

    fix #851286

:100755 100755 1a34e953ba363ae1e284b97f83f63f6ef80ea544 
3ba76f79d376d011451b8c572b20e185b715bed1 M      pristine-tar
:040000 040000 84bc809be6b4dcf81cfce71f0550858957a3e92f 
f8eb72beb458cbd9770f88f0f4efc00f0c75a299 M      test
bisect run success
...

I hope that helps the maintainers - shout if you'd like more help debugging.

-- 
Steve McIntyre, Cambridge, UK.                                st...@einval.com
"...In the UNIX world, people tend to interpret `non-technical user'
 as meaning someone who's only ever written one device driver." -- Daniel Pead

Reply via email to