GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

GH-46827: [C++] Update Meson Configuration for compute shared lib - #46830

Closed
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute
Closed

GH-46827: [C++] Update Meson Configuration for compute shared lib#46830
WillAyd wants to merge 4 commits into
apache:mainfrom
WillAyd:fix-meson-compute

Conversation

@WillAyd

@WillAydWillAyd commented Jun 16, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The major factor of the compute sources in #46261 addressed updates to the CMake configuration but not Meson. This is a follow up to get the Meson builds working again

What changes are included in this PR?

Meson configuration files are updated to reflect new source structure. gtest has also been bumped to a new WrapDB version, which fixes some undefined behavior that was compounded by updates to the compute test structure

Are these changes tested?

Yes

Are there any user-facing changes?

No

@WillAyd
WillAyd requested a review from westonpace as a code ownerJune 16, 2025 20:36
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #46827has been automatically assigned in GitHub to PR creator.

@WillAydWillAyd left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @raulcd in case of interest

Comment threadcpp/src/arrow/compute/CMakeLists.txt Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Meson configuration was actually failing to register all of the compute kernels (at least locally). When looking further into this, it appears that googletest actually suggests providing your own main function when registering a custom environment like this, to ensure that initialization happens in proper order.

See also https://github.com/google/googletest/blob/35b75a2cba6ef72b7ce2b6b94b05c54ca07df866/googletest/include/gtest/gtest.h#L1327

Comment threadcpp/subprojects/gtest.wrap Outdated

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without bumping googletest, it appears that a lot of the tests end up failing with:

../subprojects/googletest-1.15.2/googletest/include/gtest/internal/gtest-port.h:1810:: pthread_key_delete(key_)failed with error 22

There's a large amount of discussion upstream in both the Meson WrapDB and googletest about this, which ultimately traces back to the ODR and how gtest is linked into an application.

I figure there's no harm in updating this, but happy to link to the further discussions if anyone is interested

@WillAydWillAyd added the CI: Extra Run extra CI label Jun 16, 2025
@github-actionsgithub-actionsBot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Jun 16, 2025
Comment threadcpp/src/arrow/meson.build Outdated

@WillAydWillAydJun 16, 2025

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW this is a minor deviation from the CMake configuration. In the CMake configuration, the bridge_test links to the arrow_compute_XXX libs, but those libs have not yet been declared because they are located in the compute/CMakeLists.txt file, which is included after c/CMakeLists.txt

Without knowing how CMake works, I'm not sure if that's a problem or not, but the Meson configuration definitely complains about arrow_compute_dep does not exist if you try to maintain the same inclusion order as CMake

@github-actionsgithub-actionsBot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jun 16, 2025
@WillAyd
WillAydforce-pushed the fix-meson-compute branch 2 times, most recently from 3cf8596 to 1e243c8CompareJune 16, 2025 20:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm I'm stumped on the AppVeyor failure and not sure how to debug - if anyone has any ideas let me know!

Comment threadcpp/src/arrow/acero/meson.build Outdated
'arrow-acero',
sources: arrow_acero_srcs,
dependencies: [arrow_dep],
dependencies: [arrow_dep, arrow_compute_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrow_compute_dep must be placed before arrow_dep because arrow_compute_dep depends on arrow_dep:

Suggested change
dependencies: [arrow_dep, arrow_compute_dep],
dependencies: [arrow_compute_dep, arrow_dep],

Comment threadcpp/src/arrow/acero/meson.build Outdated
filebase: 'arrow-acero',
name: 'Apache Arrow Acero Engine',
description: 'Apache Arrow\'s Acero Engine',
requires: ['arrow', 'arrow-compute'],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need arrow here because arrow-compute has Requires: arrow:

Suggested change
requires: ['arrow', 'arrow-compute'],
requires: ['arrow-compute'],

Comment threadcpp/src/arrow/compute/meson.build Outdated
] + arrow_compute_testing_srcs,
dependencies: [arrow_test_dep],
],
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
dependencies: [arrow_test_dep, arrow_compute_core_test_dep],
dependencies: [arrow_compute_core_test_dep, arrow_test_dep],

@@ -96,16 +127,14 @@ compute_tests = {
# - value_counts
#
# Also see: GH-34388, GH-34615

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we update this comment block?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't step through all of the kernels but this comment still holds true, no?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, removing the if needs_compute is just by introducing arrow_compute_test_dep, right?

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting committer review Awaiting committer review labels Jun 17, 2025
@raulcd

Copy link
Copy Markdown
Member

I am also really confused on the appveyor failure. I am unsure what is the difference with the rest of our C++ Windows builds and why it fails there.

@github-actionsgithub-actionsBot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jun 17, 2025
@WillAyd

WillAyd commented Jun 17, 2025

Copy link
Copy Markdown
ContributorAuthor

I guess the AppVeyor build does not want to use the gtest approach where the custom environment requires its own main function. All green now, although I'm not sure if the macro is the best way to go about this

@WillAydWillAyd closed this Jun 17, 2025
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Hmm github was not reflecting my updates and I can't reopen now. Haven't run into that before...will debug in a new PR. If this can be reopened let me know!

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

The new PR seemed equally messed up. I think github is just having an outage - will check back in a few hours and see if this can be revived

@WillAyd
WillAydforce-pushed the fix-meson-compute branch 3 times, most recently from 277f081 to c2de059CompareJune 17, 2025 19:55
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting change reviewAwaiting change reviewCI: ExtraRun extra CIComponent: C++

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@WillAyd@raulcd@kou