Skip to content
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
10 changes: 5 additions & 5 deletions src/MongoDB.Driver.Encryption/LibraryLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,11 @@ static LinuxLibrary()
var osArchitecture = RuntimeInformation.OSArchitecture.ToString().ToLower();
#pragma warning restore CA1304

var finalpath = IsAlpine() ? $"alpine/{osArchitecture}" : $"{osArchitecture}";
var runtimeSuffix = IsAlpine() ? $"musl-{osArchitecture}" : $"{osArchitecture}";

__suffixPaths = new []{
$"../../runtimes/linux/native/{finalpath}",
$"runtimes/linux/native/{finalpath}",
$"../../runtimes/linux-{runtimeSuffix}/native/",
$"runtimes/linux-{runtimeSuffix}/native/",
string.Empty
};

Expand Down Expand Up @@ -246,8 +246,8 @@ private class WindowsLibrary : ISharedLibraryLoader
{
private static readonly string[] __suffixPaths =
{
@"..\..\runtimes\win\native\",
@".\runtimes\win\native\",
@"..\..\runtimes\win-x64\native\",
@".\runtimes\win-x64\native\",
string.Empty
};

Expand Down
76 changes: 50 additions & 26 deletions src/MongoDB.Driver.Encryption/MongoDB.Driver.Encryption.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,64 +14,76 @@
</PropertyGroup>

<PropertyGroup>
<LibMongoCryptVersion>r1.15</LibMongoCryptVersion>
<LibMongoCryptCommit>059d538126eb2a1cd90103147bc9b1be0d46de92</LibMongoCryptCommit>
<LibMongoCryptVersionPath>r1.15/2807bca63631a5b6b8affcb7f4402e351166659e</LibMongoCryptVersionPath>
</PropertyGroup>

<Target Name="DownloadNativeBinaries_MacOS"
BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/runtimes/osx/native/libmongocrypt.dylib')">
BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/osx/native/libmongocrypt.dylib')">
<PropertyGroup>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/macos/$(LibMongoCryptVersion)/$(LibMongoCryptCommit)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/macos/$(LibMongoCryptVersionPath)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourcePath>lib/libmongocrypt.dylib</LibMongoCryptSourcePath>
<LibMongoCryptPackagePath>runtimes/osx/native</LibMongoCryptPackagePath>
<LibMongoCryptPackagePath>$(LibMongoCryptVersionPath)/runtimes/osx/native</LibMongoCryptPackagePath>
</PropertyGroup>

<MSBuild Projects ="$(MSBuildProjectFullPath)"
Properties="TargetFramework=once;LibMongoCryptSourceUrl=$(LibMongoCryptSourceUrl);LibMongoCryptSourcePath=$(LibMongoCryptSourcePath);LibMongoCryptPackagePath=$(LibMongoCryptPackagePath)"
Targets="DownloadNativeBinary" />
</Target>

<Target Name="DownloadNativeBinaries_UbuntuX64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/runtimes/linux/native/x64/libmongocrypt.so')">
<Target Name="DownloadNativeBinaries_UbuntuX64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-x64/native/libmongocrypt.so')">
<PropertyGroup>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/ubuntu1804-64/$(LibMongoCryptVersion)/$(LibMongoCryptCommit)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/ubuntu1804-64/$(LibMongoCryptVersionPath)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourcePath>nocrypto/lib/libmongocrypt.so</LibMongoCryptSourcePath>
<LibMongoCryptPackagePath>runtimes/linux/native/x64</LibMongoCryptPackagePath>
<LibMongoCryptPackagePath>$(LibMongoCryptVersionPath)/runtimes/linux-x64/native/</LibMongoCryptPackagePath>
</PropertyGroup>

<MSBuild Projects ="$(MSBuildProjectFullPath)"
Properties="TargetFramework=once;LibMongoCryptSourceUrl=$(LibMongoCryptSourceUrl);LibMongoCryptSourcePath=$(LibMongoCryptSourcePath);LibMongoCryptPackagePath=$(LibMongoCryptPackagePath)"
Targets="DownloadNativeBinary" />
</Target>

<Target Name="DownloadNativeBinaries_UbuntuARM64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/runtimes/linux/native/arm64/libmongocrypt.so')">
<Target Name="DownloadNativeBinaries_UbuntuARM64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-arm64/native/libmongocrypt.so')">
<PropertyGroup>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/ubuntu1804-arm64/$(LibMongoCryptVersion)/$(LibMongoCryptCommit)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/ubuntu1804-arm64/$(LibMongoCryptVersionPath)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourcePath>nocrypto/lib/libmongocrypt.so</LibMongoCryptSourcePath>
<LibMongoCryptPackagePath>runtimes/linux/native/arm64</LibMongoCryptPackagePath>
<LibMongoCryptPackagePath>$(LibMongoCryptVersionPath)/runtimes/linux-arm64/native/</LibMongoCryptPackagePath>
</PropertyGroup>

<MSBuild Projects ="$(MSBuildProjectFullPath)"
Properties="TargetFramework=once;LibMongoCryptSourceUrl=$(LibMongoCryptSourceUrl);LibMongoCryptSourcePath=$(LibMongoCryptSourcePath);LibMongoCryptPackagePath=$(LibMongoCryptPackagePath)"
Targets="DownloadNativeBinary" />
</Target>

<Target Name="DownloadNativeBinaries_Alpine" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/runtimes/linux/native/alpine/libmongocrypt.so')">

<Target Name="DownloadNativeBinaries_AlpineAMD64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-musl-x64/native/libmongocrypt.so')">
<PropertyGroup>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/alpine-arm64-earthly/$(LibMongoCryptVersion)/$(LibMongoCryptCommit)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/alpine-amd64-earthly/$(LibMongoCryptVersionPath)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourcePath>nocrypto/lib/libmongocrypt.so</LibMongoCryptSourcePath>
<LibMongoCryptPackagePath>$(LibMongoCryptVersionPath)/runtimes/linux-musl-x64/native/</LibMongoCryptPackagePath>
</PropertyGroup>

<MSBuild Projects ="$(MSBuildProjectFullPath)"
Properties="TargetFramework=once;LibMongoCryptSourceUrl=$(LibMongoCryptSourceUrl);LibMongoCryptSourcePath=$(LibMongoCryptSourcePath);LibMongoCryptPackagePath=$(LibMongoCryptPackagePath)"
Targets="DownloadNativeBinary" />
</Target>

<Target Name="DownloadNativeBinaries_AlpineARM64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-musl-arm64/native/libmongocrypt.so')">
<PropertyGroup>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/alpine-arm64-earthly/$(LibMongoCryptVersionPath)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourcePath>nocrypto/lib/libmongocrypt.so</LibMongoCryptSourcePath>
<LibMongoCryptPackagePath>runtimes/linux/native/alpine</LibMongoCryptPackagePath>
<LibMongoCryptPackagePath>$(LibMongoCryptVersionPath)/runtimes/linux-musl-arm64/native/</LibMongoCryptPackagePath>
</PropertyGroup>

<MSBuild Projects ="$(MSBuildProjectFullPath)"
Properties="TargetFramework=once;LibMongoCryptSourceUrl=$(LibMongoCryptSourceUrl);LibMongoCryptSourcePath=$(LibMongoCryptSourcePath);LibMongoCryptPackagePath=$(LibMongoCryptPackagePath)"
Targets="DownloadNativeBinary" />
</Target>

<Target Name="DownloadNativeBinaries_Windows" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/runtimes/win/native/mongocrypt.dll')">
<Target Name="DownloadNativeBinaries_WindowsX64" BeforeTargets="BeforeBuild" Condition="!Exists('$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/win-x64/native/mongocrypt.dll')">
<PropertyGroup>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/windows-test/$(LibMongoCryptVersion)/$(LibMongoCryptCommit)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourceUrl>https://mciuploads.s3.amazonaws.com/libmongocrypt-release/windows-test/$(LibMongoCryptVersionPath)/libmongocrypt.tar.gz</LibMongoCryptSourceUrl>
<LibMongoCryptSourcePath>bin/mongocrypt.dll</LibMongoCryptSourcePath>
<LibMongoCryptPackagePath>runtimes/win/native</LibMongoCryptPackagePath>
<LibMongoCryptPackagePath>$(LibMongoCryptVersionPath)/runtimes/win-x64/native</LibMongoCryptPackagePath>
</PropertyGroup>

<MSBuild Projects ="$(MSBuildProjectFullPath)"
Expand All @@ -90,34 +102,46 @@
</Target>

<ItemGroup>
<Content Include="$(MSBuildProjectDirectory)/runtimes/osx/native/libmongocrypt.dylib">
<Content Include="$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/osx/native/libmongocrypt.dylib">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>runtimes\osx\native\libmongocrypt.dylib</Link>
<Pack>true</Pack>
<PackagePath>runtimes\osx\native</PackagePath>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The macOS paths remain unchanged because our packaged library is a universal binary that supports both arm64 and x64 architectures. According to MSBuild's RID compatibility fallback graph, both osx-x64 and osx-arm64 fall back to osx, so the current structure already handles both platforms correctly without requiring separate RID-specific paths.

</Content>

<Content Include="$(MSBuildProjectDirectory)/runtimes/linux/native/x64/libmongocrypt.so">
<Content Include="$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-x64/native/libmongocrypt.so">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>runtimes\linux-x64\native\libmongocrypt.so</Link>
<Pack>true</Pack>
<PackagePath>runtimes\linux-x64\native</PackagePath>
</Content>

<Content Include="$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-arm64/native/libmongocrypt.so">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>runtimes\linux-arm64\native\libmongocrypt.so</Link>
<Pack>true</Pack>
<PackagePath>runtimes\linux\native\x64</PackagePath>
<PackagePath>runtimes\linux-arm64\native</PackagePath>
</Content>

<Content Include="$(MSBuildProjectDirectory)/runtimes/linux/native/arm64/libmongocrypt.so">
<Content Include="$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-musl-arm64/native/libmongocrypt.so">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>runtimes\linux-musl-arm64\native\libmongocrypt.so</Link>
<Pack>true</Pack>
<PackagePath>runtimes\linux\native\arm64</PackagePath>
<PackagePath>runtimes\linux-musl-arm64\native</PackagePath>
</Content>

<Content Include="$(MSBuildProjectDirectory)/runtimes/linux/native/alpine/libmongocrypt.so">
<Content Include="$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/linux-musl-x64/native/libmongocrypt.so">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>runtimes\linux-musl-x64\native\libmongocrypt.so</Link>
<Pack>true</Pack>
<PackagePath>runtimes\linux\native\alpine</PackagePath>
<PackagePath>runtimes\linux-musl-x64\native</PackagePath>
</Content>

<Content Include="$(MSBuildProjectDirectory)/runtimes/win/native/mongocrypt.dll">
<Content Include="$(MSBuildProjectDirectory)/$(LibMongoCryptVersionPath)/runtimes/win-x64/native/mongocrypt.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>runtimes\win-x64\native\mongocrypt.dll</Link>
<Pack>true</Pack>
<PackagePath>runtimes\win\native</PackagePath>
<PackagePath>runtimes\win-x64\native</PackagePath>
</Content>
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="$([MSBuild]::IsOsPlatform('Windows'))">
<Content Include="$(MSBuildThisFileDirectory)../runtimes/win/native/mongocrypt.dll">
<Content Include="$(MSBuildThisFileDirectory)../runtimes/win-x64/native/mongocrypt.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Link>mongocrypt.dll</Link>
</Content>
Expand Down