1. Python CFFI
  2. Untitled project
  3. cffi
  4. Issues
Issue #136 resolved

cffi tests fail on AArch64

Anonymous created an issue

seen with 0.8.1 and 2.7.6 on aarch64-linux-gnu

https://launchpad.net/ubuntu/+source/python-cffi/0.8.1-0ubuntu1/+build/5475600

I see that some/all (?) of these tests are skipped on arm. if these are supposed to be skipped on aarch64-linux-gnu as well, then please match the "aarch64" machine name too.

Comments (5)

  1. Stefano Rivera

    Looks like there's some porting work needed. Hardware isn't readily available, yet. But qemu-static has been ported and there are Debian and ubuntu chroots with it, available.

    I got as far as:

    --- a/testing/backend_tests.py
    +++ b/testing/backend_tests.py
    @@ -1,4 +1,5 @@
     import py
    +import platform
     import sys, ctypes
     from cffi import FFI, CDefError
     from testing.support import *
    @@ -755,6 +756,8 @@
             p = ffi.cast("long long", ffi.cast("wchar_t", -1))
             if SIZE_OF_WCHAR == 2:      # 2 bytes, unsigned
                 assert int(p) == 0xffff
    +        elif platform.machine() == 'aarch64': # 4 bytes, unsigned
    +            assert int(p) == 0xffffffff
             else:                       # 4 bytes, signed
                 assert int(p) == -1
             p = ffi.cast("int", u+'\u1234')
    

    But there are also failures in test_bitfield_anonymous_no_align and test_bitfield_zero. If we use the _arm variants, the first check() fails. alignof() is returning the wrong value:

    =================================== FAILURES ===================================
    ________________ TestBitfield.test_bitfield_anonymous_align_arm ________________
    
    self = <testing.test_ffi_backend.TestBitfield instance at 0x14d2e60>
    
        @pytest.mark.skipif("not (platform.machine().startswith('arm')"
                            "     or platform.machine() == 'aarch64')")
        def test_bitfield_anonymous_align_arm(self):
            L = FFI().alignof("long long")
    >       self.check("char y; int :1;", 0, 4, 4)
    
    testing/test_ffi_backend.py:143: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <testing.test_ffi_backend.TestBitfield instance at 0x14d2e60>
    source = 'char y; int :1;', expected_ofs_y = 0, expected_align = 4
    expected_size = 4
    
        def check(self, source, expected_ofs_y, expected_align, expected_size):
            # NOTE: 'expected_*' is the numbers expected from GCC.
            # The numbers expected from MSVC are not explicitly written
            # in this file, and will just be taken from the compiler.
            ffi = FFI()
            ffi.cdef("struct s1 { %s };" % source)
            ctype = ffi.typeof("struct s1")
            # verify the information with gcc
            ffi1 = FFI()
            ffi1.cdef("""
                    static const int Gofs_y, Galign, Gsize;
                    struct s1 *try_with_value(int fieldnum, long long value);
                """)
            fnames = [name for name, cfield in ctype.fields
                           if name and cfield.bitsize > 0]
            setters = ['case %d: s.%s = value; break;' % iname
                       for iname in enumerate(fnames)]
            lib = ffi1.verify("""
                    struct s1 { %s };
                    struct sa { char a; struct s1 b; };
                    #define Gofs_y  offsetof(struct s1, y)
                    #define Galign  offsetof(struct sa, b)
                    #define Gsize   sizeof(struct s1)
                    struct s1 *try_with_value(int fieldnum, long long value)
                    {
                        static struct s1 s;
                        memset(&s, 0, sizeof(s));
                        switch (fieldnum) { %s }
                        return &s;
                    }
                """ % (source, ' '.join(setters)))
            if sys.platform == 'win32':
                expected_ofs_y = lib.Gofs_y
                expected_align = lib.Galign
                expected_size  = lib.Gsize
            else:
                assert (lib.Gofs_y, lib.Galign, lib.Gsize) == (
                    expected_ofs_y, expected_align, expected_size)
            # the real test follows
            assert ffi.offsetof("struct s1", "y") == expected_ofs_y
    >       assert ffi.alignof("struct s1") == expected_align
    E       assert 1 == 4
    E        +  where 1 = <bound method FFI.alignof of <cffi.api.FFI object at 0x14c9a50>>('struct s1')
    E        +    where <bound method FFI.alignof of <cffi.api.FFI object at 0x14c9a50>> = <cffi.api.FFI object at 0x14c9a50>.alignof
    
    testing/test_ffi_backend.py:83: AssertionError
    _____________________ TestBitfield.test_bitfield_zero_arm ______________________
    
    self = <testing.test_ffi_backend.TestBitfield instance at 0xd965f0>
    
        @pytest.mark.skipif("not (platform.machine().startswith('arm')"
                            "     or platform.machine() == 'aarch64')")
        def test_bitfield_zero_arm(self):
            L = FFI().alignof("long long")
    >       self.check("char y; int :0;", 0, 4, 4)
    
    testing/test_ffi_backend.py:169: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    self = <testing.test_ffi_backend.TestBitfield instance at 0xd965f0>
    source = 'char y; int :0;', expected_ofs_y = 0, expected_align = 4
    expected_size = 4
    
        def check(self, source, expected_ofs_y, expected_align, expected_size):
            # NOTE: 'expected_*' is the numbers expected from GCC.
            # The numbers expected from MSVC are not explicitly written
            # in this file, and will just be taken from the compiler.
            ffi = FFI()
            ffi.cdef("struct s1 { %s };" % source)
            ctype = ffi.typeof("struct s1")
            # verify the information with gcc
            ffi1 = FFI()
            ffi1.cdef("""
                    static const int Gofs_y, Galign, Gsize;
                    struct s1 *try_with_value(int fieldnum, long long value);
                """)
            fnames = [name for name, cfield in ctype.fields
                           if name and cfield.bitsize > 0]
            setters = ['case %d: s.%s = value; break;' % iname
                       for iname in enumerate(fnames)]
            lib = ffi1.verify("""
                    struct s1 { %s };
                    struct sa { char a; struct s1 b; };
                    #define Gofs_y  offsetof(struct s1, y)
                    #define Galign  offsetof(struct sa, b)
                    #define Gsize   sizeof(struct s1)
                    struct s1 *try_with_value(int fieldnum, long long value)
                    {
                        static struct s1 s;
                        memset(&s, 0, sizeof(s));
                        switch (fieldnum) { %s }
                        return &s;
                    }
                """ % (source, ' '.join(setters)))
            if sys.platform == 'win32':
                expected_ofs_y = lib.Gofs_y
                expected_align = lib.Galign
                expected_size  = lib.Gsize
            else:
                assert (lib.Gofs_y, lib.Galign, lib.Gsize) == (
                    expected_ofs_y, expected_align, expected_size)
            # the real test follows
            assert ffi.offsetof("struct s1", "y") == expected_ofs_y
    >       assert ffi.alignof("struct s1") == expected_align
    E       assert 1 == 4
    E        +  where 1 = <bound method FFI.alignof of <cffi.api.FFI object at 0xd95c10>>('struct s1')
    E        +    where <bound method FFI.alignof of <cffi.api.FFI object at 0xd95c10>> = <cffi.api.FFI object at 0xd95c10>.alignof
    
    testing/test_ffi_backend.py:83: AssertionError
    =============== 2 failed, 143 passed, 6 skipped in 48.00 seconds ===============
    

    And then there are failures in test_integration that aren't really integration-related:

    =================================== FAILURES ===================================
    ____________________________ test_distutils_module _____________________________
    
        def test_distutils_module():
            run_setup_and_program("distutils_module", '''
            import snip_basic_module as _ffi
            lib = _ffi.load_passwd()
            p = lib.getpwuid(0)
            assert _ffi.string(p.pw_name) == b"root"
    >       ''')
    
    testing/test_zintegration.py:99: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'distutils_module'
    python_snippet = '\n    import snip_basic_module as _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def run_setup_and_program(dirname, python_snippet):
            venv_dir = create_venv(dirname + '-cpy')
    >       really_run_setup_and_program(dirname, venv_dir, python_snippet)
    
    testing/test_zintegration.py:67: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'distutils_module'
    venv_dir = local('/tmp/ffi-18/distutils_module-cpy')
    python_snippet = '\n    import snip_basic_module as _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def really_run_setup_and_program(dirname, venv_dir, python_snippet):
            def remove(dir):
                dir = str(SNIPPET_DIR.join(dirname, dir))
                shutil.rmtree(dir, ignore_errors=True)
            remove('build')
            remove('__pycache__')
            for basedir in os.listdir(str(SNIPPET_DIR.join(dirname))):
                remove(os.path.join(basedir, '__pycache__'))
            olddir = os.getcwd()
            python_f = udir.join('x.py')
            python_f.write(py.code.Source(python_snippet))
            try:
                os.chdir(str(SNIPPET_DIR.join(dirname)))
                vp = str(venv_dir.join('bin/python'))
                subprocess.check_call((vp, 'setup.py', 'clean'))
                subprocess.check_call((vp, 'setup.py', 'install'))
    >           subprocess.check_call((vp, str(python_f)))
    
    testing/test_zintegration.py:61: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    popenargs = (('/tmp/ffi-18/distutils_module-cpy/bin/python', '/tmp/ffi-18/x.py'),)
    kwargs = {}, retcode = 1
    cmd = ('/tmp/ffi-18/distutils_module-cpy/bin/python', '/tmp/ffi-18/x.py')
    
        def check_call(*popenargs, **kwargs):
            """Run command with arguments.  Wait for command to complete.  If
            the exit code was zero then return, otherwise raise
            CalledProcessError.  The CalledProcessError object will have the
            return code in the returncode attribute.
    
            The arguments are the same as for the Popen constructor.  Example:
    
            check_call(["ls", "-l"])
            """
            retcode = call(*popenargs, **kwargs)
            if retcode:
                cmd = kwargs.get("args")
                if cmd is None:
                    cmd = popenargs[0]
    >           raise CalledProcessError(retcode, cmd)
    E           CalledProcessError: Command '('/tmp/ffi-18/distutils_module-cpy/bin/python', '/tmp/ffi-18/x.py')' returned non-zero exit status 1
    
    /usr/lib/python2.7/subprocess.py:540: CalledProcessError
    ------------------------------- Captured stdout --------------------------------
    Already using interpreter /usr/bin/python
    New python executable in /tmp/ffi-18/distutils_module-cpy/bin/python
    Installing setuptools, pip...done.
    running clean
    running install
    running build
    running build_ext
    running build_ext
    building '_cffi__ga0ff69edx755e84d5' extension
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi
    creating /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__
    aarch64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.c -o /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o
    aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -Wformat -Werror=format-security /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o -o /tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.so
    copying build/temp.linux-aarch64-2.7/snip_basic_module_passwd.aarch64-linux-gnu.so -> build/lib.linux-aarch64-2.7
    copying build/temp.linux-aarch64-2.7/snip_basic_module.py -> build/lib.linux-aarch64-2.7
    running install_lib
    copying build/lib.linux-aarch64-2.7/snip_basic_module_passwd.aarch64-linux-gnu.so -> /tmp/ffi-18/distutils_module-cpy/lib/python2.7/site-packages
    copying build/lib.linux-aarch64-2.7/snip_basic_module.py -> /tmp/ffi-18/distutils_module-cpy/lib/python2.7/site-packages
    running install_data
    copying ffibuilder.py -> /tmp/ffi-18/distutils_module-cpy
    running install_egg_info
    Writing /tmp/ffi-18/distutils_module-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7.egg-info
    ------------------------------- Captured stderr --------------------------------
    warning: install_data: setup script did not provide a directory for 'ffibuilder.py' -- installing right in '/tmp/ffi-18/distutils_module-cpy'
    
    Traceback (most recent call last):
      File "/tmp/ffi-18/x.py", line 3, in <module>
        lib = _ffi.load_passwd()
      File "/home/stefanor/hg/cffi/testing/snippets/distutils_module/build/lib.linux-aarch64-2.7/snip_basic_module.py", line 51, in load_passwd
        return verifier._load_library()
      File "/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/verifier.py", line 154, in _load_library
        return self._vengine.load_library()
      File "/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 86, in load_library
        self._load(module, 'loaded', library=library)
      File "/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 112, in _load
        method(tp, realname, module, **kwds)
      File "/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 215, in _loaded_gen_struct
        self._loaded_struct_or_union(tp)
      File "/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 314, in _loaded_struct_or_union
        check(layout[0], ffi.sizeof(BStruct), "wrong total size")
      File "/tmp/ffi-18/distutils_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 310, in check
        % (msg, expectedvalue, realvalue))
    cffi.ffiplatform.VerificationError: struct passwd: wrong total size (we have 8, but C compiler says 48)
    ___________________________ test_distutils_package_1 ___________________________
    
        def test_distutils_package_1():
            run_setup_and_program("distutils_package_1", '''
            from snip_basic_module1 import _ffi
            lib = _ffi.load_passwd()
            p = lib.getpwuid(0)
            assert _ffi.string(p.pw_name) == b"root"
    >       ''')
    
    testing/test_zintegration.py:107: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'distutils_package_1'
    python_snippet = '\n    from snip_basic_module1 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def run_setup_and_program(dirname, python_snippet):
            venv_dir = create_venv(dirname + '-cpy')
    >       really_run_setup_and_program(dirname, venv_dir, python_snippet)
    
    testing/test_zintegration.py:67: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'distutils_package_1'
    venv_dir = local('/tmp/ffi-18/distutils_package_1-cpy')
    python_snippet = '\n    from snip_basic_module1 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def really_run_setup_and_program(dirname, venv_dir, python_snippet):
            def remove(dir):
                dir = str(SNIPPET_DIR.join(dirname, dir))
                shutil.rmtree(dir, ignore_errors=True)
            remove('build')
            remove('__pycache__')
            for basedir in os.listdir(str(SNIPPET_DIR.join(dirname))):
                remove(os.path.join(basedir, '__pycache__'))
            olddir = os.getcwd()
            python_f = udir.join('x.py')
            python_f.write(py.code.Source(python_snippet))
            try:
                os.chdir(str(SNIPPET_DIR.join(dirname)))
                vp = str(venv_dir.join('bin/python'))
                subprocess.check_call((vp, 'setup.py', 'clean'))
                subprocess.check_call((vp, 'setup.py', 'install'))
    >           subprocess.check_call((vp, str(python_f)))
    
    testing/test_zintegration.py:61: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    popenargs = (('/tmp/ffi-18/distutils_package_1-cpy/bin/python', '/tmp/ffi-18/x.py'),)
    kwargs = {}, retcode = 1
    cmd = ('/tmp/ffi-18/distutils_package_1-cpy/bin/python', '/tmp/ffi-18/x.py')
    
        def check_call(*popenargs, **kwargs):
            """Run command with arguments.  Wait for command to complete.  If
            the exit code was zero then return, otherwise raise
            CalledProcessError.  The CalledProcessError object will have the
            return code in the returncode attribute.
    
            The arguments are the same as for the Popen constructor.  Example:
    
            check_call(["ls", "-l"])
            """
            retcode = call(*popenargs, **kwargs)
            if retcode:
                cmd = kwargs.get("args")
                if cmd is None:
                    cmd = popenargs[0]
    >           raise CalledProcessError(retcode, cmd)
    E           CalledProcessError: Command '('/tmp/ffi-18/distutils_package_1-cpy/bin/python', '/tmp/ffi-18/x.py')' returned non-zero exit status 1
    
    /usr/lib/python2.7/subprocess.py:540: CalledProcessError
    ------------------------------- Captured stdout --------------------------------
    Already using interpreter /usr/bin/python
    New python executable in /tmp/ffi-18/distutils_package_1-cpy/bin/python
    Installing setuptools, pip...done.
    running clean
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-aarch64-2.7
    creating build/lib.linux-aarch64-2.7/snip_basic_module1
    copying snip_basic_module1/__init__.py -> build/lib.linux-aarch64-2.7/snip_basic_module1
    copying snip_basic_module1/ffibuilder.py -> build/lib.linux-aarch64-2.7/snip_basic_module1
    running build_ext
    running build_ext
    building '_cffi__ga0ff69edx755e84d5' extension
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi
    creating /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__
    aarch64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.c -o /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o
    aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -Wformat -Werror=format-security /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o -o /tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.so
    copying build/temp.linux-aarch64-2.7/snip_basic_module1/_ffi_passwd.aarch64-linux-gnu.so -> build/lib.linux-aarch64-2.7/snip_basic_module1
    copying build/temp.linux-aarch64-2.7/snip_basic_module1/_ffi.py -> build/lib.linux-aarch64-2.7/snip_basic_module1
    running install_lib
    creating /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1
    copying build/lib.linux-aarch64-2.7/snip_basic_module1/__init__.py -> /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1
    copying build/lib.linux-aarch64-2.7/snip_basic_module1/_ffi.py -> /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1
    copying build/lib.linux-aarch64-2.7/snip_basic_module1/ffibuilder.py -> /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1
    copying build/lib.linux-aarch64-2.7/snip_basic_module1/_ffi_passwd.aarch64-linux-gnu.so -> /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1
    byte-compiling /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1/__init__.py to __init__.pyc
    byte-compiling /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1/_ffi.py to _ffi.pyc
    byte-compiling /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/snip_basic_module1/ffibuilder.py to ffibuilder.pyc
    running install_egg_info
    Writing /tmp/ffi-18/distutils_package_1-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7.egg-info
    ------------------------------- Captured stderr --------------------------------
    Traceback (most recent call last):
      File "/tmp/ffi-18/x.py", line 3, in <module>
        lib = _ffi.load_passwd()
      File "/home/stefanor/hg/cffi/testing/snippets/distutils_package_1/build/lib.linux-aarch64-2.7/snip_basic_module1/_ffi.py", line 51, in load_passwd
        return verifier._load_library()
      File "/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/verifier.py", line 154, in _load_library
        return self._vengine.load_library()
      File "/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 86, in load_library
        self._load(module, 'loaded', library=library)
      File "/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 112, in _load
        method(tp, realname, module, **kwds)
      File "/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 215, in _loaded_gen_struct
        self._loaded_struct_or_union(tp)
      File "/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 314, in _loaded_struct_or_union
        check(layout[0], ffi.sizeof(BStruct), "wrong total size")
      File "/tmp/ffi-18/distutils_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 310, in check
        % (msg, expectedvalue, realvalue))
    cffi.ffiplatform.VerificationError: struct passwd: wrong total size (we have 8, but C compiler says 48)
    ___________________________ test_distutils_package_2 ___________________________
    
        def test_distutils_package_2():
            run_setup_and_program("distutils_package_2", '''
            from snip_basic_module2 import _ffi
            lib = _ffi.load_passwd()
            p = lib.getpwuid(0)
            assert _ffi.string(p.pw_name) == b"root"
    >       ''')
    
    testing/test_zintegration.py:115: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'distutils_package_2'
    python_snippet = '\n    from snip_basic_module2 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def run_setup_and_program(dirname, python_snippet):
            venv_dir = create_venv(dirname + '-cpy')
    >       really_run_setup_and_program(dirname, venv_dir, python_snippet)
    
    testing/test_zintegration.py:67: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'distutils_package_2'
    venv_dir = local('/tmp/ffi-18/distutils_package_2-cpy')
    python_snippet = '\n    from snip_basic_module2 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def really_run_setup_and_program(dirname, venv_dir, python_snippet):
            def remove(dir):
                dir = str(SNIPPET_DIR.join(dirname, dir))
                shutil.rmtree(dir, ignore_errors=True)
            remove('build')
            remove('__pycache__')
            for basedir in os.listdir(str(SNIPPET_DIR.join(dirname))):
                remove(os.path.join(basedir, '__pycache__'))
            olddir = os.getcwd()
            python_f = udir.join('x.py')
            python_f.write(py.code.Source(python_snippet))
            try:
                os.chdir(str(SNIPPET_DIR.join(dirname)))
                vp = str(venv_dir.join('bin/python'))
                subprocess.check_call((vp, 'setup.py', 'clean'))
                subprocess.check_call((vp, 'setup.py', 'install'))
    >           subprocess.check_call((vp, str(python_f)))
    
    testing/test_zintegration.py:61: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    popenargs = (('/tmp/ffi-18/distutils_package_2-cpy/bin/python', '/tmp/ffi-18/x.py'),)
    kwargs = {}, retcode = 1
    cmd = ('/tmp/ffi-18/distutils_package_2-cpy/bin/python', '/tmp/ffi-18/x.py')
    
        def check_call(*popenargs, **kwargs):
            """Run command with arguments.  Wait for command to complete.  If
            the exit code was zero then return, otherwise raise
            CalledProcessError.  The CalledProcessError object will have the
            return code in the returncode attribute.
    
            The arguments are the same as for the Popen constructor.  Example:
    
            check_call(["ls", "-l"])
            """
            retcode = call(*popenargs, **kwargs)
            if retcode:
                cmd = kwargs.get("args")
                if cmd is None:
                    cmd = popenargs[0]
    >           raise CalledProcessError(retcode, cmd)
    E           CalledProcessError: Command '('/tmp/ffi-18/distutils_package_2-cpy/bin/python', '/tmp/ffi-18/x.py')' returned non-zero exit status 1
    
    /usr/lib/python2.7/subprocess.py:540: CalledProcessError
    ------------------------------- Captured stdout --------------------------------
    Already using interpreter /usr/bin/python
    New python executable in /tmp/ffi-18/distutils_package_2-cpy/bin/python
    Installing setuptools, pip...done.
    running clean
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-aarch64-2.7
    creating build/lib.linux-aarch64-2.7/snip_basic_module2
    copying snip_basic_module2/__init__.py -> build/lib.linux-aarch64-2.7/snip_basic_module2
    copying snip_basic_module2/ffibuilder.py -> build/lib.linux-aarch64-2.7/snip_basic_module2
    running build_ext
    running build_ext
    building '_cffi__ga0ff69edx755e84d5' extension
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi
    creating /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__
    aarch64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.c -o /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o
    aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -Wformat -Werror=format-security /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o -o /tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.so
    copying build/temp.linux-aarch64-2.7/snip_basic_module2/_ffi_passwd.aarch64-linux-gnu.so -> build/lib.linux-aarch64-2.7/snip_basic_module2
    copying build/temp.linux-aarch64-2.7/snip_basic_module2/_ffi.py -> build/lib.linux-aarch64-2.7/snip_basic_module2
    running install_lib
    creating /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2
    copying build/lib.linux-aarch64-2.7/snip_basic_module2/__init__.py -> /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2
    copying build/lib.linux-aarch64-2.7/snip_basic_module2/_ffi.py -> /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2
    copying build/lib.linux-aarch64-2.7/snip_basic_module2/ffibuilder.py -> /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2
    copying build/lib.linux-aarch64-2.7/snip_basic_module2/_ffi_passwd.aarch64-linux-gnu.so -> /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2
    byte-compiling /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2/__init__.py to __init__.pyc
    byte-compiling /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2/_ffi.py to _ffi.pyc
    byte-compiling /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/snip_basic_module2/ffibuilder.py to ffibuilder.pyc
    running install_egg_info
    Writing /tmp/ffi-18/distutils_package_2-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7.egg-info
    ------------------------------- Captured stderr --------------------------------
    Traceback (most recent call last):
      File "/tmp/ffi-18/x.py", line 3, in <module>
        lib = _ffi.load_passwd()
      File "/home/stefanor/hg/cffi/testing/snippets/distutils_package_2/build/lib.linux-aarch64-2.7/snip_basic_module2/_ffi.py", line 51, in load_passwd
        return verifier._load_library()
      File "/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/verifier.py", line 154, in _load_library
        return self._vengine.load_library()
      File "/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 86, in load_library
        self._load(module, 'loaded', library=library)
      File "/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 112, in _load
        method(tp, realname, module, **kwds)
      File "/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 215, in _loaded_gen_struct
        self._loaded_struct_or_union(tp)
      File "/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 314, in _loaded_struct_or_union
        check(layout[0], ffi.sizeof(BStruct), "wrong total size")
      File "/tmp/ffi-18/distutils_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 310, in check
        % (msg, expectedvalue, realvalue))
    cffi.ffiplatform.VerificationError: struct passwd: wrong total size (we have 8, but C compiler says 48)
    ____________________________ test_setuptools_module ____________________________
    
        def test_setuptools_module():
            run_setup_and_program("setuptools_module", '''
            import snip_setuptools_module as _ffi
            lib = _ffi.load_passwd()
            p = lib.getpwuid(0)
            assert _ffi.string(p.pw_name) == b"root"
    >       ''')
    
    testing/test_zintegration.py:123: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'setuptools_module'
    python_snippet = '\n    import snip_setuptools_module as _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def run_setup_and_program(dirname, python_snippet):
            venv_dir = create_venv(dirname + '-cpy')
    >       really_run_setup_and_program(dirname, venv_dir, python_snippet)
    
    testing/test_zintegration.py:67: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'setuptools_module'
    venv_dir = local('/tmp/ffi-18/setuptools_module-cpy')
    python_snippet = '\n    import snip_setuptools_module as _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def really_run_setup_and_program(dirname, venv_dir, python_snippet):
            def remove(dir):
                dir = str(SNIPPET_DIR.join(dirname, dir))
                shutil.rmtree(dir, ignore_errors=True)
            remove('build')
            remove('__pycache__')
            for basedir in os.listdir(str(SNIPPET_DIR.join(dirname))):
                remove(os.path.join(basedir, '__pycache__'))
            olddir = os.getcwd()
            python_f = udir.join('x.py')
            python_f.write(py.code.Source(python_snippet))
            try:
                os.chdir(str(SNIPPET_DIR.join(dirname)))
                vp = str(venv_dir.join('bin/python'))
                subprocess.check_call((vp, 'setup.py', 'clean'))
                subprocess.check_call((vp, 'setup.py', 'install'))
    >           subprocess.check_call((vp, str(python_f)))
    
    testing/test_zintegration.py:61: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    popenargs = (('/tmp/ffi-18/setuptools_module-cpy/bin/python', '/tmp/ffi-18/x.py'),)
    kwargs = {}, retcode = 1
    cmd = ('/tmp/ffi-18/setuptools_module-cpy/bin/python', '/tmp/ffi-18/x.py')
    
        def check_call(*popenargs, **kwargs):
            """Run command with arguments.  Wait for command to complete.  If
            the exit code was zero then return, otherwise raise
            CalledProcessError.  The CalledProcessError object will have the
            return code in the returncode attribute.
    
            The arguments are the same as for the Popen constructor.  Example:
    
            check_call(["ls", "-l"])
            """
            retcode = call(*popenargs, **kwargs)
            if retcode:
                cmd = kwargs.get("args")
                if cmd is None:
                    cmd = popenargs[0]
    >           raise CalledProcessError(retcode, cmd)
    E           CalledProcessError: Command '('/tmp/ffi-18/setuptools_module-cpy/bin/python', '/tmp/ffi-18/x.py')' returned non-zero exit status 1
    
    /usr/lib/python2.7/subprocess.py:540: CalledProcessError
    ------------------------------- Captured stdout --------------------------------
    Already using interpreter /usr/bin/python
    New python executable in /tmp/ffi-18/setuptools_module-cpy/bin/python
    Installing setuptools, pip...done.
    running clean
    running install
    running bdist_egg
    running egg_info
    writing UNKNOWN.egg-info/PKG-INFO
    writing top-level names to UNKNOWN.egg-info/top_level.txt
    writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
    reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-aarch64/egg
    running install_lib
    running build_ext
    running build_ext
    building '_cffi__ga0ff69edx755e84d5' extension
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi
    creating /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__
    aarch64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.c -o /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o
    aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -Wformat -Werror=format-security /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o -o /tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.so
    copying build/temp.linux-aarch64-2.7/snip_setuptools_module_passwd.aarch64-linux-gnu.so -> build/lib.linux-aarch64-2.7
    copying build/temp.linux-aarch64-2.7/snip_setuptools_module.py -> build/lib.linux-aarch64-2.7
    creating build/bdist.linux-aarch64
    creating build/bdist.linux-aarch64/egg
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module_passwd.aarch64-linux-gnu.so -> build/bdist.linux-aarch64/egg
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module.py -> build/bdist.linux-aarch64/egg
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module.py to snip_setuptools_module.pyc
    installing package data to build/bdist.linux-aarch64/egg
    running install_data
    copying ffibuilder.py -> build/bdist.linux-aarch64/egg
    creating build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/PKG-INFO -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/SOURCES.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/dependency_links.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/top_level.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    writing build/bdist.linux-aarch64/egg/EGG-INFO/native_libs.txt
    creating 'dist/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg' and adding 'build/bdist.linux-aarch64/egg' to it
    removing 'build/bdist.linux-aarch64/egg' (and everything under it)
    Processing UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    creating /tmp/ffi-18/setuptools_module-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    Extracting UNKNOWN-0.0.0-py2.7-linux-aarch64.egg to /tmp/ffi-18/setuptools_module-cpy/lib/python2.7/site-packages
    Adding UNKNOWN 0.0.0 to easy-install.pth file
    
    Installed /tmp/ffi-18/setuptools_module-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    Processing dependencies for UNKNOWN==0.0.0
    Finished processing dependencies for UNKNOWN==0.0.0
    ------------------------------- Captured stderr --------------------------------
    warning: install_data: setup script did not provide a directory for 'ffibuilder.py' -- installing right in 'build/bdist.linux-aarch64/egg'
    
    zip_safe flag not set; analyzing archive contents...
    snip_setuptools_module: module references __file__
    Traceback (most recent call last):
      File "/tmp/ffi-18/x.py", line 3, in <module>
        lib = _ffi.load_passwd()
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg/snip_setuptools_module.py", line 51, in load_passwd
        return verifier._load_library()
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/verifier.py", line 154, in _load_library
        return self._vengine.load_library()
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 86, in load_library
        self._load(module, 'loaded', library=library)
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 112, in _load
        method(tp, realname, module, **kwds)
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 215, in _loaded_gen_struct
        self._loaded_struct_or_union(tp)
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 314, in _loaded_struct_or_union
        check(layout[0], ffi.sizeof(BStruct), "wrong total size")
      File "/tmp/ffi-18/setuptools_module-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 310, in check
        % (msg, expectedvalue, realvalue))
    cffi.ffiplatform.VerificationError: struct passwd: wrong total size (we have 8, but C compiler says 48)
    __________________________ test_setuptools_package_1 ___________________________
    
        def test_setuptools_package_1():
            run_setup_and_program("setuptools_package_1", '''
            from snip_setuptools_module1 import _ffi
            lib = _ffi.load_passwd()
            p = lib.getpwuid(0)
            assert _ffi.string(p.pw_name) == b"root"
    >       ''')
    
    testing/test_zintegration.py:131: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'setuptools_package_1'
    python_snippet = '\n    from snip_setuptools_module1 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def run_setup_and_program(dirname, python_snippet):
            venv_dir = create_venv(dirname + '-cpy')
    >       really_run_setup_and_program(dirname, venv_dir, python_snippet)
    
    testing/test_zintegration.py:67: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'setuptools_package_1'
    venv_dir = local('/tmp/ffi-18/setuptools_package_1-cpy')
    python_snippet = '\n    from snip_setuptools_module1 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def really_run_setup_and_program(dirname, venv_dir, python_snippet):
            def remove(dir):
                dir = str(SNIPPET_DIR.join(dirname, dir))
                shutil.rmtree(dir, ignore_errors=True)
            remove('build')
            remove('__pycache__')
            for basedir in os.listdir(str(SNIPPET_DIR.join(dirname))):
                remove(os.path.join(basedir, '__pycache__'))
            olddir = os.getcwd()
            python_f = udir.join('x.py')
            python_f.write(py.code.Source(python_snippet))
            try:
                os.chdir(str(SNIPPET_DIR.join(dirname)))
                vp = str(venv_dir.join('bin/python'))
                subprocess.check_call((vp, 'setup.py', 'clean'))
                subprocess.check_call((vp, 'setup.py', 'install'))
    >           subprocess.check_call((vp, str(python_f)))
    
    testing/test_zintegration.py:61: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    popenargs = (('/tmp/ffi-18/setuptools_package_1-cpy/bin/python', '/tmp/ffi-18/x.py'),)
    kwargs = {}, retcode = 1
    cmd = ('/tmp/ffi-18/setuptools_package_1-cpy/bin/python', '/tmp/ffi-18/x.py')
    
        def check_call(*popenargs, **kwargs):
            """Run command with arguments.  Wait for command to complete.  If
            the exit code was zero then return, otherwise raise
            CalledProcessError.  The CalledProcessError object will have the
            return code in the returncode attribute.
    
            The arguments are the same as for the Popen constructor.  Example:
    
            check_call(["ls", "-l"])
            """
            retcode = call(*popenargs, **kwargs)
            if retcode:
                cmd = kwargs.get("args")
                if cmd is None:
                    cmd = popenargs[0]
    >           raise CalledProcessError(retcode, cmd)
    E           CalledProcessError: Command '('/tmp/ffi-18/setuptools_package_1-cpy/bin/python', '/tmp/ffi-18/x.py')' returned non-zero exit status 1
    
    /usr/lib/python2.7/subprocess.py:540: CalledProcessError
    ------------------------------- Captured stdout --------------------------------
    Already using interpreter /usr/bin/python
    New python executable in /tmp/ffi-18/setuptools_package_1-cpy/bin/python
    Installing setuptools, pip...done.
    running clean
    running install
    running bdist_egg
    running egg_info
    writing UNKNOWN.egg-info/PKG-INFO
    writing top-level names to UNKNOWN.egg-info/top_level.txt
    writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
    reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-aarch64/egg
    running install_lib
    running build_py
    creating build
    creating build/lib.linux-aarch64-2.7
    creating build/lib.linux-aarch64-2.7/snip_setuptools_module1
    copying snip_setuptools_module1/__init__.py -> build/lib.linux-aarch64-2.7/snip_setuptools_module1
    copying snip_setuptools_module1/ffibuilder.py -> build/lib.linux-aarch64-2.7/snip_setuptools_module1
    running build_ext
    running build_ext
    building '_cffi__ga0ff69edx755e84d5' extension
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi
    creating /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__
    aarch64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.c -o /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o
    aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -Wformat -Werror=format-security /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o -o /tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.so
    copying build/temp.linux-aarch64-2.7/snip_setuptools_module1/_ffi_passwd.aarch64-linux-gnu.so -> build/lib.linux-aarch64-2.7/snip_setuptools_module1
    copying build/temp.linux-aarch64-2.7/snip_setuptools_module1/_ffi.py -> build/lib.linux-aarch64-2.7/snip_setuptools_module1
    creating build/bdist.linux-aarch64
    creating build/bdist.linux-aarch64/egg
    creating build/bdist.linux-aarch64/egg/snip_setuptools_module1
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module1/__init__.py -> build/bdist.linux-aarch64/egg/snip_setuptools_module1
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module1/_ffi.py -> build/bdist.linux-aarch64/egg/snip_setuptools_module1
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module1/ffibuilder.py -> build/bdist.linux-aarch64/egg/snip_setuptools_module1
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module1/_ffi_passwd.aarch64-linux-gnu.so -> build/bdist.linux-aarch64/egg/snip_setuptools_module1
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module1/__init__.py to __init__.pyc
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module1/_ffi.py to _ffi.pyc
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module1/ffibuilder.py to ffibuilder.pyc
    creating build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/PKG-INFO -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/SOURCES.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/dependency_links.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/top_level.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    writing build/bdist.linux-aarch64/egg/EGG-INFO/native_libs.txt
    creating 'dist/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg' and adding 'build/bdist.linux-aarch64/egg' to it
    removing 'build/bdist.linux-aarch64/egg' (and everything under it)
    Processing UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    creating /tmp/ffi-18/setuptools_package_1-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    Extracting UNKNOWN-0.0.0-py2.7-linux-aarch64.egg to /tmp/ffi-18/setuptools_package_1-cpy/lib/python2.7/site-packages
    Adding UNKNOWN 0.0.0 to easy-install.pth file
    
    Installed /tmp/ffi-18/setuptools_package_1-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    Processing dependencies for UNKNOWN==0.0.0
    Finished processing dependencies for UNKNOWN==0.0.0
    ------------------------------- Captured stderr --------------------------------
    zip_safe flag not set; analyzing archive contents...
    snip_setuptools_module1._ffi: module references __file__
    Traceback (most recent call last):
      File "/tmp/ffi-18/x.py", line 3, in <module>
        lib = _ffi.load_passwd()
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg/snip_setuptools_module1/_ffi.py", line 51, in load_passwd
        return verifier._load_library()
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/verifier.py", line 154, in _load_library
        return self._vengine.load_library()
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 86, in load_library
        self._load(module, 'loaded', library=library)
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 112, in _load
        method(tp, realname, module, **kwds)
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 215, in _loaded_gen_struct
        self._loaded_struct_or_union(tp)
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 314, in _loaded_struct_or_union
        check(layout[0], ffi.sizeof(BStruct), "wrong total size")
      File "/tmp/ffi-18/setuptools_package_1-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 310, in check
        % (msg, expectedvalue, realvalue))
    cffi.ffiplatform.VerificationError: struct passwd: wrong total size (we have 8, but C compiler says 48)
    __________________________ test_setuptools_package_2 ___________________________
    
        def test_setuptools_package_2():
            run_setup_and_program("setuptools_package_2", '''
            from snip_setuptools_module2 import _ffi
            lib = _ffi.load_passwd()
            p = lib.getpwuid(0)
            assert _ffi.string(p.pw_name) == b"root"
    >       ''')
    
    testing/test_zintegration.py:139: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'setuptools_package_2'
    python_snippet = '\n    from snip_setuptools_module2 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def run_setup_and_program(dirname, python_snippet):
            venv_dir = create_venv(dirname + '-cpy')
    >       really_run_setup_and_program(dirname, venv_dir, python_snippet)
    
    testing/test_zintegration.py:67: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    dirname = 'setuptools_package_2'
    venv_dir = local('/tmp/ffi-18/setuptools_package_2-cpy')
    python_snippet = '\n    from snip_setuptools_module2 import _ffi\n    lib = _ffi.load_passwd()\n    p = lib.getpwuid(0)\n    assert _ffi.string(p.pw_name) == b"root"\n    '
    
        def really_run_setup_and_program(dirname, venv_dir, python_snippet):
            def remove(dir):
                dir = str(SNIPPET_DIR.join(dirname, dir))
                shutil.rmtree(dir, ignore_errors=True)
            remove('build')
            remove('__pycache__')
            for basedir in os.listdir(str(SNIPPET_DIR.join(dirname))):
                remove(os.path.join(basedir, '__pycache__'))
            olddir = os.getcwd()
            python_f = udir.join('x.py')
            python_f.write(py.code.Source(python_snippet))
            try:
                os.chdir(str(SNIPPET_DIR.join(dirname)))
                vp = str(venv_dir.join('bin/python'))
                subprocess.check_call((vp, 'setup.py', 'clean'))
                subprocess.check_call((vp, 'setup.py', 'install'))
    >           subprocess.check_call((vp, str(python_f)))
    
    testing/test_zintegration.py:61: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    popenargs = (('/tmp/ffi-18/setuptools_package_2-cpy/bin/python', '/tmp/ffi-18/x.py'),)
    kwargs = {}, retcode = 1
    cmd = ('/tmp/ffi-18/setuptools_package_2-cpy/bin/python', '/tmp/ffi-18/x.py')
    
        def check_call(*popenargs, **kwargs):
            """Run command with arguments.  Wait for command to complete.  If
            the exit code was zero then return, otherwise raise
            CalledProcessError.  The CalledProcessError object will have the
            return code in the returncode attribute.
    
            The arguments are the same as for the Popen constructor.  Example:
    
            check_call(["ls", "-l"])
            """
            retcode = call(*popenargs, **kwargs)
            if retcode:
                cmd = kwargs.get("args")
                if cmd is None:
                    cmd = popenargs[0]
    >           raise CalledProcessError(retcode, cmd)
    E           CalledProcessError: Command '('/tmp/ffi-18/setuptools_package_2-cpy/bin/python', '/tmp/ffi-18/x.py')' returned non-zero exit status 1
    
    /usr/lib/python2.7/subprocess.py:540: CalledProcessError
    ------------------------------- Captured stdout --------------------------------
    Already using interpreter /usr/bin/python
    New python executable in /tmp/ffi-18/setuptools_package_2-cpy/bin/python
    Installing setuptools, pip...done.
    running clean
    running install
    running bdist_egg
    running egg_info
    writing UNKNOWN.egg-info/PKG-INFO
    writing top-level names to UNKNOWN.egg-info/top_level.txt
    writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
    reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-aarch64/egg
    running install_lib
    running build_py
    creating build
    creating build/lib.linux-aarch64-2.7
    creating build/lib.linux-aarch64-2.7/snip_setuptools_module2
    copying snip_setuptools_module2/__init__.py -> build/lib.linux-aarch64-2.7/snip_setuptools_module2
    copying snip_setuptools_module2/ffibuilder.py -> build/lib.linux-aarch64-2.7/snip_setuptools_module2
    running build_ext
    running build_ext
    building '_cffi__ga0ff69edx755e84d5' extension
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi
    creating /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__
    aarch64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.c -o /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o
    aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -Wformat -Werror=format-security /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.o -o /tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/__pycache__/_cffi__ga0ff69edx755e84d5.so
    copying build/temp.linux-aarch64-2.7/snip_setuptools_module2/_ffi_passwd.aarch64-linux-gnu.so -> build/lib.linux-aarch64-2.7/snip_setuptools_module2
    copying build/temp.linux-aarch64-2.7/snip_setuptools_module2/_ffi.py -> build/lib.linux-aarch64-2.7/snip_setuptools_module2
    creating build/bdist.linux-aarch64
    creating build/bdist.linux-aarch64/egg
    creating build/bdist.linux-aarch64/egg/snip_setuptools_module2
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module2/__init__.py -> build/bdist.linux-aarch64/egg/snip_setuptools_module2
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module2/_ffi.py -> build/bdist.linux-aarch64/egg/snip_setuptools_module2
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module2/ffibuilder.py -> build/bdist.linux-aarch64/egg/snip_setuptools_module2
    copying build/lib.linux-aarch64-2.7/snip_setuptools_module2/_ffi_passwd.aarch64-linux-gnu.so -> build/bdist.linux-aarch64/egg/snip_setuptools_module2
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module2/__init__.py to __init__.pyc
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module2/_ffi.py to _ffi.pyc
    byte-compiling build/bdist.linux-aarch64/egg/snip_setuptools_module2/ffibuilder.py to ffibuilder.pyc
    creating build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/PKG-INFO -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/SOURCES.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/dependency_links.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    copying UNKNOWN.egg-info/top_level.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
    writing build/bdist.linux-aarch64/egg/EGG-INFO/native_libs.txt
    creating 'dist/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg' and adding 'build/bdist.linux-aarch64/egg' to it
    removing 'build/bdist.linux-aarch64/egg' (and everything under it)
    Processing UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    creating /tmp/ffi-18/setuptools_package_2-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    Extracting UNKNOWN-0.0.0-py2.7-linux-aarch64.egg to /tmp/ffi-18/setuptools_package_2-cpy/lib/python2.7/site-packages
    Adding UNKNOWN 0.0.0 to easy-install.pth file
    
    Installed /tmp/ffi-18/setuptools_package_2-cpy/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg
    Processing dependencies for UNKNOWN==0.0.0
    Finished processing dependencies for UNKNOWN==0.0.0
    ------------------------------- Captured stderr --------------------------------
    zip_safe flag not set; analyzing archive contents...
    snip_setuptools_module2._ffi: module references __file__
    Traceback (most recent call last):
      File "/tmp/ffi-18/x.py", line 3, in <module>
        lib = _ffi.load_passwd()
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-aarch64.egg/snip_setuptools_module2/_ffi.py", line 51, in load_passwd
        return verifier._load_library()
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/verifier.py", line 154, in _load_library
        return self._vengine.load_library()
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 86, in load_library
        self._load(module, 'loaded', library=library)
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 112, in _load
        method(tp, realname, module, **kwds)
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 215, in _loaded_gen_struct
        self._loaded_struct_or_union(tp)
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 314, in _loaded_struct_or_union
        check(layout[0], ffi.sizeof(BStruct), "wrong total size")
      File "/tmp/ffi-18/setuptools_package_2-cpy/local/lib/python2.7/site-packages/cffi/vengine_gen.py", line 310, in check
        % (msg, expectedvalue, realvalue))
    cffi.ffiplatform.VerificationError: struct passwd: wrong total size (we have 8, but C compiler says 48)
    ============= 6 failed, 992 passed, 51 skipped in 1216.09 seconds ==============
    
  2. Log in to comment