Bug 1667725 - Review Request: boost169 - The free peer-reviewed portable C++ source libraries
Summary: Review Request: boost169 - The free peer-reviewed portable C++ source libraries
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora EPEL
Classification: Fedora
Component: Package Review
Version: epel7
Hardware: Unspecified
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: Jonathan Wakely
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-01-20 12:45 UTC by Denis Arnaud
Modified: 2019-03-10 17:04 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-03-10 17:04:55 UTC
Type: Bug
jwakely: fedora-review+


Attachments (Terms of Use)

Description Denis Arnaud 2019-01-20 12:45:07 UTC
Spec URL: http://denisarnaud.fedorapeople.org/boost/boost169/boost169.spec
SRPM URL: http://denisarnaud.fedorapeople.org/boost/boost157/boost169-1.69.0-1.src.rpm

Description:
A few packages require a fairly recent Boost version, which EPEL does not provide. EPEL 6 and 7 have had Boost-1.48 and Boost-1.59 respectively for a while (as parallel installations), thanks to Robert Scheck and Haïkel Guémar. The very same way they built Boost-1.59 for EPEL 7, I therefore propose to build Boost-1.69 for EPEL 6 and 7, as a parallel installation to the currently officially supported Boost packages (Boost-1.41 on EPEL 6 and Boost-1.53 on EPEL 7).

To minimise the work (and the support!) to be required, I re-start from the Boost-1.69 package on Fedora 30 and Boost-1.57 on EPEL 7, which cleanly build on EPEL 7. For EPEL 6, work-arounds of Boost148 may have to be re-injected.

References:
* Review request for Boost-1.59 on EPEL 7: http://bugzilla.redhat.com/show_bug.cgi?id=1391444
* Review request for Boost-1.57 on EPEL 6 and 7: http://bugzilla.redhat.com/show_bug.cgi?id=1210993
* Review request for Boost-1.48 on EPEL 5 and 6: http://bugzilla.redhat.com/show_bug.cgi?id=921134
* Review request for Boost-1.41 on EPEL 5: http://bugzilla.redhat.com/show_bug.cgi?id=673839
* Feature request for Boost-1.69 on Fedora: https://fedoraproject.org/wiki/Changes/F30Boost169

Comment 1 Denis Arnaud 2019-01-20 14:38:26 UTC
Successful build: https://koji.fedoraproject.org/koji/taskinfo?taskID=32146613

Comment 4 Denis Arnaud 2019-01-20 22:06:19 UTC
To the best of my knowledge, no other Boost package on EPEL (than boost169) provides Python3 modules. It means that if you have an EPEL 7 package depending on Boost, currently you cannot use Python 3 and are stuck with Python 2.
Thanks to boost169, Python 3 modules are delivered (alongside the more classical Python 2 modules), namely:
* boost169-python3 and boost169-python3-devel
* boost169-mpich-python3 and boost169-mpich-python3-devel
* boost169-openmpi-python3 and boost169-openmpi-python3-devel

Boost169 hence helps maintainers to migrate Python-related packages to Python 3.

Comment 6 Jason Tibbitts 2019-01-23 00:24:13 UTC
Package should be named "boost1.69".  https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#_multiple_packages_with_the_same_base_name

And no package review is required in any case, though maybe it helped in this case to catch the misnamed package.

Comment 7 Denis Arnaud 2019-01-23 10:09:43 UTC
Dear Jason,

Boost is particular, as it is a core package in RedHat (RHEL). As seen on the Fedora source code for Boost (https://src.fedoraproject.org/rpms/boost/commits/master), there is therefore no branch for EPEL. The current version of Boost for RHEL is 1.53, and supports only Python 2. And Fedora packagers have no control on that Boost package for RHEL.

So, the idea is to bring more recent versions of Boost to RHEL/EPEL, IN PARALLEL to the currently RedHat-supported version of Boost. The "mainstream" Boost package is named "boost", and the additional parallel versions are named "boost1NN" (e.g., boost148 on EPEL 6, boost159 on EPEL 7), much like you can install "python34" in addition/parallel to python/python2 on EPEL 7.
So, the naming without dot (boost169) is consistent with other such packages (e.g., python34).

And, yes, we need a review request, as those specific Boost packages have to be added to the Fedora source code (such as https://src.fedoraproject.org/rpms/boost141/commits/master and https://src.fedoraproject.org/rpms/boost148/commits/master for instance).
References for other such review requests in the past are:
* Review request for Boost-1.59 on EPEL 7: http://bugzilla.redhat.com/show_bug.cgi?id=1391444
* Review request for Boost-1.57 on EPEL 6 and 7: http://bugzilla.redhat.com/show_bug.cgi?id=1210993
* Review request for Boost-1.48 on EPEL 5 and 6: http://bugzilla.redhat.com/show_bug.cgi?id=921134
* Review request for Boost-1.41 on EPEL 5: http://bugzilla.redhat.com/show_bug.cgi?id=673839

The particularity with Boost-1.69 on EPEL is that it allows the packages depending on it to support Python 3. Indeed, currently in EPEL, if you have a package depending on Boost (there a few hundreds of such packages today), you cannot support Python 3, as only Python 2 is supported by the current version of Boost (1.53) on RHEL/EPEL. Hence, that Boost 1.69 package brings Python 3 support to packages depending on Boost in RHEL/EPEL.

Comment 8 Jason Tibbitts 2019-01-23 17:53:01 UTC
Boost may be peculiar but that doesn't invalidate anything I said:

Naming the package boots169 is inconsistent with the packaging guidelines.  The other packages are also misnamed, but their existence doesn't excuse including additional misnamed packages.

You still aren't required to submit a review request.  It's fine if you want to do that, of course; I'm not going to stop you.  But you could have simply submitted the new package request under the exception policy for different versions of existing packages and have had it imported, built and on its way to stable by now.  I guess it's good that you did, though, or I wouldn't have noticed and had a chance to correct the improper naming.

Comment 10 Jonathan Wakely 2019-01-25 16:06:16 UTC
I know Jason said this doesn't need a review, but Denis asked me to ...

Comment 11 Jonathan Wakely 2019-01-25 17:06:58 UTC
The spec file looks good. It could be improved by adding some missing Requires: but those are also (currently) missing from the Boost package in Fedora. That could be done later, so I'll approve this anyway.

Here's what I did for the boost-1.66.0-6.el8 package:

@@ -183,6 +183,10 @@ provides a sort of cooperative multitasking on a single thread.

%package coroutine
Summary: Run-time component of boost coroutine library
+Requires: boost-chrono%{?_isa} = %{version}-%{release}
+Requires: boost-context%{?_isa} = %{version}-%{release}
+Requires: boost-system%{?_isa} = %{version}-%{release}
+Requires: boost-thread%{?_isa} = %{version}-%{release}

%description coroutine
Run-time support for Boost.Coroutine, a library that provides
@@ -202,6 +206,9 @@ on generic programming concepts.
%if %{with context}
%package fiber
Summary: Run-time component of boost fiber library
+Requires: boost-context%{?_isa} = %{version}-%{release}
+Requires: boost-filesystem%{?_isa} = %{version}-%{release}
+Requires: boost-system%{?_isa} = %{version}-%{release}

%description fiber

@@ -250,6 +257,13 @@ handling tools.

%package log
Summary: Run-time component of boost logging library
+Requires: boost-atomic%{?_isa} = %{version}-%{release}
+Requires: boost-chrono%{?_isa} = %{version}-%{release}
+Requires: boost-date-time%{?_isa} = %{version}-%{release}
+Requires: boost-filesystem%{?_isa} = %{version}-%{release}
+Requires: boost-regex%{?_isa} = %{version}-%{release}
+Requires: boost-system%{?_isa} = %{version}-%{release}
+Requires: boost-thread%{?_isa} = %{version}-%{release}

%description log

@@ -310,6 +324,7 @@ Shared object symbolic links for Python 3 variant of Boost.Python.

%package random
Summary: Run-time component of boost random library
+Requires: boost-system%{?_isa} = %{version}-%{release}

%description random

@@ -353,6 +368,8 @@ the diagnostics support that is part of the C++11 standard library.

%package test
Summary: Run-time component of boost test library
+Requires: boost-system%{?_isa} = %{version}-%{release}
+Requires: boost-timer%{?_isa} = %{version}-%{release}

%description test

@@ -385,6 +402,7 @@ with as little as one #include and one additional line of code.
Summary: Run-time component of boost type erasure library
Requires: boost-chrono%{?_isa} = %{version}-%{release}
Requires: boost-system%{?_isa} = %{version}-%{release}
+Requires: boost-thread%{?_isa} = %{version}-%{release}

%description type_erasure

@@ -1275,6 +1293,9 @@ fi
%{_mandir}/man1/bjam.1*

%changelog
+* Tue Oct 09 2018 Jonathan Wakely <jwakely@redhat.com> - 1.66.0-6
+- Add explicit Requires to subpackages that depend on other parts of boost
+

Comment 12 Denis Arnaud 2019-01-25 17:11:36 UTC
Excellent, thanks!
I'll integrate the changes this week-end before committing the new boost1.69 module.

Comment 13 Jonathan Wakely 2019-01-25 18:01:00 UTC
This part can also be simplified:

%build
# Dump the versions being used into the build logs.
%if %{with python2}
%global python2_version %(/usr/bin/python2 %{SOURCE2})
: PYTHON2_VERSION=%{python2_version}
%endif
%if %{with python3}
%global python3_version %(/usr/bin/python3 %{SOURCE2})
%global python3_abiflags %(/usr/bin/python3-config --abiflags)
: PYTHON3_VERSION=%{python3_version}
: PYTHON3_ABIFLAGS=%{python3_abiflags}
%endif


For Fedora we just rely on %{python2_version} and %{python3_version} being defined:

%build
# Dump the versions being used into the build logs.
%if %{with python2}
: PYTHON2_VERSION=%{python2_version}
%endif
%if %{with python3}
PYTHON3_ABIFLAGS=$(/usr/bin/python3-config --abiflags)
: PYTHON3_VERSION=%{python3_version}
: PYTHON3_ABIFLAGS=${PYTHON3_ABIFLAGS}
%endif


But even if EPEL doesn't automatically have %{python2_version} and %{python3_version}, the ver.py script can still be replaced:

%global python2_version %(/usr/bin/python2 -c 'import platform; print(".".join (platform.python_version_tuple ()[:2]))')

And similarly for python3.

That would get rid of the warnings produced by rpmlint etc:
/usr/bin/python2: can't open file '/home/jwakely/rpmbuild/SOURCES/ver.py': [Errno 2] No such file or directory

Comment 14 Gwyn Ciesla 2019-02-20 21:30:20 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/boost169

Comment 15 Fedora Update System 2019-02-22 09:24:06 UTC
boost169-1.69.0-1.el7 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-853e06b03c

Comment 16 Fedora Update System 2019-02-23 00:10:15 UTC
boost169-1.69.0-1.el7 has been pushed to the Fedora EPEL 7 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2019-853e06b03c

Comment 17 Fedora Update System 2019-03-10 17:04:55 UTC
boost169-1.69.0-1.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, 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.