# -*- 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.

%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; \
  fi)
%define cmake_version %( \
  if [ %{rhel} -lt 8 ]; then \
    echo 3; \
  fi)
%define python_version %( \
  if [ %{rhel} -eq 7 ]; then \
    echo 36; \
  else \
    echo 3; \
  fi)

%define lz4_requirement %( \
  if [ %{_amzn} -eq 0 ]; then \
    echo ">= 1.8.0"; \
  fi)

%define use_boost (!%{is_amazon_linux})
%define use_flight (%{rhel} >= 8)
%define use_gandiva (%{rhel} >= 8 && %{_arch} != "aarch64")
%define use_gcs (%{rhel} >= 8 || %{is_amazon_linux})
%define use_gflags (!%{is_amazon_linux})
%define use_mimalloc (%{rhel} >= 8)
%define use_python (!%{is_amazon_linux})
# TODO: Enable this. This works on local but is fragile on GitHub Actions and
# Travis CI.
# %define use_s3 (%{rhel} >= 8)
%define use_s3 0

%define have_rapidjson (%{rhel} == 7)
%define have_re2 (%{rhel} >= 8)
# EPEL ships utf8proc but it's old.
# %define have_utf8proc (%{rhel} == 7)
%define have_utf8proc 0
%define have_zstd (!%{is_amazon_linux})

Name:		@PACKAGE@
Version:	@VERSION@
Release:	@RELEASE@%{?dist}
Summary:	Apache Arrow is a data processing library for analysis

License:	Apache-2.0
URL:		https://arrow.apache.org/
Source0:	https://dist.apache.org/repos/dist/release/@PACKAGE@/@PACKAGE@-%{version}/apache-@PACKAGE@-%{version}.tar.gz

BuildRequires:	bison
%if %{use_boost}
BuildRequires:	boost%{boost_version}-devel
%endif
BuildRequires:	brotli-devel
BuildRequires:	bzip2-devel
%if %{use_flight}
BuildRequires:	c-ares-devel
%endif
BuildRequires:	cmake%{cmake_version}
BuildRequires:	curl-devel
BuildRequires:	flex
BuildRequires:	gcc-c++
%if %{use_gflags}
BuildRequires:	gflags-devel
%endif
BuildRequires:	git
BuildRequires:	glog-devel
%if %{use_gcs}
BuildRequires:	json-devel
%endif
%if %{have_zstd}
BuildRequires:	libzstd-devel
%endif
BuildRequires:	lz4-devel %{lz4_requirement}
BuildRequires:	ninja-build
BuildRequires:	openssl-devel
BuildRequires:	pkgconfig
%if %{use_python}
BuildRequires:	python%{python_version}-devel
BuildRequires:	python%{python_version}-numpy
%endif
%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

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

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

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

%prep
%setup -q -n apache-@PACKAGE@-%{version}

%build
cpp_build_type=release
mkdir cpp/build
cd cpp/build
%cmake3 .. \
  -DARROW_CSV=ON \
  -DARROW_DATASET=ON \
%if %{use_flight}
  -DARROW_FLIGHT=ON \
%endif
%if %{use_gandiva}
  -DARROW_GANDIVA=ON \
%endif
%if %{use_gcs}
  -DARROW_GCS=ON \
%endif
  -DARROW_HDFS=ON \
  -DARROW_JSON=ON \
%if %{use_mimalloc}
  -DARROW_MIMALLOC=ON \
%endif
  -DARROW_ORC=ON \
  -DARROW_PACKAGE_KIND=rpm \
  -DARROW_PARQUET=ON \
  -DARROW_PLASMA=ON \
%if %{use_python}
  -DARROW_PYTHON=ON \
%endif
%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 \
  -DCMAKE_BUILD_TYPE=$cpp_build_type \
  -DARROW_USE_CCACHE=OFF \
  -DPARQUET_REQUIRE_ENCRYPTION=ON \
%if %{use_python}
  -DPythonInterp_FIND_VERSION=ON \
  -DPythonInterp_FIND_VERSION_MAJOR=3 \
%endif
  -GNinja

ninja %{?_smp_mflags}
cd -

cd c_glib
pip3 install meson
meson setup build \
  --default-library=both \
  --libdir=%{_libdir} \
  --prefix=%{_prefix} \
  -Darrow_cpp_build_dir=../cpp/build \
  -Darrow_cpp_build_type=$cpp_build_type \
  -Dgtk_doc=true
LD_LIBRARY_PATH=$PWD/../cpp/build/$cpp_build_type \
  ninja -C build %{?_smp_mflags}
cd -

%install
cpp_build_type=release

cd c_glib
DESTDIR=$RPM_BUILD_ROOT ninja -C build install
ninja -C build clean
cd -

cd cpp/build
DESTDIR=$RPM_BUILD_ROOT ninja install
ninja clean
cd -

%package -n %{name}%{major_version}-libs
Summary:	Runtime libraries for Apache Arrow C++
License:	Apache-2.0
Requires:	brotli
%if %{use_gflags}
Requires:	gflags
%endif
Requires:	glog
%if %{have_zstd}
Requires:	libzstd
%endif
Requires:	lz4 %{lz4_requirement}
%if %{have_re2}
Requires:	re2
%endif
Requires:	snappy
%if %{have_utf8proc}
Requires:	utf8proc
%endif
Requires:	zlib

%description -n %{name}%{major_version}-libs
This package contains the libraries for Apache Arrow C++.

%files -n %{name}%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_docdir}/arrow/
%{_libdir}/libarrow.so.*

%package devel
Summary:	Libraries and header files for Apache Arrow C++
License:	Apache-2.0
Requires:	%{name}%{major_version}-libs = %{version}-%{release}
Requires:	brotli-devel
Requires:	bzip2-devel
%if %{use_flight}
Requires:	c-ares-devel
%endif
%if %{use_gcs}
Requires:	json-devel
%endif
%if %{have_zstd}
Requires:	libzstd-devel
%endif
Requires:	lz4-devel %{lz4_requirement}
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
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow/
%exclude %{_includedir}/arrow/dataset/
%if %{use_flight}
%exclude %{_includedir}/arrow/flight/
%endif
%exclude %{_includedir}/arrow/python/
%{_libdir}/cmake/arrow/ArrowConfig*.cmake
%{_libdir}/cmake/arrow/ArrowOptions.cmake
%{_libdir}/cmake/arrow/ArrowTargets*.cmake
%{_libdir}/cmake/arrow/FindArrow.cmake
%{_libdir}/cmake/arrow/FindBrotli.cmake
%{_libdir}/cmake/arrow/FindLz4.cmake
%{_libdir}/cmake/arrow/FindSnappy.cmake
%if %{use_flight}
%{_libdir}/cmake/arrow/Findc-aresAlt.cmake
%endif
%if %{have_re2}
%{_libdir}/cmake/arrow/Findre2Alt.cmake
%endif
%if %{have_utf8proc}
%{_libdir}/cmake/arrow/Findutf8proc.cmake
%endif
%if %{have_zstd}
%{_libdir}/cmake/arrow/Findzstd.cmake
%endif
%{_libdir}/cmake/arrow/arrow-config.cmake
%{_libdir}/libarrow.a
%{_libdir}/libarrow.so
%{_libdir}/libarrow_bundled_dependencies.a
%{_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 -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}%{major_version}-libs = %{version}-%{release}

%description -n %{name}%{major_version}-dataset-libs
This package contains the libraries for Apache Arrow dataset.

%files -n %{name}%{major_version}-dataset-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_dataset.so.*

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

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

%files dataset-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow/dataset/
%{_libdir}/cmake/arrow/ArrowDatasetConfig*.cmake
%{_libdir}/cmake/arrow/ArrowDatasetTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowDataset.cmake
%{_libdir}/libarrow_dataset.a
%{_libdir}/libarrow_dataset.so
%{_libdir}/pkgconfig/arrow-dataset.pc

%if %{use_flight}
%package -n %{name}%{major_version}-flight-libs
Summary:	C++ library for fast data transport.
License:	Apache-2.0
Requires:	%{name}%{major_version}-libs = %{version}-%{release}
%if %{use_flight}
Requires:	c-ares
%endif
Requires:	openssl

%description -n %{name}%{major_version}-flight-libs
This package contains the libraries for Apache Arrow Flight.

%files -n %{name}%{major_version}-flight-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_flight.so.*

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

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

%files flight-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow/flight/
%{_libdir}/cmake/arrow/ArrowFlightConfig*.cmake
%{_libdir}/cmake/arrow/ArrowFlightTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowFlight.cmake
%{_libdir}/libarrow_flight.a
%{_libdir}/libarrow_flight.so
%{_libdir}/pkgconfig/arrow-flight.pc
%endif

%if %{use_gandiva}
%package -n gandiva%{major_version}-libs
Summary:	C++ library for compiling and evaluating expressions on Apache Arrow data.
License:	Apache-2.0
Requires:	%{name}%{major_version}-libs = %{version}-%{release}
Requires:	ncurses-libs

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

%files -n gandiva%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libgandiva.so.*

%package -n gandiva-devel
Summary:	Libraries and header files for Gandiva.
License:	Apache-2.0
Requires:	%{name}-devel = %{version}-%{release}
Requires:	gandiva%{major_version}-libs = %{version}-%{release}
Requires:	llvm-devel

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

%files -n gandiva-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/gandiva/
%{_libdir}/cmake/arrow/GandivaConfig*.cmake
%{_libdir}/cmake/arrow/GandivaTargets*.cmake
%{_libdir}/cmake/arrow/FindGandiva.cmake
%{_libdir}/libgandiva.a
%{_libdir}/libgandiva.so
%{_libdir}/pkgconfig/gandiva.pc
%endif

%if %{use_python}
%package -n %{name}%{major_version}-python-libs
Summary:	Python integration library for Apache Arrow
License:	Apache-2.0
Requires:	%{name}%{major_version}-libs = %{version}-%{release}
Requires:	python%{python_version}-numpy

%description -n %{name}%{major_version}-python-libs
This package contains the Python integration library for Apache Arrow.

%files -n %{name}%{major_version}-python-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_python.so.*

%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:	python%{python_version}-devel

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

%files python-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow/python/
%exclude %{_includedir}/arrow/python/flight.h
%{_libdir}/cmake/arrow/ArrowPythonConfig*.cmake
%{_libdir}/cmake/arrow/ArrowPythonTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowPython.cmake
%{_libdir}/libarrow_python.a
%{_libdir}/libarrow_python.so
%{_libdir}/pkgconfig/arrow-python.pc

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

%description -n %{name}%{major_version}-python-flight-libs
This package contains the Python integration library for Apache Arrow Flight.

%files -n %{name}%{major_version}-python-flight-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow_python_flight.so.*

%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}

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

%files python-flight-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow/python/flight.h
%{_libdir}/cmake/arrow/ArrowPythonFlightConfig*.cmake
%{_libdir}/cmake/arrow/ArrowPythonFlightTargets*.cmake
%{_libdir}/cmake/arrow/FindArrowPythonFlight.cmake
%{_libdir}/libarrow_python_flight.a
%{_libdir}/libarrow_python_flight.so
%{_libdir}/pkgconfig/arrow-python-flight.pc
%endif
%endif

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

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

%files -n plasma%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libplasma.so.*

%package -n plasma-store-server
Summary:	Server for Plasma in-memory object store
License:	Apache-2.0
Requires:	plasma%{major_version}-libs = %{version}-%{release}

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

%files -n plasma-store-server
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_bindir}/plasma-store-server

%package -n plasma-devel
Summary:	Libraries and header files for Plasma in-memory object store
License:	Apache-2.0
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.

%files -n plasma-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/plasma/
%{_libdir}/cmake/arrow/PlasmaConfig*.cmake
%{_libdir}/cmake/arrow/PlasmaTargets*.cmake
%{_libdir}/cmake/arrow/FindPlasma.cmake
%{_libdir}/libplasma.a
%{_libdir}/libplasma.so
%{_libdir}/pkgconfig/plasma*.pc

%package -n parquet%{major_version}-libs
Summary:	Runtime libraries for Apache Parquet C++
License:	Apache-2.0
Requires:	%{name}%{major_version}-libs = %{version}-%{release}
Requires:	openssl

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

%files -n parquet%{major_version}-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libparquet.so.*

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

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

%files -n parquet-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/parquet/
%{_libdir}/cmake/arrow/ParquetConfig*.cmake
%{_libdir}/cmake/arrow/ParquetTargets*.cmake
%{_libdir}/cmake/arrow/FindParquet.cmake
%{_libdir}/libparquet.a
%{_libdir}/libparquet.so
%{_libdir}/pkgconfig/parquet*.pc

%package -n %{name}%{major_version}-glib-libs
Summary:	Runtime libraries for Apache Arrow GLib
License:	Apache-2.0
Requires:	%{name}%{major_version}-libs = %{version}-%{release}
Requires:	glib2

%description -n %{name}%{major_version}-glib-libs
This package contains the libraries for Apache Arrow GLib.

%files -n %{name}%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow-glib.so.*
%{_datadir}/gir-1.0/Arrow-1.0.gir

%package glib-devel
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

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

%files glib-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow-glib/
%{_libdir}/libarrow-glib.a
%{_libdir}/libarrow-glib.so
%{_libdir}/pkgconfig/arrow-glib.pc
%{_libdir}/pkgconfig/arrow-orc-glib.pc
%{_libdir}/girepository-1.0/Arrow-1.0.typelib
%{_datadir}/arrow-glib/example/

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

%description glib-doc
Documentation for Apache Arrow GLib.

%files glib-doc
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_docdir}/arrow-glib/
%{_datadir}/gtk-doc/html/arrow-glib/

%package -n %{name}%{major_version}-dataset-glib-libs
Summary:	Runtime libraries for Apache Arrow Dataset GLib
License:	Apache-2.0
Requires:	%{name}%{major_version}-dataset-libs = %{version}-%{release}
Requires:	%{name}%{major_version}-glib-libs = %{version}-%{release}

%description -n %{name}%{major_version}-dataset-glib-libs
This package contains the libraries for Apache Arrow Dataset GLib.

%files -n %{name}%{major_version}-dataset-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow-dataset-glib.so.*
%{_datadir}/gir-1.0/ArrowDataset-1.0.gir

%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}

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

%files dataset-glib-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow-dataset-glib/
%{_libdir}/libarrow-dataset-glib.a
%{_libdir}/libarrow-dataset-glib.so
%{_libdir}/pkgconfig/arrow-dataset-glib.pc
%{_libdir}/girepository-1.0/ArrowDataset-1.0.typelib

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

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

%files dataset-glib-doc
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_datadir}/gtk-doc/html/arrow-dataset-glib/

%if %{use_flight}
%package -n %{name}%{major_version}-flight-glib-libs
Summary:	Runtime libraries for Apache Arrow Flight GLib
License:	Apache-2.0
Requires:	%{name}%{major_version}-flight-libs = %{version}-%{release}
Requires:	%{name}%{major_version}-glib-libs = %{version}-%{release}

%description -n %{name}%{major_version}-flight-glib-libs
This package contains the libraries for Apache Arrow Flight GLib.

%files -n %{name}%{major_version}-flight-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libarrow-flight-glib.so.*
%{_datadir}/gir-1.0/ArrowFlight-1.0.gir

%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}

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

%files flight-glib-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/arrow-flight-glib/
%{_libdir}/libarrow-flight-glib.a
%{_libdir}/libarrow-flight-glib.so
%{_libdir}/pkgconfig/arrow-flight-glib.pc
%{_libdir}/girepository-1.0/ArrowFlight-1.0.typelib

%package flight-glib-doc
Summary:	Documentation for Apache Arrow Flight GLib
License:	Apache-2.0

%description flight-glib-doc
Documentation for Apache Arrow Flight GLib.

%files flight-glib-doc
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_datadir}/gtk-doc/html/arrow-flight-glib/
%endif

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

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

%files -n gandiva%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libgandiva-glib.so.*
%{_datadir}/gir-1.0/Gandiva-1.0.gir

%package -n gandiva-glib-devel
Summary:	Libraries and header files for Gandiva GLib
License:	Apache-2.0
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.

%files -n gandiva-glib-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/gandiva-glib/
%{_libdir}/libgandiva-glib.a
%{_libdir}/libgandiva-glib.so
%{_libdir}/pkgconfig/gandiva-glib.pc
%{_libdir}/girepository-1.0/Gandiva-1.0.typelib

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

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

%files -n gandiva-glib-doc
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_datadir}/gtk-doc/html/gandiva-glib/
%endif

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

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

%files -n plasma%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libplasma-glib.so.*
%{_datadir}/gir-1.0/Plasma-1.0.gir

%package -n plasma-glib-devel
Summary:	Libraries and header files for Plasma GLib
License:	Apache-2.0
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.

%files -n plasma-glib-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/plasma-glib/
%{_libdir}/libplasma-glib.a
%{_libdir}/libplasma-glib.so
%{_libdir}/pkgconfig/plasma-glib.pc
%{_libdir}/girepository-1.0/Plasma-1.0.typelib

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

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

%files -n plasma-glib-doc
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_datadir}/gtk-doc/html/plasma-glib/

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

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

%files -n parquet%{major_version}-glib-libs
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_libdir}/libparquet-glib.so.*
%{_datadir}/gir-1.0/Parquet-1.0.gir

%package -n parquet-glib-devel
Summary:	Libraries and header files for Apache Parquet GLib
License:	Apache-2.0
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.

%files -n parquet-glib-devel
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_includedir}/parquet-glib/
%{_libdir}/libparquet-glib.a
%{_libdir}/libparquet-glib.so
%{_libdir}/pkgconfig/parquet-glib.pc
%{_libdir}/girepository-1.0/Parquet-1.0.typelib

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

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

%files -n parquet-glib-doc
%defattr(-,root,root,-)
%doc README.md LICENSE.txt NOTICE.txt
%{_datadir}/gtk-doc/html/parquet-glib/

%changelog
* Tue May 03 2022 Krisztián Szűcs <szucs.krisztian@gmail.com> - 8.0.0-1
- New upstream release.

* Sat Jan 29 2022 Krisztián Szűcs <szucs.krisztian@gmail.com> - 7.0.0-1
- New upstream release.

* Mon Jan 18 2021 Krisztián Szűcs <szucs.krisztian@gmail.com> - 3.0.0-1
- New upstream release.

* Mon Oct 12 2020 Krisztián Szűcs <szucs.krisztian@gmail.com> - 2.0.0-1
- New upstream release.

* Mon Jul 20 2020 Krisztián Szűcs <szucs.krisztian@gmail.com> - 1.0.0-1
- New upstream release.

* Thu Apr 16 2020 Krisztián Szűcs <szucs.krisztian@gmail.com> - 0.17.0-1
- New upstream release.

* Thu Jan 30 2020 Krisztián Szűcs <szucs.krisztian@gmail.com> - 0.16.0-1
- New upstream release.

* Mon Sep 30 2019 Krisztián Szűcs <szucs.krisztian@gmail.com> - 0.15.0-1
- New upstream release.

* Fri Jun 28 2019 Sutou Kouhei <kou@clear-code.com> - 0.14.0-1
- New upstream release.

* Thu Mar 28 2019 Kouhei Sutou <kou@clear-code.com> - 0.13.0-1
- New upstream release.

* Wed Jan 16 2019 Krisztián Szűcs <szucs.krisztian@gmail.com> - 0.12.0-1
- New upstream release.

* Thu Oct 04 2018 Kouhei Sutou <kou@clear-code.com> - 0.11.0-1
- New upstream release.

* Thu Aug 02 2018 Phillip Cloud <cpcloud@gmail.com> - 0.10.0-1
- New upstream release.

* Fri Mar 16 2018 Kouhei Sutou <kou@clear-code.com> - 0.9.0-1
- New upstream release.

* Sun Dec 17 2017 Uwe Korn <uwelk@xhochy.com> - 0.8.0-1
- New upstream release.

* Wed Sep 27 2017 Kouhei Sutou <kou@clear-code.com> - 0.7.1-1
- New upstream release.

* Tue Sep 12 2017 Wes McKinney <wes.mckinney@twosigma.com> - 0.7.0-1
- New upstream release.

* Fri Aug 11 2017 Kouhei Sutou <kou@clear-code.com> - 0.6.0-1
- New upstream release.

* Wed Aug 02 2017 Kouhei Sutou <kou@clear-code.com> - 0.6.0.20170802-1
- New upstream release.
