Skip to content

Commit 2af8a20

Browse files
committed
打包 libnode
1 parent a5b468c commit 2af8a20

File tree

4 files changed

+76
-20
lines changed

4 files changed

+76
-20
lines changed

.github/workflows/build_nuget.yml

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,46 @@ jobs:
9494
done
9595
done
9696
97+
# puerts\unity\native\papi-nodejs\.backends\papi-nodejs\lib\Linux\libnode.so.93
98+
# puerts\unity\native\papi-nodejs\.backends\papi-nodejs\lib\Win64\libnode.dll
99+
# puerts\unity\native\papi-nodejs\.backends\papi-nodejs\lib\macOS\libnode.93.dylib
100+
- name: Process libraries dependencies
101+
run: |
102+
# Move libnode libraries to build directories
103+
if ("${{ matrix.platform }}" -eq "linux" -and (Test-Path "unity/native/papi-nodejs/build_linux_x64_papi-nodejs")) {
104+
Move-Item -Path "unity/native/papi-nodejs/.backends/papi-nodejs/lib/Linux/libnode.so.93" -Destination "unity/native/papi-nodejs/build_linux_x64_papi-nodejs/libnode.so.93" -Force
105+
}
106+
if ("${{ matrix.platform }}" -eq "win" -and (Test-Path "unity/native/papi-nodejs/build_win_x64_papi-nodejs/Release")) {
107+
Move-Item -Path "unity/native/papi-nodejs/.backends/papi-nodejs/lib/Win64/libnode.dll" -Destination "unity/native/papi-nodejs/build_win_x64_papi-nodejs/Release/libnode.dll" -Force
108+
}
109+
if ("${{ matrix.platform }}" -eq "osx" -and (Test-Path "unity/Assets/core/upm/Plugins/macOS")) {
110+
Move-Item -Path "unity/native/papi-nodejs/.backends/papi-nodejs/lib/macOS/libnode.93.dylib" -Destination "unity/Assets/core/upm/Plugins/macOS/libnode.93.dylib" -Force
111+
}
112+
shell: pwsh
113+
114+
115+
97116
- name: Upload all native artifacts
98117
uses: actions/upload-artifact@v4
99118
with:
100119
name: natives-${{ matrix.platform }}-${{ matrix.arch }}
101120
path: |
102-
unity/Assets/core/upm/Plugins/**/*
103-
!unity/Assets/core/upm/Plugins/**/*.meta
121+
unity/Assets/core/upm/Plugins/macOS/*.dylib
122+
unity/native/papi-lua/build_${{ matrix.platform }}_${{ matrix.arch }}_*/Release/*.dll
123+
unity/native/papi-lua/build_${{ matrix.platform }}_${{ matrix.arch }}_*/lib*.so
124+
125+
unity/native/papi-nodejs/build_${{ matrix.platform }}_${{ matrix.arch }}_*/Release/*.dll
126+
unity/native/papi-nodejs/build_${{ matrix.platform }}_${{ matrix.arch }}_*/lib*.so
127+
unity/native/papi-nodejs/build_linux_x64_papi-nodejs/libnode.so.93
128+
129+
unity/native/papi-quickjs/build_${{ matrix.platform }}_${{ matrix.arch }}_*/Release/*.dll
130+
unity/native/papi-quickjs/build_${{ matrix.platform }}_${{ matrix.arch }}_*/lib*.so
104131
132+
unity/native/papi-v8/build_${{ matrix.platform }}_${{ matrix.arch }}_*/Release/*.dll
133+
unity/native/papi-v8/build_${{ matrix.platform }}_${{ matrix.arch }}_*/lib*.so
134+
135+
unity/native/puerts/build_${{ matrix.platform }}_${{ matrix.arch }}_*/Release/*.dll
136+
unity/native/puerts/build_${{ matrix.platform }}_${{ matrix.arch }}_*/lib*.so
105137
pack_nuget:
106138
name: Pack NuGet
107139
needs: build

unity/nuget/Puerts.Core.NativeAssets.Linux/Puerts.Core.NativeAssets.Linux.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<Import Project="..\NativeAssets.Common.props" />
99

1010
<ItemGroup>
11-
<None Include="lib\**\*.so" Pack="True" PackagePath="runtimes\" />
11+
<None Include="lib\**\*.so*" Pack="True" PackagePath="runtimes\" />
1212
</ItemGroup>
1313

1414
</Project>

unity/nuget/Puerts.NodeJS.NativeAssets.Linux/Puerts.NodeJS.NativeAssets.Linux.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<Import Project="..\NativeAssets.Common.props" />
99

1010
<ItemGroup>
11-
<None Include="lib\**\*.so" Pack="True" PackagePath="runtimes\" />
11+
<None Include="lib\**\*.so*" Pack="True" PackagePath="runtimes\" />
1212
</ItemGroup>
1313

1414
</Project>

unity/nuget/build/Program.cs

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -93,25 +93,49 @@ public override void Run(BuildContext context)
9393

9494
foreach (var projectItem in WellKnownProjects.NativeAssetsProjects)
9595
{
96-
var unityRid = projectItem.DotNetRid switch
96+
if (projectItem.CmakeRid == "osx")
9797
{
98-
"win-x64" => "x86_64",
99-
"linux-x64" => "x86_64",
100-
"osx" => "macOS",
101-
_ => throw new NotSupportedException($"RID '{projectItem.DotNetRid}' is not supported.")
102-
};
98+
// natives-osx-auto\Assets\core\upm\Plugins\macOS\*.dylib
99+
var nativeAssetsPathmacOS = nativeAssetsDirectory.Path
100+
.Combine("natives-osx-auto")
101+
.Combine("Assets")
102+
.Combine("core")
103+
.Combine("upm")
104+
.Combine("Plugins")
105+
.Combine("macOS");
106+
107+
var targetDirectorymacOS = context.ProjectsRoot.Path
108+
.Combine(projectItem.Name)
109+
.Combine("lib")
110+
.Combine(projectItem.DotNetRid).Combine("native");
111+
112+
Directory.CreateDirectory(targetDirectorymacOS.FullPath);
113+
114+
var filesmacOS = context.GetFiles(new GlobPattern($"{nativeAssetsPathmacOS.FullPath}/*{projectItem.DotNetNativeName}*dylib"), new GlobberSettings() { IsCaseSensitive = false });
115+
if (filesmacOS.Count == 0)
116+
{
117+
throw new CakeException($"No native assets found in '{nativeAssetsPathmacOS.FullPath}' for project '{projectItem.Name}'.");
118+
}
119+
if (filesmacOS.Count > 1)
120+
{
121+
throw new CakeException($"Multiple native assets found in '{nativeAssetsPathmacOS.FullPath}' for project '{projectItem.Name}'. Expected only one. Found: {filesmacOS.Count}, files: {string.Join(", ", filesmacOS.Select(f => f.FullPath))}");
122+
}
123+
context.CopyFiles(filesmacOS, targetDirectorymacOS.FullPath);
103124

104-
var suffix = projectItem.DotNetRid switch
105-
{
106-
"win-x64" => ".dll",
107-
"linux-x64" => ".so",
108-
"osx" => ".dylib",
109-
_ => throw new NotSupportedException($"RID '{projectItem.DotNetRid}' is not supported.")
110-
};
125+
// Copy libnode dependencies for NodeJS
126+
if (projectItem.DotNetNativeName == "NodeJS")
127+
{
128+
var libnodeFilesmacOS = context.GetFiles(new GlobPattern($"{nativeAssetsPathmacOS.FullPath}/libnode*"), new GlobberSettings() { IsCaseSensitive = false });
129+
context.CopyFiles(libnodeFilesmacOS, targetDirectorymacOS.FullPath);
130+
}
131+
132+
continue;
133+
}
111134

112135
var nativeAssetsPath = nativeAssetsDirectory.Path
113136
.Combine("natives-" + projectItem.CmakeRid)
114-
.Combine(unityRid);
137+
.Combine("native")
138+
.Combine(projectItem.CmakeNativeName);
115139

116140
if (!Directory.Exists(nativeAssetsPath.FullPath))
117141
{
@@ -125,7 +149,7 @@ public override void Run(BuildContext context)
125149

126150
Directory.CreateDirectory(targetDirectory.FullPath);
127151

128-
var files = context.GetFiles(new GlobPattern($"{nativeAssetsPath.FullPath}/**/*{suffix}"));
152+
var files = context.GetFiles(new GlobPattern($"{nativeAssetsPath.FullPath}/**/*"));
129153
context.CopyFiles(files, targetDirectory.FullPath);
130154
}
131155
}
@@ -286,7 +310,7 @@ public string CmakeRid
286310
{
287311
"win-x64" => "win-x64",
288312
"linux-x64" => "linux-x64",
289-
"osx" => "osx-auto",
313+
"osx" => "osx",
290314
_ => throw new NotSupportedException($"RID '{DotNetRid}' is not supported.")
291315
};
292316
}

0 commit comments

Comments
 (0)