Skip to content

Conversation

@am11
Copy link
Member

@am11 am11 commented Sep 13, 2022

Ubuntu Xenial 16.04 has reached the end of its five year LTS window.

Summary:

  • Update to Ubuntu 18.04 VM or 22.04 host for alpine cross images. The main difference in cross images is the newer host compiler, otherwise rootfs has remained the same.
  • Simplify pipeline scripts; RuntimeOS is inferred except for linux-bionic.
  • Delete old jenkins scripts from src/tests/Common/scripts, which don't work. The blob URLs in those scripts return 404 and all deleted scripts have replacements.

@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Sep 13, 2022
@ghost
Copy link

ghost commented Sep 13, 2022

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost
Copy link

ghost commented Sep 13, 2022

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

Issue Details

Ubuntu Xenial 16.04 has reached the end of its five year LTS window.

Summary:

  • Update to Ubuntu 18.04 VM or 22.04 host for alpine cross images. The main difference in cross images is the newer host compiler, otherwise rootfs has remains the same.
  • Simplify pipeline scripts; RuntimeOS is inferred except for linux-bionic.
  • Delete old jenkins scripts from src/tests/Common/scripts, which don't work. The blob URLs in those scripts return 404 and all deleted scripts have replacements.
Author: am11
Assignees: -
Labels:

area-Infrastructure, community-contribution

Milestone: -

@am11 am11 force-pushed the feature/ci/image-updates branch 6 times, most recently from cc9bb3e to bc4f125 Compare September 14, 2022 06:10
@am11 am11 force-pushed the feature/ci/image-updates branch 2 times, most recently from df466a2 to d693422 Compare September 14, 2022 11:07
@am11 am11 force-pushed the feature/ci/image-updates branch from d693422 to 89a6456 Compare September 14, 2022 12:04
@am11 am11 marked this pull request as ready for review September 14, 2022 15:47
@am11
Copy link
Member Author

am11 commented Sep 14, 2022

llvmaot failure is intermittent and unrelated (e.g. it failed on main branch in 2bc4f61 as well). I think the problem is it picks the incompatible helix machine for hwintrinsic tests. cc @vargaz

*crossbuild=true*)
crossBuild=1
extraargs="$extraargs $1"
shift 1
Copy link
Member Author

Choose a reason for hiding this comment

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

Handled /p:CrossBuild=true this way to support multiple property cases like ./build.sh /p:'RuntimeFlavor=coreclr;CrossBuild=true;Configuration=release'. Ideally, all cross-building CI legs should explicitly pass -cross (which appends /p:CrossBuild=true), but an explicit /p:CrossBuild=true should have the same effect.

Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

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

LGTM. Thanks!

@am11
Copy link
Member Author

am11 commented Sep 15, 2022

The latest binutils 2.39 linker turned out to be stricter than its predecessors:

  Generating native code

  /usr/bin/aarch64-alpine-linux-musl-ld(0,0): error : (NETCORE_ENGINEERING_TELEMETRY=Build) 
  /__w/1/s/artifacts/bin/coreclr/Linux.arm64.Debug/crossgen2/linux-musl-arm64/native/crossgen2
  has a LOAD segment with RWX permissions

Refs:

We have couple of options:

@jkotas, which option do you suggest? (I think we must fix it or suppress it for consumers, regardless of the option selected for our CI leg, as consumer can have latest binutils in their PATH)

@jkotas
Copy link
Member

jkotas commented Sep 15, 2022

It would be useful to figure out which segment it is complaining about. It should not be hard to fix.

@am11
Copy link
Member Author

am11 commented Sep 15, 2022

With retain,used lld is happy but ld is not. Since ld is default on linux distros, I have reverted it for now.

Ideally we should find a way to align them with retain,used, but I am not sure how that can be done with annotations; it might be that we need to resort to inline assembly for that.

@jkotas
Copy link
Member

jkotas commented Sep 15, 2022

More details about this preference are in #52244.

We do the page protection flipping around GS cookie in nativeaot too, so it sounds like we will have a problem with Linux arm64 with 64kB pages. The page protection flipping around GS cookie seems very fragile. I am wondering whether we should stop doing that, in nativeaot at least.

@am11
Copy link
Member Author

am11 commented Sep 16, 2022

One problem is that we have hardcoded assumptions about page sizes:

#elif defined(HOST_ARM64)
#define DATA_ALIGNMENT 8
#ifndef OS_PAGE_SIZE
#ifdef HOST_OSX
#define OS_PAGE_SIZE 0x4000
#else
#define OS_PAGE_SIZE 0x1000
whereas we should instead be querying the page size from OS at run-time, as we do in GC (int getpagesize(void) from unistd.h). As it stands, 64K paged linux-arm64 kernels are currently not supported in NativeAOT regardless of the linker flavor.

System.Speech failures on Windows are unrelated (#75732).

@jkotas
Copy link
Member

jkotas commented Sep 16, 2022

@dotnet/runtime-infrastructure Could you please review as well?

@am11
Copy link
Member Author

am11 commented Sep 22, 2022

CI failure is #75767. It's ready to merge.

@jkotas jkotas merged commit 3eacbaf into dotnet:main Sep 22, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Oct 23, 2022
@am11 am11 deleted the feature/ci/image-updates branch January 17, 2023 05:44
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants