Skip to content

Commit eeb3f5b

Browse files
committed
BDX-1340: complete Parquet SDK static link dependencies
1 parent 36b7a84 commit eeb3f5b

3 files changed

Lines changed: 44 additions & 4 deletions

File tree

‎.github/workflows/jarbuild.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ jobs:
185185
matrix:
186186
platform:
187187
- { runs_on: macos-15, arch: "aarch_64" }
188+
- { runs_on: macos-15-intel, arch: "x86_64" }
188189
env:
189190
MACOSX_DEPLOYMENT_TARGET: "15.0"
190191
steps:

‎ci/scripts/jni_build.sh‎

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,17 @@ if [ -n "${5:-}" ]; then
109109
echo "Missing installed Parquet pkg-config metadata" >&2
110110
exit 1
111111
fi
112-
export PKG_CONFIG_PATH="$(dirname "${parquet_metadata}"):${6:+${6}:}${PKG_CONFIG_PATH:-}"
113-
library_flags=$(pkg-config --static --libs-only-L parquet arrow-compute)
112+
PKG_CONFIG_PATH="$(dirname "${parquet_metadata}"):${6:+${6}:}${PKG_CONFIG_PATH:-}"
113+
export PKG_CONFIG_PATH
114+
packages=(parquet arrow-compute)
115+
for dependency in re2 thrift liblz4 libzstd libutf8proc; do
116+
if pkg-config --exists "${dependency}"; then
117+
packages+=("${dependency}")
118+
fi
119+
done
120+
library_flags=$(pkg-config --static --libs-only-L "${packages[@]}")
114121
read -ra library_dirs <<<"${library_flags}"
115-
library_flags=$(pkg-config --static --libs parquet arrow-compute)
122+
library_flags=$(pkg-config --static --libs "${packages[@]}")
116123
read -ra libraries <<<"${library_flags}"
117124
cpp_version=$(pkg-config --modversion parquet)
118125
link_flags=()
@@ -163,5 +170,37 @@ Version: ${cpp_version}
163170
Libs: -L\${libdir} ${link_flags[*]}
164171
Cflags: -I\${includedir} -DARROW_STATIC -DARROW_COMPUTE_STATIC -DPARQUET_STATIC
165172
EOF
173+
github_actions_group_begin "Verify staged Arrow Parquet SDK"
174+
cat >"${build_dir}/parquet_sdk_smoke.cc" <<'EOF'
175+
#include <arrow/api.h>
176+
#include <arrow/compute/initialize.h>
177+
#include <arrow/io/api.h>
178+
#include <parquet/arrow/reader.h>
179+
#include <parquet/arrow/writer.h>
180+
181+
int main() {
182+
if (!arrow::compute::Initialize().ok()) return 1;
183+
arrow::Int64Builder builder;
184+
if (!builder.Append(42).ok()) return 1;
185+
auto values = builder.Finish().ValueOrDie();
186+
auto table = arrow::Table::Make(arrow::schema({arrow::field("value", arrow::int64())}), {values});
187+
for (auto codec : {parquet::Compression::SNAPPY, parquet::Compression::GZIP,
188+
parquet::Compression::ZSTD}) {
189+
auto output = arrow::io::BufferOutputStream::Create().ValueOrDie();
190+
auto properties = parquet::WriterProperties::Builder().compression(codec)->build();
191+
if (!parquet::arrow::WriteTable(*table, arrow::default_memory_pool(), output, 1,
192+
properties).ok()) return 1;
193+
auto input = std::make_shared<arrow::io::BufferReader>(output->Finish().ValueOrDie());
194+
auto reader = parquet::arrow::OpenFile(input, arrow::default_memory_pool()).ValueOrDie();
195+
std::shared_ptr<arrow::Table> actual;
196+
if (!reader->ReadTable(&actual).ok() || !table->Equals(*actual)) return 1;
197+
}
198+
}
199+
EOF
200+
smoke_flags=$(PKG_CONFIG_PATH='' PKG_CONFIG_LIBDIR="${package_dir}/lib/pkgconfig" pkg-config --cflags --libs arrow-parquet)
201+
read -ra smoke_options <<<"${smoke_flags}"
202+
"${CXX:-c++}" -std=c++20 "${build_dir}/parquet_sdk_smoke.cc" "${smoke_options[@]}" -o "${build_dir}/parquet_sdk_smoke"
203+
"${build_dir}/parquet_sdk_smoke"
204+
github_actions_group_end
166205
github_actions_group_end
167206
fi

‎ci/scripts/jni_full_build.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ popd
8787
github_actions_group_begin "Prepare artifacts"
8888
version=$(python3 -c 'import sys, xml.etree.ElementTree as ET; print(ET.parse(sys.argv[1]).getroot().find("{http://maven.apache.org/POM/4.0.0}version").text)' "${source_dir}/pom.xml")
8989
parquet_artifact="${dist_dir}/arrow-parquet-${version}"
90-
for platform in linux-x86_64 linux-aarch_64 osx-aarch_64; do
90+
for platform in linux-x86_64 linux-aarch_64 osx-aarch_64 osx-x86_64; do
9191
package_dir="${jni_build_dir}/arrow_parquet/${platform}"
9292
test -f "${package_dir}/lib/pkgconfig/arrow-parquet.pc"
9393
cmp "${jni_build_dir}/arrow_parquet/linux-x86_64/ARROW_CPP_REVISION" "${package_dir}/ARROW_CPP_REVISION"

0 commit comments

Comments
 (0)