kpcyrd / rebuilderd

Independent verification of binary packages - reproducible builds
GNU General Public License v3.0
352 stars 23 forks source link

Generate diffoscope from artifact_path, not input_path #102

Closed kpcyrd closed 2 years ago

kpcyrd commented 2 years ago

Currently diffoscope is run like this:

diffoscope /path/to.buildinfo /path/to/output.deb

this likely causing this exception:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 746, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 700, in run_diffoscope
    difference = compare_root_paths(path1, path2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 69, in compare_root_paths
    difference = compare_files(file1, file2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 125, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 494, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 401, in _compare_using_details
    details.extend(self.compare_details(other, source))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 152, in compare_details
    gpg_b = self._parse_gpg(other)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 143, in _parse_gpg
    header, _, footer = Deb822.split_gpg_and_payload(f)
  File "/usr/local/lib/python3.9/dist-packages/python_debian-0.1.40_git20211202-py3.9.egg/debian/deb822.py", line 1168, in split_gpg_and_payload
    for line_ in sequence:
  File "/usr/lib/python3.9/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfd in position 132: invalid start byte

This doesn't affect Arch Linux because input_url and artifact_url have the same value there.