-
Notifications
You must be signed in to change notification settings - Fork 115
Add Ubuntu 24.04 Arm32 Helix Dockerfile #1120
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
Merged
Merged
Changes from 4 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
db2012f
Add Ubuntu 24.04 Arm32 Helix Dockerfile
richlander 2a7bef0
Update manifest file
richlander cecef6d
Update src/ubuntu/manifest.json
richlander d2bcb7e
Merge branch 'main' into it-never-gets-better-with-arm32
richlander 0a2f1ed
Merge remote-tracking branch 'origin/main' into it-never-gets-better-…
richlander 98129b9
Remove accidental differences
richlander 280b4fc
Removed Arm32-specific Dockerfile
richlander 1119087
Merge branch 'main' into it-never-gets-better-with-arm32
richlander a6107a9
Apply suggestions from code review
richlander File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
FROM ubuntu.azurecr.io/ubuntu:noble | ||
ARG TARGETARCH | ||
richlander marked this conversation as resolved.
Show resolved
Hide resolved
|
||
# Install Helix Dependencies | ||
ENV DEBIAN_FRONTEND=noninteractive | ||
|
||
RUN apt-get update && \ | ||
apt-get install -qq -y \ | ||
autoconf \ | ||
automake \ | ||
build-essential \ | ||
cmake \ | ||
clang \ | ||
curl \ | ||
gcc \ | ||
gdb \ | ||
git \ | ||
gss-ntlmssp \ | ||
iputils-ping \ | ||
libcurl4t64 \ | ||
libffi-dev \ | ||
libgdiplus \ | ||
libicu-dev \ | ||
libnuma1 \ | ||
libssl-dev \ | ||
libtool \ | ||
libunwind8 \ | ||
libunwind-dev \ | ||
lldb \ | ||
llvm \ | ||
libnuma1 \ | ||
locales \ | ||
locales-all \ | ||
openssl \ | ||
python3-dev \ | ||
python3-pip \ | ||
python3-venv \ | ||
software-properties-common \ | ||
sudo \ | ||
tzdata \ | ||
unzip \ | ||
&& rm -rf /var/lib/apt/lists/* \ | ||
\ | ||
&& localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 | ||
|
||
ENV LANG=en_US.utf8 | ||
|
||
RUN ln -sf /usr/bin/python3 /usr/bin/python && \ | ||
pip download --no-deps helix-scripts --index-url https://dnceng.pkgs.visualstudio.com/public/_packaging/helix-client-prod/pypi/simple && \ | ||
pip install --break-system-packages ./helix_scripts-*-py3-none-any.whl | ||
|
||
# Add MsQuic | ||
# MsQuic does not yet publish packages for 24.04 | ||
# Manually install 22.04 package for now | ||
RUN curl -LO https://packages.microsoft.com/ubuntu/22.04/prod/pool/main/libm/libmsquic/libmsquic_2.3.5_armhf.deb && \ | ||
dpkg -i --ignore-depends=libssl3 libmsquic_*.deb && \ | ||
rm -f libmsquic_*.deb | ||
|
||
# create helixbot user and give rights to sudo without password | ||
RUN /usr/sbin/adduser --disabled-password --gecos '' --uid 1001 --shell /bin/bash --ingroup adm helixbot && \ | ||
chmod 755 /root && \ | ||
echo "helixbot ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers | ||
|
||
USER helixbot | ||
|
||
RUN python -m venv /home/helixbot/.vsts-env |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
There are some differences between this file and https://github.com/dotnet/dotnet-buildtools-prereqs-docker/blob/main/src/ubuntu/24.04/helix/Dockerfile. Are these differences intentional? I'm curious why the multi-arch Dockerfile that already exists doesn't work for Arm32?
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 main issue is that the package won't install as-is.
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.
Also
libcurl
isn't available in thearm
feed because of Y2038.libcurl4t64
is there in its place.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.
That looks like a trivial difference that could be handled dynamically within a single Dockerfile. You could check the value of
TARGETARCH
to determine whether to installlibcurl4
orlibcurl4t64
, set the name to a variable and then include that variable name in the list of packages.I'd really like to work hard to avoid duplication of content between Dockerfiles in this repo and set a better precedent than in the past.
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.
That is a good idea however that doesn't change the part about libmsquic.
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.
Why can't that be conditionally executed as well?
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.
It can. It is just making the Dockerfile a bit complicated. However, I can give that a try.
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.
OK. That wasn't quite as bad as I expected. I was able to single source the Dockerfile.