Bug 1638994 - Review Request: boost-python3 - Run-Time component of boost python library for Python 3.4 in EPEL7
Summary: Review Request: boost-python3 - Run-Time component of boost python library fo...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Robert-André Mauchin 🐧
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-10-13 21:03 UTC by Andrea
Modified: 2021-07-04 15:13 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2021-07-04 15:13:02 UTC
Type: ---
Embargoed:
eclipseo: fedora-review+


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1622889 0 unspecified CLOSED Missing boost-python3 package from RHEL7.x 2021-02-22 00:41:40 UTC

Internal Links: 1622889

Description Andrea 2018-10-13 21:03:09 UTC
Spec URL: https://copr-be.cloud.fedoraproject.org/results/andreamanzi/boost-python34/epel-7-x86_64/00807073-boost-python34/boost-python34.spec
SRPM URL: https://copr-be.cloud.fedoraproject.org/results/andreamanzi/boost-python34/epel-7-x86_64/00807073-boost-python34/boost-python34-1.53.0-27.el7.src.rpm
Description: Run-Time component of boost python library for Python 3.4, the package is available in Fedora but it's not available in EPEL7 
Fedora Account System Username: andreamanzi

Comment 1 Andrea 2018-10-13 21:31:53 UTC
new Spec URL: https://copr-be.cloud.fedoraproject.org/results/andreamanzi/boost-python34/epel-7-x86_64/00809104-boost-python34/boost-python34.spec

I first asked to include this package in EPEL7 but the request was not accepted by the mantainer (https://bugzilla.redhat.com/show_bug.cgi?id=1622889) and i was suggested to package this lib by myself. 
The spec file derives from the boost package spec file. In this case i build and package only the python3 library.

I have also created a copr project at:

https://copr.fedorainfracloud.org/coprs/andreamanzi/boost-python34/

Comment 2 Robert-André Mauchin 🐧 2018-10-19 17:00:52 UTC
 - Use %{python3_pkgversion} instead of hardcoded 34

 - Not needed:

rm -rf $RPM_BUILD_ROOT

%clean
rm -rf $RPM_BUILD_ROOT

%defattr(-, root, root, -)

 - License must be installed with %license, not %doc

 - Add %ldconfig_scriptlets for the library

 - This is not used by your package, I think you can remove it too

%ifnarch %{ix86} x86_64
  # Avoid using Boost.Context on non-x86 arches.  s390 is not
  # supported at all and there were _syntax errors_ in PPC code.  This
  # should be enabled on a case-by-case basis as the arches are tested
  # and fixed.
  %bcond_with context
%else
  %bcond_without context
%endif

Comment 3 Andrea 2018-10-20 10:03:34 UTC
thanks!
i made the suggested changes to the spec file

new Spec URL: https://copr-be.cloud.fedoraproject.org/results/andreamanzi/boost-python34/epel-7-x86_64/00812979-boost-python3/boost-python34.spec

cheers
Andrea

Comment 4 Robert-André Mauchin 🐧 2018-10-20 12:44:35 UTC
Hmmm you're gonna encounter problems with your package naming once Python is upgraded (it is planned soon). I suggest you keep the main package name to boost-python3 as a dummy empty package then add a subpackage named boost-python%{python3_pkgversion}. Also rename the devel subpackage to be boost-python%{python3_pkgversion}-devel

 - Add gcc-c++  as BR

 - python-devel → python2-devel

 - Use %global instead of %define


Package Review
==============

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


Issues:
=======
- If your application is a C or C++ application you must list a
  BuildRequires against gcc, gcc-c++ or clang.
  Note: No gcc, gcc-c++ or clang found in BuildRequires
  See: https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B
- Spec file name must match the spec package %{name}, in the format
  %{name}.spec.
  Note: boost-python34.spec should be boost-python3.spec
  See:
  http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Spec_file_name


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

C/C++:
[x]: Provides: bundled(gnulib) in place as required.
     Note: Sources not installed
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
     Note: Using prebuilt packages
[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]: 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]: License field in the package spec file matches the actual license.
     Note: Cannot run licensecheck: Command 'licensecheck -r
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked' returned non-zero exit status -15
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
     Note: Especially check following dirs for bundled code:
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/test/railsys/program/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/test/railsys/libx/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/tools/auto_index/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/example/libraries,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/engine/boehm_gc/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/boost/spirit/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/boostbook/test/more/tests/libs,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/tools/quickbook/test/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/test/prebuilt/ext,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/boost/numeric/odeint/external,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/boost/spirit/repository/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/example/variant/libs,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-
     unpacked/Source0/boost_1_53_0/tools/build/v2/example/pch/include,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/boost/numeric/interval/ext,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/libs,
     /home/bob/packaging/review/boost-python34/review-boost-python34
     /upstream-unpacked/Source0/boost_1_53_0/boost/fusion/include
[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]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Package requires other packages for directories it uses.
[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]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

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

Generic:
[x]: Reviewer should test that the package builds in mock.
[-]: 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).
[?]: Package functions as described.
[-]: 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.
[-]: 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.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[!]: Spec use %global instead of %define unless justified.
     Note: %define requiring justification: %define version_enc 1_53_0,
     %define toplev_dirname boost_%{version_enc}, %define sonamever
     %{version}
[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]: Fully versioned dependency in subpackages if applicable.
[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.

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

Generic:
[!]: Spec file according to URL is the same as in SRPM.
     Note: Bad spec filename: /home/bob/packaging/review/boost-python34
     /review-boost-python34/srpm-unpacked/boost-python34.spec
     See: (this test has no URL)
[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.


Rpmlint
-------
Checking: boost-python3-1.53.0-27.el7.src.rpm
boost-python3.src: W: spelling-error %description -l en_US versa -> avers, verse, verso
boost-python3.src: E: invalid-spec-name
boost-python3.src:294: W: mixed-use-of-spaces-and-tabs (spaces: line 294, tab: line 278)
1 packages and 0 specfiles checked; 1 errors, 2 warnings.

Comment 5 Andrea 2018-10-20 17:18:39 UTC
thanks again!
i did as you suggested but i cannot build anymore the package in copr now

this is the new spec

https://gitlab.cern.ch/dmc/boost-python34/raw/master/boost-python3.spec

and this is the error i see 

https://copr-be.cloud.fedoraproject.org/results/andreamanzi/boost-python34/srpm-builds/00813041/builder-live.log

looks like when runnin rpkg to build the srpm the macro %{python3_pkgversion} resolves to 3 instead of 34, possible?

Comment 6 Robert-André Mauchin 🐧 2018-10-20 18:11:38 UTC
No worry it's usual with Python 3 specific packages.

It will work in Koji: https://koji.fedoraproject.org/koji/taskinfo?taskID=30348873 because Koji rebuild the SRPM in a RHEL chroot.

Don't forget to rename your SPEC "boost-python3.spec".

Package approved.

Comment 7 Robert-André Mauchin 🐧 2018-10-20 18:34:57 UTC
If you have trouble rebuilding your SRPM, just use this where you have your SPEC and sources:

rpmbuild --define "python3_pkgversion 34" --define "_sourcedir $PWD" --define "_srcrpmdir $PWD" --target epel-7-x86_64 -bs boost-python3.spec

Comment 8 Andrea 2018-10-21 07:16:14 UTC
thanks a lot for your help!

Comment 9 Igor Raits 2018-10-21 10:14:02 UTC
why isn't it called python3-boost? ;)

Comment 10 Andrea 2018-10-22 09:33:15 UTC
Hi Igor,
i used the name of the package already available in F28, should i move to the new naming convention also in EPEL7
thanks
Andrea

Comment 11 Jonathan Wakely 2018-10-22 09:56:59 UTC
(In reply to Igor Gnatenko from comment #9)
> why isn't it called python3-boost? ;)

Please, let's not start this again! Somebody changed the boost-python3 packages in Fedora to be python3-boost and I have to change them back.

It is not a python module, it's a C++ library for working with python. The naming conventions for python modules do not apply to packages which are not python modules.

Comment 12 Jonathan Wakely 2018-10-22 10:15:25 UTC
> Source2: libboost_thread-mt.so

This can be dropped, it's only needed for the boost-thread subpackage in the main RHEL boost package.


Most of the patches can be dropped as they aren't relevant to Boost.Python, but the following are needed:

> Patch9: boost-1.53.0-attribute.patch

> Patch17: boost-1.53.0-static_assert-unused_typedef.patch

> Patch49: boost-1.54.0-python-unused_typedef.patch

> Patch55: boost-1.53.0-buildflags.patch

> Patch61: boost-1.53.0-python-libpython_dep.patch
> Patch62: boost-1.53.0-python-abi_letters.patch
> Patch63: boost-1.53.0-python-test-PyImport_AppendInittab.patch
> Patch64: boost-1.53.0-no-rpath.patch

I think the rest can be dropped.

Should there be a boost-python3-static subpackage, containing the libboost_python3.a archive? In RHEL libboost_python.a is included in the boost-static subpackage.

Comment 13 Jonathan Wakely 2018-10-22 10:25:01 UTC
In RHEL there are subpackages which include Python2 modules for OpenMPI and MPICH:

%files openmpi-python
%defattr(-, root, root, -)
%doc LICENSE_1_0.txt
%{_libdir}/openmpi/lib/libboost_mpi_python*.so.%{sonamever}
%{_libdir}/openmpi/lib/mpi.so


%files mpich-python
%defattr(-, root, root, -)
%doc LICENSE_1_0.txt
%{_libdir}/mpich/lib/libboost_mpi_python*.so.%{sonamever}
%{_libdir}/mpich/lib/mpi.so


This EPEL package doesn't provide Did you decide not to provide Python3 versions of those for EPEL, or was that unintentional? Packaging them for RHEL 7 might be complicated, because the python2 and python3 modules can't both live at the same path:
%{_libdir}/mpich/lib/mpi.so

In Fedora they are installed to different locations, via the sitearch macros:

%files mpich-python2
%license LICENSE_1_0.txt
%{_libdir}/mpich/lib/libboost_mpi_python.so.%{sonamever}
%{python2_sitearch}/mpich/boost/


%files mpich-python3
%license LICENSE_1_0.txt
%{_libdir}/mpich/lib/libboost_mpi_python3.so.%{sonamever}
%{python3_sitearch}/mpich/boost/

For EPEL it might be best to just ignore the MPI modules until somebody needs them (which is what your spec file does now).

Comment 14 Jonathan Wakely 2018-10-22 10:26:21 UTC
(In reply to Jonathan Wakely from comment #13)
> This EPEL package doesn't provide Did you decide not to provide Python3

Oops, I lost a word there. That was meant to say:

This EPEL package doesn't provide them. Did you decide ...

Comment 15 Andrea 2018-10-22 11:56:46 UTC
Hi Jonathan
thanks for your comments, i'm going to drop the not needed lib and patches.

Regarding the missing static, OpenMPI and MPICH packages, i have to admit that i decided to package only what i need for my project:-)

Looks like i can easily add the static package, while for MPI ones if it's complicated in EPEL7 i would prefer not to add them.
cheers
Andrea

Comment 16 Gwyn Ciesla 2018-10-22 13:17:04 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/boost-python3

Comment 17 Andrea 2018-10-23 11:47:39 UTC
sorry to bother..but i made a stupid mistake..

i first build the package in EPEL7 without making the changes with discussed (adding static packages and remove not needed patches) and i forgot to run it as scratch build..

i tried to remove the package with koji untag-pck but the build is still there and i cannot build again with the same version and release after i made the needed changes ( i need to have the same version and release as the available boost libs)

how do you solve this? is there a way to remove the existing build?
thanks a lot
Andrea

Comment 18 Robert-André Mauchin 🐧 2018-10-23 11:52:33 UTC
You can't. You need to bump the Release tag with your changes and build it again. There is no undo button for this.

Comment 19 Andrea 2018-10-23 14:07:04 UTC
ok, i had to relax the dependencies over boost-devel then ( version  and not version-release ), hope this is not an issue
thanks
Andrea

Comment 20 Jonathan Wakely 2018-10-23 15:35:32 UTC
That seems right to me. You should not have to rebuild boost-python3 for every change to boost (and vice versa).

A change to the RHEL boost-1.53.0 package *might* require a rebuild for boost-python3 but that would be rare.

Comment 21 Jonathan Wakely 2018-10-23 15:36:19 UTC
Or you should depend on the %{version}-%release} of *boost* not the %{release} of your package. The %{release} of your package should be independent of the boost one.

Comment 22 Mattia Verga 2021-07-04 15:13:02 UTC
Package is in repositories


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