Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1849706 - Review Request: python-bluepyopt - The Blue Brain Python Optimisation Library
Summary: Review Request: python-bluepyopt - The Blue Brain Python Optimisation Library
Keywords:
Status: CLOSED DUPLICATE of bug 1948298
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Ankur Sinha (FranciscoD)
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1851120
Blocks: FE-NEEDSPONSOR fedora-neuro
TreeView+ depends on / blocked
 
Reported: 2020-06-22 15:10 UTC by Anil Tuncel
Modified: 2021-04-12 10:34 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-04-11 16:33:18 UTC
Type: ---
Embargoed:
sanjay.ankur: fedora-review?


Attachments (Terms of Use)

Description Anil Tuncel 2020-06-22 15:10:12 UTC
Spec URL: https://raw.githubusercontent.com/anilbey/bluepyopt-rpm/master/python-bluepyopt.spec
SRPM URL: https://github.com/anilbey/bluepyopt-rpm/raw/master/python-bluepyopt-1.9.48-1.fc32.src.rpm
Description: The Blue Brain Python Optimisation Library (BluePyOpt) is an extensible framework for data-driven model parameter optimisation that wraps and standardises several existing open-source tools.

It simplifies the task of creating and sharing these optimisations, and the associated techniques and knowledge. This is achieved by abstracting the optimisation and evaluation tasks into various reusable and flexible discrete elements according to established best-practices.

Further, BluePyOpt provides methods for setting up both small- and large-scale optimisations on a variety of platforms, ranging from laptops to Linux clusters and cloud-based compute infrastructures.
Fedora Account System Username: Anil Tuncel (tuncel.manil)

Reviewer: Ankur Sinha (FranciscoD)

Comment 1 Ankur Sinha (FranciscoD) 2020-06-22 16:06:36 UTC
Thanks for this, Anil. 

I'll look at it in the next few days.

Have you created a Fedora Account System (FAS) account yet? It's what gives you access to the necessary infrastructure. You can get one here: https://admin.fedoraproject.org/accounts/
Please use the same e-mail address as you are using here on Bugzilla, since that's how Bugzilla syncs with the rest of the infrastructure set up.

Cheers,
Ankur

Comment 2 Anil Tuncel 2020-06-23 07:01:41 UTC
Hi Ankur I have FAS account it seems.
My username is "anilbey".

Best,
Anıl

Comment 3 Ankur Sinha (FranciscoD) 2020-06-23 07:07:50 UTC
Thanks. 

We use fedora-review to automate some of the tests/checks. `sudo dnf install fedora-review`, and https://pagure.io/FedoraReview

I just tried to run fedora-review to get things started. The srpm link isn't the raw link, so fedora-review couldn't pick it up. 

Could you please make another comment here with the SPEC and SRPM URLs, but with the raw url for the SRPM also. That'll allow fedora-review to fetch both and run the necessary preliminary tests.

Comment 4 Anil Tuncel 2020-06-23 07:15:34 UTC
I built it using the rpmbuild -ba python-bluepyopt.spec command.
What do I need to do to get the raw SRPM?

Comment 5 Ankur Sinha (FranciscoD) 2020-06-23 08:37:29 UTC
No, the srpm is fine. Only the github link needs to be updated to the "raw" link, like the one for the Spec:

https://github.com/anilbey/bluepyopt-rpm/raw/master/python-bluepyopt-1.9.48-1.fc32.src.rpm

(the link of the "download" button on Github)

So just a comment with this link for the srpm, and the raw one for the spec is sufficient for fedora-review to pick it up (it takes the latest comment).

Comment 6 Ankur Sinha (FranciscoD) 2020-06-23 08:39:56 UTC
The reason is that with this link:

https://github.com/anilbey/bluepyopt-rpm/blob/master/python-bluepyopt-1.9.48-1.fc32.src.rpm

one gets an HTML page, which fedora-review correctly detects as "not an rpm".

So, this link to the src rpm file should work:

https://github.com/anilbey/bluepyopt-rpm/raw/master/python-bluepyopt-1.9.48-1.fc32.src.rpm

Comment 7 Ankur Sinha (FranciscoD) 2020-06-23 08:46:34 UTC
I've downloaded the files manually and passed them on to fedora-review for the initial review. 

After each round of comments, you (the package submitter) update the spec/srpm and post new links. Then, I (the reviewer) will re-run fedora-review to verify the new versions---until we pass all checks and the package is approved. So, having the links that fedora-review can directly pull from just quickens the process a little. I can run it as soon as I get an e-mail notification from Bugzilla with the new links, for example.

I'll post the review as soon as I've finished going through the checklist.

Comment 8 Ankur Sinha (FranciscoD) 2020-06-23 09:01:39 UTC
Some preliminary comments:


Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/
^
We'll need to look into this.

- Package contains BR: python2-devel or python3-devel
^
All packages must include BuildRequires: python3-devel

(see https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/ -
currently inaccessible due to the infra move)

- Package is not relocatable.
  Note: Package has a "Prefix:" tag
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_relocatable_packages

Please remove the following deprecated tags:

- Prefix
- Vendor
- Group


You do not need to define version and release macros. The tags themselves become
macros, so you can use %{release} %{version} %{SOURCE0} etc. in the spec.

Take a look at the python spec template:
https://pagure.io/neuro-sig/NeuroFedora/blob/master/f/spec-templates/python.spec

(This template is also available on the currently inaccessible Python packaging guidelines)


- You can use the %{pypi_source} macro for SOURCE0. It takes three optional arguments:

# default without arguments
$ rpm -E %{pypi_source}
https://files.pythonhosted.org/packages/source/%/%name/%name-%version.tar.gz

# with positional arguments
$ rpm -E "%{pypi_source pkgname version xz}"
https://files.pythonhosted.org/packages/source/p/pkgname/pkgname-version.xz


- You can replace the setup macro line with the autosetup macro
https://rpm.org/user_doc/autosetup.html


- In the build section, please use %{py3_build} (rpm -E %... to see the macro
  expansion). It applies the necessary compilation flags.

- In the install section, please use %{py3_install}

- clean section isn't needed anymore so can be removed.


- We dont' use the INSTALLED_FILES method. We explicitly mention the files so
  that if the package is updated and the file list changes, the build fails to
  make the maintainer aware of this. Please see the template linked above to
  see how to list the installed files.

- The spec is missing a changelog: this is required.

Comment 9 Anil Tuncel 2020-06-25 08:57:20 UTC
Hi Ankur thanks for the info.

comment5

Ok I updated the link.

comment8

I applied the changes here. One of the macros is trying to install everything listed on setup.py therefore causing this error.

Error: 
 Problem: conflicting requests
  - nothing provides python3.8dist(scoop) >= 0.7 needed by python-bluepyopt-1.9.48-1.fc32.noarch
(try to add '--skip-broken' to skip uninstallable packages)

Is there a way of ignoring the scoop requirement? 

Also I am curious which flags py3_build and py3_install are using? - I couldn't find them in the documentation.

Best,
Anil

Comment 10 Ankur Sinha (FranciscoD) 2020-06-25 15:53:05 UTC
(In reply to Anil Tuncel from comment #9)
> Hi Ankur thanks for the info.
> 
> comment5
> 
> Ok I updated the link.
> 
> comment8
> 
> I applied the changes here. One of the macros is trying to install
> everything listed on setup.py therefore causing this error.
> 
> Error: 
>  Problem: conflicting requests
>   - nothing provides python3.8dist(scoop) >= 0.7 needed by
> python-bluepyopt-1.9.48-1.fc32.noarch
> (try to add '--skip-broken' to skip uninstallable packages)
> 
> Is there a way of ignoring the scoop requirement? 

Ah, this is being picked up from the setup.py file then by the automatic dependency generator:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_automatically_generated_dependencies

https://github.com/BlueBrain/BluePyOpt/blob/master/setup.py#L35

A simple way to resolve this is to remove this requirement from the setup.py file in the %prep section:

%prep
...

sed -i '/scoop/ d' setup.py

Also note that you do not list the Requires: manually now.


> 
> Also I am curious which flags py3_build and py3_install are using? - I
> couldn't find them in the documentation.

All builds in Fedora use the same flags, so these are also defined for python packages (but don't make a difference for pure python packages)

The guidelines will have this info here:
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_compiler_flags

and here:
https://docs.fedoraproject.org/en-US/packaging-guidelines/RPMMacros/#_macros_providing_compiler_and_linker_flags

$ rpm -E "%optflags"
-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection

The python macros are documented here here:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_macros


I'll look at the spec again now.

Comment 11 Anil Tuncel 2020-06-29 13:23:35 UTC
It is ready on the master branch with this commit d15b9ac.
Now with `BuildRequires:  python3-neuron`, BluePyOpt examples can be run as expected.

Comment 13 Ankur Sinha (FranciscoD) 2020-07-06 12:58:19 UTC
(In reply to Anil Tuncel from comment #11)
> It is ready on the master branch with this commit d15b9ac.
> Now with `BuildRequires:  python3-neuron`, BluePyOpt examples can be run as
> expected.

I've suggested some more changes on Github to enable tests etc. If you could please have a look, we'll continue the review.

Cheers,

Comment 14 Ankur Sinha (FranciscoD) 2021-04-11 16:33:18 UTC
Hi Anil,

I've submitted an updated review here. Once approved, I'll add you as a co-maintainer so you can maintain the package along with the neuro-sig. 

Hope that works,

Cheers,
Ankur

*** This bug has been marked as a duplicate of bug 1948298 ***

Comment 15 Anil Tuncel 2021-04-11 17:53:39 UTC
Hi Ankur,

Thanks a lot for the change. 
This is the spec, right? 
https://ankursinha.fedorapeople.org/python-bluepyopt/python-bluepyopt.spec

Best
Anil

Comment 16 Ankur Sinha (FranciscoD) 2021-04-12 10:34:02 UTC
Hi Anil,

Yes, that's the current version that I've submitted for review. I'm also keeping these changes in a fork of your GitHub repo, but it's just easier to use fedorapeople to host the files so that they are easily accessible by the fedora-review tool.

https://github.com/sanjayankur31/bluepyopt-rpm

Cheers,
Ankur


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