Bug 1150105 (python-pynn) - Review Request: python-pynn - Simulator-independent specification of neuronal network models
Summary: Review Request: python-pynn - Simulator-independent specification of neuronal...
Keywords:
Status: CLOSED ERRATA
Alias: python-pynn
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jerry James
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1150067 1150099 1273579 neuron
Blocks: fedora-neuro
TreeView+ depends on / blocked
 
Reported: 2014-10-07 12:46 UTC by Ankur Sinha (FranciscoD)
Modified: 2021-02-20 01:34 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-02-20 01:25:23 UTC
Type: ---
loganjerry: fedora-review+


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github NeuralEnsemble PyNN issues 705 0 None open Testing: move away from deprecated Nose 2021-02-15 13:47:48 UTC

Description Ankur Sinha (FranciscoD) 2014-10-07 12:46:20 UTC
Spec URL: https://ankursinha.fedorapeople.org/python-pynn/python-pynn.spec
SRPM URL: https://ankursinha.fedorapeople.org/python-pynn/python-pynn-0.7.5-1.fc22.src.rpm

Description: A Python package for simulator-independent specification of neuronal network
models

In other words, you can write the code for a model once, using the PyNN API and
the Python programming language, and then run it without modification on any
simulator that PyNN supports (currently NEURON, NEST, PCSIM and Brian).

The API has two parts, a low-level, procedural API (functions create(),
connect(), set(), record(), record_v()), and a high-level, object-oriented API
(classes Population and Projection, which have methods like set(), record(),
setWeights(), etc.).

The low-level API is good for small networks, and perhaps gives more
flexibility. The high-level API is good for hiding the details and the
book-keeping, allowing you to concentrate on the overall structure of your
model.

The other thing that is required to write a model once and run it on multiple
simulators is standard cell and synapse models. PyNN translates standard
cell-model names and parameter names into simulator-specific names, e.g.
standard model IF_curr_alpha is iaf_neuron in NEST and StandardIF in NEURON,
while SpikeSourcePoisson is a poisson_generator in NEST and a NetStim in
NEURON.

Even if you don't wish to run simulations on multiple simulators, you may
benefit from writing your simulation code using PyNN's powerful, high-level
interface. In this case, you can use any neuron or synapse model supported by
your simulator, and are not restricted to the standard models.

PyNN is a work in progress, but is already being used for several large-scale
simulation projects.


Fedora Account System Username: ankursinha

Comment 1 Ankur Sinha (FranciscoD) 2014-10-07 17:01:15 UTC
Updated to the latest upstream commit - it has py3 support. Also corrected some left over py2 to 3 porting and opened a pull request upstream:

https://ankursinha.fedorapeople.org/python-pynn/python-pynn.spec

https://ankursinha.fedorapeople.org/python-pynn/python-pynn-0.8-0.1.gitc435db1.fc21.src.rpm

Comment 2 Ankur Sinha (FranciscoD) 2014-10-09 09:54:46 UTC
This isn't very useful until we have NEURON, NEST and BRIAN packaged. Marking as not ready.

Comment 3 Robert-André Mauchin 🐧 2018-11-18 18:58:44 UTC
Do you still need this reviewed?

Comment 4 Ankur Sinha (FranciscoD) 2018-11-18 20:17:25 UTC
It requires neuron, more work on NEST (it needs to be built with libneurosim which requires upstream to do a bit of work), and brian (which is packaged). Since neuron and NEST need work, I don't want to make pynn available to users via Fedora yet. So, it isn't ready for review yet.

Comment 5 Package Review 2020-07-10 00:50:45 UTC
This is an automatic check from review-stats script.

This review request ticket hasn't been updated for some time. We're sorry
it is taking so long. If you're still interested in packaging this software
into Fedora repositories, please respond to this comment clearing the
NEEDINFO flag.

You may want to update the specfile and the src.rpm to the latest version
available and to propose a review swap on Fedora devel mailing list to increase
chances to have your package reviewed. If this is your first package and you
need a sponsor, you may want to post some informal reviews. Read more at
https://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group.

Without any reply, this request will shortly be considered abandoned
and will be closed.
Thank you for your patience.

Comment 6 Ankur Sinha (FranciscoD) 2020-07-10 09:56:35 UTC
Hrm, well, it's marked "not ready". Perhaps that's case sensitive? The review is still valid.

Comment 7 Ankur Sinha (FranciscoD) 2021-01-10 14:09:06 UTC
This is now ready for review. The latest release supports the new versions of NEST and Brian2 that we already have in Fedora.

Spec: https://ankursinha.fedorapeople.org/python-pynn/python-pynn.spec
SRPM: https://ankursinha.fedorapeople.org/python-pynn/python-pynn-0.9.6-1.fc33.src.rpm

Cheers,
Ankur

Comment 8 Miro Hrončok 2021-01-12 10:51:56 UTC
nose is deprecated, plese don't use it.

Comment 9 Ankur Sinha (FranciscoD) 2021-01-12 11:02:12 UTC
Thanks. Unfortunately, that's what upstream uses at the moment. I'll file a ticket with them letting them know.

https://github.com/NeuralEnsemble/PyNN/blob/master/ci/test_script.sh

Comment 10 Jerry James 2021-01-12 15:20:05 UTC
I will take this review.  Can you review a simple OCaml package for me (bug 1912655)?

Comment 11 Jerry James 2021-01-12 16:10:41 UTC
Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated


Issues:
=======
- Package must not depend on deprecated() packages.
  Note: python3-nose is deprecated, you must not depend on it.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/deprecating-packages/

- There are 2 BRs for neuron-devel

- These warnings from the compiler should be looked into, as they may indicate
  code that does not behave as expected:

x86_64/quantal_stp.c:324:21: warning: type of 'nrn_random_pick' does not match original declaration [-Wlto-type-mismatch]
  324 |             value = nrn_random_pick(_p_rng);
      |                     ^
x86_64/gif.c:397:8: note: return value type mismatch
  397 | double nrn_random_pick(void* r);
      |        ^
x86_64/gif.c:397:8: note: type 'double' should match type 'int'
x86_64/gif.c:397:8: note: 'nrn_random_pick' was previously declared here
x86_64/gif.c:397:8: note: code may be misoptimized unless '-fno-strict-aliasing' is used
x86_64/quantal_stp.c:298:19: warning: type of 'nrn_random_arg' does not match original declaration [-Wlto-type-mismatch]
  298 |             *pv = nrn_random_arg(1);
      |                   ^
x86_64/gif.c:398:7: note: return value type mismatch
  398 | void* nrn_random_arg(int argpos);
      |       ^
x86_64/gif.c:398:7: note: 'nrn_random_arg' was previously declared here
x86_64/gif.c:398:7: note: code may be misoptimized unless '-fno-strict-aliasing' is used

- Likewise, this python warning may indicate an issue:

/builddir/build/BUILD/PyNN-0.9.6/pyNN/recording/__init__.py:262: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if variables is not 'all':

- Remove the unnecessary rpath from libnrnmech.so, or prevent it from being
  generated in the first place

- Please review the private-shared-object-provides warnings from rpmlint and
  filter Provides if appropriate.

- Something funny is going on in %{python3_sitearch}/pyNN/neuron/nmodl/x86_64.
  That directory contains libnrnmech.so, but also contains a .libs directory
  with another copy of libnrnmech.so, and an empty directory named x86_64.

- The devel subpackage Requires on the main package should include %{?_isa}:

  Requires:       python3-%{lower_name}%{?_isa}


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[!]: Rpath absent or only used for internal libs.
     Note: See rpmlint output
[x]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: Package does not contain any libtool archives (.la)

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
[x]: License file installed when any subpackage combination is installed.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 51200 bytes in 3 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[x]: Python eggs must not download any dependencies during the build
     process.
[x]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Package contains BR: python2-devel or python3-devel
[x]: Packages MUST NOT have dependencies (either build-time or runtime) on
     packages named with the unversioned python- prefix unless no properly
     versioned package exists. Dependencies on Python packages instead MUST
     use names beginning with python2- or python3- as appropriate.
[x]: Python packages must not contain %{pythonX_site(lib|arch)}/* in %files
[x]: Binary eggs must be removed in %prep

===== SHOULD items =====

Generic:
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in python-
     pynn-devel , python3-pynn
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: python-pynn-devel-0.9.6-1.fc34.x86_64.rpm
          python3-pynn-0.9.6-1.fc34.x86_64.rpm
          python-pynn-doc-0.9.6-1.fc34.noarch.rpm
          python-pynn-debugsource-0.9.6-1.fc34.x86_64.rpm
          python-pynn-0.9.6-1.fc34.src.rpm
python-pynn-devel.x86_64: W: spelling-error %description -l en_US neuromorphic -> anthropomorphic
python-pynn-devel.x86_64: W: spelling-error %description -l en_US modelling -> modeling, model ling, model-ling
python-pynn-devel.x86_64: W: no-documentation
python3-pynn.x86_64: W: spelling-error %description -l en_US neuromorphic -> anthropomorphic
python3-pynn.x86_64: W: spelling-error %description -l en_US modelling -> modeling, model ling, model-ling
python3-pynn.x86_64: W: private-shared-object-provides /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs/libnrnmech.so libnrnmech.so()(64bit)
python3-pynn.x86_64: W: private-shared-object-provides /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/libnrnmech.so libnrnmech.so()(64bit)
python3-pynn.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs/libnrnmech.so ['/usr/lib']
python3-pynn.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/libnrnmech.so ['/usr/lib']
python3-pynn.x86_64: W: hidden-file-or-dir /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs
python3-pynn.x86_64: W: hidden-file-or-dir /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs
python-pynn-doc.noarch: W: description-shorter-than-summary
python-pynn.src: W: spelling-error %description -l en_US neuromorphic -> anthropomorphic
python-pynn.src: W: spelling-error %description -l en_US modelling -> modeling, model ling, model-ling
5 packages and 0 specfiles checked; 2 errors, 12 warnings.




Rpmlint (installed packages)
----------------------------
python3-pynn.x86_64: W: spelling-error %description -l en_US neuromorphic -> anthropomorphic
python3-pynn.x86_64: W: spelling-error %description -l en_US modelling -> modeling, model ling, model-ling
python3-pynn.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs/libnrnmech.so ['/usr/lib']
python3-pynn.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/libnrnmech.so ['/usr/lib']
python3-pynn.x86_64: W: hidden-file-or-dir /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs
python3-pynn.x86_64: W: hidden-file-or-dir /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs
python-pynn-doc.noarch: W: description-shorter-than-summary
python-pynn-devel.x86_64: W: spelling-error %description -l en_US neuromorphic -> anthropomorphic
python-pynn-devel.x86_64: W: spelling-error %description -l en_US modelling -> modeling, model ling, model-ling
python-pynn-devel.x86_64: W: no-documentation
4 packages and 0 specfiles checked; 2 errors, 8 warnings.



Unversioned so-files
--------------------
python3-pynn: /usr/lib64/nest/libpynn_extensions.so
python3-pynn: /usr/lib64/nest/pynn_extensions.so
python3-pynn: /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/.libs/libnrnmech.so
python3-pynn: /usr/lib64/python3.9/site-packages/pyNN/neuron/nmodl/x86_64/libnrnmech.so

Source checksums
----------------
https://files.pythonhosted.org/packages/source/P/PyNN/PyNN-0.9.6.tar.gz :
  CHECKSUM(SHA256) this package     : d85226800e30bc1692d3f84485c3fa20b921c2ab55f1201d0a3bf23432e16cd2
  CHECKSUM(SHA256) upstream package : d85226800e30bc1692d3f84485c3fa20b921c2ab55f1201d0a3bf23432e16cd2


Requires
--------
python-pynn-devel (rpmlib, GLIBC filtered):
    python3-pynn

python3-pynn (rpmlib, GLIBC filtered):
    /usr/bin/sh
    libc.so.6()(64bit)
    libconngen.so()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libgsl.so.25()(64bit)
    libgslcblas.so.0()(64bit)
    libltdl.so.7()(64bit)
    libm.so.6()(64bit)
    libncurses.so.6()(64bit)
    libnest.so()(64bit)
    libnestkernel.so()(64bit)
    libnestutil.so()(64bit)
    libneurosim.so.0()(64bit)
    libnrniv.so.0.0.0()(64bit)
    libpy3neurosim.so.0()(64bit)
    librandom.so()(64bit)
    libreadline.so.8()(64bit)
    libsli.so()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libtinfo.so.6()(64bit)
    libtopology.so()(64bit)
    python(abi)
    python3.9dist(lazyarray)
    python3.9dist(neo)
    python3.9dist(numpy)
    python3.9dist(quantities)
    rtld(GNU_HASH)

python-pynn-doc (rpmlib, GLIBC filtered):

python-pynn-debugsource (rpmlib, GLIBC filtered):



Provides
--------
python-pynn-devel:
    python-pynn-devel
    python-pynn-devel(x86-64)

python3-pynn:
    libnrnmech.so()(64bit)
    libpynn_extensions.so()(64bit)
    python-pynn
    python3-pynn
    python3-pynn(x86-64)
    python3.9-pynn
    python3.9dist(pynn)
    python3dist(pynn)

python-pynn-doc:
    python-pynn-doc

python-pynn-debugsource:
    python-pynn-debugsource
    python-pynn-debugsource(x86-64)



Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
Command line :/usr/bin/fedora-review -b 1150105 -m fedora-rawhide-x86_64
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, C/C++, Shell-api, Python
Disabled plugins: Haskell, Ocaml, Ruby, PHP, fonts, SugarActivity, Java, R, Perl
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 12 Ankur Sinha (FranciscoD) 2021-02-09 15:42:11 UTC
Thanks for the review Jerry. Apologies for the delay. Here are the updated Spec/SRPM files:


Spec: https://ankursinha.fedorapeople.org/python-pynn/python-pynn.spec
SRPM: https://ankursinha.fedorapeople.org/python-pynn/python-pynn-0.9.6-1.fc33.src.rpm

Changelog:

* Tue Feb 09 2021 Ankur Sinha <ankursinha AT fedoraproject DOT org> - 0.9.6-1
- Remove duplicate neuron-devel BR
- Add patch to correct python operator usage
- Use arch dependent and version specific requirement on base package
- Add comment about NEURON files
- Filter out private libnrnmech from provides

The rpath bit came from the NEURON package. I've fixed that and pushed updates too. So if you test this one for F32/F33, you'll have to ensure that the updates-testing repo is enabled for the build.

I've submitted a PR for the python issue, which was already accepted:
https://github.com/NeuralEnsemble/PyNN/pull/706

I've also filed a ticket for the compilation warnings:
https://github.com/NeuralEnsemble/PyNN/issues/707

The x86_64 folder is NEURON specific. Mod files that are to be accessible in NEURON are compiled together to create a libnrnmech.so library, which is loaded into NEURON by a script called "special" (that calls `nrniv -dll $ARCH/.libs/libnrnmech.so`). And then, `.libs/libnrnmech.so` is a sym link to `../../$ARCH/libnrnmech.so`. I guess they could just use the libnrnmech.so file instead of the symlink, but this is how it is---probably because of some historical reasons. It also creates the empty x86_64 directory as you noticed: really not sure what that is about but I see it everywhere we compile mod files. I'll double check with colleagues that are running NEURON on other platforms to see if this one is necessary and also confirm with upstream.

Cheers,
Ankur

Comment 13 Jerry James 2021-02-09 16:04:50 UTC
All of the MUST issues have been addressed (and the others are in process of being fixed), so this package is APPROVED.

Comment 14 Mohan Boddu 2021-02-10 15:50:43 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/python-pynn

Comment 15 Fedora Update System 2021-02-11 09:24:01 UTC
FEDORA-2021-ab07b628cb has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2021-ab07b628cb

Comment 16 Fedora Update System 2021-02-12 02:12:01 UTC
FEDORA-2021-ab07b628cb has been pushed to the Fedora 33 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2021-ab07b628cb \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-ab07b628cb

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 17 Fedora Update System 2021-02-12 02:25:50 UTC
FEDORA-2021-e6cdf1936a has been pushed to the Fedora 32 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2021-e6cdf1936a \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-e6cdf1936a

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 18 Fedora Update System 2021-02-20 01:25:23 UTC
FEDORA-2021-ab07b628cb has been pushed to the Fedora 33 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 19 Fedora Update System 2021-02-20 01:34:21 UTC
FEDORA-2021-e6cdf1936a has been pushed to the Fedora 32 stable repository.
If problem still persists, please make note of it in this bug report.


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