|
| 1 | +FROM public.ecr.aws/lambda/ruby:3.2 |
| 2 | + |
| 3 | +RUN yum swap -y openssl-snapsafe-libs openssl-libs |
| 4 | + |
| 5 | +RUN yum groupinstall -y "Development Tools" && \ |
| 6 | + yum install -y \ |
| 7 | + make gcc gcc-c++ \ |
| 8 | + libcurl-devel \ |
| 9 | + mariadb-devel \ |
| 10 | + libffi-devel \ |
| 11 | + xz \ |
| 12 | + cmake3 \ |
| 13 | + git \ |
| 14 | + wget \ |
| 15 | + boost-devel \ |
| 16 | + python3-devel \ |
| 17 | + epel-release \ |
| 18 | + pkg-config \ |
| 19 | + gobject-introspection \ |
| 20 | + gobject-introspection-devel \ |
| 21 | + arrow \ |
| 22 | + arrow-libs \ |
| 23 | + arrow-glib \ |
| 24 | + arrow-glib-devel \ |
| 25 | + parquet-libs \ |
| 26 | + parquet-glib \ |
| 27 | + parquet-glib-devel \ |
| 28 | + gtk-doc \ |
| 29 | + glib2-devel |
| 30 | + |
| 31 | +RUN yum install -y python3-pip |
| 32 | + |
| 33 | +RUN pip3 install meson ninja |
| 34 | + |
| 35 | +# Download Apache Arrow source once and extract it |
| 36 | +RUN cd /tmp && \ |
| 37 | + wget https://github.com/apache/arrow/archive/refs/tags/apache-arrow-19.0.0.tar.gz && \ |
| 38 | + tar xf apache-arrow-19.0.0.tar.gz |
| 39 | + |
| 40 | +# Build Arrow C++ libraries |
| 41 | +# These provide core Arrow functionality including Parquet support |
| 42 | +RUN cd /tmp/arrow-apache-arrow-19.0.0/cpp && \ |
| 43 | + mkdir build && \ |
| 44 | + cd build && \ |
| 45 | + cmake3 .. \ |
| 46 | + -DARROW_PARQUET=ON \ |
| 47 | + -DARROW_DATASET=ON \ |
| 48 | + -DARROW_WITH_SNAPPY=ON \ |
| 49 | + -DARROW_WITH_ZLIB=ON \ |
| 50 | + -DARROW_WITH_ZSTD=ON \ |
| 51 | + -DARROW_WITH_LZ4=ON \ |
| 52 | + -DARROW_WITH_BROTLI=ON \ |
| 53 | + -DARROW_COMPUTE=ON \ |
| 54 | + -DARROW_CSV=ON \ |
| 55 | + -DARROW_JSON=ON \ |
| 56 | + -DCMAKE_INSTALL_PREFIX=/usr \ |
| 57 | + -DCMAKE_INSTALL_LIBDIR=lib64 && \ |
| 58 | + make -j$(nproc) && \ |
| 59 | + make install && \ |
| 60 | + /sbin/ldconfig |
| 61 | + |
| 62 | +# Build Arrow GLib bindings |
| 63 | +# These are required for Ruby to interface with the C++ libraries |
| 64 | +RUN cd /tmp/arrow-apache-arrow-19.0.0/c_glib && \ |
| 65 | + meson build --prefix=/usr --libdir=lib64 && \ |
| 66 | + cd build && \ |
| 67 | + ninja && \ |
| 68 | + ninja install && \ |
| 69 | + cd /tmp && \ |
| 70 | + rm -rf arrow-apache-arrow-19.0.0 apache-arrow-19.0.0.tar.gz && \ |
| 71 | + /sbin/ldconfig |
| 72 | + |
| 73 | +ENV PKG_CONFIG_PATH=/usr/lib64/pkgconfig \ |
| 74 | + LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH \ |
| 75 | + ARROW_HOME=/usr |
| 76 | + |
| 77 | +RUN yum install -y amazon-linux-extras && \ |
| 78 | + amazon-linux-extras install epel -y |
0 commit comments