Blob Blame History Raw
# -*- sh-shell: rpm -*-
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

%global use_flight 1
%global use_gandiva 0
%global use_mimalloc 0
%global use_ninja 1
# TODO: Enable this. This works on local but is fragile on GitHub Actions and
# Travis CI.
%global use_s3 0
%global have_rapidjson 1
%global have_re2 1
%global have_utf8proc 1

Name:		libarrow
Version:	5.0.0
Release:	1%{?dist}
Summary:	Apache Arrow is a data processing library for analysis

License:	ASL 2.0
URL:		https://arrow.apache.org/
Source0:	https://dist.apache.org/repos/dist/release/arrow/arrow-%{version}/apache-arrow-%{version}.tar.gz
Patch0001:	0001-cpp-CMakeLists.txt.patch
# Apache ORC (liborc) has numerous compile errors and apparently assumes
# a 64-bit build and runtime environment. This is only consumer of the liborc
# package, and in turn the only consumer of this and liborc is Ceph, which
# is also 64-bit only
ExcludeArch:   i686 armv7hl
BuildRequires:	bison
BuildRequires:	boost-devel
BuildRequires:	brotli-devel
BuildRequires:	bzip2-devel
BuildRequires:	cmake
%if %{use_ninja}
BuildRequires:	ninja-build
%endif
BuildRequires:	meson
%if %{use_s3}
BuildRequires:	curl-devel
%endif
BuildRequires:	flex
BuildRequires:	gcc-c++
BuildRequires:	gflags-devel
BuildRequires:	glog-devel
BuildRequires:	protobuf-devel
BuildRequires:	grpc-devel
BuildRequires:	grpc-plugins
BuildRequires:	libzstd-devel
BuildRequires:	lz4-devel
BuildRequires:	openssl-devel
BuildRequires:	pkgconfig
BuildRequires:	python3-devel
BuildRequires:	python3-numpy
BuildRequires:	xsimd-devel
BuildRequires:	abseil-cpp-devel
BuildRequires:	c-ares-devel
BuildRequires:	thrift-devel
%if %{have_rapidjson}
BuildRequires:	rapidjson-devel
%endif
%if %{have_re2}
BuildRequires:	re2-devel
%endif
BuildRequires:	snappy-devel
%if %{have_utf8proc}
BuildRequires:	utf8proc-devel
%endif
BuildRequires:	zlib-devel
BuildRequires:	liborc-devel

%if %{use_gandiva}
BuildRequires:	llvm-devel
BuildRequires:	ncurses-devel
%endif

BuildRequires:	gobject-introspection-devel
BuildRequires:	gtk-doc

Requires:	boost-system
Requires:	boost-filesystem
Requires:	brotli

%description
Apache Arrow is a data processing library for analysis.


%prep
%setup -q -n apache-arrow-%{version}
%patch0001 -p1

%build
mkdir cpp/build
pushd cpp/build
%cmake .. \
%if %{use_flight}
  -DARROW_FLIGHT=ON \
%endif
%if %{use_gandiva}
  -DARROW_GANDIVA=ON \
%endif
%if %{use_mimalloc}
  -DARROW_MIMALLOC=ON \
%endif
  -DARROW_ORC=ON \
  -DARROW_PARQUET=ON \
  -DARROW_PLASMA=ON \
  -DARROW_PYTHON=ON \
  -DARROW_JEMALLOC=OFF \
  -DProtobuf_SOURCE="SYSTEM" \
  -DgRPC_SOURCE="SYSTEM" \
  -Dxsimd_SOURCE="SYSTEM" \
%if %{use_s3}
  -DARROW_S3=ON \
%endif
  -DARROW_WITH_BROTLI=ON \
  -DARROW_WITH_BZ2=ON \
  -DARROW_WITH_LZ4=ON \
  -DARROW_WITH_SNAPPY=ON \
  -DARROW_WITH_ZLIB=ON \
  -DARROW_WITH_ZSTD=ON \
  -DARROW_WITH_XSIMD=ON \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_COLOR_MAKEFILE:BOOL=OFF \
  -DARROW_USE_CCACHE=OFF \
  -DCMAKE_UNITY_BUILD=ON \
  -DPARQUET_REQUIRE_ENCRYPTION=ON \
  -DPythonInterp_FIND_VERSION=ON \
  -DPythonInterp_FIND_VERSION_MAJOR=3 \
%if %{use_ninja}
  -GNinja
%endif

export VERBOSE=1
export GCC_COLORS=
%cmake_build

popd
pushd c_glib
meson setup build \
  --default-library=both \
  --libdir=%{_libdir} \
  --prefix=%{_prefix} \
  -Darrow_cpp_build_dir=../cpp/build \
  -Darrow_cpp_build_type=relwithdebinfo \
  -Dgtk_doc=true
cd build && %ninja_build

%check

%install
echo install

pushd c_glib/build
DESTDIR=$RPM_BUILD_ROOT %ninja_install

popd
pushd cpp/build
%cmake_install


%files
%{_libdir}/libarrow.so.*

%package doc
Summary:	Documentation files for Apache Arrow C++
BuildArch:	noarch

%description doc
Documentation files for Apache Arrow C++.

%files doc
%license LICENSE.txt
%doc README.md NOTICE.txt
%exclude %{_docdir}/arrow/

%package devel
Summary:	Libraries and header files for Apache Arrow C++
Requires:	%{name} = %{version}-%{release}
Requires:	brotli-devel
Requires:	bzip2-devel
Requires:	libzstd-devel
Requires:	lz4-devel
Requires:	openssl-devel
%if %{have_rapidjson}
Requires:	rapidjson-devel
%endif
%if %{have_re2}
Requires:	re2-devel
%endif
Requires:	snappy-devel
%if %{have_utf8proc}
Requires:	utf8proc-devel
%endif
Requires:	zlib-devel

%description devel
Libraries and header files for Apache Arrow C++.

%files devel
%{_includedir}/arrow/
%exclude %{_includedir}/arrow/dataset/
%if %{use_flight}
%exclude %{_includedir}/arrow/flight/
%exclude %{_includedir}/arrow-flight-glib
%endif
%exclude %{_includedir}/arrow/python/
%exclude %{_libdir}/cmake/arrow/*
%{_libdir}/cmake/arrow/ArrowConfig*.cmake
%{_libdir}/cmake/arrow/ArrowOptions.cmake
%{_libdir}/cmake/arrow/ArrowTargets*.cmake
%{_libdir}/cmake/arrow/FindArrow.cmake
%{_libdir}/cmake/arrow/arrow-config.cmake
%exclude %{_libdir}/libarrow.a
%{_libdir}/libarrow.so
%{_libdir}/pkgconfig/arrow-compute.pc
%{_libdir}/pkgconfig/arrow-csv.pc
%{_libdir}/pkgconfig/arrow-filesystem.pc
%{_libdir}/pkgconfig/arrow-json.pc
%{_libdir}/pkgconfig/arrow-orc.pc
%{_libdir}/pkgconfig/arrow.pc

%package dataset-libs
Summary:	C++ library to read and write semantic datasets
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description dataset-libs
This package contains the libraries for Apache Arrow dataset.

%files dataset-libs
%{_libdir}/libarrow_dataset.so.*

%package dataset-devel
Summary:	Libraries and header files for Apache Arrow dataset
Requires:	%{name}-dataset-libs = %{version}-%{release}

%description dataset-devel
Libraries and header files for Apache Arrow dataset.

%files dataset-devel
%{_includedir}/arrow/dataset/
%{_libdir}/cmake/arrow/ArrowDatasetConfig*.cmake
%{_libdir}/cmake/arrow/ArrowDatasetTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowDataset.cmake
%exclude %{_libdir}/libarrow_dataset.a
%{_libdir}/libarrow_dataset.so
%{_libdir}/pkgconfig/arrow-dataset.pc

%if %{use_flight}
%package flight-libs
Summary:	C++ library for fast data transport
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}
Requires:	openssl

%description flight-libs
This package contains the libraries for Apache Arrow Flight.

%files flight-libs
%{_libdir}/libarrow_flight.so.*
%{_libdir}/libarrow-flight-glib.so.*
%{_libdir}/girepository-1.0/ArrowFlight-1.0.typelib

%package flight-devel
Summary:	Libraries and header files for Apache Arrow Flight
Requires:	%{name}-flight-libs = %{version}-%{release}

%description flight-devel
Libraries and header files for Apache Arrow Flight.

%files flight-devel
%dir %{_includedir}/arrow/flight/
     %{_includedir}/arrow/flight/*
%dir %{_includedir}/arrow-flight-glib
     %{_includedir}/arrow-flight-glib/*
%{_libdir}/cmake/arrow/ArrowFlightConfig*.cmake
%{_libdir}/cmake/arrow/ArrowFlightTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowFlight.cmake
%exclude %{_libdir}/libarrow_flight.a
%{_libdir}/libarrow_flight.so
%exclude %{_libdir}/libarrow-flight-glib.a
%{_libdir}/libarrow-flight-glib.so
%{_libdir}/pkgconfig/arrow-flight.pc
%{_libdir}/pkgconfig/arrow-flight-glib.pc
%endif

%if %{use_gandiva}
%package -n gandiva-libs
Summary:	C++ library for compiling and evaluating expressions
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}
Requires:	ncurses-libs

%description -n gandiva-libs
This package contains the libraries for Gandiva.

%files -n gandiva-libs
%{_libdir}/libgandiva.so.*

%package -n gandiva-devel
Summary:	Libraries and header files for Gandiva
Requires:	gandiva-libs = %{version}-%{release}
Requires:	llvm-devel

%description -n gandiva-devel
Libraries and header files for Gandiva.

%files -n gandiva-devel
%{_includedir}/gandiva/
%{_libdir}/cmake/arrow/GandivaConfig*.cmake
%{_libdir}/cmake/arrow/GandivaTargets*.cmake
%{_libdir}/cmake/arrow/FindGandiva.cmake
%exclude %{_libdir}/libgandiva.a
%{_libdir}/libgandiva.so
%{_libdir}/pkgconfig/gandiva.pc
%endif

%package python-libs
Summary:	Python integration library for Apache Arrow
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}
Requires:	python3-numpy

%description python-libs
This package contains the Python integration library for Apache Arrow.

%files python-libs
%{_libdir}/libarrow_python.so.*

%package python-devel
Summary:	Libraries and header files for Python integration library
Requires:	%{name}-devel = %{version}-%{release}
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-python-libs = %{version}-%{release}
Requires:	python3-devel

%description python-devel
Libraries and header files for Python integration library for Apache Arrow.

%files python-devel
%{_includedir}/arrow/python/
%exclude %{_includedir}/arrow/python/flight.h
%{_libdir}/cmake/arrow/ArrowPythonConfig*.cmake
%{_libdir}/cmake/arrow/ArrowPythonTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowPython.cmake
%exclude %{_libdir}/libarrow_python.a
%{_libdir}/libarrow_python.so
%{_libdir}/pkgconfig/arrow-python.pc

%if %{use_flight}
%package python-flight-libs
Summary:	Python integration library for Apache Arrow Flight
Requires:	%{name}-flight-libs = %{version}-%{release}
Requires:	%{name}-python-libs = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description python-flight-libs
This package contains the Python integration library for Apache Arrow Flight.

%files python-flight-libs
%{_libdir}/libarrow_python_flight.so.*

%package python-flight-devel
Summary:	Libraries and header files for Python integration
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
Apache Arrow Flight.

%files python-flight-devel
%{_includedir}/arrow/python/flight.h
%{_libdir}/cmake/arrow/ArrowPythonFlightConfig*.cmake
%{_libdir}/cmake/arrow/ArrowPythonFlightTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowPythonFlight.cmake
%exclude %{_libdir}/libarrow_python_flight.a
%{_libdir}/libarrow_python_flight.so
%{_libdir}/pkgconfig/arrow-python-flight.pc
%endif

%package -n plasma-libs
Summary:	Runtime libraries for Plasma in-memory object store
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description -n plasma-libs
This package contains the libraries for Plasma in-memory object store.

%files -n plasma-libs
%{_libdir}/libplasma.so.*

%package -n plasma-store-server
Summary:	Server for Plasma in-memory object store
Requires:	plasma-libs = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description -n plasma-store-server
This package contains the server for Plasma in-memory object store.

%files -n plasma-store-server
%{_bindir}/plasma-store-server

%package -n plasma-devel
Summary:	Libraries and header files for Plasma in-memory object store
Requires:	plasma-libs = %{version}-%{release}

%description -n plasma-devel
Libraries and header files for Plasma in-memory object store.

%files -n plasma-devel
%{_includedir}/plasma/
%{_libdir}/cmake/arrow/PlasmaConfig*.cmake
%{_libdir}/cmake/arrow/PlasmaTargets*.cmake
%{_libdir}/cmake/arrow/FindPlasma.cmake
%exclude %{_libdir}/libplasma.a
%{_libdir}/libplasma.so
%{_libdir}/pkgconfig/plasma*.pc

%package -n parquet-libs
Summary:	Runtime libraries for Apache Parquet C++
Requires:	boost-program-options
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}
Requires:	openssl

%description -n parquet-libs
This package contains the libraries for Apache Parquet C++.

%files -n parquet-libs
%{_libdir}/libparquet.so.*

%package -n parquet-devel
Summary:	Libraries and header files for Apache Parquet C++
Requires:	parquet-libs = %{version}-%{release}
Requires:	zlib-devel

%description -n parquet-devel
Libraries and header files for Apache Parquet C++.

%files -n parquet-devel
%{_includedir}/parquet/
%{_libdir}/cmake/arrow/ParquetConfig*.cmake
%{_libdir}/cmake/arrow/ParquetTargets*.cmake
%{_libdir}/cmake/arrow/FindParquet.cmake
%exclude %{_libdir}/libparquet.a
%{_libdir}/libparquet.so
%{_libdir}/pkgconfig/parquet*.pc

%package glib-libs
Summary:	Runtime libraries for Apache Arrow GLib
Requires:	%{name} = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description glib-libs
This package contains the libraries for Apache Arrow GLib.

%files glib-libs
%{_libdir}/libarrow-glib.so.*
%{_libdir}/girepository-1.0/Arrow-1.0.typelib
%exclude %{_datadir}/doc/arrow-glib/*

%package glib-devel
Summary:	Libraries and header files for Apache Arrow GLib
Requires:	%{name}-devel = %{version}-%{release}
Requires:	%{name}-glib-libs = %{version}-%{release}
Requires:	glib2-devel
Requires:	gobject-introspection-devel

%description glib-devel
Libraries and header files for Apache Arrow GLib.

%files glib-devel
%{_includedir}/arrow-glib/
%exclude %{_libdir}/libarrow-glib.a
%{_libdir}/libarrow-glib.so
%{_libdir}/pkgconfig/arrow-glib.pc
%{_libdir}/pkgconfig/arrow-orc-glib.pc
%{_datadir}/arrow-glib/example/
%{_datadir}/gir-1.0/Arrow-1.0.gir
%{_datadir}/gir-1.0/ArrowFlight-1.0.gir

%package glib-doc
Summary:	Documentation for Apache Arrow GLib

%description glib-doc
Documentation for Apache Arrow GLib.

%files glib-doc
%{_datadir}/gtk-doc/html/arrow-glib/
%{_datadir}/gtk-doc/html/arrow-flight-glib/

%package dataset-glib-libs
Summary:	Runtime libraries for Apache Arrow dataset GLib
Requires:	%{name}-dataset-libs = %{version}-%{release}
Requires:	%{name}-glib-libs = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description dataset-glib-libs
This package contains the libraries for Apache Arrow dataset GLib.

%files dataset-glib-libs
%{_libdir}/libarrow-dataset-glib.so.*
%{_libdir}/girepository-1.0/ArrowDataset-1.0.typelib

%package dataset-glib-devel
Summary:	Libraries and header files for Apache Arrow dataset GLib
Requires:	%{name}-dataset-devel = %{version}-%{release}
Requires:	%{name}-glib-devel = %{version}-%{release}
Requires:	%{name}-dataset-glib-libs = %{version}-%{release}

%description dataset-glib-devel
Libraries and header files for Apache Arrow dataset GLib.

%files dataset-glib-devel
%{_includedir}/arrow-dataset-glib/
%exclude %{_libdir}/libarrow-dataset-glib.a
%{_libdir}/libarrow-dataset-glib.so
%{_libdir}/pkgconfig/arrow-dataset-glib.pc
%{_datadir}/gir-1.0/ArrowDataset-1.0.gir

%package dataset-glib-doc
Summary:	Documentation for Apache Arrow dataset GLib

%description dataset-glib-doc
Documentation for Apache Arrow dataset GLib.

%files dataset-glib-doc
%{_datadir}/gtk-doc/html/arrow-dataset-glib/

%if %{use_gandiva}
%package -n gandiva-glib-libs
Summary:	Runtime libraries for Gandiva GLib
Requires:	gandiva-libs = %{version}-%{release}
Requires:	%{name}-glib-libs = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description -n gandiva-glib-libs
This package contains the libraries for Gandiva GLib.

%files -n gandiva-glib-libs
%{_libdir}/libgandiva-glib.so.*
%{_libdir}/girepository-1.0/Gandiva-1.0.typelib

%package -n gandiva-glib-devel
Summary:	Libraries and header files for Gandiva GLib
Requires:	gandiva-devel = %{version}-%{release}
Requires:	%{name}-glib-devel = %{version}-%{release}

%description -n gandiva-glib-devel
Libraries and header files for Gandiva GLib.

%files -n gandiva-glib-devel
%{_includedir}/gandiva-glib/
%exclude %{_libdir}/libgandiva-glib.a
%{_libdir}/libgandiva-glib.so
%{_libdir}/pkgconfig/gandiva-glib.pc
%{_datadir}/gir-1.0/Gandiva-1.0.gir

%package -n gandiva-glib-doc
Summary:	Documentation for Gandiva GLib

%description -n gandiva-glib-doc
Documentation for Gandiva GLib.

%files -n gandiva-glib-doc
%{_datadir}/gtk-doc/html/gandiva-glib/
%endif

%package -n plasma-glib-libs
Summary:	Runtime libraries for Plasma GLib
Requires:	plasma-libs = %{version}-%{release}
Requires:	%{name}-glib-libs = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description -n plasma-glib-libs
This package contains the libraries for Plasma GLib.

%files -n plasma-glib-libs
%{_libdir}/libplasma-glib.so.*
%{_libdir}/girepository-1.0/Plasma-1.0.typelib

%package -n plasma-glib-devel
Summary:	Libraries and header files for Plasma GLib
Requires:	plasma-devel = %{version}-%{release}
Requires:	plasma-glib-libs = %{version}-%{release}
Requires:	%{name}-glib-devel = %{version}-%{release}

%description -n plasma-glib-devel
Libraries and header files for Plasma GLib.

%files -n plasma-glib-devel
%{_includedir}/plasma-glib/
%exclude %{_libdir}/libplasma-glib.a
%{_libdir}/libplasma-glib.so
%{_libdir}/pkgconfig/plasma-glib.pc
%{_datadir}/gir-1.0/Plasma-1.0.gir

%package -n plasma-glib-doc
Summary:	Documentation for Plasma GLib

%description -n plasma-glib-doc
Documentation for Plasma GLib.

%files -n plasma-glib-doc
%{_datadir}/gtk-doc/html/plasma-glib/

%package -n parquet-glib-libs
Summary:	Runtime libraries for Apache Parquet GLib
Requires:	parquet-libs = %{version}-%{release}
Requires:	%{name}-glib-libs = %{version}-%{release}
Requires:	%{name}-doc = %{version}-%{release}

%description -n parquet-glib-libs
This package contains the libraries for Apache Parquet GLib.

%files -n parquet-glib-libs
%{_libdir}/libparquet-glib.so.*
%{_libdir}/girepository-1.0/Parquet-1.0.typelib

%package -n parquet-glib-devel
Summary:	Libraries and header files for Apache Parquet GLib
Requires:	parquet-devel = %{version}-%{release}
Requires:	parquet-glib-libs = %{version}-%{release}
Requires:	%{name}-glib-devel = %{version}-%{release}

%description -n parquet-glib-devel
Libraries and header files for Apache Parquet GLib.

%files -n parquet-glib-devel
%{_includedir}/parquet-glib/
%exclude %{_libdir}/libparquet-glib.a
%{_libdir}/libparquet-glib.so
%{_libdir}/pkgconfig/parquet-glib.pc
%{_datadir}/gir-1.0/Parquet-1.0.gir

%package -n parquet-glib-doc
Summary:	Documentation for Apache Parquet GLib

%description -n parquet-glib-doc
Documentation for Apache Parquet GLib.

%files -n parquet-glib-doc
%{_datadir}/gtk-doc/html/parquet-glib/

%changelog
* Thu Jan 13 2022  Kaleb S. KEITHLEY <kkeithle [at] redhat.com> - 5.0.0-1
- Newer upstream release.