-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
COMP: Consolidate Linux ARM build script #236
Conversation
da03573
to
2b7a48c
Compare
After navigating several incremental issues applying build scripts for ARM module builds I've encountered a wrapping compilation issue: FAILED: /work/ITK-cp38-cp38-manylinux_2_28_aarch64/Wrapping/castxml_inputs/itkSplitComponentsImageFilter.xml
cd /work/_skbuild/linux-aarch64-3.8/cmake-build/Wrapping/Modules/SplitComponents && /work/_skbuild/linux-aarch64-3.8/cmake-build/Wrapping/Generators/CastXML/castxml/bin/castxml -o /work/ITK-cp38-cp38-manylinux_2_28_aarch64/Wrapping/castxml_inputs/itkSplitComponentsImageFilter.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /opt/rh/gcc-toolset-12/root/usr/bin/c++ -std=c++14 ")" -w -c @/work/ITK-cp38-cp38-manylinux_2_28_aarch64/Wrapping/castxml_inputs/.castxml.inc /work/ITK-cp38-cp38-manylinux_2_28_aarch64/Wrapping/castxml_inputs/itkSplitComponentsImageFilter.cxx
...
/opt/rh/gcc-toolset-12/root/usr/lib/gcc/aarch64-redhat-linux/12/../../../../include/c++/12/bits/new_allocator.h:158:2: error: call to '__builtin_operator_delete' selects non-usual deallocation function
_GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Failed build with logs is at https://github.com/tbirdso/ITKSplitComponents/actions/runs/3604194121/jobs/6073281299 As this appears to occur in the first applied CastXML step I will open an issue on that repo for help. |
@tbirdso I am wondering if this is an incompatibility with the ITKPythonBuilds tarball (built with the gcc-toolset-11) and the gcc-toolset-12 in the manylinux aarch64 I recommend rebasing on Since we will need updated |
Thanks @thewtex , I think this is spot on. I have consolidated discussion in InsightSoftwareConsortium/ITK#3785. |
17ec3c6
to
4e58e1f
Compare
Exposes input parameter to allow the user to build for multiple Linux toolsets and target architectures via available manylinux docker images. Depends on ARM support introduced in ITKPythonPackage: InsightSoftwareConsortium/ITKPythonPackage#236
4e58e1f
to
d25b413
Compare
Exposes input parameter to allow the user to build for multiple Linux toolsets and target architectures via available manylinux docker images. Depends on ARM support introduced in ITKPythonPackage: InsightSoftwareConsortium/ITKPythonPackage#236
Re-running testing at InsightSoftwareConsortium/ITKSplitComponents#67 |
d452192
to
cc59e85
Compare
Ready for review as CI jobs are passing. However, it should be noted that Python packaging jobs build but do not load and test wheels. Once ARM Linux wheel artifacts are available from the ITKSplitComponents test run it would be good to verify that those can be used on an ARM platform. It may take me several days to get back to testing those, or someone else can test to verify. Steps to test:
EDIT: Python load test failed; see comments below. |
Exposes input parameter to allow the user to build for multiple Linux toolsets and target architectures via available manylinux docker images. Depends on ARM support introduced in ITKPythonPackage: InsightSoftwareConsortium/ITKPythonPackage#236
EDIT: On review it looks like there was an issue in Python 3.11 packages resulting in only ARM wheel artifacts being made available from the run, will need to investigate. |
a418ee7
to
0d93eb6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✨
Getting back to the 3.11 log, it looks like the issue may have simply been that I force pushed ITKPythonPackage updates too quickly.
Will re-run testing in ITKSplitComponents. EDIT: Testing at https://github.com/InsightSoftwareConsortium/ITKSplitComponents/actions/runs/3759019847/jobs/6388068372 EDIT: Build succeeded on retry. |
When attempting to install locally, load, and test on an ARM Linux instance I am seeing the following failure:
It looks like the TBB library is not being packaged with the ITKSplitComponents wheel as expected. I have compared the contents of the |
26b5ccd
to
877ae86
Compare
Successfully repaired, loaded, and used an ITKSplitComponents ARM wheel on a local ARM machine with the most recent patch. Will test in ITKSplitComponents CI. EDIT: Testing at https://github.com/tbirdso/ITKSplitComponents/actions/runs/3823026183/jobs/6503756014 EDIT2: Verified that the ITKSplitComponents aarch64 resulting wheel is packaged with TBB and that the ITKSplitComponents example procedure (minus viewing) can be run on an aarch64 test machine. aarch64 build updates are good to go. 🟢 |
@dzenanz When you have a moment would you please re-review these changes before merge? |
Several quality-of-life fixes and updates for ARM support: - Consolidates ARM module script with x86_64 module script for easier maintenance and comparison between procedures. Internal ARM script is preserved as a wrapper around generic internal build script. - Splits `MANYLINUX_VERSION` variable into `MANYLINUX_VERSION` prefix and `TARGET_ARCH` postfix to better reflect available images. - Uses `sudo` to avoid permissions failure when running docker or cleaning up files on ARM systems - Improves cleanup step to avoid mixing x64 and ARM sources co-authored-by: Matt McCormick <matt.mccormick@kitware.com>
Downgrades docker container image tag for compatibility with ITK build archives built with gcc-11 toolset. See tags at https://quay.io/repository/pypa/manylinux_2_28_aarch64?tab=tags
co-authored-by: Matt McCormick <matt.mccormick@kitware.com>
Addresses issue where TBB library was bundled with x64 but not ARM module wheels.
877ae86
to
a0123a5
Compare
@dzenanz Thanks! Moving forward with merge. |
Exposes input parameter to allow the user to build for multiple Linux toolsets and target architectures via available manylinux docker images. Depends on ARM support introduced in ITKPythonPackage: InsightSoftwareConsortium/ITKPythonPackage#236
Exposes input parameter to allow the user to build for multiple Linux toolsets and target architectures via available manylinux docker images. Depends on ARM support introduced in ITKPythonPackage: InsightSoftwareConsortium/ITKPythonPackage#236
Several quality-of-life fixes and updates for ARM support:
maintenance and comparison between procedures. Internal ARM script is
preserved as a wrapper around generic internal build script.
MANYLINUX_VERSION
variable intoMANYLINUX_VERSION
prefixand
TARGET_ARCH
postfix to better reflect available images.sudo
to avoid permissions failure when running docker orcleaning up files on ARM systems
Applies changes introduced by @thewtex in #234.
Tests have passed at https://github.com/InsightSoftwareConsortium/ITKSplitComponents/actions/runs/3736106376/jobs/6340059855. Note that ARM builds on Github Actions runners are significantly slower than x86/x64 builds due to emulation. ITKSplitComponents Linux jobs previously completed in ~10 minutes and now complete in ~30 minutes with the addition of ARM wheels.
co-authored-by: Matt McCormick matt.mccormick@kitware.com