Your message dated Mon, 19 Aug 2024 09:55:28 +0000
with message-id <[email protected]>
and subject line Bug#1002789: fixed in python-pycdlib 1.12.0+ds1-7
has caused the Debian Bug report #1002789,
regarding python-pycdlib: FTBFS during tests if /tmp is not a tmpfs
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1002789: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002789
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: python-pycdlib
Version: 1.12.0+ds1-3
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: [email protected]
Usertags: ftbfs-20211228 ftbfs-bookworm

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> make[1]: pyversions: No such file or directory
> py3versions: no X-Python3-Version in control file, using supported versions
> pkgos-dh_auto_install --no-py2 --in-tmp
> + PKGOS_USE_PY2=yes
> + PKGOS_USE_PY3=yes
> + PKGOS_IN_TMP=no
> + PKGOS_USE_PY2=no
> + shift
> + PKGOS_IN_TMP=yes
> + shift
> + dpkg-parsechangelog -SSource
> + SRC_PKG_NAME=python-pycdlib
> + echo python-pycdlib
> + sed s/python-//
> + PY_MODULE_NAME=pycdlib
> + [ no = yes ]
> + [ yes = yes ]
> + py3versions -vr
> + PYTHON3S=3.10 3.9
> + [ no = yes ]
> + [ yes = yes ]
> + [ yes = yes ]
> + TARGET_DIR=tmp
> + pwd
> + python3.10 setup.py install --install-layout=deb --root 
> /<<PKGBUILDDIR>>/debian/tmp
> running install
> /usr/lib/python3/dist-packages/setuptools/command/install.py:34: 
> SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and 
> pip and other standards-based tools.
>   warnings.warn(
> running build
> running build_py
> creating build
> creating build/lib
> creating build/lib/pycdlib
> copying pycdlib/__init__.py -> build/lib/pycdlib
> copying pycdlib/dates.py -> build/lib/pycdlib
> copying pycdlib/backport_functools.py -> build/lib/pycdlib
> copying pycdlib/eltorito.py -> build/lib/pycdlib
> copying pycdlib/pycdlibexception.py -> build/lib/pycdlib
> copying pycdlib/udf.py -> build/lib/pycdlib
> copying pycdlib/rockridge.py -> build/lib/pycdlib
> copying pycdlib/pycdlib.py -> build/lib/pycdlib
> copying pycdlib/isohybrid.py -> build/lib/pycdlib
> copying pycdlib/headervd.py -> build/lib/pycdlib
> copying pycdlib/path_table_record.py -> build/lib/pycdlib
> copying pycdlib/facade.py -> build/lib/pycdlib
> copying pycdlib/dr.py -> build/lib/pycdlib
> copying pycdlib/inode.py -> build/lib/pycdlib
> copying pycdlib/pycdlibio.py -> build/lib/pycdlib
> copying pycdlib/utils.py -> build/lib/pycdlib
> running build_scripts
> creating build/scripts-3.10
> copying and adjusting tools/pycdlib-explorer -> build/scripts-3.10
> copying and adjusting tools/pycdlib-extract-files -> build/scripts-3.10
> copying and adjusting tools/pycdlib-genisoimage -> build/scripts-3.10
> changing mode of build/scripts-3.10/pycdlib-explorer from 644 to 755
> changing mode of build/scripts-3.10/pycdlib-extract-files from 644 to 755
> changing mode of build/scripts-3.10/pycdlib-genisoimage from 644 to 755
> running install_lib
> creating /<<PKGBUILDDIR>>/debian/tmp
> creating /<<PKGBUILDDIR>>/debian/tmp/usr
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/__init__.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/dates.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/backport_functools.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/eltorito.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/pycdlibexception.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/udf.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/rockridge.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/pycdlib.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/isohybrid.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/headervd.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/path_table_record.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/facade.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/dr.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/inode.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/pycdlibio.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> copying build/lib/pycdlib/utils.py -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/__init__.py 
> to __init__.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dates.py to 
> dates.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/backport_functools.py
>  to backport_functools.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/eltorito.py 
> to eltorito.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibexception.py
>  to pycdlibexception.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/udf.py to 
> udf.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/rockridge.py
>  to rockridge.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlib.py 
> to pycdlib.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/isohybrid.py
>  to isohybrid.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/headervd.py 
> to headervd.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/path_table_record.py
>  to path_table_record.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/facade.py 
> to facade.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dr.py to 
> dr.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/inode.py to 
> inode.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibio.py
>  to pycdlibio.cpython-310.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/utils.py to 
> utils.cpython-310.pyc
> running install_data
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/share
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/share/man
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
> copying man/pycdlib-explorer.1 -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
> copying man/pycdlib-extract-files.1 -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
> copying man/pycdlib-genisoimage.1 -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/share/man/man1
> running install_egg_info
> running egg_info
> creating pycdlib.egg-info
> writing pycdlib.egg-info/PKG-INFO
> writing dependency_links to pycdlib.egg-info/dependency_links.txt
> writing top-level names to pycdlib.egg-info/top_level.txt
> writing manifest file 'pycdlib.egg-info/SOURCES.txt'
> reading manifest file 'pycdlib.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> adding license file 'COPYING'
> writing manifest file 'pycdlib.egg-info/SOURCES.txt'
> Copying pycdlib.egg-info to 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib-1.12.0.egg-info
> Skipping SOURCES.txt
> running install_scripts
> creating /<<PKGBUILDDIR>>/debian/tmp/usr/bin
> copying build/scripts-3.10/pycdlib-genisoimage -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
> copying build/scripts-3.10/pycdlib-extract-files -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
> copying build/scripts-3.10/pycdlib-explorer -> 
> /<<PKGBUILDDIR>>/debian/tmp/usr/bin
> changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-genisoimage to 
> 755
> changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-extract-files to 
> 755
> changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-explorer to 755
> + pwd
> + python3.9 setup.py install --install-layout=deb --root 
> /<<PKGBUILDDIR>>/debian/tmp
> running install
> /usr/lib/python3/dist-packages/setuptools/command/install.py:34: 
> SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and 
> pip and other standards-based tools.
>   warnings.warn(
> running build
> running build_py
> running build_scripts
> creating build/scripts-3.9
> copying and adjusting tools/pycdlib-explorer -> build/scripts-3.9
> copying and adjusting tools/pycdlib-extract-files -> build/scripts-3.9
> copying and adjusting tools/pycdlib-genisoimage -> build/scripts-3.9
> changing mode of build/scripts-3.9/pycdlib-explorer from 644 to 755
> changing mode of build/scripts-3.9/pycdlib-extract-files from 644 to 755
> changing mode of build/scripts-3.9/pycdlib-genisoimage from 644 to 755
> running install_lib
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/__init__.py 
> to __init__.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dates.py to 
> dates.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/backport_functools.py
>  to backport_functools.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/eltorito.py 
> to eltorito.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibexception.py
>  to pycdlibexception.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/udf.py to 
> udf.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/rockridge.py
>  to rockridge.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlib.py 
> to pycdlib.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/isohybrid.py
>  to isohybrid.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/headervd.py 
> to headervd.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/path_table_record.py
>  to path_table_record.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/facade.py 
> to facade.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/dr.py to 
> dr.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/inode.py to 
> inode.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/pycdlibio.py
>  to pycdlibio.cpython-39.pyc
> byte-compiling 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib/utils.py to 
> utils.cpython-39.pyc
> running install_data
> running install_egg_info
> running egg_info
> writing pycdlib.egg-info/PKG-INFO
> writing dependency_links to pycdlib.egg-info/dependency_links.txt
> writing top-level names to pycdlib.egg-info/top_level.txt
> reading manifest file 'pycdlib.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> adding license file 'COPYING'
> writing manifest file 'pycdlib.egg-info/SOURCES.txt'
> removing 
> '/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib-1.12.0.egg-info'
>  (and everything under it)
> Copying pycdlib.egg-info to 
> /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages/pycdlib-1.12.0.egg-info
> Skipping SOURCES.txt
> running install_scripts
> changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-genisoimage to 
> 755
> changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-extract-files to 
> 755
> changing mode of /<<PKGBUILDDIR>>/debian/tmp/usr/bin/pycdlib-explorer to 755
> + pwd
> + rm -rf /<<PKGBUILDDIR>>/debian/python*/usr/lib/python*/dist-packages/*.pth
> + pwd
> + rm -rf /<<PKGBUILDDIR>>/debian/tmp/usr/lib/python*/dist-packages/*.pth
> + pwd
> + [ -d /<<PKGBUILDDIR>>/debian/python-pycdlib/usr/bin ]
> set -e ; set -x ; for pyvers in 3.10 3.9; do \
>       PATH=$PATH:/<<PKGBUILDDIR>>/debian/tmp/usr/bin 
> PYTHONPATH=/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages 
> python$pyvers -m pytest tests ; \
> done
> + 
> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/<<PKGBUILDDIR>>/debian/tmp/usr/bin
>  PYTHONPATH=/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python3/dist-packages 
> python3.10 -m pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.10.1, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collected 1721 items
> 
> tests/integration/test_facade.py ....................................... [  
> 2%]
> ..................                                                       [  
> 3%]
> tests/integration/test_hybrid.py ....................................... [  
> 5%]
> ....................s..............F.................................... [  
> 9%]
> .........s.....................                                          [ 
> 11%]
> tests/integration/test_new.py .......................................... [ 
> 14%]
> ........................................................................ [ 
> 18%]
> ........................................................................ [ 
> 22%]
> ........................................................................ [ 
> 26%]
> ......................................................ssss.............. [ 
> 30%]
> ........................................................................ [ 
> 34%]
> ..................................................................s      [ 
> 38%]
> tests/integration/test_parse.py ........................................ [ 
> 41%]
> ....sss...FFF................F.......................................... [ 
> 45%]
> ...................................F.s............F.F................... [ 
> 49%]
> ......s.................                                                 [ 
> 50%]
> tests/tools/test_pycdlib_genisoimage.py .ssss.                           [ 
> 51%]
> tests/unit/test_dates.py .........................                       [ 
> 52%]
> tests/unit/test_dr.py .........................................          [ 
> 55%]
> tests/unit/test_eltorito.py ...............................              [ 
> 56%]
> tests/unit/test_headervd.py ............................................ [ 
> 59%]
> .......                                                                  [ 
> 59%]
> tests/unit/test_inode.py .......                                         [ 
> 60%]
> tests/unit/test_isohybrid.py ........................................... [ 
> 62%]
>                                                                          [ 
> 62%]
> tests/unit/test_ptr.py ........                                          [ 
> 63%]
> tests/unit/test_rockridge.py ........................................... [ 
> 65%]
> ........................................................................ [ 
> 69%]
> ........................................................................ [ 
> 74%]
> .....................................................                    [ 
> 77%]
> tests/unit/test_udf.py ................................................. [ 
> 80%]
> ........................................................................ [ 
> 84%]
> ........................................................................ [ 
> 88%]
> ........................................................................ [ 
> 92%]
> ........................................................................ [ 
> 96%]
> ................                                                         [ 
> 97%]
> tests/unit/test_utils.py ........................................        
> [100%]
> 
> =================================== FAILURES 
> ===================================
> __________________________ test_hybrid_sevendeepdirs 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0')
> 
>     def test_hybrid_sevendeepdirs(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('sevendeepdirs')
>         outfile = str(indir)+'.iso'
>         numdirs = 8
>         x = indir
>         for i in range(1, 1+numdirs):
>             x = x.mkdir('dir%d' % i)
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
>         # Now open up the ISO with pycdlib and check some things out.
>         iso = pycdlib.PyCdlib()
>     
>         iso.open(str(outfile))
>     
>         iso.rm_directory('/DIR1/DIR2/DIR3/DIR4/DIR5/DIR6/DIR7/DIR8', 
> rr_name='dir8')
>     
> >       do_a_test(iso, check_sevendeepdirs)
> 
> tests/integration/test_hybrid.py:1622: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_hybrid.py:21: in do_a_test
>     check_func(iso, len(out.getvalue()))
> tests/integration/test_common.py:2340: in check_sevendeepdirs
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=3, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=3, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c86f94640>, rr = 
> True
> rr_nlinks = 3, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 2 == 3
> E            +  where 2 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87d34f90>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87d34f90> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c876f1dd0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c876f1dd0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f140>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f140> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86f94640>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_hybrid_sevendeepdirs0/sevendeepdirs/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
>   23   474 
>   24   322 rr_moved
>   25   216 dir8
>   26   318 dir1
>   27   318 dir2
>   28   318 dir3
>   29   318 dir4
>   30   318 dir5
>   31   318 dir6
>   32   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir1/.'
> Cache hit for 'dir1/..'
> Cache hit for 'dir2/.'
> Cache hit for 'dir2/..'
> Cache hit for 'dir3/.'
> Cache hit for 'dir3/..'
> Cache hit for 'dir4/.'
> Cache hit for 'dir4/..'
> Cache hit for 'dir5/.'
> Cache hit for 'dir5/..'
> Cache hit for 'dir6/.'
> Cache hit for 'dir6/..'
> Cache hit for 'dir7/.'
> Cache hit for 'dir7/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    10
> Writing:   Directory tree cleanup                  Start Block 33
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 33
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 34
> Total extents scheduled to be written = 34
> Total translation table size: 0
> Total rockridge attributes bytes: 2167
> Total directory bytes: 18906
> Path table size(bytes): 122
> Done with: The File(s)                             Block(s)    0
> Max brk space used 43000
> 34 extents written (0 MB)
> ____________________________ test_parse_rr_deep_dir 
> ____________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0')
> 
>     def test_parse_rr_deep_dir(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep_dir)
> 
> tests/integration/test_parse.py:706: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2257: in check_rr_deep_dir
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c87e23d40>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c88267fb0>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c88267fb0> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b7b110>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b7b110> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c87e35c40>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c87e35c40> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c87e23d40>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_dir0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
>   23   474 
>   24   322 rr_moved
>   25   216 dir8
>   26   318 dir1
>   27   318 dir2
>   28   318 dir3
>   29   318 dir4
>   30   318 dir5
>   31   318 dir6
>   32   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir1/.'
> Cache hit for 'dir1/..'
> Cache hit for 'dir2/.'
> Cache hit for 'dir2/..'
> Cache hit for 'dir3/.'
> Cache hit for 'dir3/..'
> Cache hit for 'dir4/.'
> Cache hit for 'dir4/..'
> Cache hit for 'dir5/.'
> Cache hit for 'dir5/..'
> Cache hit for 'dir6/.'
> Cache hit for 'dir6/..'
> Cache hit for 'dir7/.'
> Cache hit for 'dir7/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    10
> Writing:   Directory tree cleanup                  Start Block 33
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 33
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 34
> Total extents scheduled to be written = 34
> Total translation table size: 0
> Total rockridge attributes bytes: 2167
> Total directory bytes: 18906
> Path table size(bytes): 122
> Done with: The File(s)                             Block(s)    0
> Max brk space used 43000
> 34 extents written (0 MB)
> ______________________________ test_parse_rr_deep 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0')
> 
>     def test_parse_rr_deep(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8')
>         with open(os.path.join(str(indir), 'dir1', 'dir2', 'dir3', 'dir4', 
> 'dir5', 'dir6', 'dir7', 'dir8', 'foo'), 'wb') as outfp:
>             outfp.write(b'foo\n')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep)
> 
> tests/integration/test_parse.py:718: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2268: in check_rr_deep
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c86b14140>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87ce7e20>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87ce7e20> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b816f0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b816f0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f5a0>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8675f5a0> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86b14140>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
>   23   474 
>   24   322 rr_moved
>   25   332 dir8
>   26   318 dir1
>   27   318 dir2
>   28   318 dir3
>   29   318 dir4
>   30   318 dir5
>   31   318 dir6
>   32   330 dir7
> Cache hit for 'dir8/.'
>       34       34 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/foo
> Cache hit for 'dir1/.'
> Cache hit for 'dir1/..'
> Cache hit for 'dir2/.'
> Cache hit for 'dir2/..'
> Cache hit for 'dir3/.'
> Cache hit for 'dir3/..'
> Cache hit for 'dir4/.'
> Cache hit for 'dir4/..'
> Cache hit for 'dir5/.'
> Cache hit for 'dir5/..'
> Cache hit for 'dir6/.'
> Cache hit for 'dir6/..'
> Cache hit for 'dir7/.'
> Cache hit for 'dir7/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    10
> Writing:   Directory tree cleanup                  Start Block 33
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 33
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 34
> Total extents scheduled to be written = 35
> Total translation table size: 0
> Total rockridge attributes bytes: 2242
> Total directory bytes: 18906
> Path table size(bytes): 122
> Done with: The File(s)                             Block(s)    1
> Max brk space used 43000
> 35 extents written (0 MB)
> _____________________________ test_parse_rr_deep2 
> ______________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20')
> 
>     def test_parse_rr_deep2(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8').mkdir('dir9')
>         with open(os.path.join(str(indir), 'dir1', 'dir2', 'dir3', 'dir4', 
> 'dir5', 'dir6', 'dir7', 'dir8', 'dir9', 'foo'), 'wb') as outfp:
>             outfp.write(b'foo\n')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep2)
> 
> tests/integration/test_parse.py:730: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2281: in check_rr_deep2
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c86b14d40>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87015b20>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87015b20> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c879ce090>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c879ce090> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b3e030>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b3e030> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86b14d40>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1
> Scanning /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
>   23   474 
>   24   322 rr_moved
>   25   330 dir8
>   26   320 dir9
>   27   318 dir1
>   28   318 dir2
>   29   318 dir3
>   30   318 dir4
>   31   318 dir5
>   32   318 dir6
>   33   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir9/.'
> Cache hit for 'dir9/..'
>       35       35 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep20/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/foo
> Cache hit for 'dir1/.'
> Cache hit for 'dir1/..'
> Cache hit for 'dir2/.'
> Cache hit for 'dir2/..'
> Cache hit for 'dir3/.'
> Cache hit for 'dir3/..'
> Cache hit for 'dir4/.'
> Cache hit for 'dir4/..'
> Cache hit for 'dir5/.'
> Cache hit for 'dir5/..'
> Cache hit for 'dir6/.'
> Cache hit for 'dir6/..'
> Cache hit for 'dir7/.'
> Cache hit for 'dir7/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    11
> Writing:   Directory tree cleanup                  Start Block 34
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 34
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 35
> Total extents scheduled to be written = 36
> Total translation table size: 0
> Total rockridge attributes bytes: 2452
> Total directory bytes: 20954
> Path table size(bytes): 134
> Done with: The File(s)                             Block(s)    1
> Max brk space used 43000
> 36 extents written (0 MB)
> __________________________ test_parse_rr_joliet_deep 
> ___________________________
> 
> tmpdir = local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0')
> 
>     def test_parse_rr_joliet_deep(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrjolietdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-J', '-o', str(outfile), 
> str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_joliet_deep)
> 
> tests/integration/test_parse.py:923: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:2776: in check_rr_joliet_deep
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=28, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c87716840>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c869d7c40>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c869d7c40> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86c092d0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86c092d0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b2f760>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86b2f760> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c87716840>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_joliet_deep0/rrjolietdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
>   28   474 
>   29   322 rr_moved
>   30   216 dir8
>   31   318 dir1
>   32   318 dir2
>   33   318 dir3
>   34   318 dir4
>   35   318 dir5
>   36   318 dir6
>   37   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir1/.'
> Cache hit for 'dir1/..'
> Cache hit for 'dir2/.'
> Cache hit for 'dir2/..'
> Cache hit for 'dir3/.'
> Cache hit for 'dir3/..'
> Cache hit for 'dir4/.'
> Cache hit for 'dir4/..'
> Cache hit for 'dir5/.'
> Cache hit for 'dir5/..'
> Cache hit for 'dir6/.'
> Cache hit for 'dir6/..'
> Cache hit for 'dir7/.'
> Cache hit for 'dir7/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   Joliet Volume Descriptor                Start Block 17
> Done with: Joliet Volume Descriptor                Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 18
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 19
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 20
> Done with: Path table                              Block(s)    4
> Writing:   Joliet path table                       Start Block 24
> Done with: Joliet path table                       Block(s)    4
> Writing:   Directory tree                          Start Block 28
> Done with: Directory tree                          Block(s)    10
> Writing:   Joliet directory tree                   Start Block 38
> Done with: Joliet directory tree                   Block(s)    9
> Writing:   Directory tree cleanup                  Start Block 47
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 47
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 48
> Total extents scheduled to be written = 48
> Total translation table size: 0
> Total rockridge attributes bytes: 2167
> Total directory bytes: 18906
> Path table size(bytes): 122
> Done with: The File(s)                             Block(s)    0
> Max brk space used 43000
> 48 extents written (0 MB)
> ______________________ test_parse_duplicate_rrmoved_name 
> _______________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0')
> 
>     def test_parse_duplicate_rrmoved_name(tmpdir):
>         iso = pycdlib.PyCdlib()
>         iso.new(rock_ridge='1.09')
>     
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('eltoritonofiles')
>         outfile = str(indir)+'.iso'
>         fdir = 
> indir.mkdir('A').mkdir('B').mkdir('C').mkdir('D').mkdir('E').mkdir('F')
>         fdir.mkdir('G').mkdir('1')
>         fdir.mkdir('H').mkdir('1')
>         with open(os.path.join(str(indir), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 
> '1', 'first'), 'wb') as outfp:
>             outfp.write(b'first\n')
>         with open(os.path.join(str(indir), 'A', 'B', 'C', 'D', 'E', 'F', 'H', 
> '1', 'second'), 'wb') as outfp:
>             outfp.write(b'second\n')
>     
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_two_dirs_same_level)
> 
> tests/integration/test_parse.py:2305: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:3567: in check_rr_two_dirs_same_level
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c86b9a340>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c86aad260>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c86aad260> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c870292d0>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c870292d0> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86c04a50>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c86c04a50> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86b9a340>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/H
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/H/1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/G
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/G/1
> Using 1000 for  ./rr_moved/1 (1)
>   23   468 
>   24   432 rr_moved
>   25   336 1
>   26   336 1
>   27   312 A
>   28   312 B
>   29   312 C
>   30   312 D
>   31   312 E
>   32   420 F
>   33   324 H
>   34   324 G
> Cache hit for '1/.'
>       36       36 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/H/1/second
> Cache hit for '1/.'
>       37       37 
> /tmp/pytest-of-user42/pytest-11/test_parse_duplicate_rrmoved_n0/eltoritonofiles/A/B/C/D/E/F/G/1/first
> Cache hit for 'A/.'
> Cache hit for 'A/..'
> Cache hit for 'B/.'
> Cache hit for 'B/..'
> Cache hit for 'C/.'
> Cache hit for 'C/..'
> Cache hit for 'D/.'
> Cache hit for 'D/..'
> Cache hit for 'E/.'
> Cache hit for 'E/..'
> Cache hit for 'F/.'
> Cache hit for 'F/..'
> Cache hit for 'H/.'
> Cache hit for 'H/..'
> Cache hit for 'G/.'
> Cache hit for 'G/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    12
> Writing:   Directory tree cleanup                  Start Block 35
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 35
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 36
> Total extents scheduled to be written = 38
> Total translation table size: 0
> Total rockridge attributes bytes: 2810
> Total directory bytes: 22996
> Path table size(bytes): 128
> Done with: The File(s)                             Block(s)    2
> Max brk space used 43000
> 38 extents written (0 MB)
> _______________________ test_parse_rr_deep_weird_layout 
> ________________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0')
> 
>     def test_parse_rr_deep_weird_layout(tmpdir):
>         indir = tmpdir.mkdir('rrdeepweird')
>         outfile = str(indir) + '.iso'
>         absimp = 
> indir.mkdir('astroid').mkdir('astroid').mkdir('tests').mkdir('testdata').mkdir('python3').mkdir('data').mkdir('absimp')
>         sidepackage = absimp.mkdir('sidepackage')
>         with open(os.path.join(str(absimp), 'string.py'), 'wb') as outfp:
>             outfp.write(b'from __future__ import absolute_import, 
> print_functino\nimport string\nprint(string)\n')
>         with open(os.path.join(str(sidepackage), '__init__.py'), 'wb') as 
> outfp:
>             outfp.write(b'"""a side package with nothing in it\n"""\n')
>     
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-o', str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_deep_weird_layout)
> 
> tests/integration/test_parse.py:2495: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:3986: in check_rr_deep_weird_layout
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c871d2440>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c882d4d10>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c882d4d10> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c87173480>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c87173480> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8724fbc0>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c8724fbc0> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c871d2440>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp/sidepackage
>   23   480 
>   24   334 rr_moved
>   25   346 sidepackage
>   26   324 astroid
>   27   320 astroid
>   28   326 tests
>   29   324 testdata
>   30   318 python3
>   31   322 data
>   32   468 absimp
> Cache hit for 'sidepackage/.'
>       34       34 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp/sidepackage/__init__.py
> Cache hit for 'astroid/.'
> Cache hit for 'astroid/..'
> Cache hit for 'astroid/.'
> Cache hit for 'astroid/..'
> Cache hit for 'tests/.'
> Cache hit for 'tests/..'
> Cache hit for 'testdata/.'
> Cache hit for 'testdata/..'
> Cache hit for 'python3/.'
> Cache hit for 'python3/..'
> Cache hit for 'data/.'
> Cache hit for 'data/..'
> Cache hit for 'absimp/.'
> Cache hit for 'absimp/..'
>       35       35 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_deep_weird_layou0/rrdeepweird/astroid/astroid/tests/testdata/python3/data/absimp/string.py
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    10
> Writing:   Directory tree cleanup                  Start Block 33
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 33
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 34
> Total extents scheduled to be written = 36
> Total translation table size: 0
> Total rockridge attributes bytes: 2361
> Total directory bytes: 18912
> Path table size(bytes): 146
> Done with: The File(s)                             Block(s)    2
> Max brk space used 43000
> 36 extents written (0 MB)
> ________________________ test_parse_rr_hidden_relocated 
> ________________________
> 
> tmpdir = 
> local('/tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0')
> 
>     def test_parse_rr_hidden_relocated(tmpdir):
>         # First set things up, and generate the ISO with genisoimage.
>         indir = tmpdir.mkdir('rrdeep')
>         outfile = str(indir)+'.iso'
>         
> indir.mkdir('dir1').mkdir('dir2').mkdir('dir3').mkdir('dir4').mkdir('dir5').mkdir('dir6').mkdir('dir7').mkdir('dir8').mkdir('dir9')
>         with open(os.path.join(str(indir), 'dir1', 'dir2', 'dir3', 'dir4', 
> 'dir5', 'dir6', 'dir7', 'dir8', 'dir9', 'foo'), 'wb') as outfp:
>             outfp.write(b'foo\n')
>         subprocess.call(['genisoimage', '-v', '-v', '-iso-level', '1', 
> '-no-pad',
>                          '-rational-rock', '-hide-rr-moved', '-o', 
> str(outfile), str(indir)])
>     
> >       do_a_test(tmpdir, outfile, check_rr_relocated_hidden)
> 
> tests/integration/test_parse.py:2516: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/integration/test_parse.py:21: in do_a_test
>     check_func(iso, os.stat(str(outfile)).st_size)
> tests/integration/test_common.py:4098: in check_rr_relocated_hidden
>     internal_check_root_dir_record(iso.pvd.root_dir_record, num_children=4, 
> data_length=2048, extent_location=23, rr=True, rr_nlinks=4, xa=False, 
> rr_onetwelve=False)
> tests/integration/test_common.py:289: in internal_check_root_dir_record
>     internal_check_dotdot_dir_record(root_dir_record.children[1], rr=rr, 
> rr_nlinks=rr_nlinks, xa=xa, rr_onetwelve=rr_onetwelve)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> dotdot_record = <pycdlib.dr.DirectoryRecord object at 0x7f9c86fe9040>, rr = 
> True
> rr_nlinks = 4, xa = False, rr_onetwelve = False
> 
>     def internal_check_dotdot_dir_record(dotdot_record, rr, rr_nlinks, xa, 
> rr_onetwelve):
>         # The file identifier for the 'dotdot' directory entry should be the 
> byte 1.
>         assert(dotdot_record.file_ident == b'\x01')
>         # The 'dotdot' directory entry should be a directory.
>         assert(dotdot_record.isdir == True)
>         # The 'dotdot' directory record length should be exactly 34 with no 
> extensions.
>         if rr:
>             if rr_onetwelve:
>                 expected_dr_len = 104
>             else:
>                 expected_dr_len = 102
>         else:
>             expected_dr_len = 34
>     
>         if xa:
>             expected_dr_len += 14
>     
>         assert(dotdot_record.dr_len == expected_dr_len)
>         # The 'dotdot' directory record is not the root.
>         assert(dotdot_record.is_root == False)
>         # The 'dotdot' directory record should have no children.
>         assert(len(dotdot_record.children) == 0)
>         assert(dotdot_record.file_flags == 2)
>     
>         if rr:
>             assert(dotdot_record.rock_ridge._initialized == True)
>             assert(dotdot_record.rock_ridge.dr_entries.sp_record == None)
>             if not rr_onetwelve:
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record != None)
>                 assert(dotdot_record.rock_ridge.dr_entries.rr_record.rr_flags 
> == 0x81)
>             assert(dotdot_record.rock_ridge.dr_entries.ce_record == None)
>             assert(dotdot_record.rock_ridge.dr_entries.px_record != None)
>             
> assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_mode == 
> 0o040555)
> >           
> > assert(dotdot_record.rock_ridge.dr_entries.px_record.posix_file_links == 
> > rr_nlinks)
> E           assert 3 == 4
> E            +  where 3 = <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87d168e0>.posix_file_links
> E            +    where <pycdlib.rockridge.RRPXRecord object at 
> 0x7f9c87d168e0> = <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b63060>.px_record
> E            +      where <pycdlib.rockridge.RockRidgeEntries object at 
> 0x7f9c86b63060> = <pycdlib.rockridge.RockRidge object at 
> 0x7f9c871e6ab0>.dr_entries
> E            +        where <pycdlib.rockridge.RockRidge object at 
> 0x7f9c871e6ab0> = <pycdlib.dr.DirectoryRecord object at 
> 0x7f9c86fe9040>.rock_ridge
> 
> tests/integration/test_common.py:416: AssertionError
> ----------------------------- Captured stderr call 
> -----------------------------
> I: -input-charset not specified, using utf-8 (detected in locale settings)
> genisoimage 1.1.11 (Linux)
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8
> Scanning 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9
>   23   476 
>   24   322 .rr_moved
>   25   330 dir8
>   26   320 dir9
>   27   318 dir1
>   28   318 dir2
>   29   318 dir3
>   30   318 dir4
>   31   318 dir5
>   32   318 dir6
>   33   330 dir7
> Cache hit for 'dir8/.'
> Cache hit for 'dir9/.'
> Cache hit for 'dir9/..'
>       35       35 
> /tmp/pytest-of-user42/pytest-11/test_parse_rr_hidden_relocated0/rrdeep/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/foo
> Cache hit for 'dir1/.'
> Cache hit for 'dir1/..'
> Cache hit for 'dir2/.'
> Cache hit for 'dir2/..'
> Cache hit for 'dir3/.'
> Cache hit for 'dir3/..'
> Cache hit for 'dir4/.'
> Cache hit for 'dir4/..'
> Cache hit for 'dir5/.'
> Cache hit for 'dir5/..'
> Cache hit for 'dir6/.'
> Cache hit for 'dir6/..'
> Cache hit for 'dir7/.'
> Cache hit for 'dir7/..'
> Writing:   Initial Padblock                        Start Block 0
> Done with: Initial Padblock                        Block(s)    16
> Writing:   Primary Volume Descriptor               Start Block 16
> Done with: Primary Volume Descriptor               Block(s)    1
> Writing:   End Volume Descriptor                   Start Block 17
> Done with: End Volume Descriptor                   Block(s)    1
> Writing:   Version block                           Start Block 18
> Done with: Version block                           Block(s)    1
> Writing:   Path table                              Start Block 19
> Done with: Path table                              Block(s)    4
> Writing:   Directory tree                          Start Block 23
> Done with: Directory tree                          Block(s)    11
> Writing:   Directory tree cleanup                  Start Block 34
> Done with: Directory tree cleanup                  Block(s)    0
> Writing:   Extension record                        Start Block 34
> Done with: Extension record                        Block(s)    1
> Writing:   The File(s)                             Start Block 35
> Total extents scheduled to be written = 36
> Total translation table size: 0
> Total rockridge attributes bytes: 2453
> Total directory bytes: 20956
> Path table size(bytes): 134
> Done with: The File(s)                             Block(s)    1
> Max brk space used 43000
> 36 extents written (0 MB)
> =========================== short test summary info 
> ============================
> FAILED tests/integration/test_hybrid.py::test_hybrid_sevendeepdirs - assert 
> 2...
> FAILED tests/integration/test_parse.py::test_parse_rr_deep_dir - assert 3 == 4
> FAILED tests/integration/test_parse.py::test_parse_rr_deep - assert 3 == 4
> FAILED tests/integration/test_parse.py::test_parse_rr_deep2 - assert 3 == 4
> FAILED tests/integration/test_parse.py::test_parse_rr_joliet_deep - assert 3 
> ...
> FAILED tests/integration/test_parse.py::test_parse_duplicate_rrmoved_name - 
> a...
> FAILED tests/integration/test_parse.py::test_parse_rr_deep_weird_layout - 
> ass...
> FAILED tests/integration/test_parse.py::test_parse_rr_hidden_relocated - 
> asse...
> ================== 8 failed, 1697 passed, 16 skipped in 9.23s 
> ==================
> make[1]: *** [debian/rules:19: override_dh_auto_install] Error 1


The full build log is available from:
http://qa-logs.debian.net/2021/12/28/python-pycdlib_1.12.0+ds1-3_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: python-pycdlib
Source-Version: 1.12.0+ds1-7
Done: Thomas Goirand <[email protected]>

We believe that the bug you reported is fixed in the latest version of
python-pycdlib, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Thomas Goirand <[email protected]> (supplier of updated python-pycdlib package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Mon, 19 Aug 2024 11:31:58 +0200
Source: python-pycdlib
Architecture: source
Version: 1.12.0+ds1-7
Distribution: unstable
Urgency: medium
Maintainer: Debian OpenStack <[email protected]>
Changed-By: Thomas Goirand <[email protected]>
Closes: 1002789
Changes:
 python-pycdlib (1.12.0+ds1-7) unstable; urgency=medium
 .
   * Run tests only if /tmp is in tmpfs, because otherwise they are
     known to fail. (Closes: #1002789).
Checksums-Sha1:
 dfcd2432cd0f32bb263931107d144bef110e080a 2151 python-pycdlib_1.12.0+ds1-7.dsc
 9ca24df3e9e65082ff980e98f85f33e350659968 18912 
python-pycdlib_1.12.0+ds1-7.debian.tar.xz
 37608bfaea92d2b95d7da51a0da2bf3196015dfc 7193 
python-pycdlib_1.12.0+ds1-7_amd64.buildinfo
Checksums-Sha256:
 7f661e00fdad1530061a65175c036f9186b84a0af4e2c6323d5ddb1d941d2a34 2151 
python-pycdlib_1.12.0+ds1-7.dsc
 79c1e804054967b352bb1e26c8f1ccedc146b37dc01e21700ff991e2e80a4dc8 18912 
python-pycdlib_1.12.0+ds1-7.debian.tar.xz
 02b91e6616d67b4b10ea543f18a1d80e56272bbd25b3d5e0def102c4deb9e723 7193 
python-pycdlib_1.12.0+ds1-7_amd64.buildinfo
Files:
 213d6999dd1d733f73ef0853ae20a60c 2151 python optional 
python-pycdlib_1.12.0+ds1-7.dsc
 9e151b3853d737dd4a75f435b65eaa67 18912 python optional 
python-pycdlib_1.12.0+ds1-7.debian.tar.xz
 25cb0cbb7605d7c8367c0591fb86204a 7193 python optional 
python-pycdlib_1.12.0+ds1-7_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEoLGp81CJVhMOekJc1BatFaxrQ/4FAmbDEisACgkQ1BatFaxr
Q/4FSg/+IlZrHheh7NgmuGO/zUNgkisbIF5OnLWhD3Y/g9AgeHHx+Niz6jbYr8P+
gVAiiOj9L6xmCAf9w2aMs6iNVYPxAU6NHhK60Z6gXW2EV16zlfQNtJA0pVC/WhIQ
2oOerQ3ysoWqUkBfulSj1oPoH/GLIVJTo1CTWgf0lZ2HuVUHrLARBPmMniA9SVRY
ava3wW16mfBqoPC9L3ZZS7GKaLT04p5vat91V1W69/Jl9CGB4UxZeY6uPP52BPy9
fAtjJ/4/dF98jsQUgueH6VvPB53X+iX2s9Vabfe0lswbTYhtvZgYX3Z7jetBum+b
yn4DYNYA92Khwj3NkhWo3mJSZBFslUcOXRpY5vT8cjgt54A4//7JLhCewS0Vtx6c
7f/3QcSnYq+HmleIJCvozyBo84eC2mWk7zWnwOY12MvzA8Nah8MQ4/JTf5yxn1X0
OPfvddNV0JVSKxv3NbGxDqZ23ZgpdH3YsPAAZCrBOgD0+ml3nM2iqL2hDTVnrIEl
WvJuQLh6slfYKyeGAjmRFNVKZvTItZvw8WMH9r7pCyEmVeGxq31EPckbKh4HVwh1
cCB+/gmsXJzOJ+7iPQYe+6FHy8lfzKFW3T0rcx+2qZiSQuLrbOzK1YSEe2BbBc0S
S0YYOsLozOaB/tnjdTuaFIc2KJGGRIje4SEYEItYGfx7+T7a010=
=AUHE
-----END PGP SIGNATURE-----

Attachment: pgpCbd0WBV0lR.pgp
Description: PGP signature


--- End Message ---

Reply via email to