Index | Thread | Search

From:
Landry Breuil <landry@openbsd.org>
Subject:
Re: net/synapse: fix tests
To:
ports@openbsd.org
Date:
Thu, 22 Aug 2024 09:40:23 +0200

Download raw body.

Thread
Le Wed, Aug 21, 2024 at 06:11:32PM +0200, Kirill A. Korinsky a écrit :
> On Wed, 21 Aug 2024 17:16:11 +0200,
> Landry Breuil <landry@openbsd.org> wrote:
> > 
> > Le Wed, Aug 21, 2024 at 05:00:21PM +0200, Landry Breuil a écrit :
> > > Le Wed, Aug 21, 2024 at 03:49:45PM +0200, Kirill A. Korinsky a écrit :
> > > > ports@,
> > > > 
> > > > Here a ping from another diff from my
> > > 
> > > can you explain the dance about dropping/copying tests in pre-test ?
> > > why was that needed ? isn't doing MODPY_PYTEST_ARGS = --forked enough ?
> > 
> > now that i've tested, this fails with a rather strange error (strange as
> > in "i dont understand why moving tests/ around helps") on all test files:
> >
> 
> and I confirm that this is the problem I am overlooking by moving tests.
> 
> I had discovered this problem at archivers/py-zstandard which I made for
> mitmproxy, but it was more than two months ago I and can not easily recall
> why it's help and how I discovered this hack.
> 
> Probably it doesn't have the correct PYTHONPATH and I can't figure out how
> to set it correctly in case of cffi on this port.

i've tried playing with MODPY_TEST_LIBDIR to give it the right path to
the synapse_rust.abi3.so file, but everything i've tried so far fails.

one can easily reproduce the issue:
- go to WRKSRC
- LD_DEBUG=1 python3

>>> import tests.api.test_auth
dlopen: loading: /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so                                                       
objname [/usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so], dynp 0xdbef10a3840, objtype 4 lbase dbef107b000, obase dbef107b000
 flags /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so = 0x0      
head /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so                                                                        
obj /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so has /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so as head 
linking /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so as dlopen()ed
head [/usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so]                                                                      
examining: '/usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so'    
loading: libsodium.so.10.2 required by /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so
objname [/usr/local/lib/libsodium.so.10.2], dynp 0xdbe3db09858, objtype 3 lbase dbe3da87000, obase dbe3da87000
 flags /usr/local/lib/libsodium.so.10.2 = 0x1                                                                                            
obj /usr/local/lib/libsodium.so.10.2 has /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so as head
linking dep /usr/local/lib/libsodium.so.10.2 as child of /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so
examining: '/usr/local/lib/libsodium.so.10.2'                                                                                            
loading: libpthread.so.27.1 required by /usr/local/lib/libsodium.so.10.2                                  
linking dep /usr/lib/libpthread.so.27.1 as child of /usr/local/lib/libsodium.so.10.2                      
tail /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so                                                                        
protect RELRO [0xdbe3db08090,0xdbe3db0a000) in /usr/local/lib/libsodium.so.10.2                                  
doing ctors obj 0xdbe9f5ba000 @0xdbe3db05ac0: [/usr/local/lib/libsodium.so.10.2]                                     
protect RELRO [0xdbef10a10f0,0xdbef10a5000) in /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so
doing ctors obj 0xdbe9f5b9000 @0xdbef109e4e0: [/usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so]
dlopen: /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so: done (success).                     
dlsym: PyInit__sodium in /usr/local/lib/python3.11/site-packages/nacl/_sodium.abi3.so: 0xdbef108b060
Traceback (most recent call last):                                                                                                       
  File "<stdin>", line 1, in <module>                                                                                                    
  File "/usr/obj/ports/synapse-1.112.0/synapse-1.112.0/tests/api/test_auth.py", line 28, in <module>     
    from synapse.api.auth.internal import InternalAuth                                                                                   
  File "/usr/obj/ports/synapse-1.112.0/synapse-1.112.0/synapse/__init__.py", line 32, in <module>
    from synapse.util.rust import check_rust_lib_up_to_date                                                                              
  File "/usr/obj/ports/synapse-1.112.0/synapse-1.112.0/synapse/util/rust.py", line 27, in <module>          
    from synapse.synapse_rust import get_rust_file_digest                                                                                
ImportError: cannot import name 'get_rust_file_digest' from 'synapse.synapse_rust' (unknown location)        
>>>
so something doesnt set the right path to find
build/lib.openbsd-7.6-amd64-cpython-311/synapse/synapse_rust.abi3.so, but thats
not PYTHONPATH nor LD_LIBRARY_PATH.

as for the tests needing a database, its a bit more convoluted since it
needs a fullblown instance running:

synapse.storage.prepare_database.UpgradeDatabaseException: Uninitialised
database: run the main synapse process to prepare the database schema
before starting worker processes.

Landry