-
Notifications
You must be signed in to change notification settings - Fork 9.1k
HADOOP-17723. [build] fix the Dockerfile for ARM #3037
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
Conversation
@aajisaka @brahmareddybattula @vinayakumarb could you review the PR? |
(!) A patch to the testing environment has been detected. |
This is broken by #1738 |
WIP. Please wait for me to run through the whole release creation process for ARM. |
🎊 +1 overall
This message was automatically generated. |
That was awhile ago. Gap in our CI coverage for ARM? |
There exists a daily ARM qbt job, but it does not use the docker image: https://ci-hadoop.apache.org/job/hadoop-qbt-linux-ARM-trunk/ |
I guess the ARM nightly build doesn't use the docker image? Or it has been failing for a while? Because apparently the python3 migration wasn't successful. Other than this, yarn-ui profile still requires python2. Additionally, part of the code requires phantomJS where the ARM binary was built for Ubuntu Xenial, not Bionic (missing dynamic libs only available in Xenial.) |
Ah. Yeah looks like despite being named with the pattern we use for Yetus driven CI, the arm job is just a bash script wrapping a maven call. |
Change-Id: I8a2031ee1e532f5ecbf32d679d850be4fb80c8d1
(!) A patch to the testing environment has been detected. |
Installs python2.7, and replaced the custom PhantomJS binary (which was built for Xenial and does not run on Bionic) with the official phantomjs package for Bionic. Note: Yes I am aware we migrated to Python3. However, the installation of nodejs implicitly installs python-minimal, which is python2 without lots of packages. So python2 is installed by the ARM Docker image anyway (possibly the x86 docker image has it too). The official Ubuntu phantomjs has a caveat: it requires X Window. (ariya/phantomjs#14376 (comment)). Add environment var QT_QPA_PLATFORM=offscreen to make it really 'headless". If it's not headless, the installer fails to execute phantomjs and abort. In comparision, the x86 Dockerfile doesn't install the official Ubuntu phantomjs package. Instead, it installs the version managed by the npm/yarn package manager. We need python2.7 package, because hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui installs node-gyp 3.8, which has dependency on python2 to build. Not clear to me why the x86 Dockerfile doesn't require it. My guess is that the node-gyp has official x86 binary so it doesn't need to be built from source. That's a lot of digest in this comment since it involves Docker, Ubuntu, Maven, yarn, Python. Lots of different package managers. But at the end of it I was able to build for ARM. |
python3-pkg-resources \ | ||
python3-setuptools \ | ||
python3-wheel \ | ||
python2.7 \ |
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.
We need python2.7 package, because hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui installs node-gyp 3.8, which has dependency on python2 to build.
# hadolint ignore=DL3008 | ||
RUN npm install -g [email protected] | ||
|
||
### |
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.
replaced the custom PhantomJS binary (which was built for Xenial and does not run on Bionic) with the official phantomjs package for Bionic.
|
||
# Force PhantomJS to be in 'headless' mode, do not connect to Xwindow | ||
ENV QT_QPA_PLATFORM offscreen | ||
|
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.
The official Ubuntu phantomjs has a caveat: it requires X Window. (ariya/phantomjs#14376 (comment)). Add environment var QT_QPA_PLATFORM=offscreen to make it really 'headless". If it's not headless, the installer fails to execute phantomjs and abort.
🎊 +1 overall
This message was automatically generated. |
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.
I don't have an ARM machine to try with.
However, I'm +1 if the order of the package list is addressed.
Could you try the docker image? @brahmareddybattula @ayushtkn
Change-Id: I1e38d8d4da24922e7a1a36f917203ca0d45c4a13
(!) A patch to the testing environment has been detected. |
🎊 +1 overall
This message was automatically generated. |
The reason for this was, at that time, yetus was not supporting aarch64 CIs. Not sure whether latest Yetus supports aarch64. |
Merged. Will cherrypick to branch-3.3.1. Thanks @aajisaka, @busbey and @vinayakumarb for review and inputs. |
Reviewed-by: Akira Ajisaka <[email protected]> (cherry picked from commit 1576f81)
Reviewed-by: Akira Ajisaka <[email protected]> (cherry picked from commit 1576f81) (cherry picked from commit 745a2f5)
Thanks, @jojochuang. I got no issue on building and testing of yarn-ui on EC2 A1 instance with the patch. |
Reviewed-by: Akira Ajisaka <[email protected]>
HADOOP-17723
verified manually by running
dev-support/bin/create-release --asfrelease --docker --dockercache
on an ARM machine.