From f3a0ea5c015b67ed47bd389153bdbca488ceeee4 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 30 Apr 2024 19:25:55 -0400 Subject: [PATCH 01/22] Add Meson build with Werror --- .github/workflows/build-and-test.yaml | 32 ++++++++++++ .github/workflows/meson-build.yaml | 66 ------------------------- ci/scripts/build-with-meson.sh | 2 +- src/nanoarrow/array_test.cc | 3 +- src/nanoarrow/buffer_test.cc | 4 +- src/nanoarrow/nanoarrow_testing_test.cc | 2 +- 6 files changed, 37 insertions(+), 72 deletions(-) delete mode 100644 .github/workflows/meson-build.yaml diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 0191b97c6..949ede4f9 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -122,3 +122,35 @@ jobs: with: name: nanoarrow-memcheck path: build/Testing/Temporary/MemoryChecker.*.log + + verify-meson: + name: meson-build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install system dependencies + run: | + sudo apt-get update && sudo apt-get install -y lcov ninja-build valgrind + + - name: Install meson + run: | + python3 -m pip install meson + + - name: Cache Arrow C++ Build + id: cache-arrow-build + uses: actions/cache@v4 + with: + path: arrow + # Bump the number at the end of this line to force a new Arrow C++ build + key: arrow-meson-build-10 + + - name: Build Arrow C++ + if: steps.cache-arrow-build.outputs.cache-hit != 'true' + shell: bash + run: | + ci/scripts/build-arrow-cpp-minimal.sh 16.0.0 arrow + + - name: Run meson testing script + run: | + PKG_CONFIG_PATH="$(pwd)/arrow/lib/pkgconfig" ci/scripts/build-with-meson.sh diff --git a/.github/workflows/meson-build.yaml b/.github/workflows/meson-build.yaml deleted file mode 100644 index 5f06b707b..000000000 --- a/.github/workflows/meson-build.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -name: Meson Build Testing - -on: - schedule: - - cron: '5 0 * * 0' - pull_request: - branches: - - main - paths: - - '**meson.build' - - 'meson.options' - - '.github/workflows/meson-build.yaml' - - 'ci/scripts/build-with-meson.sh' - -permissions: - contents: read - -jobs: - verify-meson: - name: meson-build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install system dependencies - run: | - sudo apt-get update && sudo apt-get install -y lcov ninja-build valgrind - - - name: Install meson - run: | - python3 -m pip install meson - - - name: Cache Arrow C++ Build - id: cache-arrow-build - uses: actions/cache@v4 - with: - path: arrow - # Bump the number at the end of this line to force a new Arrow C++ build - key: arrow-meson-build-10 - - - name: Build Arrow C++ - if: steps.cache-arrow-build.outputs.cache-hit != 'true' - shell: bash - run: | - ci/scripts/build-arrow-cpp-minimal.sh 15.0.2 arrow - - - name: Run meson testing script - run: | - PKG_CONFIG_PATH="$(pwd)/arrow/lib/pkgconfig" ci/scripts/build-with-meson.sh diff --git a/ci/scripts/build-with-meson.sh b/ci/scripts/build-with-meson.sh index cd552f21f..81829d5df 100755 --- a/ci/scripts/build-with-meson.sh +++ b/ci/scripts/build-with-meson.sh @@ -72,7 +72,7 @@ function main() { meson wrap install nlohmann_json show_header "Compile project with meson" - meson setup "${SANDBOX_DIR}" --pkg-config-path $PKG_CONFIG_PATH + meson setup "${SANDBOX_DIR}" --pkg-config-path $PKG_CONFIG_PATH -Dwerror=true pushd "${SANDBOX_DIR}" diff --git a/src/nanoarrow/array_test.cc b/src/nanoarrow/array_test.cc index 53116c058..828f25157 100644 --- a/src/nanoarrow/array_test.cc +++ b/src/nanoarrow/array_test.cc @@ -191,7 +191,6 @@ TEST(ArrayTest, ArrayTestSetBuffer) { TEST(ArrayTest, ArrayTestBuildByBuffer) { // the array ["a", null, "bc", null, "def", null, "ghij"] uint8_t validity_bitmap[] = {0x55}; - int8_t validity_array[] = {1, 0, 1, 0, 1, 0, 1}; int32_t offsets[] = {0, 1, 1, 3, 3, 6, 6, 10, 10}; const char* data = "abcdefghij"; @@ -200,7 +199,7 @@ TEST(ArrayTest, ArrayTestBuildByBuffer) { ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRING), NANOARROW_OK); ASSERT_EQ(ArrowBitmapReserve(ArrowArrayValidityBitmap(&array), 100), NANOARROW_OK); - ArrowBitmapAppendInt8Unsafe(ArrowArrayValidityBitmap(&array), validity_array, 7); + ArrowBitmapAppendInt8Unsafe(ArrowArrayValidityBitmap(&array), {1, 0, 1, 0, 1, 0, 1}, 7); ASSERT_EQ(ArrowBufferReserve(ArrowArrayBuffer(&array, 1), 100), NANOARROW_OK); ArrowBufferAppendUnsafe(ArrowArrayBuffer(&array, 1), offsets, 8 * sizeof(int32_t)); diff --git a/src/nanoarrow/buffer_test.cc b/src/nanoarrow/buffer_test.cc index 5c14161db..6b5a979d3 100644 --- a/src/nanoarrow/buffer_test.cc +++ b/src/nanoarrow/buffer_test.cc @@ -142,7 +142,7 @@ TEST(BufferTest, BufferTestFill) { ArrowBufferReset(&buffer); - EXPECT_EQ(ArrowBufferAppendFill(&buffer, 0, std::numeric_limits::max()), + EXPECT_EQ(ArrowBufferAppendFill(nullptr, 0, std::numeric_limits::max()), ENOMEM); } @@ -171,7 +171,7 @@ TEST(BufferTest, BufferTestError) { ArrowBufferInit(&buffer); EXPECT_EQ(ArrowBufferResize(&buffer, std::numeric_limits::max(), false), ENOMEM); - EXPECT_EQ(ArrowBufferAppend(&buffer, nullptr, std::numeric_limits::max()), + EXPECT_EQ(ArrowBufferAppend(nullptr, &buffer, std::numeric_limits::max()), ENOMEM); ASSERT_EQ(ArrowBufferAppend(&buffer, "abcd", 4), NANOARROW_OK); diff --git a/src/nanoarrow/nanoarrow_testing_test.cc b/src/nanoarrow/nanoarrow_testing_test.cc index 884210a67..ebd1853a5 100644 --- a/src/nanoarrow/nanoarrow_testing_test.cc +++ b/src/nanoarrow/nanoarrow_testing_test.cc @@ -470,7 +470,7 @@ TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldMetadata) { NANOARROW_RETURN_NOT_OK(ArrowSchemaSetMetadata(schema, "\0\0\0\0")); return NANOARROW_OK; }, - [](ArrowArray* array) { return NANOARROW_OK; }, &WriteFieldJSON, + [](ArrowArray*) { return NANOARROW_OK; }, &WriteFieldJSON, R"({"name": null, "nullable": true, "type": {"name": "null"}, "children": []})", [](TestingJSONWriter& writer) { writer.set_include_metadata(false); }); } From 6c7da1190d5b3c0ea22992c23d953082b7c1192a Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 30 Apr 2024 19:59:08 -0400 Subject: [PATCH 02/22] Revert array_test.ccc --- src/nanoarrow/array_test.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/nanoarrow/array_test.cc b/src/nanoarrow/array_test.cc index 828f25157..53116c058 100644 --- a/src/nanoarrow/array_test.cc +++ b/src/nanoarrow/array_test.cc @@ -191,6 +191,7 @@ TEST(ArrayTest, ArrayTestSetBuffer) { TEST(ArrayTest, ArrayTestBuildByBuffer) { // the array ["a", null, "bc", null, "def", null, "ghij"] uint8_t validity_bitmap[] = {0x55}; + int8_t validity_array[] = {1, 0, 1, 0, 1, 0, 1}; int32_t offsets[] = {0, 1, 1, 3, 3, 6, 6, 10, 10}; const char* data = "abcdefghij"; @@ -199,7 +200,7 @@ TEST(ArrayTest, ArrayTestBuildByBuffer) { ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRING), NANOARROW_OK); ASSERT_EQ(ArrowBitmapReserve(ArrowArrayValidityBitmap(&array), 100), NANOARROW_OK); - ArrowBitmapAppendInt8Unsafe(ArrowArrayValidityBitmap(&array), {1, 0, 1, 0, 1, 0, 1}, 7); + ArrowBitmapAppendInt8Unsafe(ArrowArrayValidityBitmap(&array), validity_array, 7); ASSERT_EQ(ArrowBufferReserve(ArrowArrayBuffer(&array, 1), 100), NANOARROW_OK); ArrowBufferAppendUnsafe(ArrowArrayBuffer(&array, 1), offsets, 8 * sizeof(int32_t)); From 63c2231244394ae1997b9bf6397fbeb335ab0864 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 1 May 2024 13:26:15 -0400 Subject: [PATCH 03/22] Try main for now --- ci/scripts/build-arrow-cpp-minimal.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index ff0238be7..d0eb45387 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -45,7 +45,7 @@ ARROW_CPP_SCRATCH_DIR="arrow-cpp-build-${ARROW_CPP_VERSION}" mkdir "${ARROW_CPP_SCRATCH_DIR}" pushd "${ARROW_CPP_SCRATCH_DIR}" -curl -L "https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${ARROW_CPP_VERSION}/apache-arrow-${ARROW_CPP_VERSION}.tar.gz" | \ +curl -L "https://github.com/apache/arrow/archive/refs/heads/main.tar.gz" | \ tar -zxf - mkdir build && cd build cmake ../apache-arrow-${ARROW_CPP_VERSION}/cpp \ From 80c5923173ada1c6f352db08c41534f5c1640620 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 1 May 2024 13:30:03 -0400 Subject: [PATCH 04/22] Force new build --- .github/workflows/build-and-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 32d0c1481..d0c0494c5 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -143,7 +143,7 @@ jobs: with: path: arrow # Bump the number at the end of this line to force a new Arrow C++ build - key: arrow-${{ runner.os }}-${{ runner.arch }}-1 + key: arrow-${{ runner.os }}-${{ runner.arch }}-2 - name: Build Arrow C++ if: steps.cache-arrow-build.outputs.cache-hit != 'true' From d204fb18538904d69179418ed458aeda2b4c24c3 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 1 May 2024 13:40:40 -0400 Subject: [PATCH 05/22] More updates to CI --- ci/scripts/build-arrow-cpp-minimal.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index d0eb45387..3b052c8af 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -48,7 +48,7 @@ pushd "${ARROW_CPP_SCRATCH_DIR}" curl -L "https://github.com/apache/arrow/archive/refs/heads/main.tar.gz" | \ tar -zxf - mkdir build && cd build -cmake ../apache-arrow-${ARROW_CPP_VERSION}/cpp \ +cmake ../arrow-main/cpp \ -DCMAKE_BUILD_TYPE=Debug \ -DARROW_JEMALLOC=OFF \ -DARROW_SIMD_LEVEL=NONE \ From 05089a9017553f8bfdd22d3a50ce3ec8f3c7d114 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 15 May 2024 13:26:38 -0400 Subject: [PATCH 06/22] Try clean warning branch --- ci/scripts/build-arrow-cpp-minimal.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index 3b052c8af..235f0e370 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -45,7 +45,7 @@ ARROW_CPP_SCRATCH_DIR="arrow-cpp-build-${ARROW_CPP_VERSION}" mkdir "${ARROW_CPP_SCRATCH_DIR}" pushd "${ARROW_CPP_SCRATCH_DIR}" -curl -L "https://github.com/apache/arrow/archive/refs/heads/main.tar.gz" | \ +curl -L "https://github.com/WillAyd/arrow/archive/refs/heads/more-redundant-move-cleanup.tar.gz" | \ tar -zxf - mkdir build && cd build cmake ../arrow-main/cpp \ From 6a290317319eed30454edd2370321506dedefce0 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 15 May 2024 13:35:14 -0400 Subject: [PATCH 07/22] fix directory --- ci/scripts/build-arrow-cpp-minimal.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index 235f0e370..99898d5ab 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -48,7 +48,7 @@ pushd "${ARROW_CPP_SCRATCH_DIR}" curl -L "https://github.com/WillAyd/arrow/archive/refs/heads/more-redundant-move-cleanup.tar.gz" | \ tar -zxf - mkdir build && cd build -cmake ../arrow-main/cpp \ +cmake ../arrow-more-redundant-move-cleanup/cpp \ -DCMAKE_BUILD_TYPE=Debug \ -DARROW_JEMALLOC=OFF \ -DARROW_SIMD_LEVEL=NONE \ From 43248be28e5d9af60dd99ef7b6ac4051b2c1c8b1 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 15 May 2024 13:53:27 -0400 Subject: [PATCH 08/22] Add explicit gmock dependency --- src/nanoarrow/meson.build | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/nanoarrow/meson.build b/src/nanoarrow/meson.build index c8bcdef77..a83892acd 100644 --- a/src/nanoarrow/meson.build +++ b/src/nanoarrow/meson.build @@ -74,10 +74,11 @@ if get_option('NANOARROW_BUILD_TESTS') arrow_dep = dependency('arrow') gtest_dep = dependency('gtest', fallback: ['gtest', 'gtest_main_dep']) + gmock_dep = dependency('gmock') utils_test = executable('utils_test', 'utils_test.cc', link_with: nanoarrow_lib, - dependencies: [arrow_dep, gtest_dep], + dependencies: [arrow_dep, gtest_dep, gmock_dep], include_directories: incdir) test('utils test', utils_test) From 456286353cabbfb7e5b1f0980d16ee78ebcf0de6 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 15 May 2024 14:08:46 -0400 Subject: [PATCH 09/22] Remove non-compiling code --- src/nanoarrow/buffer_test.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/nanoarrow/buffer_test.cc b/src/nanoarrow/buffer_test.cc index 6b5a979d3..7ba69e20a 100644 --- a/src/nanoarrow/buffer_test.cc +++ b/src/nanoarrow/buffer_test.cc @@ -171,9 +171,6 @@ TEST(BufferTest, BufferTestError) { ArrowBufferInit(&buffer); EXPECT_EQ(ArrowBufferResize(&buffer, std::numeric_limits::max(), false), ENOMEM); - EXPECT_EQ(ArrowBufferAppend(nullptr, &buffer, std::numeric_limits::max()), - ENOMEM); - ASSERT_EQ(ArrowBufferAppend(&buffer, "abcd", 4), NANOARROW_OK); EXPECT_EQ(ArrowBufferSetAllocator(&buffer, ArrowBufferAllocatorDefault()), EINVAL); From 0d91852a3303c77d06e6b63b70baef87faf6d80d Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 15 May 2024 14:12:41 -0400 Subject: [PATCH 10/22] Remove more non-compiling code --- src/nanoarrow/buffer_test.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/nanoarrow/buffer_test.cc b/src/nanoarrow/buffer_test.cc index 7ba69e20a..3cb02f279 100644 --- a/src/nanoarrow/buffer_test.cc +++ b/src/nanoarrow/buffer_test.cc @@ -141,9 +141,6 @@ TEST(BufferTest, BufferTestFill) { } ArrowBufferReset(&buffer); - - EXPECT_EQ(ArrowBufferAppendFill(nullptr, 0, std::numeric_limits::max()), - ENOMEM); } TEST(BufferTest, BufferTestResize0) { From 9f52be136f1ffaf8ce26478be24500e019656f5f Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 15 May 2024 17:24:44 -0400 Subject: [PATCH 11/22] Wreorder fix --- src/nanoarrow/nanoarrow.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nanoarrow/nanoarrow.hpp b/src/nanoarrow/nanoarrow.hpp index 0de2371b4..5f8aabbac 100644 --- a/src/nanoarrow/nanoarrow.hpp +++ b/src/nanoarrow/nanoarrow.hpp @@ -864,8 +864,8 @@ class ViewArrayStream { }; internal::InputRange range_; - ArrowError* error_; ArrowErrorCode* code_; + ArrowError* error_; ArrowError internal_error_ = {}; ArrowErrorCode internal_code_; bool code_was_accessed_ = false; From d0fab898bca0bebb644d4dc212b8e06bc85c72a3 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Fri, 24 May 2024 12:40:38 -0400 Subject: [PATCH 12/22] Point to Arrow main --- ci/scripts/build-arrow-cpp-minimal.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index 99898d5ab..6a2bd389c 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -45,10 +45,10 @@ ARROW_CPP_SCRATCH_DIR="arrow-cpp-build-${ARROW_CPP_VERSION}" mkdir "${ARROW_CPP_SCRATCH_DIR}" pushd "${ARROW_CPP_SCRATCH_DIR}" -curl -L "https://github.com/WillAyd/arrow/archive/refs/heads/more-redundant-move-cleanup.tar.gz" | \ +curl -L "https://github.com/WillAyd/arrow/archive/refs/heads/main.tar.gz" | \ tar -zxf - mkdir build && cd build -cmake ../arrow-more-redundant-move-cleanup/cpp \ +cmake ../main/cpp \ -DCMAKE_BUILD_TYPE=Debug \ -DARROW_JEMALLOC=OFF \ -DARROW_SIMD_LEVEL=NONE \ From bf6b20fab0afb4f11a1413e89bc1a862879cf33e Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Fri, 24 May 2024 12:43:07 -0400 Subject: [PATCH 13/22] URL fix --- ci/scripts/build-arrow-cpp-minimal.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index 6a2bd389c..8a1ff3444 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -45,7 +45,7 @@ ARROW_CPP_SCRATCH_DIR="arrow-cpp-build-${ARROW_CPP_VERSION}" mkdir "${ARROW_CPP_SCRATCH_DIR}" pushd "${ARROW_CPP_SCRATCH_DIR}" -curl -L "https://github.com/WillAyd/arrow/archive/refs/heads/main.tar.gz" | \ +curl -L "https://github.com/apache/arrow/archive/refs/heads/main.tar.gz" | \ tar -zxf - mkdir build && cd build cmake ../main/cpp \ From f1497081f4aa7a2fa56546457536b00185a30a0d Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Fri, 24 May 2024 12:45:21 -0400 Subject: [PATCH 14/22] path fix --- ci/scripts/build-arrow-cpp-minimal.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index 8a1ff3444..3b052c8af 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -48,7 +48,7 @@ pushd "${ARROW_CPP_SCRATCH_DIR}" curl -L "https://github.com/apache/arrow/archive/refs/heads/main.tar.gz" | \ tar -zxf - mkdir build && cd build -cmake ../main/cpp \ +cmake ../arrow-main/cpp \ -DCMAKE_BUILD_TYPE=Debug \ -DARROW_JEMALLOC=OFF \ -DARROW_SIMD_LEVEL=NONE \ From 85dbccf3ce833df5353e29b8ec30a577cd6ad825 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 18 Jun 2024 18:07:48 -0400 Subject: [PATCH 15/22] include fix --- meson.build | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 5667492d9..f89c53401 100644 --- a/meson.build +++ b/meson.build @@ -62,18 +62,19 @@ else libtype = 'library' endif +incdir = include_directories('src/') + nanoarrow_lib = build_target( 'nanoarrow', 'src/nanoarrow/array.c', 'src/nanoarrow/schema.c', 'src/nanoarrow/array_stream.c', 'src/nanoarrow/utils.c', + include_directories: [incdir], install: true, target_type: libtype, ) -incdir = include_directories('src/') - nanoarrow_dep = declare_dependency(include_directories: [incdir], link_with: nanoarrow_lib) From 55b98f1873df3b4743dde12495dd6f0e1c4ca133 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 18 Jun 2024 18:27:41 -0400 Subject: [PATCH 16/22] UNUSED macro --- src/nanoarrow/nanoarrow_device.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/nanoarrow/nanoarrow_device.c b/src/nanoarrow/nanoarrow_device.c index a2ce46655..6d8da1cd7 100644 --- a/src/nanoarrow/nanoarrow_device.c +++ b/src/nanoarrow/nanoarrow_device.c @@ -135,6 +135,7 @@ struct ArrowDevice* ArrowDeviceCuda(ArrowDeviceType device_type, int64_t device_ #endif struct ArrowDevice* ArrowDeviceResolve(ArrowDeviceType device_type, int64_t device_id) { + NANOARROW_UNUSED(device_id); if (device_type == ARROW_DEVICE_CPU) { return ArrowDeviceCpu(); } From aa0c74b7ee73273b1428888c0020b19bea17a126 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Fri, 28 Jun 2024 10:54:48 -0400 Subject: [PATCH 17/22] Remove unused parameter warnings --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 73c44c5ba..ff742e655 100644 --- a/meson.build +++ b/meson.build @@ -30,7 +30,7 @@ project( ) if meson.get_compiler('cpp').get_id() == 'gcc' or meson.get_compiler('cpp').get_id() == 'clang' - add_project_arguments(['-fvisibility=hidden'], language: 'cpp') + add_project_arguments(['-fvisibility=hidden', '-Wno-unused-parameter'], language: 'cpp') endif nanoarrow_dep_args = [] From 0dfa1e07b118cf1226641d3e323a8ab6fad852c1 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 28 Aug 2024 21:55:38 -0400 Subject: [PATCH 18/22] Suppress arrow build warnings --- ci/scripts/build-arrow-cpp-minimal.sh | 4 ++-- meson.build | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ci/scripts/build-arrow-cpp-minimal.sh b/ci/scripts/build-arrow-cpp-minimal.sh index 3b052c8af..ff0238be7 100755 --- a/ci/scripts/build-arrow-cpp-minimal.sh +++ b/ci/scripts/build-arrow-cpp-minimal.sh @@ -45,10 +45,10 @@ ARROW_CPP_SCRATCH_DIR="arrow-cpp-build-${ARROW_CPP_VERSION}" mkdir "${ARROW_CPP_SCRATCH_DIR}" pushd "${ARROW_CPP_SCRATCH_DIR}" -curl -L "https://github.com/apache/arrow/archive/refs/heads/main.tar.gz" | \ +curl -L "https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${ARROW_CPP_VERSION}/apache-arrow-${ARROW_CPP_VERSION}.tar.gz" | \ tar -zxf - mkdir build && cd build -cmake ../arrow-main/cpp \ +cmake ../apache-arrow-${ARROW_CPP_VERSION}/cpp \ -DCMAKE_BUILD_TYPE=Debug \ -DARROW_JEMALLOC=OFF \ -DARROW_SIMD_LEVEL=NONE \ diff --git a/meson.build b/meson.build index ccf5b0c85..f7677e277 100644 --- a/meson.build +++ b/meson.build @@ -30,7 +30,7 @@ project( ) if meson.get_compiler('cpp').get_id() == 'gcc' or meson.get_compiler('cpp').get_id() == 'clang' - add_project_arguments(['-fvisibility=hidden', '-Wno-unused-parameter'], language: 'cpp') + add_project_arguments(['-fvisibility=hidden'], language: 'cpp') endif nanoarrow_dep_args = [] @@ -143,7 +143,8 @@ if get_option('tests') # Similarly code coverage has a built in option users should use instead # https://mesonbuild.com/Unit-tests.html#coverage - arrow_dep = dependency('arrow') + # The system include suppresses compilation warnings from Arrow + arrow_dep = dependency('arrow', include_type: 'system') gtest_dep = dependency('gtest_main') gmock_dep = dependency('gmock') nlohmann_json_dep = dependency('nlohmann_json') From 40b4cd5d27e5fc5a0574217a4c7c7963a11f58a1 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 28 Aug 2024 22:11:04 -0400 Subject: [PATCH 19/22] Fix IPC warnings --- meson.build | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meson.build b/meson.build index 8385d1588..a53cc0c50 100644 --- a/meson.build +++ b/meson.build @@ -35,6 +35,12 @@ project( # add_project_arguments(['-fvisibility=hidden'], language: 'cpp') # endif +cpp = meson.get_compiler('cpp') +add_project_arguments( + cpp.get_supported_arguments(['-Wno-misleading-indentation']), + language : 'cpp' +) + nanoarrow_dep_args = [] if host_machine.system() == 'windows' and get_option('default_library') == 'shared' add_project_arguments(['-DNANOARROW_BUILD_DLL', '-DNANOARROW_EXPORT_DLL'], language: 'c') From e1d330670f0a6a40faa40ff39f22bd598d3dbbfb Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 4 Sep 2024 16:09:09 -0400 Subject: [PATCH 20/22] Fix sanitizers --- ci/scripts/build-with-meson.sh | 1 - src/nanoarrow/common/array_test.cc | 4 ++++ src/nanoarrow/common/buffer_test.cc | 2 ++ src/nanoarrow/common/schema_test.cc | 2 ++ src/nanoarrow/common/utils_test.cc | 4 ++++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ci/scripts/build-with-meson.sh b/ci/scripts/build-with-meson.sh index c76256337..e2330aba9 100755 --- a/ci/scripts/build-with-meson.sh +++ b/ci/scripts/build-with-meson.sh @@ -76,7 +76,6 @@ function main() { -Db_coverage=false meson compile - export ASAN_OPTIONS=allocator_may_return_null=1 # allow ENOMEM tests meson test --print-errorlogs show_header "Run valgrind test suite" diff --git a/src/nanoarrow/common/array_test.cc b/src/nanoarrow/common/array_test.cc index b41ba9d27..dec7366fa 100644 --- a/src/nanoarrow/common/array_test.cc +++ b/src/nanoarrow/common/array_test.cc @@ -98,9 +98,11 @@ TEST(ArrayTest, ArrayTestAllocateChildren) { ArrowArrayRelease(&array); ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRUCT), NANOARROW_OK); +#if !defined(__SANITIZE_ADDRESS__) EXPECT_EQ(ArrowArrayAllocateChildren( &array, std::numeric_limits::max() / sizeof(void*)), ENOMEM); +#endif ArrowArrayRelease(&array); ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_STRUCT), NANOARROW_OK); @@ -2303,9 +2305,11 @@ TEST(ArrayTest, ArrayViewTestStruct) { EXPECT_EQ(array_view.layout.element_size_bits[0], 1); // Expect error for out-of-memory +#if !defined(__SANITIZE_ADDRESS__) EXPECT_EQ(ArrowArrayViewAllocateChildren( &array_view, std::numeric_limits::max() / sizeof(void*)), ENOMEM); +#endif EXPECT_EQ(ArrowArrayViewAllocateChildren(&array_view, 2), NANOARROW_OK); EXPECT_EQ(array_view.n_children, 2); diff --git a/src/nanoarrow/common/buffer_test.cc b/src/nanoarrow/common/buffer_test.cc index dd9d54bc6..e294d8f1a 100644 --- a/src/nanoarrow/common/buffer_test.cc +++ b/src/nanoarrow/common/buffer_test.cc @@ -181,8 +181,10 @@ TEST(BufferTest, BufferTestResize0) { TEST(BufferTest, BufferTestError) { struct ArrowBuffer buffer; ArrowBufferInit(&buffer); +#if !defined(__SANITIZE_ADDRESS__) EXPECT_EQ(ArrowBufferResize(&buffer, std::numeric_limits::max(), false), ENOMEM); +#endif ASSERT_EQ(ArrowBufferAppend(&buffer, "abcd", 4), NANOARROW_OK); EXPECT_EQ(ArrowBufferSetAllocator(&buffer, ArrowBufferAllocatorDefault()), EINVAL); diff --git a/src/nanoarrow/common/schema_test.cc b/src/nanoarrow/common/schema_test.cc index 175ea993a..a6a2ea5b8 100644 --- a/src/nanoarrow/common/schema_test.cc +++ b/src/nanoarrow/common/schema_test.cc @@ -68,9 +68,11 @@ TEST(SchemaTest, SchemaInit) { EXPECT_EQ(schema.release, nullptr); ASSERT_EQ(ArrowSchemaInitFromType(&schema, NANOARROW_TYPE_UNINITIALIZED), NANOARROW_OK); +#if !defined(__SANITIZE_ADDRESS__) EXPECT_EQ(ArrowSchemaAllocateChildren( &schema, std::numeric_limits::max() / sizeof(void*)), ENOMEM); +#endif ArrowSchemaRelease(&schema); } diff --git a/src/nanoarrow/common/utils_test.cc b/src/nanoarrow/common/utils_test.cc index 6a753da03..e42990c44 100644 --- a/src/nanoarrow/common/utils_test.cc +++ b/src/nanoarrow/common/utils_test.cc @@ -150,6 +150,7 @@ TEST(AllocatorTest, AllocatorTestDefault) { allocator.free(&allocator, buffer, 100); +#if !defined(__SANITIZE_ADDRESS__) buffer = allocator.reallocate(&allocator, nullptr, 0, std::numeric_limits::max()); EXPECT_EQ(buffer, nullptr); @@ -157,6 +158,7 @@ TEST(AllocatorTest, AllocatorTestDefault) { buffer = allocator.reallocate(&allocator, buffer, 0, std::numeric_limits::max()); EXPECT_EQ(buffer, nullptr); +#endif } // In a non-trivial test this struct could hold a reference to an object @@ -239,6 +241,7 @@ TEST(AllocatorTest, AllocatorTestMemoryPool) { arrow_allocator.free(&arrow_allocator, buffer, 100); EXPECT_EQ(CustomMemoryPool::GetInstance()->bytes_allocated, allocated0); +#if !defined(__SANITIZE_ADDRESS__) buffer = arrow_allocator.reallocate(&arrow_allocator, nullptr, 0, std::numeric_limits::max()); EXPECT_EQ(buffer, nullptr); @@ -246,6 +249,7 @@ TEST(AllocatorTest, AllocatorTestMemoryPool) { buffer = arrow_allocator.reallocate(&arrow_allocator, buffer, 0, std::numeric_limits::max()); EXPECT_EQ(buffer, nullptr); +#endif } TEST(DecimalTest, Decimal128Test) { From 6ae24e9a690c94c49c125f1e874aa5eed2ae10cf Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 4 Sep 2024 16:26:09 -0400 Subject: [PATCH 21/22] Clean C Compiler warnings --- meson.build | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meson.build b/meson.build index 4f0186f36..eec773f0e 100644 --- a/meson.build +++ b/meson.build @@ -35,6 +35,11 @@ project( # add_project_arguments(['-fvisibility=hidden'], language: 'cpp') # endif +cc = meson.get_compiler('c') +add_project_arguments( + cc.get_supported_arguments(['-Wno-misleading-indentation']), + language : 'c' +) cpp = meson.get_compiler('cpp') add_project_arguments( cpp.get_supported_arguments(['-Wno-misleading-indentation']), From dddd193b41e065dd8d662d3f33c235a8512531a3 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Wed, 4 Sep 2024 18:58:18 -0400 Subject: [PATCH 22/22] Update flatcc --- subprojects/flatcc.wrap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subprojects/flatcc.wrap b/subprojects/flatcc.wrap index 811cf38c9..fdabe179d 100644 --- a/subprojects/flatcc.wrap +++ b/subprojects/flatcc.wrap @@ -16,10 +16,10 @@ # under the License. [wrap-file] -directory = flatcc-0.6.1 -source_url = https://github.com/dvidelabs/flatcc/archive/refs/tags/v0.6.1.tar.gz -source_filename = flatcc-0.6.1.tar.gz -source_hash = 2533c2f1061498499f15acc7e0937dcf35bc68e685d237325124ae0d6c600c2b +directory = flatcc-fd3c4ae5cd39f0651eda6a3a1a374278070135d6 +source_url = https://github.com/dvidelabs/flatcc/archive/fd3c4ae5cd39f0651eda6a3a1a374278070135d6.tar.gz +source_filename = flatcc-fd3c4ae5cd39f0651eda6a3a1a374278070135d6.tar.gz +source_hash = 353cb04a619865383b87c8077eb39b63b01a3fc44f7bebd558a88f139c6b6f77 patch_directory = flatcc [provide]