Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-gnome
Path: blob/main/databases/arrow/Makefile
16123 views
PORTNAME=	arrow
DISTVERSION=	4.0.0
PORTREVISION=	2
CATEGORIES=	databases
MASTER_SITES=	https://mirrors.advancedhosters.com/apache/${PORTNAME}/${PORTNAME}-${DISTVERSION}/ \
		https://github.com/apache/orc/archive/rel/:orc
DISTNAME=	apache-${PORTNAME}-${DISTVERSION}
DISTFILES=	apache-${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} release-1.6.6${EXTRACT_SUFX}:orc
EXTRACT_ONLY=	apache-${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}

MAINTAINER=	[email protected]
COMMENT=	Columnar in-memory analytics layer for big data

LICENSE=	APACHE20
LICENSE_FILE=	${WRKSRC}/../LICENSE.txt

BROKEN_FreeBSD_11=	The OpenSSL must be greater than or equal to 1.1.0

LIB_DEPENDS=	libboost_system.so:devel/boost-libs

USES=		cmake compiler:c++11-lang localbase pkgconfig python:build
USE_LDCONFIG=	yes

WRKSRC_SUBDIR=	cpp

CMAKE_ARGS=	-DARROW_SIMD_LEVEL=NONE -DARROW_RUNTIME_SIMD_LEVEL=NONE
CMAKE_OFF=	ARROW_BUILD_STATIC ARROW_WITH_BACKTRACE ARROW_BUILD_TESTS ARROW_BUILD_BENCHMARKS

OPTIONS_GROUP=			COMPRESSION COMPONENTS # components are listed in cpp/cmake_modules/DefineOptions.cmake
OPTIONS_GROUP_COMPRESSION=	BROTLI BZ2 LZ4 SNAPPY ZLIB ZSTD
OPTIONS_GROUP_COMPONENTS=	COMPUTE CSV DATASET FILESYSTEM FLIGHT GANDIVA HDFS HIVESERVER2 IPC JSON MIMALLOC PARQUET ORC PLASMA PYTHON S3 BUILD_UTILITIES TESTING
OPTIONS_SUB=			yes

COMPRESSION_DESC=		Compression support:
COMPONENTS_DESC=		Build components:

## Compression options

BROTLI_CMAKE_BOOL=		ARROW_WITH_BROTLI
BROTLI_LIB_DEPENDS=		libbrotlicommon.so:archivers/brotli

BZ2_DESC=			bz2 compression support
BZ2_CMAKE_BOOL=			ARROW_WITH_BZ2

LZ4_CMAKE_BOOL=			ARROW_WITH_LZ4
LZ4_LIB_DEPENDS=		liblz4.so:archivers/liblz4

SNAPPY_CMAKE_BOOL=		ARROW_WITH_SNAPPY
SNAPPY_LIB_DEPENDS=		libsnappy.so:archivers/snappy

ZLIB_CMAKE_BOOL=		ARROW_WITH_ZLIB

ZSTD_DESC=			zstd compression support
ZSTD_CMAKE_BOOL=		ARROW_WITH_ZSTD
ZSTD_LIB_DEPENDS=		libzstd.so:archivers/zstd

## Component options

COMPUTE_DESC=			Arrow Compute Modules
COMPUTE_CMAKE_BOOL=		ARROW_COMPUTE
COMPUTE_LIB_DEPENDS=		libre2.so:devel/re2 \
				libutf8proc.so:textproc/utf8proc

CSV_DESC=			Arrow CSV Parser Module
CSV_CMAKE_BOOL=			ARROW_CSV

DATASET_DESC=			Arrow Dataset Modules
DATASET_CMAKE_BOOL=		ARROW_DATASET
DATASET_IMPLIES=		COMPUTE FILESYSTEM

FILESYSTEM_DESC=		Arrow Filesystem Layer
FILESYSTEM_CMAKE_BOOL=		ARROW_FILESYSTEM

FLIGHT_DESC=			Arrow Flight RPC System
FLIGHT_USES=			ssl
FLIGHT_CMAKE_BOOL=		ARROW_FLIGHT
FLIGHT_LIB_DEPENDS=		libgflags.so:devel/gflags \
				libprotobuf.so:devel/protobuf \
				libabsl_base.so:devel/abseil \
				libcares.so:dns/c-ares \
				libgrpc.so:devel/grpc \
				libre2.so:devel/re2
FLIGHT_IMPLIES=			IPC
FLIGHT_BROKEN=			configure breaks: Could not find a package configuration file provided by "re2"

GANDIVA_DESC=			Gandiva libraries
GANDIVA_USES=			ssl
GANDIVA_CMAKE_BOOL=		ARROW_GANDIVA
GANDIVA_BUILD_DEPENDS=		${LOCALBASE}/bin/clang12:devel/llvm12 # explicitly requires llvm-12
GANDIVA_LIB_DEPENDS=		libgrpc.so:devel/grpc \
				libprotobuf.so:devel/protobuf \
				libre2.so:devel/re2

HDFS_DESC=			Arrow HDFS bridge
HDFS_CMAKE_BOOL=		ARROW_HDFS

HIVESERVER2_DESC=		HiveServer2 client and Arrow adapter
HIVESERVER2_USES=		python:build
HIVESERVER2_VARS=		BINARY_ALIAS=python=${PYTHON_CMD}
HIVESERVER2_BUILD_DEPENDS=	thrift:devel/thrift
HIVESERVER2_CMAKE_BOOL=		ARROW_HIVESERVER2
HIVESERVER2_BROKEN=		Pending conflict fix in thrift ports in bug#255538

IPC_DESC=			Arrow IPC extensions
IPC_CMAKE_BOOL=			ARROW_IPC

JSON_DESC=			JSON support
JSON_CMAKE_BOOL=		ARROW_JSON
JSON_BUILD_DEPENDS=		${LOCALBASE}/include/rapidjson/rapidjson.h:devel/rapidjson

MIMALLOC_DESC=			Arrow mimalloc-based allocato
MIMALLOC_CMAKE_BOOL=		ARROW_MIMALLOC
MIMALLOC_LIB_DEPENDS=		libmimalloc.so:devel/mimalloc
MIMALLOC_BROKEN=		Pending paths fix in bug#255537

PARQUET_DESC=			Parquet libraries
PARQUET_CMAKE_BOOL=		ARROW_PARQUET PARQUET_REQUIRE_ENCRYPTION
PARQUET_USES=			ssl
PARQUET_LIB_DEPENDS=		libthrift.so:devel/thrift-cpp
PARQUET_IMPLIES=		COMPUTE

ORC_DESC=			Arrow ORC adapter
ORC_CMAKE_BOOL=			ARROW_ORC
ORC_LIB_DEPENDS=		libprotobuf.so:devel/protobuf
ORC_CONFIGURE_ENV=		ARROW_ORC_URL=file://${DISTDIR}/${DIST_SUBDIR}/release-1.6.6${EXTRACT_SUFX}
ORC_IMPLIES=			LZ4 SNAPPY ZLIB ZSTD # cpp/CMakeLists.txt
ORC_BROKEN=			fatal error: 'orc/OrcFile.hh' file not found: https://issues.apache.org/jira/browse/ARROW-12624

PLASMA_DESC=			Plasma object store
PLASMA_CMAKE_BOOL=		ARROW_PLASMA
PLASMA_LIB_DEPENDS=		libgflags.so:devel/gflags

BUILD_UTILITIES_DESC=		build Arrow commandline utilities
BUILD_UTILITIES_CMAKE_BOOL=	ARROW_BUILD_UTILITIES

PYTHON_DESC=			build the Arrow CPython extensions
PYTHON_CMAKE_BOOL=		ARROW_PYTHON
PYTHON_USES=			python:3.9
PYTHON_BUILD_DEPENDS=		${PY_NUMPY} \
				${PYTHON_PKGNAMEPREFIX}numpy>0:math/py-numpy@${PY_FLAVOR} \
				${PYTHON_PKGNAMEPREFIX}cython>0:lang/cython@${PY_FLAVOR} \
				${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} \
				${PYTHON_PKGNAMEPREFIX}setuptools_scm>0:devel/py-setuptools_scm@${PY_FLAVOR}
PYTHON_LIB_DEPENDS=		libutf8proc.so:textproc/utf8proc
PYTHON_RUN_DEPENDS=		${PY_NUMPY}
PYTHON_IMPLIES=			COMPUTE CSV DATASET FILESYSTEM HDFS JSON
PYTHON_BROKEN=			py39-setuptools_scm-4.1.2_1 Unknown flavor 'py39', possible flavors: py38
PYTHON_VARS=			PLIST_SUB=PYTHON_SUFFIX=${PYTHON_SUFFIX}

S3_DESC=			S3 support
S3_CMAKE_BOOL=			ARROW_S3
S3_USES=			ssl
S3_LIB_DEPENDS=			\
				libaws-c-cal.so:security/aws-c-cal \
				libaws-c-common.so:devel/aws-c-common \
				libaws-c-event-stream.so:devel/aws-c-event-stream \
				libaws-c-io.so:devel/aws-c-io \
				libaws-checksums.so:devel/aws-checksums \
				libaws-cpp-sdk-s3.so:devel/aws-sdk-cpp \
				libs2n.so:security/s2n
S3_IMPLIES=			ZLIB

TESTING_DESC=			Arrow testing libraries
TESTING_CMAKE_BOOL=		ARROW_TESTING
TESTING_LIB_DEPENDS=		libgtest.so:devel/googletest

.for opt in ${OPTIONS_GROUP_COMPRESSION} ${OPTIONS_GROUP_COMPONENTS}
.  if "${${opt}_BROKEN}" == ""
OPTIONS_DEFAULT+=	${opt}
.  endif
.endfor

.include <bsd.port.pre.mk>

.if ${CHOSEN_COMPILER_TYPE} == clang && ${OPSYS} == FreeBSD
LLVM_VER=	10 # clang-11 crashes on FreeBSD 14: https://bugs.llvm.org/show_bug.cgi?id=50277

BUILD_DEPENDS+=	clang${LLVM_VER}:devel/llvm${LLVM_VER}
CC=		${LOCALBASE}/bin/clang${LLVM_VER}
CXX=		${LOCALBASE}/bin/clang++${LLVM_VER}
.endif

pre-configure-PYTHON-on:
	@${REINPLACE_CMD} -e ' \
		s|arrow_python|arrow_python${PYTHON_SUFFIX}|g; \
		s|arrow-python|arrow-python${PYTHON_SUFFIX}|g \
		' \
		${WRKSRC}/../ci/appveyor-cpp-build.bat \
		${WRKSRC}/../cpp/cmake_modules/FindArrowPython.cmake \
		${WRKSRC}/../cpp/cmake_modules/FindArrowPythonFlight.cmake \
		${WRKSRC}/../cpp/src/arrow/python/arrow-python-flight.pc.in \
		${WRKSRC}/../cpp/src/arrow/python/arrow-python.pc.in \
		${WRKSRC}/../cpp/src/arrow/python/ArrowPythonConfig.cmake.in \
		${WRKSRC}/../cpp/src/arrow/python/ArrowPythonFlightConfig.cmake.in \
		${WRKSRC}/../cpp/src/arrow/python/CMakeLists.txt \
		${WRKSRC}/../dev/release/rat_exclude_files.txt \
		${WRKSRC}/../dev/release/verify-apt.sh \
		${WRKSRC}/../dev/release/verify-yum.sh \
		${WRKSRC}/../dev/tasks/conda-recipes/arrow-cpp/meta.yaml \
		${WRKSRC}/../dev/tasks/tasks.yml \
		${WRKSRC}/../docs/source/developers/python.rst \
		${WRKSRC}/../python/cmake_modules/FindArrowPython.cmake \
		${WRKSRC}/../python/cmake_modules/FindArrowPythonFlight.cmake \
		${WRKSRC}/../python/CMakeLists.txt \
		${WRKSRC}/../python/pyarrow/__init__.py \
		${WRKSRC}/../python/pyarrow/plasma.py \
		${WRKSRC}/../python/setup.py
	@${MV} ${WRKSRC}/src/arrow/python/arrow-python.pc.in ${WRKSRC}/src/arrow/python/arrow-python${PYTHON_SUFFIX}.pc.in
	@${MV} ${WRKSRC}/src/arrow/python/arrow-python-flight.pc.in ${WRKSRC}/src/arrow/python/arrow-python${PYTHON_SUFFIX}-flight.pc.in

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MCOMPUTE} || ${PORT_OPTIONS:MFLIGHT} || ${PORT_OPTIONS:MGANDIVA}
PLIST_FILES+=	lib/cmake/arrow/Findre2Alt.cmake
.endif

.if ${PORT_OPTIONS:MPYTHON} == "PYTHON" && ${PORT_OPTIONS:MFLIGHT} == "FLIGHT"
    PLIST_SUB+=	PYTHONFLIGHT=""
.else
    PLIST_SUB+=	PYTHONFLIGHT="@comment "
.endif

.if ${PORT_OPTIONS:MTESTING} && ${PORT_OPTIONS:MFLIGHT} == "FLIGHT"
    PLIST_SUB+=	TESTINGFLIGHT=""
.else
    PLIST_SUB+=	TESTINGFLIGHT="@comment "
.endif

do-test: # tests fail to compile: https://issues.apache.org/jira/browse/ARROW-12625
	@cd ${BUILD_WRKSRC} && \
		${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} -DARROW_BUILD_TESTS:BOOL=ON ${CMAKE_SOURCE_PATH} && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} && \
		${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} test

.include <bsd.port.post.mk>