|
1 |
| -FROM ibis-builder:latest |
| 1 | +FROM yum-builder:dev |
| 2 | + |
| 3 | +ENV APACHE_ARROW_VERSION="17.0.0" |
| 4 | + |
| 5 | +ENV ARROW_HOME=${APP_ROOT}/arrow-dist |
| 6 | +ENV LD_LIBRARY_PATH=${ARROW_HOME}/lib:$LD_LIBRARY_PATH |
| 7 | +ENV CMAKE_PREFIX_PATH=${ARROW_HOME}:$CMAKE_PREFIX_PATH |
| 8 | +ENV THIRD_PARTY_PATH=/tmp/hermeto-generic-output/deps/generic |
| 9 | + |
| 10 | +# configured for Arrow version 17.0.0 |
| 11 | +RUN mkdir ${APP_ROOT}/src/arrow ${ARROW_HOME} ${APP_ROOT}/src/arrow-build && \ |
| 12 | + tar xfz ${THIRD_PARTY_PATH}/apache-arrow-${APACHE_ARROW_VERSION}.tar.gz -C ${APP_ROOT}/src/arrow --strip-components=1 && \ |
| 13 | + export \ |
| 14 | + # Environment variables for an offline Arrow build |
| 15 | + ARROW_ABSL_URL="${THIRD_PARTY_PATH}/absl-20211102.0.tar.gz" \ |
| 16 | + ARROW_AWS_C_AUTH_URL="${THIRD_PARTY_PATH}/aws-c-auth-v0.6.22.tar.gz" \ |
| 17 | + ARROW_AWS_C_CAL_URL="${THIRD_PARTY_PATH}/aws-c-cal-v0.5.20.tar.gz" \ |
| 18 | + ARROW_AWS_C_COMMON_URL="${THIRD_PARTY_PATH}/aws-c-common-v0.8.9.tar.gz" \ |
| 19 | + ARROW_AWS_C_COMPRESSION_URL="${THIRD_PARTY_PATH}/aws-c-compression-v0.2.16.tar.gz" \ |
| 20 | + ARROW_AWS_C_EVENT_STREAM_URL="${THIRD_PARTY_PATH}/aws-c-event-stream-v0.2.18.tar.gz" \ |
| 21 | + ARROW_AWS_C_HTTP_URL="${THIRD_PARTY_PATH}/aws-c-http-v0.7.3.tar.gz" \ |
| 22 | + ARROW_AWS_C_IO_URL="${THIRD_PARTY_PATH}/aws-c-io-v0.13.14.tar.gz" \ |
| 23 | + ARROW_AWS_C_MQTT_URL="${THIRD_PARTY_PATH}/aws-c-mqtt-v0.8.4.tar.gz" \ |
| 24 | + ARROW_AWS_C_S3_URL="${THIRD_PARTY_PATH}/aws-c-s3-v0.2.3.tar.gz" \ |
| 25 | + ARROW_AWS_C_SDKUTILS_URL="${THIRD_PARTY_PATH}/aws-c-sdkutils-v0.1.6.tar.gz" \ |
| 26 | + ARROW_AWS_CHECKSUMS_URL="${THIRD_PARTY_PATH}/aws-checksums-v0.1.13.tar.gz" \ |
| 27 | + ARROW_AWS_CRT_CPP_URL="${THIRD_PARTY_PATH}/aws-crt-cpp-v0.18.16.tar.gz" \ |
| 28 | + ARROW_AWS_LC_URL="${THIRD_PARTY_PATH}/aws-lc-v1.3.0.tar.gz" \ |
| 29 | + ARROW_AWSSDK_URL="${THIRD_PARTY_PATH}/aws-sdk-cpp-1.10.55.tar.gz" \ |
| 30 | + ARROW_BOOST_URL="${THIRD_PARTY_PATH}/boost-1.81.0.tar.gz" \ |
| 31 | + ARROW_BROTLI_URL="${THIRD_PARTY_PATH}/brotli-v1.0.9.tar.gz" \ |
| 32 | + ARROW_BZIP2_URL="${THIRD_PARTY_PATH}/bzip2-1.0.8.tar.gz" \ |
| 33 | + ARROW_CARES_URL="${THIRD_PARTY_PATH}/cares-1.17.2.tar.gz" \ |
| 34 | + ARROW_CRC32C_URL="${THIRD_PARTY_PATH}/crc32c-1.1.2.tar.gz" \ |
| 35 | + ARROW_GBENCHMARK_URL="${THIRD_PARTY_PATH}/gbenchmark-v1.8.3.tar.gz" \ |
| 36 | + ARROW_GFLAGS_URL="${THIRD_PARTY_PATH}/gflags-v2.2.2.tar.gz" \ |
| 37 | + ARROW_GLOG_URL="${THIRD_PARTY_PATH}/glog-v0.5.0.tar.gz" \ |
| 38 | + ARROW_GOOGLE_CLOUD_CPP_URL="${THIRD_PARTY_PATH}/google-cloud-cpp-v2.22.0.tar.gz" \ |
| 39 | + ARROW_GRPC_URL="${THIRD_PARTY_PATH}/grpc-v1.46.3.tar.gz" \ |
| 40 | + ARROW_GTEST_URL="${THIRD_PARTY_PATH}/gtest-1.11.0.tar.gz" \ |
| 41 | + ARROW_JEMALLOC_URL="${THIRD_PARTY_PATH}/jemalloc-5.3.0.tar.bz2" \ |
| 42 | + ARROW_LZ4_URL="${THIRD_PARTY_PATH}/lz4-v1.9.4.tar.gz" \ |
| 43 | + ARROW_MIMALLOC_URL="${THIRD_PARTY_PATH}/mimalloc-v2.0.6.tar.gz" \ |
| 44 | + ARROW_NLOHMANN_JSON_URL="${THIRD_PARTY_PATH}/nlohmann-json-v3.10.5.tar.gz" \ |
| 45 | + ARROW_OPENTELEMETRY_URL="${THIRD_PARTY_PATH}/opentelemetry-cpp-v1.13.0.tar.gz" \ |
| 46 | + ARROW_OPENTELEMETRY_PROTO_URL="${THIRD_PARTY_PATH}/opentelemetry-proto-v0.17.0.tar.gz" \ |
| 47 | + ARROW_ORC_URL="${THIRD_PARTY_PATH}/orc-2.0.1.tar.gz" \ |
| 48 | + ARROW_PROTOBUF_URL="${THIRD_PARTY_PATH}/protobuf-v21.3.tar.gz" \ |
| 49 | + ARROW_RAPIDJSON_URL="${THIRD_PARTY_PATH}/rapidjson-232389d4f1012dddec4ef84861face2d2ba85709.tar.gz" \ |
| 50 | + ARROW_RE2_URL="${THIRD_PARTY_PATH}/re2-2022-06-01.tar.gz" \ |
| 51 | + ARROW_S2N_TLS_URL="${THIRD_PARTY_PATH}/s2n-v1.3.35.tar.gz" \ |
| 52 | + ARROW_SUBSTRAIT_URL="${THIRD_PARTY_PATH}/substrait-0.44.0.tar.gz" \ |
| 53 | + ARROW_SNAPPY_URL="${THIRD_PARTY_PATH}/snappy-1.1.10.tar.gz" \ |
| 54 | + ARROW_THRIFT_URL="${THIRD_PARTY_PATH}/thrift-0.16.0.tar.gz" \ |
| 55 | + ARROW_UCX_URL="${THIRD_PARTY_PATH}/ucx-1.12.1.tar.gz" \ |
| 56 | + ARROW_UTF8PROC_URL="${THIRD_PARTY_PATH}/utf8proc-v2.7.0.tar.gz" \ |
| 57 | + ARROW_XSIMD_URL="${THIRD_PARTY_PATH}/xsimd-13.0.0.tar.gz" \ |
| 58 | + ARROW_ZLIB_URL="${THIRD_PARTY_PATH}/zlib-1.3.1.tar.gz" \ |
| 59 | + ARROW_ZSTD_URL="${THIRD_PARTY_PATH}/zstd-1.5.6.tar.gz" \ |
| 60 | + && \ |
| 61 | + cmake \ |
| 62 | + -DCMAKE_INSTALL_PREFIX=$ARROW_HOME \ |
| 63 | + -DARROW_COMPUTE=ON \ |
| 64 | + -DARROW_ACERO=ON \ |
| 65 | + -DARROW_WITH_BROTLI=ON \ |
| 66 | + -DARROW_WITH_BZ2=ON \ |
| 67 | + -DARROW_CSV=ON \ |
| 68 | + -DARROW_DATASET=ON \ |
| 69 | + -DARROW_FILESYSTEM=ON \ |
| 70 | + -DARROW_FLIGHT=ON \ |
| 71 | + -DARROW_FLIGHT_SQL=ON \ |
| 72 | + -DARROW_GANDIVA=ON \ |
| 73 | + -DARROW_GCS=ON \ |
| 74 | + -DARROW_HDFS=ON \ |
| 75 | + -DARROW_JEMALLOC=ON \ |
| 76 | + -DARROW_JSON=ON \ |
| 77 | + -DARROW_WITH_LZ4=ON \ |
| 78 | + -DARROW_MIMALLOC=ON \ |
| 79 | + -DARROW_PARQUET=ON \ |
| 80 | + -DARROW_S3=ON \ |
| 81 | + -DARROW_WITH_SNAPPY=ON \ |
| 82 | + -DARROW_SUBSTRAIT=ON \ |
| 83 | + -DARROW_WITH_RE2=ON \ |
| 84 | + -DARROW_WITH_UTF8PROC=ON \ |
| 85 | + -DARROW_TENSORFLOW=ON \ |
| 86 | + -DARROW_WITH_ZLIB=ON \ |
| 87 | + -DARROW_WITH_ZSTD=ON \ |
| 88 | + -DARROW_BUILD_SHARED=ON \ |
| 89 | + -S ${APP_ROOT}/src/arrow/cpp \ |
| 90 | + -B ${APP_ROOT}/src/arrow-build && \ |
| 91 | + \ |
| 92 | + cmake --build ${APP_ROOT}/src/arrow-build --target install && \ |
| 93 | + \ |
| 94 | + source /tmp/hermeto.env && \ |
| 95 | + pip install -r ${APP_ROOT}/src/arrow/python/requirements-wheel-build.txt && \ |
| 96 | + \ |
| 97 | + cd ${APP_ROOT}/src/arrow/python && \ |
| 98 | + PYARROW_PARALLEL=4 python setup.py build_ext --bundle-arrow-cpp bdist_wheel && \ |
| 99 | + pip install dist/pyarrow-*.whl && \ |
| 100 | + \ |
| 101 | + cd ${APP_ROOT}/src && \ |
| 102 | + rm -rf ${APP_ROOT}/src/arrow-build ${APP_ROOT}/src/arrow ${ARROW_HOME} |
| 103 | + |
| 104 | +RUN python -c "import pyarrow; print(pyarrow.__version__)" |
| 105 | +RUN python -c "import pyarrow.lib as _lib; print(_lib.__name__)" |
| 106 | +RUN python -c "import pyarrow.parquet as parquet; print(parquet.__name__)" |
| 107 | +RUN python -c "import pyarrow.dataset as dataset; print(dataset.__name__)" |
| 108 | +RUN python -c "import pyarrow.flight as flight; print(flight.__name__)" |
| 109 | +RUN python -c "import pyarrow.substrait as substrait; print(substrait.__name__)" |
| 110 | + |
| 111 | +# a higher numpy was required for the pyarrow wheel build, but the pyarrow module itself can run w/ a lesser version, "numpy>=1.16.6". |
| 112 | +# feast requires "numpy<2", so here we install numpy 1.x, as well as some other packages which will be needed for the feast build. |
| 113 | +RUN source /tmp/hermeto.env && \ |
| 114 | + pip install "numpy>=1.16.6,<2" |
| 115 | + |
| 116 | +RUN cd ${APP_ROOT}/src/ibis && \ |
| 117 | + source /tmp/hermeto.env && \ |
| 118 | + pip install .[duckdb] && \ |
| 119 | + cd ${APP_ROOT}/src && \ |
| 120 | + rm -rf ${APP_ROOT}/src/ibis |
2 | 121 |
|
3 | 122 | # This section only necessary when building from local feast source ... e.g. ".[minimal]"
|
4 | 123 | ########################
|
|
0 commit comments