Skip to content
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

dotnet 9.0.0 #196479

Merged
merged 4 commits into from
Nov 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Aliases/dotnet@9
179 changes: 69 additions & 110 deletions Formula/d/dotnet.rb
Original file line number Diff line number Diff line change
@@ -1,125 +1,107 @@
class Dotnet < Formula
desc ".NET Core"
homepage "https://dotnet.microsoft.com/"
# Source-build tag announced at https://github.com/dotnet/source-build/discussions
url "https://github.com/dotnet/dotnet.git",
tag: "v8.0.10",
revision: "8922fe64a1903ed4e35e24568efb056b3e0fad43"
license "MIT"
head "https://github.com/dotnet/dotnet.git", branch: "main"

stable do
# Source-build tag announced at https://github.com/dotnet/source-build/discussions
url "https://github.com/dotnet/dotnet/archive/refs/tags/v9.0.0.tar.gz"
sha256 "ade10f909a684c2a056b8b0ec3a30e1570ce2b83c46c5f621a4464d02729af9f"

resource "release.json" do
url "https://github.com/dotnet/dotnet/releases/download/v9.0.0/release.json"
sha256 "2a08862e4cd0095c743deccd8e34f3188261772cc775a7c6cdbfc9237727edda"
end
end

bottle do
sha256 cellar: :any, arm64_sequoia: "197cb068d41882513946c97853080a27b7c314ffd8f42296b663d2a6a19277c4"
sha256 cellar: :any, arm64_sonoma: "ee8e38b1f895f854eb38256ce40ae985613b2c005881a64d58de86a7e0b9e24d"
sha256 cellar: :any, arm64_ventura: "474fd3ad1582cf4f406654ec9b015e975569705c451e7f55d1a609a35b2da9ad"
sha256 cellar: :any, sonoma: "ef18da376e2734a3b327840e99aac667dd43b5c797e6b651aa875ed56644e2c4"
sha256 cellar: :any, ventura: "75c23fb3c05ac68ec3a3c22203e6829a8f80f5a2f22a3453bce1a4eff83338ad"
sha256 cellar: :any_skip_relocation, x86_64_linux: "e8bc8e2a21f664c9e49fba79e66c6e0fe53d8ad2eba046703ad536e47e5bb675"
sha256 cellar: :any, arm64_sequoia: "846716ea37ae27f2be05098226bef127d27c650798f07085417ba8a610b1cf6f"
sha256 cellar: :any, arm64_sonoma: "f12bdbf90b2a57fc29349cb78123cd7f8eab584b27cf859c4413ae07a3f4a6bc"
sha256 cellar: :any, arm64_ventura: "9a4970542023cb1cf76566978f7f6ee9d5e5b3890e47edc64d507468fc382558"
sha256 cellar: :any, ventura: "7e315138a9da1bb22c057f063d89d08297609a2196c2f6a5d25ccd405a6e2cef"
sha256 cellar: :any_skip_relocation, x86_64_linux: "23cad8699a8133d024cea4cb20f31d829911bffc9acd2586c9ea3811fd51df29"
end

depends_on "cmake" => :build
depends_on "pkg-config" => :build
depends_on "[email protected]" => :build
depends_on "pkgconf" => :build
depends_on "rapidjson" => :build
depends_on "brotli"
depends_on "icu4c@76"
depends_on "openssl@3"

uses_from_macos "llvm" => :build
uses_from_macos "python" => :build, since: :catalina
uses_from_macos "krb5"
uses_from_macos "zlib"

on_sonoma do
depends_on xcode: :build if DevelopmentTools.clang_build_version == 1600
on_macos do
depends_on "grep" => :build # grep: invalid option -- P
end

on_linux do
depends_on "libunwind"
depends_on "lttng-ust"
end

# Upstream only directly supports and tests llvm/clang builds.
# GCC builds have limited support via community.
fails_with :gcc

# Backport fix for error loading BuildXL service index
patch do
url "https://github.com/dotnet/dotnet/commit/18b5c7e1b125468f483a697ba8809c0a2412a762.patch?full_index=1"
sha256 "76ede810166cf718fe430a8b155da07ca245ec9174b73b3471baf413bbd42460"
end

# Backport fix to build with Xcode 16
patch do
url "https://github.com/dotnet/runtime/commit/562efd6824762dd0c1826cc99e006ad34a7e9e85.patch?full_index=1"
sha256 "435002246227064be19db8065b945e94565b59362e75a72ee6d6322a25baa832"
directory "src/runtime"
end

# Backport fix to build with Clang 19
# Ref: https://github.com/dotnet/runtime/commit/043ae8c50dbe1c7377cf5ad436c5ac1c226aef79
patch :DATA

def install
if OS.mac?
# Deparallelize to reduce chances of missing PDBs
ENV.deparallelize
# Avoid failing on missing PDBs as unable to build bottle on all runners in current state
# Issue ref: https://github.com/dotnet/source-build/issues/4150
inreplace "build.proj", /\bFailOnMissingPDBs="true"/, 'FailOnMissingPDBs="false"'

# Disable crossgen2 optimization in ASP.NET Core to work around build failure trying to find tool.
# Microsoft.AspNetCore.App.Runtime.csproj(445,5): error : Could not find crossgen2 tools/crossgen2
# TODO: Try to remove in future .NET 8 release or when macOS is officially supported in .NET 9
inreplace "src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj",
"<CrossgenOutput Condition=\" '$(TargetArchitecture)' == 's390x'",
"<CrossgenOutput Condition=\" '$(TargetOsName)' == 'osx'"
# Need GNU grep (Perl regexp support) to use release manifest rather than git repo
ENV.prepend_path "PATH", Formula["grep"].libexec/"gnubin"

# Avoid mixing CLT and Xcode.app when building CoreCLR component which can
# cause undefined symbols, e.g. __swift_FORCE_LOAD_$_swift_Builtin_float
ENV["SDKROOT"] = MacOS.sdk_path
else
icu4c_dep = deps.find { |dep| dep.name.match?(/^icu4c(@\d+)?$/) }
ENV.append_path "LD_LIBRARY_PATH", icu4c_dep.to_formula.opt_lib
ENV.append_to_cflags "-I#{Formula["krb5"].opt_include}"
ENV.append_to_cflags "-I#{Formula["zlib"].opt_include}"

# Use our libunwind rather than the bundled one.
inreplace "src/runtime/eng/SourceBuild.props",
"--outputrid $(TargetRid)",
"\\0 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=ON"

# Work around build script getting stuck when running shutdown command on Linux
# TODO: Try removing in the next release
# Ref: https://github.com/dotnet/source-build/discussions/3105#discussioncomment-4373142
inreplace "build.sh", '"$CLI_ROOT/dotnet" build-server shutdown', ""
inreplace "repo-projects/Directory.Build.targets",
'<Exec Command="$(DotnetToolCommand) build-server shutdown" />',
""
'"$(DotnetTool) build-server shutdown --vbcscompiler"',
'"true"'
end

system "./prep.sh"
args = ["--clean-while-building", "--source-build", "--with-system-libs", "brotli+libunwind+rapidjson+zlib"]
if build.stable?
args += ["--release-manifest", "release.json"]
odie "Update release.json resource!" if resource("release.json").version != version
buildpath.install resource("release.json")
end

system "./prep-source-build.sh"
# We unset "CI" environment variable to work around aspire build failure
# error MSB4057: The target "GitInfo" does not exist in the project.
# Ref: https://github.com/Homebrew/homebrew-core/pull/154584#issuecomment-1815575483
with_env(CI: nil) do
system "./build.sh", "--clean-while-building", "--online"
system "./build.sh", *args
end

libexec.mkpath
tarball = Dir["artifacts/*/Release/dotnet-sdk-*.tar.gz"].first
system "tar", "-xzf", tarball, "--directory", libexec
doc.install Dir[libexec/"*.txt"]
tarball = buildpath.glob("artifacts/*/Release/dotnet-sdk-*.tar.gz").first
system "tar", "--extract", "--file", tarball, "--directory", libexec
doc.install libexec.glob("*.txt")
(bin/"dotnet").write_env_script libexec/"dotnet", DOTNET_ROOT: libexec

bash_completion.install "src/sdk/scripts/register-completions.bash" => "dotnet"
zsh_completion.install "src/sdk/scripts/register-completions.zsh" => "_dotnet"
man1.install Dir["src/sdk/documentation/manpages/sdk/*.1"]
man7.install Dir["src/sdk/documentation/manpages/sdk/*.7"]
man1.install Utils::Gzip.compress(*buildpath.glob("src/sdk/documentation/manpages/sdk/*.1"))
man7.install Utils::Gzip.compress(*buildpath.glob("src/sdk/documentation/manpages/sdk/*.7"))
end

def caveats
<<~EOS
<<~TEXT
For other software to find dotnet you may need to set:
export DOTNET_ROOT="#{opt_libexec}"
EOS
TEXT
end

test do
target_framework = "net#{version.major_minor}"
(testpath/"test.cs").write <<~EOS

(testpath/"test.cs").write <<~CSHARP
using System;

namespace Homebrew
Expand All @@ -133,8 +115,9 @@ def caveats
}
}
}
EOS
(testpath/"test.csproj").write <<~EOS
CSHARP

(testpath/"test.csproj").write <<~XML
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
Expand All @@ -150,47 +133,23 @@ def caveats
<Compile Include="test.cs" />
</ItemGroup>
</Project>
EOS
XML

system bin/"dotnet", "build", "--framework", target_framework, "--output", testpath, testpath/"test.csproj"
assert_equal "#{testpath}/test.dll,a,b,c\n",
shell_output("#{bin}/dotnet run --framework #{target_framework} #{testpath}/test.dll a b c")
output = shell_output("#{bin}/dotnet run --framework #{target_framework} #{testpath}/test.dll a b c")
# We switched to `assert_match` due to progress status ANSI codes in output.
# TODO: Switch back to `assert_equal` once fixed in release.
# Issue ref: https://github.com/dotnet/sdk/issues/44610
assert_match "#{testpath}/test.dll,a,b,c\n", output

# Test to avoid uploading broken Intel Sonoma bottle which has stack overflow on restore.
# See https://github.com/Homebrew/homebrew-core/issues/197546
resource "docfx" do
url "https://github.com/dotnet/docfx/archive/refs/tags/v2.77.0.tar.gz"
sha256 "03c13ca2cdb4a476365ef8f5b7f408a6cf6e35f0193c959d7765c03dd4884bfb"
end
resource("docfx").stage do
system bin/"dotnet", "restore", "src/docfx", "--disable-build-servers", "--no-cache"
end
end
end

__END__
diff --git a/src/runtime/src/coreclr/vm/comreflectioncache.hpp b/src/runtime/src/coreclr/vm/comreflectioncache.hpp
index 08d173e61648c6ebb98a4d7323b30d40ec351d94..12db55251d80d24e3765a8fbe6e3b2d24a12f767 100644
--- a/src/runtime/src/coreclr/vm/comreflectioncache.hpp
+++ b/src/runtime/src/coreclr/vm/comreflectioncache.hpp
@@ -26,6 +26,7 @@ template <class Element, class CacheType, int CacheSize> class ReflectionCache

void Init();

+#ifndef DACCESS_COMPILE
BOOL GetFromCache(Element *pElement, CacheType& rv)
{
CONTRACTL
@@ -102,6 +103,7 @@ template <class Element, class CacheType, int CacheSize> class ReflectionCache
AdjustStamp(TRUE);
this->LeaveWrite();
}
+#endif // !DACCESS_COMPILE

private:
// Lock must have been taken before calling this.
@@ -141,6 +143,7 @@ template <class Element, class CacheType, int CacheSize> class ReflectionCache
return CacheSize;
}

+#ifndef DACCESS_COMPILE
void AdjustStamp(BOOL hasWriterLock)
{
CONTRACTL
@@ -170,6 +173,7 @@ template <class Element, class CacheType, int CacheSize> class ReflectionCache
if (!hasWriterLock)
this->LeaveWrite();
}
+#endif // !DACCESS_COMPILE

void UpdateHashTable(SIZE_T hash, int slot)
{
25 changes: 12 additions & 13 deletions Formula/d/dug.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,44 @@ class Dug < Formula
url "https://github.com/unfrl/dug/archive/refs/tags/0.0.94.tar.gz"
sha256 "f97952be49d93ed66f1cc7e40bf7004928e6573077839a18f5be371c80e2c16b"
license "MIT"
revision 1

livecheck do
url :stable
regex(/^v?(\d+(?:\.\d+)+)$/i)
end

bottle do
sha256 cellar: :any_skip_relocation, arm64_sequoia: "5fc22af9ae66c539b84fd9202cc15442c5cb9ccc2da736c25073c01cd7cb7d1c"
sha256 cellar: :any_skip_relocation, arm64_sonoma: "b218fc33ff689d05ad7637d3a90516eff22c12721dce9c45a6bc0b9d7d8005b8"
sha256 cellar: :any_skip_relocation, arm64_ventura: "a2b486b453398832444fe293c2114ae52415e32450a307efd4f8d794e612978b"
sha256 cellar: :any_skip_relocation, sonoma: "bafbcd64d21759be827798be5e716d58f4c5b25272884d6efc517d0c56a88885"
sha256 cellar: :any_skip_relocation, ventura: "c5fca1866650201da0bf750a980bb99c02635b45c10d12f07de0dd004ea65b5d"
sha256 cellar: :any_skip_relocation, x86_64_linux: "373a0464e15b4ceb0af958ceaf67c701946f521bec7654477f0036b585aff48c"
sha256 cellar: :any_skip_relocation, arm64_sequoia: "b2056f58b7a98102e267466ac4b78cb0c20f6d718edadec02e99711e73c63f1d"
sha256 cellar: :any_skip_relocation, arm64_sonoma: "2a0694076a8ca9f24aa8105df5400385905f0346365c0d9ff663180126657aff"
sha256 cellar: :any_skip_relocation, arm64_ventura: "e7caf9fe29373fefb13ca554c3e58d0ac96cc4fb5f4a210d2ff28162a0a2d96d"
sha256 cellar: :any_skip_relocation, sonoma: "6fcc35f470be76307cf14e8ced656a65749c49f65e63df5e267494596199eeb4"
sha256 cellar: :any_skip_relocation, ventura: "4fd87cddb2e79d2fa8f92f0534b386767e8670c481091ada9574e5944813bfcc"
sha256 cellar: :any_skip_relocation, x86_64_linux: "6ce1254977a436fccb15cd219228dbb012ec7722d91e883b4a47bbd277e19803"
end

depends_on "dotnet"
uses_from_macos "zlib"

def install
ENV["DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"] = "1"
dotnet = Formula["dotnet"]
os = OS.mac? ? "osx" : OS.kernel_name.downcase
arch = Hardware::CPU.intel? ? "x64" : Hardware::CPU.arch.to_s

dotnet = Formula["dotnet"]
args = %W[
--configuration Release
--framework net#{dotnet.version.major_minor}
--output #{libexec}
--runtime #{os}-#{arch}
--no-self-contained
--output #{bin}
--use-current-runtime
-p:AppHostRelativeDotNet=#{dotnet.opt_libexec.relative_path_from(bin)}
-p:TargetFrameworks=net#{dotnet.version.major_minor}
-p:Version=#{version}
-p:PublishSingleFile=true
-p:IncludeNativeLibrariesForSelfExtract=true
-p:DebugType=None
]

system "dotnet", "publish", "cli/dug.csproj", *args
env = { DOTNET_ROOT: "${DOTNET_ROOT:-#{dotnet.opt_libexec}}" }
(bin/"dug").write_env_script libexec/"dug", env
end

test do
Expand Down
Loading