You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2022/02/13 21:45:06 UTC
[arrow] branch master updated: ARROW-15631: [Packaging][RPM] Add major version to libs packages
This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 90edde2 ARROW-15631: [Packaging][RPM] Add major version to libs packages
90edde2 is described below
commit 90edde22090dbb97a5f3728f476511c5b5c388de
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Mon Feb 14 06:42:52 2022 +0900
ARROW-15631: [Packaging][RPM] Add major version to libs packages
We always use XXX-libs such as arrow-libs for all versions for now. It
has the following problems:
1. "dnf update" is failed after we release a new version
until downstream packages are rebuilt for the new version.
2. Users can't use different major versions such as 6.0.0 and 7.0.0
in the same system.
Example for 1.: Groonga https://groonga.org/ uses Apache Arrow and it
provides RPM packages built with arrow-libs. If Groonga's package is
built with arrow-libs for 6.0.0, "dnf update" is failed when we
release arrow-libs for 7.0.0. Because "dnf update" tries to update
arrow-libs to 7.0.0 from 6.0.0 but Groonga's packages depend on
arrow-libs for 6.0.0 not 7.0.0. This isn't resolved until Groonga's
packages are rebuilt with arrow-libs for 7.0.0. If we provide
arrow6-libs for 6.0.0 and arrow7-libs for 7.0.0, "dnf update" isn't
failed without rebuilding Groonga's packages with arrow7-libs.
Closes #12385 from kou/packaging-rpm-versioned-arrow-libs
Authored-by: Sutou Kouhei <ko...@clear-code.com>
Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
.../linux-packages/apache-arrow/yum/arrow.spec.in | 159 +++++++++++----------
1 file changed, 86 insertions(+), 73 deletions(-)
diff --git a/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in b/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
index 63083d3..0f00867 100644
--- a/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
+++ b/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
@@ -20,6 +20,8 @@
%define _amzn %{?amzn:%{amzn}}%{!?amzn:0}
%define is_amazon_linux (%{_amzn} != 0)
+%define major_version %(echo @VERSION@ | grep -o '^[0-9]*')
+
%define boost_version %( \
if [ %{rhel} -eq 7 ]; then \
echo 169; \
@@ -196,7 +198,7 @@ DESTDIR=$RPM_BUILD_ROOT ninja install
ninja clean
cd -
-%package libs
+%package -n %{name}%{major_version}-libs
Summary: Runtime libraries for Apache Arrow C++
License: Apache-2.0
Requires: brotli
@@ -217,10 +219,10 @@ Requires: utf8proc
%endif
Requires: zlib
-%description libs
+%description -n %{name}%{major_version}-libs
This package contains the libraries for Apache Arrow C++.
-%files libs
+%files -n %{name}%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_docdir}/arrow/
@@ -229,7 +231,7 @@ This package contains the libraries for Apache Arrow C++.
%package devel
Summary: Libraries and header files for Apache Arrow C++
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
Requires: brotli-devel
Requires: bzip2-devel
%if %{use_flight}
@@ -294,15 +296,15 @@ Libraries and header files for Apache Arrow C++.
%{_libdir}/pkgconfig/arrow-orc.pc
%{_libdir}/pkgconfig/arrow.pc
-%package dataset-libs
+%package -n %{name}%{major_version}-dataset-libs
Summary: C++ library to read and write semantic datasets stored in different locations and formats
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
-%description dataset-libs
+%description -n %{name}%{major_version}-dataset-libs
This package contains the libraries for Apache Arrow dataset.
-%files dataset-libs
+%files -n %{name}%{major_version}-dataset-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_dataset.so.*
@@ -310,7 +312,8 @@ This package contains the libraries for Apache Arrow dataset.
%package dataset-devel
Summary: Libraries and header files for Apache Arrow dataset.
License: Apache-2.0
-Requires: %{name}-dataset-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-dataset-libs = %{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
%description dataset-devel
Libraries and header files for Apache Arrow dataset.
@@ -327,19 +330,19 @@ Libraries and header files for Apache Arrow dataset.
%{_libdir}/pkgconfig/arrow-dataset.pc
%if %{use_flight}
-%package flight-libs
+%package -n %{name}%{major_version}-flight-libs
Summary: C++ library for fast data transport.
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
%if %{use_flight}
Requires: c-ares
%endif
Requires: openssl
-%description flight-libs
+%description -n %{name}%{major_version}-flight-libs
This package contains the libraries for Apache Arrow Flight.
-%files flight-libs
+%files -n %{name}%{major_version}-flight-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_flight.so.*
@@ -347,7 +350,8 @@ This package contains the libraries for Apache Arrow Flight.
%package flight-devel
Summary: Libraries and header files for Apache Arrow Flight.
License: Apache-2.0
-Requires: %{name}-flight-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-flight-libs = %{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
%description flight-devel
Libraries and header files for Apache Arrow Flight.
@@ -365,16 +369,16 @@ Libraries and header files for Apache Arrow Flight.
%endif
%if %{use_gandiva}
-%package -n gandiva-libs
+%package -n gandiva%{major_version}-libs
Summary: C++ library for compiling and evaluating expressions on Apache Arrow data.
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
Requires: ncurses-libs
-%description -n gandiva-libs
+%description -n gandiva%{major_version}-libs
This package contains the libraries for Gandiva.
-%files -n gandiva-libs
+%files -n gandiva%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libgandiva.so.*
@@ -382,7 +386,8 @@ This package contains the libraries for Gandiva.
%package -n gandiva-devel
Summary: Libraries and header files for Gandiva.
License: Apache-2.0
-Requires: gandiva-libs = %{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
+Requires: gandiva%{major_version}-libs = %{version}-%{release}
Requires: llvm-devel
%description -n gandiva-devel
@@ -401,16 +406,16 @@ Libraries and header files for Gandiva.
%endif
%if %{use_python}
-%package python-libs
+%package -n %{name}%{major_version}-python-libs
Summary: Python integration library for Apache Arrow
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
Requires: python%{python_version}-numpy
-%description python-libs
+%description -n %{name}%{major_version}-python-libs
This package contains the Python integration library for Apache Arrow.
-%files python-libs
+%files -n %{name}%{major_version}-python-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_python.so.*
@@ -418,8 +423,8 @@ This package contains the Python integration library for Apache Arrow.
%package python-devel
Summary: Libraries and header files for Python integration library for Apache Arrow
License: Apache-2.0
+Requires: %{name}%{major_version}-python-libs = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
-Requires: %{name}-libs = %{version}-%{release}
Requires: python%{python_version}-devel
%description python-devel
@@ -438,16 +443,16 @@ Libraries and header files for Python integration library for Apache Arrow.
%{_libdir}/pkgconfig/arrow-python.pc
%if %{use_flight}
-%package python-flight-libs
+%package -n %{name}%{major_version}-python-flight-libs
Summary: Python integration library for Apache Arrow Flight
License: Apache-2.0
-Requires: %{name}-flight-libs = %{version}-%{release}
-Requires: %{name}-python-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-flight-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-python-libs = %{version}-%{release}
-%description python-flight-libs
+%description -n %{name}%{major_version}-python-flight-libs
This package contains the Python integration library for Apache Arrow Flight.
-%files python-flight-libs
+%files -n %{name}%{major_version}-python-flight-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_python_flight.so.*
@@ -455,9 +460,9 @@ This package contains the Python integration library for Apache Arrow Flight.
%package python-flight-devel
Summary: Libraries and header files for Python integration library for Apache Arrow Flight.
License: Apache-2.0
+Requires: %{name}%{major_version}-python-flight-libs = %{version}-%{release}
Requires: %{name}-flight-devel = %{version}-%{release}
Requires: %{name}-python-devel = %{version}-%{release}
-Requires: %{name}-python-flight-libs = %{version}-%{release}
%description python-flight-devel
Libraries and header files for Python integration library for
@@ -476,15 +481,15 @@ Apache Arrow Flight.
%endif
%endif
-%package -n plasma-libs
+%package -n plasma%{major_version}-libs
Summary: Runtime libraries for Plasma in-memory object store
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
-%description -n plasma-libs
+%description -n plasma%{major_version}-libs
This package contains the libraries for Plasma in-memory object store.
-%files -n plasma-libs
+%files -n plasma%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libplasma.so.*
@@ -492,7 +497,7 @@ This package contains the libraries for Plasma in-memory object store.
%package -n plasma-store-server
Summary: Server for Plasma in-memory object store
License: Apache-2.0
-Requires: plasma-libs = %{version}-%{release}
+Requires: plasma%{major_version}-libs = %{version}-%{release}
%description -n plasma-store-server
This package contains the server for Plasma in-memory object store.
@@ -505,7 +510,8 @@ This package contains the server for Plasma in-memory object store.
%package -n plasma-devel
Summary: Libraries and header files for Plasma in-memory object store
License: Apache-2.0
-Requires: plasma-libs = %{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
+Requires: plasma%{major_version}-libs = %{version}-%{release}
%description -n plasma-devel
Libraries and header files for Plasma in-memory object store.
@@ -521,16 +527,16 @@ Libraries and header files for Plasma in-memory object store.
%{_libdir}/libplasma.so
%{_libdir}/pkgconfig/plasma*.pc
-%package -n parquet-libs
+%package -n parquet%{major_version}-libs
Summary: Runtime libraries for Apache Parquet C++
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
Requires: openssl
-%description -n parquet-libs
+%description -n parquet%{major_version}-libs
This package contains the libraries for Apache Parquet C++.
-%files -n parquet-libs
+%files -n parquet%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libparquet.so.*
@@ -538,7 +544,8 @@ This package contains the libraries for Apache Parquet C++.
%package -n parquet-devel
Summary: Libraries and header files for Apache Parquet C++
License: Apache-2.0
-Requires: parquet-libs = %{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
+Requires: parquet%{major_version}-libs = %{version}-%{release}
Requires: zlib-devel
%description -n parquet-devel
@@ -555,16 +562,16 @@ Libraries and header files for Apache Parquet C++.
%{_libdir}/libparquet.so
%{_libdir}/pkgconfig/parquet*.pc
-%package glib-libs
+%package -n %{name}%{major_version}-glib-libs
Summary: Runtime libraries for Apache Arrow GLib
License: Apache-2.0
-Requires: %{name}-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-libs = %{version}-%{release}
Requires: glib2
-%description glib-libs
+%description -n %{name}%{major_version}-glib-libs
This package contains the libraries for Apache Arrow GLib.
-%files glib-libs
+%files -n %{name}%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow-glib.so.*
@@ -574,6 +581,7 @@ This package contains the libraries for Apache Arrow GLib.
Summary: Libraries and header files for Apache Arrow GLib
License: Apache-2.0
Requires: %{name}-devel = %{version}-%{release}
+Requires: %{name}%{major_version}-glib-libs = %{version}-%{release}
Requires: glib2-devel
Requires: gobject-introspection-devel
@@ -604,16 +612,16 @@ Documentation for Apache Arrow GLib.
%{_docdir}/arrow-glib/
%{_datadir}/gtk-doc/html/arrow-glib/
-%package dataset-glib-libs
+%package -n %{name}%{major_version}-dataset-glib-libs
Summary: Runtime libraries for Apache Arrow Dataset GLib
License: Apache-2.0
-Requires: %{name}-dataset-libs = %{version}-%{release}
-Requires: %{name}-glib-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-dataset-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-glib-libs = %{version}-%{release}
-%description dataset-glib-libs
+%description -n %{name}%{major_version}-dataset-glib-libs
This package contains the libraries for Apache Arrow Dataset GLib.
-%files dataset-glib-libs
+%files -n %{name}%{major_version}-dataset-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow-dataset-glib.so.*
@@ -622,6 +630,7 @@ This package contains the libraries for Apache Arrow Dataset GLib.
%package dataset-glib-devel
Summary: Libraries and header files for Apache Arrow Dataset GLib
License: Apache-2.0
+Requires: %{name}%{major_version}-dataset-glib-libs = %{version}-%{release}
Requires: %{name}-dataset-devel = %{version}-%{release}
Requires: %{name}-glib-devel = %{version}-%{release}
@@ -650,16 +659,16 @@ Documentation for Apache Arrow dataset GLib.
%{_datadir}/gtk-doc/html/arrow-dataset-glib/
%if %{use_flight}
-%package flight-glib-libs
+%package -n %{name}%{major_version}-flight-glib-libs
Summary: Runtime libraries for Apache Arrow Flight GLib
License: Apache-2.0
-Requires: %{name}-flight-libs = %{version}-%{release}
-Requires: %{name}-glib-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-flight-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-glib-libs = %{version}-%{release}
-%description flight-glib-libs
+%description -n %{name}%{major_version}-flight-glib-libs
This package contains the libraries for Apache Arrow Flight GLib.
-%files flight-glib-libs
+%files -n %{name}%{major_version}-flight-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow-flight-glib.so.*
@@ -668,6 +677,7 @@ This package contains the libraries for Apache Arrow Flight GLib.
%package flight-glib-devel
Summary: Libraries and header files for Apache Arrow Flight GLib
License: Apache-2.0
+Requires: %{name}%{major_version}-flight-glib-libs = %{version}-%{release}
Requires: %{name}-flight-devel = %{version}-%{release}
Requires: %{name}-glib-devel = %{version}-%{release}
@@ -697,16 +707,16 @@ Documentation for Apache Arrow Flight GLib.
%endif
%if %{use_gandiva}
-%package -n gandiva-glib-libs
+%package -n gandiva%{major_version}-glib-libs
Summary: Runtime libraries for Gandiva GLib
License: Apache-2.0
-Requires: gandiva-libs = %{version}-%{release}
-Requires: %{name}-glib-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-glib-libs = %{version}-%{release}
+Requires: gandiva%{major_version}-libs = %{version}-%{release}
-%description -n gandiva-glib-libs
+%description -n gandiva%{major_version}-glib-libs
This package contains the libraries for Gandiva GLib.
-%files -n gandiva-glib-libs
+%files -n gandiva%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libgandiva-glib.so.*
@@ -715,8 +725,9 @@ This package contains the libraries for Gandiva GLib.
%package -n gandiva-glib-devel
Summary: Libraries and header files for Gandiva GLib
License: Apache-2.0
-Requires: gandiva-devel = %{version}-%{release}
Requires: %{name}-glib-devel = %{version}-%{release}
+Requires: gandiva%{major_version}-glib-libs = %{version}-%{release}
+Requires: gandiva-devel = %{version}-%{release}
%description -n gandiva-glib-devel
Libraries and header files for Gandiva GLib.
@@ -743,16 +754,16 @@ Documentation for Gandiva GLib.
%{_datadir}/gtk-doc/html/gandiva-glib/
%endif
-%package -n plasma-glib-libs
+%package -n plasma%{major_version}-glib-libs
Summary: Runtime libraries for Plasma GLib
License: Apache-2.0
-Requires: plasma-libs = %{version}-%{release}
-Requires: %{name}-glib-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-glib-libs = %{version}-%{release}
+Requires: plasma%{major_version}-libs = %{version}-%{release}
-%description -n plasma-glib-libs
+%description -n plasma%{major_version}-glib-libs
This package contains the libraries for Plasma GLib.
-%files -n plasma-glib-libs
+%files -n plasma%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libplasma-glib.so.*
@@ -761,8 +772,9 @@ This package contains the libraries for Plasma GLib.
%package -n plasma-glib-devel
Summary: Libraries and header files for Plasma GLib
License: Apache-2.0
-Requires: plasma-devel = %{version}-%{release}
Requires: %{name}-glib-devel = %{version}-%{release}
+Requires: plasma%{major_version}-glib-libs = %{version}-%{release}
+Requires: plasma-devel = %{version}-%{release}
%description -n plasma-glib-devel
Libraries and header files for Plasma GLib.
@@ -788,16 +800,16 @@ Documentation for Plasma GLib.
%doc README.md LICENSE.txt NOTICE.txt
%{_datadir}/gtk-doc/html/plasma-glib/
-%package -n parquet-glib-libs
+%package -n parquet%{major_version}-glib-libs
Summary: Runtime libraries for Apache Parquet GLib
License: Apache-2.0
-Requires: parquet-libs = %{version}-%{release}
-Requires: %{name}-glib-libs = %{version}-%{release}
+Requires: %{name}%{major_version}-glib-libs = %{version}-%{release}
+Requires: parquet%{major_version}-libs = %{version}-%{release}
-%description -n parquet-glib-libs
+%description -n parquet%{major_version}-glib-libs
This package contains the libraries for Apache Parquet GLib.
-%files -n parquet-glib-libs
+%files -n parquet%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libparquet-glib.so.*
@@ -806,8 +818,9 @@ This package contains the libraries for Apache Parquet GLib.
%package -n parquet-glib-devel
Summary: Libraries and header files for Apache Parquet GLib
License: Apache-2.0
-Requires: parquet-devel = %{version}-%{release}
Requires: %{name}-glib-devel = %{version}-%{release}
+Requires: parquet%{major_version}-glib-libs = %{version}-%{release}
+Requires: parquet-devel = %{version}-%{release}
%description -n parquet-glib-devel
Libraries and header files for Apache Parquet GLib.