Bug#1004312: diffoscope: can't diff non-existent file with .pyc: struct.error: unpack requires a buffer of 4 bytes

Jakub Wilk jwilk at jwilk.net
Mon Jan 24 19:03:12 GMT 2022


Package: diffoscope
Version: 201

I wanted to use diffoscope to see what's inside a .pyc file, but that 
didn't work:

    $ echo '6 * 7' > test.py

    $ python3 -m compileall -b test.py
    Compiling 'test.py'...

    $ diffoscope --new-file /nonexistent test.pyc
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 752, in main
        sys.exit(run_diffoscope(parsed_args))
      File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 707, 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 128, in compare_files
        return file1.compare(file2, source)
      File "/usr/lib/python3/dist-packages/diffoscope/comparators/missing_file.py", line 89, in compare
        backward_diff = other.compare(self, source)
      File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 502, in compare
        difference = self._compare_using_details(other, source)
      File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 409, in _compare_using_details
        details.extend(self.compare_details(other, source))
      File "/usr/lib/python3/dist-packages/diffoscope/comparators/python.py", line 45, in compare_details
        describe_pyc(other.path),
      File "/usr/lib/python3/dist-packages/diffoscope/comparators/python.py", line 58, in describe_pyc
        return "\n".join(parse_pyc(f))
      File "/usr/lib/python3/dist-packages/diffoscope/comparators/python.py", line 67, in parse_pyc
        modtime = time.asctime(time.gmtime(struct.unpack("<L", moddate)[0]))
    struct.error: unpack requires a buffer of 4 bytes

-- 
Jakub Wilk



More information about the Reproducible-builds mailing list