Bug 2224870 - F39FailsToInstall: python3-pynn
Summary: F39FailsToInstall: python3-pynn
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: python-pynn
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Ankur Sinha (FranciscoD)
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: F39FailsToInstall
TreeView+ depends on / blocked
 
Reported: 2023-07-23 18:15 UTC by Fedora Fails To Install
Modified: 2023-07-27 10:33 UTC (History)
4 users (show)

Fixed In Version: python-pynn-0.10.1-5.fc39
Clone Of:
Environment:
Last Closed: 2023-07-27 10:26:35 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Fedora Fails To Install 2023-07-23 18:15:30 UTC
Hello,

Please note that this comment was generated automatically by https://pagure.io/releng/blob/main/f/scripts/ftbfs-fti/follow-policy.py
If you feel that this output has mistakes, please open an issue at https://pagure.io/releng/

Your package (python-pynn) Fails To Install in Fedora 39:

can't install python3-pynn:
  - nothing provides libnrnmech.so()(64bit) needed by python3-pynn-0.10.1-3.fc39.x86_64
  
If you know about this problem and are planning on fixing it, please acknowledge so by setting the bug status to ASSIGNED. If you don't have time to maintain this package, consider orphaning it, so maintainers of dependent packages realize the problem.


If you don't react accordingly to the policy for FTBFS/FTI bugs (https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/), your package may be orphaned in 8+ weeks.


P.S. The data was generated solely from koji buildroot, so it might be newer than the latest compose or the content on mirrors. To reproduce, use the koji/local repo only, e.g. in mock:

    $ mock -r fedora-39-x86_64 --config-opts mirrored=False install python3-pynn


P.P.S. If this bug has been reported in the middle of upgrading multiple dependent packages, please consider using side tags: https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/#updating-inter-dependent-packages

Thanks!

Comment 1 Sandro 2023-07-25 11:46:06 UTC
Hmm. I guess something's missing in the spec file. The mentioned library is part of the package:

$ dnf --cache --repo=rawhide repoquery --list python3-pynn | grep 'lib.*so'
/usr/lib64/nest/libpynn_extensions.so
/usr/lib64/nest/pynn_extensions.so
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/poisson_stim_refractory.mod
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/stdwa_softlimits.mod
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/stdwa_songabbott.mod
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/stochastic_tsodyksmarkram.mod
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/tsodyksmarkram.mod
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/.libs/libnrnmech.so
--> /usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/libnrnmech.so <--
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/poisson_stim_refractory.c
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/poisson_stim_refractory.o
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/stdwa_softlimits.c
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/stdwa_softlimits.o
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/stdwa_songabbott.c
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/stdwa_songabbott.o
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/stochastic_tsodyksmarkram.c
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/stochastic_tsodyksmarkram.o
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/tsodyksmarkram.c
/usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/tsodyksmarkram.o
/usr/lib64/python3.11/site-packages/pyNN/serialization/__pycache__/sonata.cpython-311.opt-1.pyc
/usr/lib64/python3.11/site-packages/pyNN/serialization/__pycache__/sonata.cpython-311.pyc
/usr/lib64/python3.11/site-packages/pyNN/serialization/sonata.py

Comment 2 Sandro 2023-07-25 11:48:50 UTC
But it's not provided:

$ dnf --cache --repo=rawhide repoquery --provides python3-pynn | grep 'lib.*so'
libpynn_extensions.so()(64bit)

And why is `pynn_extensions.so` not provided?

Comment 3 Sandro 2023-07-25 12:23:16 UTC
Oops! I may have closed bug 2220437 prematurely. While the package was built in Koji succesfully during the mass rebuild for f39, it does fail to install.

Right now I'm not able to rebuild it in rawhide getting: `error: 'invalid_port_' is not a member of 'nest'; did you mean 'invalid_port'?` I suppose that's due to the recently updated NEST.

Should I reopen bug 2220437? Or do we continue with this bug? There's a PR for updating PyNN to 0.11.0, which requires the newer NEST. Before pushing that we should make sure the package installs properly.

Comment 4 Ankur Sinha (FranciscoD) 2023-07-25 12:36:18 UTC
Let's continue here. Yeh, upstream changed their build system a little and now the nest etc. extensions are not built as part of the build. I'm looking at how to build those to include in the package now.

I've also run into this: https://github.com/NeuralEnsemble/PyNN/issues/781

Comment 5 Sandro 2023-07-25 12:42:32 UTC
Alright. Since you are more involved in the update than I am, I'll re-assign to you.

I was looking at this bug mostly because it surprised me that there was a new FTI bug filed against PyNN.

Comment 6 Mamoru TASAKA 2023-07-26 12:08:30 UTC
A.

> I'm not able to rebuild it in rawhide getting: `error: 'invalid_port_' is not a member of 'nest'; did you mean 'invalid_port'?

For python-pynn 0.10.1, to compile with nest-simulator 3.4 and higher, backporting the following is needed:

https://github.com/NeuralEnsemble/PyNN/commit/b45ef114410dd978f4198e416d0e098e8d23f870
(This was due to  https://github.com/nest/nest-simulator/commit/5d85811af7a6aebb8de75adb3930a4a5a575f887 )

B.

> nothing provides libnrnmech.so()(64bit) needed by python3-pynn-0.10.1-3.fc39.x86_64

libnrnmech.so is not in standard path (i.e. /usr/lib64 or so), so rpmbuild does not add them to Provides.

Then the reason why python3-pynn-0.10.1-3.fc39.x86_64 now Requires "libnrnmech.so()(64bit)" while python3-pynn-0.10.1-2.fc38 did not have such Requires is that
python3-pynn-0.10.1-2.fc38 was built with neuron simulator 8.0.2 while python3-pynn-0.10.1-3.fc39.x86_64 was built with simulator 8.2.2.

With neuron 8.0.2, the created file /usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/special was shell script, but
with neuron 8.2.2, the created file /usr/lib64/python3.12/site-packages/pyNN/neuron/nmodl/x86_64/special (python version changed) is now binary,
linking against  libnrnmech.so, but this "special" file does not have rpath or so, so I am not sure if this file is working correctly.

Note that in  python3-pynn-0.10.1-2.fc38 , the script /usr/lib64/python3.11/site-packages/pyNN/neuron/nmodl/x86_64/special mentions invalid path /builddir/build/BUILD/PyNN-0.10.0/build/lib/pyNN/neuron/nmodl/x86_64/.libs/libnrnmech.so , so apparently this file was broken.


So my question is that is this "special file" needed? If not, for now I will just remove this file and make python3-pynn installable (with version 0.10.1) for now.

Comment 7 Mamoru TASAKA 2023-07-26 13:40:08 UTC
Oops. I was wrong. libnrnmech.so() Provides were just filtered out.

https://src.fedoraproject.org/rpms/python-pynn/blob/521d65f4510f20fa1560bc23fff85850925b2189/f/python-pynn.spec#_15

For now, I will just also filtering out Requires for libnrnmech.so().

Comment 8 Sandro 2023-07-26 21:55:42 UTC
Thank you Mamoru for helping out.

I don't know the history of why the Provides was filtered out. Ankur (FranciscoD_) or Ben (music) may have some insight on that. I sure missed that line looking at the spec file.

Since the package now, without filtering, requires the library, would it make sense to disable the filter, so the Provides works correctly? Of course, the very special `special` file still needs looking into. We might need some advice from upstream on that. Since Ankur is already involved in getting the package updated, I'll leave it to him to decide on what to do with your findings. But your help and expertise is greatly appreciated. Thank you again!

Comment 9 Ankur Sinha (FranciscoD) 2023-07-27 10:26:35 UTC
Hello!

Thanks for all the help!

I don't think the special file is required in this particular case, it's a launcher that may be used to launch neuron instead of nrniv:

https://nrn.readthedocs.io/en/latest/scripting.html#advanced-usage

I'm working on the update now, and will build and test it locally to confirm all of these files that it needs/generates. 

Closing this one, will track progress in https://bugzilla.redhat.com/show_bug.cgi?id=2209829

Comment 10 Mamoru TASAKA 2023-07-27 10:33:03 UTC
> Since the package now, without filtering, requires the library, would it make sense to disable the filter, so the Provides works correctly? 

Well, some people prefer to filter out Requires / Provides for libraries installed into non-standard path (i.e. not in /usr/lib{,64} or so),
some people don't filter out. For this package case, I think both is acceptable.


Note You need to log in before you can comment on or make changes to this bug.