Platform-python bootstrap: step 1 - build without platform_python
Changes needed for Platform Python Stack change (https://fedoraproject.org/wiki/Changes/Platform_Python_Stack): - Add platform-python bytecompilation patch: platform-python-bytecompile.patch - Add platform python deps generator patch: platform-python-abi.patch - Add a platform-python subpackage and remove system python related declarations - Build rpm without platform_python for bytecompilation (already set in spec file) When platform-python package is built, switch to `%bcond_without platform_python` to build platform-python-rpm subpackage.
This commit is contained in:
parent
351ab49315
commit
412abe2ac1
39
platform-python-abi.patch
Normal file
39
platform-python-abi.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
From fef3b646f3facd26dc04cfccdc27c061cfe0ee37 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||||
|
Date: Mon, 7 Aug 2017 16:28:59 +0200
|
||||||
|
Subject: [PATCH] Generate requires and provides for platform-python(abi)
|
||||||
|
|
||||||
|
See https://fedoraproject.org/wiki/Changes/Platform_Python_Stack
|
||||||
|
---
|
||||||
|
scripts/pythondeps.sh | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/pythondeps.sh b/scripts/pythondeps.sh
|
||||||
|
index 10a060aac..a6d97ef4f 100755
|
||||||
|
--- a/scripts/pythondeps.sh
|
||||||
|
+++ b/scripts/pythondeps.sh
|
||||||
|
@@ -13,8 +13,8 @@ case $1 in
|
||||||
|
# generating a line of the form
|
||||||
|
# python(abi) = MAJOR.MINOR
|
||||||
|
# (Don't match against -config tools e.g. /usr/bin/python2.6-config)
|
||||||
|
- grep "/usr/bin/python.\..$" \
|
||||||
|
- | sed -e "s|.*/usr/bin/python\(.\..\)|python(abi) = \1|"
|
||||||
|
+ egrep '/usr/(bin/|libexec/platform-)python.\..$' \
|
||||||
|
+ | sed -r -e "s@.*/usr/(bin/|libexec/(platform-))python(.\..)@\2python(abi) = \3@"
|
||||||
|
;;
|
||||||
|
-R|--requires)
|
||||||
|
shift
|
||||||
|
@@ -23,8 +23,8 @@ case $1 in
|
||||||
|
# /PATH/OF/BUILDROOT/usr/lib64/pythonMAJOR.MINOR/
|
||||||
|
# generating (uniqely) lines of the form:
|
||||||
|
# python(abi) = MAJOR.MINOR
|
||||||
|
- grep "/usr/lib[^/]*/python.\../.*" \
|
||||||
|
- | sed -e "s|.*/usr/lib[^/]*/python\(.\..\)/.*|python(abi) = \1|g" \
|
||||||
|
+ egrep '/usr/lib[^/]*/(platform-|)python.\../.*' \
|
||||||
|
+ | sed -r -e "s@.*/usr/lib[^/]*/(platform-|)python(.\..)/.*@\1python(abi) = \2@g" \
|
||||||
|
| sort | uniq
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
--
|
||||||
|
2.13.3
|
||||||
|
|
52
platform-python-bytecompile.patch
Normal file
52
platform-python-bytecompile.patch
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
From cc1a08b4a5222e74cae46ee17d4ef297ed63c2a9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||||
|
Date: Tue, 8 Aug 2017 12:27:48 +0200
|
||||||
|
Subject: [PATCH] Bytecompile stuff in /usr/lib*/platform-python with
|
||||||
|
platform-python
|
||||||
|
|
||||||
|
---
|
||||||
|
scripts/brp-python-bytecompile | 14 ++++++++++----
|
||||||
|
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/brp-python-bytecompile b/scripts/brp-python-bytecompile
|
||||||
|
index 894fa3459..92460b982 100644
|
||||||
|
--- a/scripts/brp-python-bytecompile
|
||||||
|
+++ b/scripts/brp-python-bytecompile
|
||||||
|
@@ -57,9 +57,15 @@ EOF
|
||||||
|
# and below /usr/lib/python3.1/, we're targeting /usr/bin/python3.1
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
-for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/usr/lib(64)?/python[0-9]\.[0-9]$"`;
|
||||||
|
+for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/usr/lib(64)?/(platform-)?python[0-9]\.[0-9]$"`;
|
||||||
|
do
|
||||||
|
- python_binary=/usr/bin/$(basename $python_libdir)
|
||||||
|
+ python_basename=$(basename $python_libdir)
|
||||||
|
+ if [[ $python_basename == platform* ]];
|
||||||
|
+ then
|
||||||
|
+ python_binary=/usr/libexec/$python_basename
|
||||||
|
+ else
|
||||||
|
+ python_binary=/usr/bin/$python_basename
|
||||||
|
+ fi
|
||||||
|
real_libdir=${python_libdir/$RPM_BUILD_ROOT/}
|
||||||
|
echo "Bytecompiling .py files below $python_libdir using $python_binary"
|
||||||
|
|
||||||
|
@@ -88,14 +94,14 @@ if [ ! -x "$default_python" ]; then
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate normal (.pyc) byte-compiled files.
|
||||||
|
-python_bytecompile "" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
|
||||||
|
+python_bytecompile "" $default_python "/bin/|/sbin/|/usr/lib(64)?/(platform-)?python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
|
||||||
|
if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then
|
||||||
|
# One or more of the files had a syntax error
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate optimized (.pyo) byte-compiled files.
|
||||||
|
-python_bytecompile "-O" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
|
||||||
|
+python_bytecompile "-O" $default_python "/bin/|/sbin/|/usr/lib(64)?/(platform-)?python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
|
||||||
|
if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then
|
||||||
|
# One or more of the files had a syntax error
|
||||||
|
exit 1
|
||||||
|
--
|
||||||
|
2.13.3
|
||||||
|
|
87
rpm.spec
87
rpm.spec
@ -15,6 +15,16 @@
|
|||||||
# build with new db format
|
# build with new db format
|
||||||
%bcond_with ndb
|
%bcond_with ndb
|
||||||
|
|
||||||
|
# which python subpackages to build (default: all)
|
||||||
|
# so it can be built in different modules with different subpackages
|
||||||
|
%bcond_without python2
|
||||||
|
%bcond_without python3
|
||||||
|
# Note that the rpm package with Patch908 applied has to be in
|
||||||
|
# the buildroot before platform_python enabled build happens.
|
||||||
|
# Hence platform_python is disbaled for this build, because this
|
||||||
|
# is the first build with Patch908 (to be removed in the second build).
|
||||||
|
%bcond_with platform_python
|
||||||
|
|
||||||
%define rpmhome /usr/lib/rpm
|
%define rpmhome /usr/lib/rpm
|
||||||
|
|
||||||
%global rpmver 4.13.90
|
%global rpmver 4.13.90
|
||||||
@ -29,7 +39,7 @@
|
|||||||
Summary: The RPM package management system
|
Summary: The RPM package management system
|
||||||
Name: rpm
|
Name: rpm
|
||||||
Version: %{rpmver}
|
Version: %{rpmver}
|
||||||
Release: %{?snapver:0.%{snapver}.}3%{?dist}
|
Release: %{?snapver:0.%{snapver}.}4%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Url: http://www.rpm.org/
|
Url: http://www.rpm.org/
|
||||||
Source0: http://ftp.rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2
|
Source0: http://ftp.rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2
|
||||||
@ -64,6 +74,13 @@ Patch906: rpm-4.7.1-geode-i686.patch
|
|||||||
# Probably to be upstreamed in slightly different form
|
# Probably to be upstreamed in slightly different form
|
||||||
Patch907: rpm-4.13.90-ldflags.patch
|
Patch907: rpm-4.13.90-ldflags.patch
|
||||||
|
|
||||||
|
# Use platform-python for bytecompilation in /usr/lib*/platform-python
|
||||||
|
Patch908: platform-python-bytecompile.patch
|
||||||
|
|
||||||
|
# This patch is currently not part of any built RPM, however, to be
|
||||||
|
# consistent with python-rpm-generators, we are adding it anyway.
|
||||||
|
Patch909: platform-python-abi.patch
|
||||||
|
|
||||||
# Partially GPL/LGPL dual-licensed and some bits with BSD
|
# Partially GPL/LGPL dual-licensed and some bits with BSD
|
||||||
# SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD
|
# SourceLicense: (GPLv2+ and LGPLv2+ with exceptions) and BSD
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -212,6 +229,7 @@ Requires: rpm-build-libs%{_isa} = %{version}-%{release}
|
|||||||
%description sign
|
%description sign
|
||||||
This package contains support for digitally signing RPM packages.
|
This package contains support for digitally signing RPM packages.
|
||||||
|
|
||||||
|
%if %{with python2}
|
||||||
%package -n python2-%{name}
|
%package -n python2-%{name}
|
||||||
Summary: Python 2 bindings for apps which will manipulate RPM packages
|
Summary: Python 2 bindings for apps which will manipulate RPM packages
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
@ -228,13 +246,14 @@ supplied by RPM Package Manager libraries.
|
|||||||
|
|
||||||
This package should be installed if you want to develop Python 2
|
This package should be installed if you want to develop Python 2
|
||||||
programs that will manipulate RPM packages and databases.
|
programs that will manipulate RPM packages and databases.
|
||||||
|
%endif # with python2
|
||||||
|
|
||||||
|
%if %{with python3}
|
||||||
%package -n python3-%{name}
|
%package -n python3-%{name}
|
||||||
Summary: Python 3 bindings for apps which will manipulate RPM packages
|
Summary: Python 3 bindings for apps which will manipulate RPM packages
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
%{?python_provide:%python_provide python3-%{name}}
|
%{?python_provide:%python_provide python3-%{name}}
|
||||||
%{?system_python_abi}
|
|
||||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
Provides: %{name}-python3 = %{version}-%{release}
|
Provides: %{name}-python3 = %{version}-%{release}
|
||||||
Obsoletes: %{name}-python3 < %{version}-%{release}
|
Obsoletes: %{name}-python3 < %{version}-%{release}
|
||||||
@ -246,6 +265,20 @@ supplied by RPM Package Manager libraries.
|
|||||||
|
|
||||||
This package should be installed if you want to develop Python 3
|
This package should be installed if you want to develop Python 3
|
||||||
programs that will manipulate RPM packages and databases.
|
programs that will manipulate RPM packages and databases.
|
||||||
|
%endif # with python3
|
||||||
|
|
||||||
|
%if %{with platform_python}
|
||||||
|
%package -n platform-python-%{name}
|
||||||
|
Summary: Platform Python bindings for apps which will manipulate RPM packages
|
||||||
|
Group: Development/Libraries
|
||||||
|
BuildRequires: platform-python-devel
|
||||||
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
|
%description -n platform-python-%{name}
|
||||||
|
The platform-python-rpm package contains a module that permits applications
|
||||||
|
written in the Python programming language to use the interface
|
||||||
|
supplied by RPM Package Manager libraries.
|
||||||
|
%endif # with platform_python
|
||||||
|
|
||||||
%package apidocs
|
%package apidocs
|
||||||
Summary: API documentation for RPM libraries
|
Summary: API documentation for RPM libraries
|
||||||
@ -358,13 +391,31 @@ done;
|
|||||||
--enable-python \
|
--enable-python \
|
||||||
--with-crypto=openssl
|
--with-crypto=openssl
|
||||||
|
|
||||||
|
|
||||||
|
%if %{with platform_python}
|
||||||
|
# Copy the directory so python3 and platform_python do not share it,
|
||||||
|
# as they may have the same version and the filenames could collide.
|
||||||
|
# Do it before `make` to avoid having anything built in there.
|
||||||
|
cp -a python platform_python
|
||||||
|
%endif # with platform_python
|
||||||
|
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
pushd python
|
pushd python
|
||||||
|
%if %{with python2}
|
||||||
%{__python2} setup.py build
|
%{__python2} setup.py build
|
||||||
|
%endif # with python2
|
||||||
|
%if %{with python3}
|
||||||
%{__python3} setup.py build
|
%{__python3} setup.py build
|
||||||
|
%endif # with python3
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
%if %{with platform_python}
|
||||||
|
pushd platform_python
|
||||||
|
%{__platform_python} setup.py build
|
||||||
|
popd
|
||||||
|
%endif # with platform_python
|
||||||
|
|
||||||
%install
|
%install
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
@ -373,10 +424,20 @@ make DESTDIR="$RPM_BUILD_ROOT" install
|
|||||||
# We need to build with --enable-python for the self-test suite, but we
|
# We need to build with --enable-python for the self-test suite, but we
|
||||||
# actually package the bindings built with setup.py (#531543#c26)
|
# actually package the bindings built with setup.py (#531543#c26)
|
||||||
pushd python
|
pushd python
|
||||||
|
%if %{with python2}
|
||||||
%{__python2} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
%{__python2} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
||||||
|
%endif # with python2
|
||||||
|
%if %{with python3}
|
||||||
%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
||||||
|
%endif # with python3
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
%if %{with platform_python}
|
||||||
|
pushd platform_python
|
||||||
|
%{__platform_python} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
||||||
|
popd
|
||||||
|
%endif # with platform_python
|
||||||
|
|
||||||
|
|
||||||
# Save list of packages through cron
|
# Save list of packages through cron
|
||||||
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily
|
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.daily
|
||||||
@ -547,13 +608,24 @@ exit 0
|
|||||||
%{_bindir}/rpmsign
|
%{_bindir}/rpmsign
|
||||||
%{_mandir}/man8/rpmsign.8*
|
%{_mandir}/man8/rpmsign.8*
|
||||||
|
|
||||||
|
%if %{with python2}
|
||||||
%files -n python2-%{name}
|
%files -n python2-%{name}
|
||||||
%{python_sitearch}/%{name}/
|
%{python2_sitearch}/%{name}/
|
||||||
%{python_sitearch}/%{name}-%{version}*.egg-info
|
%{python2_sitearch}/%{name}-%{version}*.egg-info
|
||||||
|
%endif # with python2
|
||||||
|
|
||||||
|
|
||||||
|
%if %{with python3}
|
||||||
%files -n python3-%{name}
|
%files -n python3-%{name}
|
||||||
%{python3_sitearch}/%{name}/
|
%{python3_sitearch}/%{name}/
|
||||||
%{python3_sitearch}/%{name}-%{version}*.egg-info
|
%{python3_sitearch}/%{name}-%{version}*.egg-info
|
||||||
|
%endif # with python3
|
||||||
|
|
||||||
|
%if %{with platform_python}
|
||||||
|
%files -n platform-python-%{name}
|
||||||
|
%{platform_python_sitearch}/%{name}/
|
||||||
|
%{platform_python_sitearch}/%{name}-%{version}*.egg-info
|
||||||
|
%endif # with platform_python
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%{_mandir}/man8/rpmgraph.8*
|
%{_mandir}/man8/rpmgraph.8*
|
||||||
@ -571,6 +643,13 @@ exit 0
|
|||||||
%doc doc/librpm/html/*
|
%doc doc/librpm/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 14 2017 Miro Hrončok <mhroncok@redhat.com> - 4.13.90-0.git14000.4
|
||||||
|
- Add platform-python bytecompilation patch: platform-python-bytecompile.patch
|
||||||
|
- Add platform python deps generator patch: platform-python-abi.patch
|
||||||
|
- Add a platform-python subpackage and remove system python related declarations
|
||||||
|
- Build rpm without platform_python for bytecompilation
|
||||||
|
(https://fedoraproject.org/wiki/Changes/Platform_Python_Stack)
|
||||||
|
|
||||||
* Mon Aug 14 2017 Panu Matilainen <pmatilai@redhat.com> - 4.13.90-0.git14000.3
|
* Mon Aug 14 2017 Panu Matilainen <pmatilai@redhat.com> - 4.13.90-0.git14000.3
|
||||||
- Disable macro argument quoting as a band-aid to #1481025
|
- Disable macro argument quoting as a band-aid to #1481025
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user