Skip to content

[build+macOS] Remove quarantine from OpenJDK installations - #9652

Merged
jonpryor merged 1 commit into
mainfrom
dev/jonp/jonp-remove-quarantine
Jan 7, 2025
Merged

[build+macOS] Remove quarantine from OpenJDK installations#9652
jonpryor merged 1 commit into
mainfrom
dev/jonp/jonp-remove-quarantine

Conversation

@jonpryor

@jonpryorjonpryor commented Jan 6, 2025

Copy link
Copy Markdown
Contributor

Context: #9651

Recent versions of macOS, Safari, and tar(1) 1 interact such that if you manually download a tarball and extract it, all the extracted files contain the com.apple.quarantine extended attribute. This is a security feature, but it also means that the provisioned JDK cannot be used:

% $HOME/android-toolchain/jdk-21/bin/javac
zsh: operation not permitted: ./jdk-21/bin/javac

Which in turn means if you do something "reasonable" like download Microsoft OpenJDK and place it into $HOME/android-archives -- so that xaprepare doesn't need to download it again -- then the provisioned JDK will be unusable. Which makes @jonpryor sad.

Update Step_InstallAdoptOpenJDK.MacOS.cs to run
xattr -d -r com.apple.quarantine $HOME/android-toolchain/jdk-21. This will delete the offending extended attribute, allowing e.g. javac to run without error.

Footnotes

  1. Which versions? ¯\(ツ)

@jonpryor

Copy link
Copy Markdown
ContributorAuthor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

Context: #9651
Recent versions of macOS, Safari, and **tar**(1) [^0] interact such
that if you manually download a tarball and extract it,
*all the extracted files* contain the `com.apple.quarantine`
extended attribute. This is a security feature, but it also means
that the provisioned JDK *cannot be used*:
% $HOME/android-toolchain/jdk-21/bin/javac
zsh: operation not permitted: ./jdk-21/bin/javac
Which in turn means if you do something "reasonable" like download
Microsoft OpenJDK and place it into `$HOME/android-archives` -- so
that `xaprepare` doesn't need to download it *again* -- then the
provisioned JDK will be *unusable*. Which makes @jonpryor sad.
Update `Step_InstallAdoptOpenJDK.MacOS.cs` to run
`xattr -d -r com.apple.quarantine $HOME/android-toolchain/jdk-21`.
This will *delete* the offending extended attribute, allowing e.g.
`javac` to run without error.
[^0]: Which versions? ¯\\_(ツ)_/¯
@jonpryor
jonpryorforce-pushed the dev/jonp/jonp-remove-quarantine branch from 971dfcf to 835f036CompareJanuary 6, 2025 19:41
@jonpryor

Copy link
Copy Markdown
ContributorAuthor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@jonpryor
jonpryor merged commit aec2b0b into mainJan 7, 2025
@jonpryor
jonpryor deleted the dev/jonp/jonp-remove-quarantine branch January 7, 2025 20:42
grendello added a commit that referenced this pull request Jan 9, 2025
* main:
Add `$(Nullable)` = `annotations` to projects using NRT annotations without NRT enabled. (#9660)
[Xamarin.Android.Build.Tasks] Add %(NuGetPackage*) to TaskItems (#9559)
Bump to dotnet/java-interop@ee47652d (#9659)
[XABT] Remove <CollectAssemblyFilesForArchive/> from FastDeployment (#9650)
[Mono.Android] Generate API docs for API level 35 (#9647)
[java-runtime] simplify `mono.MonoPackageManager.LoadApplication()` (#9655)
[Mono.Android] Bind Android API-Baklava DP2. (#9653)
[build+macOS] Remove quarantine from OpenJDK installations (#9652)
grendello added a commit that referenced this pull request Jan 9, 2025
* dev/grendel/use-libc++:
Add `$(Nullable)` = `annotations` to projects using NRT annotations without NRT enabled. (#9660)
[Xamarin.Android.Build.Tasks] Add %(NuGetPackage*) to TaskItems (#9559)
Bump to dotnet/java-interop@ee47652d (#9659)
[XABT] Remove <CollectAssemblyFilesForArchive/> from FastDeployment (#9650)
[Mono.Android] Generate API docs for API level 35 (#9647)
[java-runtime] simplify `mono.MonoPackageManager.LoadApplication()` (#9655)
[Mono.Android] Bind Android API-Baklava DP2. (#9653)
[build+macOS] Remove quarantine from OpenJDK installations (#9652)
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Feb 7, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jonpryor@grendello