#!/usr/bin/make -f # -*- makefile-gmake -*- # # import for DEB_HOST_MULTIARCH include /usr/share/dpkg/architecture.mk # In anticipation of a future version of r-cran.mk origRsubdir=r/ debRreposname=cran cranNameOrig=arrow cranName=arrow #include /usr/share/dh-r/r-cran.mk ifeq ($(builttimeStamp),) builttime := $(shell dpkg-parsechangelog -l$(CURDIR)/debian/changelog | awk -F': ' '/Date/ {print $$2}') builttimeStamp := "--built-timestamp=\"$(builttime)\"" endif SOVERSION=2300 PY3DEFAULT := $(shell py3versions -d) export DH_VERBOSE=1 export DH_OPTIONS export DEB_BUILD_MAINT_OPTIONS = reproducible=-timeless hardening=+bindnow export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic export DEB_CXXFLAGS_MAINT_APPEND = -Wall export DEB_CPPFLAGS_MAINT_APPEND = export DEB_LDFLAGS_MAINT_APPEND = export PYARROW_CXXFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) # For CMAKE output not to hide executed commands export VERBOSE=1 ifeq ($(DEB_HOST_ARCH),amd64) export PYARROW_CMAKE_OPTIONS = -DARROW_SIMD_LEVEL=NONE ARROW_SIMD_FLAG = -DARROW_SIMD_LEVEL=NONE endif BUILD_TYPE=release %: dh $@ --with python3 override_dh_auto_configure: @echo " *** Build flags *** $$(date '+%Y-%m-%dT%H:%M:%S')" @echo " CFLAGS: $$(dpkg-buildflags --get CFLAGS)" @echo " CXXFLAGS: $$(dpkg-buildflags --get CXXFLAGS)" @echo " CPPFLAGS: $$(dpkg-buildflags --get CPPFLAGS)" @echo " LDFLAGS: $$(dpkg-buildflags --get LDFLAGS)" # Not explicitly specifying default setting # -DARROW_S3=OFF # Build failure: # -DARROW_JEMALLOC_USE_SHARED=ON # -DARROW_JEMALLOC=OFF \ # # Settings from https://arrow.apache.org/docs/developers/cpp/building.html dh_auto_configure \ --sourcedirectory=cpp \ --builddirectory=cpp_build \ --buildsystem=cmake+ninja \ -- \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DARROW_BUILD_BENCHMARKS=OFF \ -DARROW_BUILD_EXAMPLES=OFF \ -DARROW_BUILD_INTEGRATION=OFF \ -DARROW_BUILD_TESTS=OFF \ -DARROW_BUILD_UTILITIES=OFF \ -DARROW_ACERO=ON \ -DARROW_ENABLE_TIMING_TESTS=OFF \ -DARROW_FUZZING=OFF \ -DARROW_CUDA=OFF \ -DARROW_CSV=ON \ -DARROW_COMPUTE=ON \ -DARROW_DATASET=ON \ -DARROW_DEPENDENCY_SOURCE=SYSTEM \ -DARROW_FILESYSTEM=ON \ -DARROW_FLIGHT=ON \ -DARROW_GANDIVA=ON \ -DARROW_GCS=OFF \ -DARROW_HDFS=ON \ -DARROW_IPC=OFF \ -DARROW_JSON=ON \ -DARROW_MIMALLOC=ON \ -DARROW_ORC=OFF \ -DARROW_PARQUET=ON \ -DARROW_PYTHON=ON \ $(ARROW_SIMD_FLAG) \ -DARROW_SUBSTRAIT=OFF \ -DARROW_TENSORFLOW=OFF \ -DARROW_USE_CCACHE=OFF \ -DARROW_USE_ASAN=OFF \ -DARROW_USE_TSAN=OFF \ -DARROW_USE_UBSAN=OFF \ -DARROW_VERBOSE_THIRDPARTY_BUILD=ON \ -DARROW_WITH_BROTLI=OFF \ -DARROW_WITH_BZ2=ON \ -DARROW_WITH_LZ4=ON \ -DARROW_WITH_SNAPPY=ON \ -DARROW_WITH_RE2=ON \ -DARROW_WITH_UTF8PROC=ON \ -DARROW_WITH_ZLIB=ON \ -DARROW_WITH_ZSTD=ON \ -DCMAKE_INSTALL_PREFIX=/usr/ \ -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) override_dh_auto_build: @echo " *** BUILD CPP *** $$(date '+%Y-%m-%dT%H:%M:%S')" dh_auto_build \ --sourcedirectory=cpp \ --builddirectory=cpp_build \ --buildsystem=cmake+ninja override_dh_auto_install: @echo " *** INSTALL CPP *** $$(date '+%Y-%m-%dT%H:%M:%S')" env \ LD_LIBRARY_PATH=$(CURDIR)/cpp_build/$(BUILD_TYPE) \ VERBOSE=1 \ dh_auto_install \ --sourcedirectory=cpp \ --builddirectory=cpp_build \ --buildsystem=cmake+ninja @echo " *** Building and installing R package *** $$(date '+%Y-%m-%dT%H:%M:%S')" mkdir -p debian/tmp/usr/lib/R/site-library cd r && env \ ARROW_R_DEV=true \ PKG_CONFIG="pkg-config --define-variable=prefix=$(CURDIR)/debian/tmp/usr" \ PKG_CONFIG_PATH=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig \ LD_LIBRARY_PATH=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) \ R_MAKEVARS_SITE=$(CURDIR)/debian/r-makevars.site \ VERBOSE=1 \ R CMD INSTALL $(builttimeStamp) --library=../debian/tmp/usr/lib/R/site-library/ . @echo " *** INSTALL PYTHON *** $$(date '+%Y-%m-%dT%H:%M:%S')" env Arrow_DIR=$(CURDIR)/debian/tmp/usr \ ArrowAcero_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowAcero \ ArrowCompute_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowCompute \ ArrowDataset_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowDataset \ ArrowFlight_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowFlight \ Gandiva_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/Gandiva \ Parquet_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/Parquet \ CMAKE_VERBOSE_MAKEFILE=ON \ PKG_CONFIG_PATH=cpp_build/src/arrow/release/ \ VERBOSE=1 \ dh_auto_install \ --buildsystem=pybuild \ --sourcedirectory=python \ --builddirectory=python @echo " *** Clean cache directories - whereever they are *** $$(date '+%Y-%m-%dT%H:%M:%S')" find debian/ -name __pycache__ -type d | xargs -r rm -r @echo " *** Clean cache directories - remnants in debian/tmp *** $$(date '+%Y-%m-%dT%H:%M:%S')" rm -rf debian/tmp/usr/lib/python*/dist-packages/.pytest_cache/ # Consolidate non-Python-version-specific files from python3.X/ to python3/ mkdir -p debian/tmp/usr/lib/python3/dist-packages/pyarrow/ # Bridge libs: copy from default python3.X (identical across versions), delete all cp -a debian/tmp/usr/lib/$(PY3DEFAULT)/dist-packages/pyarrow/libarrow_python*.so.* \ debian/tmp/usr/lib/python3/dist-packages/pyarrow/ find debian/tmp/usr/lib/python3.*/dist-packages/pyarrow/ \ \( -name "libarrow_python.so*" -o -name "libarrow_python_flight.so*" \) -delete # include/ and src/: move from default python3.X, delete rest mv debian/tmp/usr/lib/$(PY3DEFAULT)/dist-packages/pyarrow/include \ debian/tmp/usr/lib/python3/dist-packages/pyarrow/ rm -rf debian/tmp/usr/lib/python3.*/dist-packages/pyarrow/include mv debian/tmp/usr/lib/$(PY3DEFAULT)/dist-packages/pyarrow/src \ debian/tmp/usr/lib/python3/dist-packages/pyarrow/ rm -rf debian/tmp/usr/lib/python3.*/dist-packages/pyarrow/src override_dh_auto_test: @echo " *** Starting tests *** $$(date '+%Y-%m-%dT%H:%M:%S')" env Arrow_DIR=$(CURDIR)/debian/tmp/usr \ ArrowAcero_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowAcero \ ArrowCompute_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowCompute \ ArrowDataset_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowDataset \ ArrowFlight_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/ArrowFlight \ Gandiva_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/Gandiva \ Parquet_DIR=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/Parquet \ CMAKE_VERBOSE_MAKEFILE=ON \ VERBOSE=1 \ LD_LIBRARY_PATH=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) \ pytest || echo "E: dh_auto_test failed - error ignored." #dh_auto_test \ # --buildsystem=pybuild \ # --sourcedirectory=python || echo "E: dh_auto_test failed - error ignored." override_dh_auto_clean: dh_auto_clean \ --sourcedirectory=cpp \ --builddirectory=cpp_build dh_auto_clean \ --buildsystem=pybuild \ --sourcedirectory=python \ --builddirectory=python rm -f python/.eggs/README.txt python/pyarrow.egg-info/SOURCES.txt rm -rf .pybuild .pytest_cache rm -rf cpp_build rm -f r/src/Makevars rm -rf r_arrow_build find . -name "*bin" -type f -delete find . -name a.out -delete find r/ -name "*.o" -delete find r/ -name "*.so" -delete rm -f r/inst/*.tar.gz rm -f r/*.tar.gz override_dh_missing: #dh_missing --fail-missing dh_missing # libarrow.so: avoid failing with "Unknown DWARF DW_OP_172" # libgandiva.so: avoid failing with "Unknown DWARF DW_OP_255" # See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=949296 # plasma-store-server: avoid failing with "Unknown DWARF DW_OP_1" override_dh_dwz: dh_dwz \ --exclude=libarrow.so \ --exclude=libgandiva.so \ --exclude=plasma-store-server override_dh_makeshlibs: dh_makeshlibs -plibarrow$(SOVERSION) dh_makeshlibs -plibarrow-acero$(SOVERSION) dh_makeshlibs -plibarrow-dataset$(SOVERSION) dh_makeshlibs -plibarrow-flight$(SOVERSION) dh_makeshlibs -plibparquet$(SOVERSION) dh_makeshlibs -plibgandiva$(SOVERSION) dh_makeshlibs -ppython3-pyarrow override_dh_shlibdeps: dh_shlibdeps -Npython3-pyarrow \ -l$(CURDIR)/debian/libarrow$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libarrow-acero$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libarrow-dataset$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libarrow-flight$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libparquet$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) dh_shlibdeps -ppython3-pyarrow \ -l$(CURDIR)/debian/python3-pyarrow/usr/lib/python3/dist-packages/pyarrow \ -l$(CURDIR)/debian/libarrow$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libarrow-acero$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libarrow-dataset$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libarrow-flight$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) \ -l$(CURDIR)/debian/libparquet$(SOVERSION)/usr/lib/$(DEB_HOST_MULTIARCH) debian/upstream/signing-key.asc: # This is what I had done to create this file - please correct if erroneous wget -O - https://downloads.apache.org/arrow/KEYS | gpg --import-keys gpg --export -a > debian/upstream/signing-key.asc