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

Generate JDK source and data #554

Merged
merged 14 commits into from
Jul 15, 2024
Merged
2 changes: 1 addition & 1 deletion .github/workflows/IKVM.yml
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ jobs:
"--blame",
"--blame-crash",
"--blame-hang",
"--blame-hang-timeout", "60m",
"--blame-hang-timeout", "120m",
"--blame-hang-dump-type", "full",
"-v:diag",
"--results-directory", "TestResults",
Expand Down
4 changes: 0 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,6 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions IKVM.refs.targets
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
<OutputItemType>IkvmJavaItem</OutputItemType>
<IkvmJavaRuntimeIdentifier>win</IkvmJavaRuntimeIdentifier>
</ProjectReference>
<ProjectReference Include="$(MSBuildThisFileDirectory)src\IKVM.Java.runtime.linux\IKVM.Java.runtime.linux.csproj" Condition="$(_EnabledRuntimes.Contains(';linux-'))">
<ProjectReference Include="$(MSBuildThisFileDirectory)src\IKVM.Java.runtime.linux\IKVM.Java.runtime.linux.csproj" Condition="$(_EnabledRuntimes.Contains(';linux-')) And $([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netcoreapp3.1'))">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>False</Private>
<PrivateAssets>all</PrivateAssets>
<OutputItemType>IkvmJavaItem</OutputItemType>
<IkvmJavaRuntimeIdentifier>linux</IkvmJavaRuntimeIdentifier>
</ProjectReference>
<ProjectReference Include="$(MSBuildThisFileDirectory)src\IKVM.Java.runtime.osx\IKVM.Java.runtime.osx.csproj" Condition="$(_EnabledRuntimes.Contains(';osx-'))">
<ProjectReference Include="$(MSBuildThisFileDirectory)src\IKVM.Java.runtime.osx\IKVM.Java.runtime.osx.csproj" Condition="$(_EnabledRuntimes.Contains(';osx-')) And $([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netcoreapp3.1'))">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>False</Private>
<PrivateAssets>all</PrivateAssets>
Expand Down
127 changes: 122 additions & 5 deletions src/IKVM.Image/IKVM.Image.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,6 @@
<IkvmImageItem Include="$(OpenJdkDir)jdk\src\share\lib\hijrah-config-umalqura.properties" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\%(Filename)%(Extension)" />
<IkvmImageItem Include="$(OpenJdkDir)jdk\src\share\lib\cmm\lcms\*.pf" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\cmm\%(Filename)%(Extension)" />
<IkvmImageItem Include="$(OpenJdkDir)jdk\src\share\lib\security\java.policy" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\security\java.policy" />
<IkvmImageItem Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\lib\security\blacklisted.certs" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\security\blacklisted.certs" />
<IkvmImageItem Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\lib\security\policy\limited\local_policy.jar" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\security\policy\limited\local_policy.jar" />
<IkvmImageItem Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\lib\security\policy\limited\US_export_policy.jar" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\security\policy\limited\US_export_policy.jar" />
<IkvmImageItem Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\lib\security\policy\unlimited\local_policy.jar" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\security\policy\unlimited\local_policy.jar" />
<IkvmImageItem Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\lib\security\policy\unlimited\US_export_policy.jar" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\security\policy\unlimited\US_export_policy.jar" />
<IkvmImageItem Include="$(OpenJdkDir)jdk\src\share\lib\sound.properties" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\%(Filename)%(Extension)" />
<IkvmImageItem Include="$(OpenJdkDir)jdk\src\share\lib\net.properties" TargetFramework="any" RuntimeIdentifier="any" ImagePath="lib\%(Filename)%(Extension)" />
</ItemGroup>
Expand Down Expand Up @@ -143,6 +138,128 @@
</GenerateDependsOn>
</PropertyGroup>

<PropertyGroup>
<BlacklistedCertsSrc>$(OpenJdkDir)jdk\src\share\lib\security\blacklisted.certs</BlacklistedCertsSrc>
<BlacklistedCertsDst>$(IntermediateOutputPath)blacklisted.certs</BlacklistedCertsDst>
</PropertyGroup>

<Target Name="GenerateBlacklistedCerts" Inputs="$(MSBuildThisFileFullPath);$(BlacklistedCertsSrc)" Outputs="$(BlacklistedCertsDst)">
<Copy SourceFiles="$(BlacklistedCertsSrc)" DestinationFiles="$(BlacklistedCertsDst)" />

<ItemGroup>
<IkvmImageItem Include="$(BlacklistedCertsDst)" ImagePath="lib\security\blacklisted.certs" TargetFramework="any" RuntimeIdentifier="any" />
<FileWrites Include="$(BlacklistedCertsDst)" />
</ItemGroup>
</Target>

<PropertyGroup>
<GenerateDependsOn>
GenerateBlacklistedCerts;
$(GenerateDependsOn);
</GenerateDependsOn>
</PropertyGroup>

<PropertyGroup>
<USExportPolicyArchive>$(IntermediateOutputPath)US_export_policy.jar</USExportPolicyArchive>
</PropertyGroup>

<ItemGroup>
<USExportPolicyFiles Include="$(OpenJdkDir)jdk\make\data\cryptopolicy\unlimited\default_local.policy" />
</ItemGroup>

<Target Name="GenerateUSExportPolicy" DependsOnTargets="ResolveJar" Inputs="$(MSBuildThisFileFullPath);$(OpenJdkDir)jdk\make\data\cryptopolicy\unlimited\default_US_export.policy" Outputs="$(USExportPolicyArchive)">
<Error Text="Could not locate jar executable." Condition=" '$(JarPath)' == '' " />
<Error Text="jar could not be located at '$(JarPath)'." Condition="!Exists('$(JarPath)')" />
<Exec Command="chmod +x $(JarPath) &gt;/dev/null 2&gt;&amp;1" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" StandardErrorImportance="low" ContinueOnError="true" Condition="$([MSBuild]::IsOSUnixLike())" />

<WriteLinesToFile Lines="Crypto-Strength: unlimited" File="$(USExportPolicyArchive).manifest" Overwrite="true" />
<Exec Command="$(JarExec) cfm $(USExportPolicyArchive).tmp $(USExportPolicyArchive).manifest @(USExportPolicyFiles->'-C %(RootDir)%(Directory) %(Filename)%(Extension)', ' ')" />
<Move SourceFiles="$(USExportPolicyArchive).tmp" DestinationFiles="$(USExportPolicyArchive)" />
<Touch Files="$(USExportPolicyArchive)" ForceTouch="true" AlwaysCreate="true" />

<ItemGroup>
<IkvmImageItem Include="$(USExportPolicyArchive)" ImagePath="lib\security\policy\unlimited\US_export_policy.jar" TargetFramework="any" RuntimeIdentifier="any" />
<IkvmImageItem Include="$(USExportPolicyArchive)" ImagePath="lib\security\policy\limited\US_export_policy.jar" TargetFramework="any" RuntimeIdentifier="any" />
<FileWrites Include="$(USExportPolicyArchive)" />
<FileWrites Include="$(USExportPolicyArchive).tmp" />
<FileWrites Include="$(USExportPolicyArchive).manifest" />
</ItemGroup>
</Target>

<PropertyGroup>
<GenerateDependsOn>
GenerateUSExportPolicy;
$(GenerateDependsOn);
</GenerateDependsOn>
</PropertyGroup>

<PropertyGroup>
<LimitedLocalPolicyArchive>$(IntermediateOutputPath)limited_local_policy.jar</LimitedLocalPolicyArchive>
</PropertyGroup>

<ItemGroup>
<LimitedLocalPolicyFiles Include="$(OpenJdkDir)jdk\make\data\cryptopolicy\limited\default_local.policy" />
<LimitedLocalPolicyFiles Include="$(OpenJdkDir)jdk\make\data\cryptopolicy\limited\exempt_local.policy" />
</ItemGroup>

<Target Name="GenerateLimitedLocalPolicy" DependsOnTargets="ResolveJar" Inputs="$(MSBuildThisFileFullPath);@(LimitedLocalPolicyFiles)" Outputs="$(LimitedLocalPolicyArchive)">
<Error Text="Could not locate jar executable." Condition=" '$(JarPath)' == '' " />
<Error Text="jar could not be located at '$(JarPath)'." Condition="!Exists('$(JarPath)')" />
<Exec Command="chmod +x $(JarPath) &gt;/dev/null 2&gt;&amp;1" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" StandardErrorImportance="low" ContinueOnError="true" Condition="$([MSBuild]::IsOSUnixLike())" />

<WriteLinesToFile Lines="Crypto-Strength: limited" File="$(LimitedLocalPolicyArchive).manifest" Overwrite="true" />
<Exec Command="$(JarExec) cfm $(LimitedLocalPolicyArchive).tmp $(LimitedLocalPolicyArchive).manifest @(LimitedLocalPolicyFiles->'-C %(RootDir)%(Directory) %(Filename)%(Extension)', ' ')" />
<Move SourceFiles="$(LimitedLocalPolicyArchive).tmp" DestinationFiles="$(LimitedLocalPolicyArchive)" />
<Touch Files="$(LimitedLocalPolicyArchive)" ForceTouch="true" AlwaysCreate="true" />

<ItemGroup>
<IkvmImageItem Include="$(LimitedLocalPolicyArchive)" ImagePath="lib\security\policy\limited\local_policy.jar" TargetFramework="any" RuntimeIdentifier="any" />
<FileWrites Include="$(LimitedLocalPolicyArchive)" />
<FileWrites Include="$(LimitedLocalPolicyArchive).tmp" />
<FileWrites Include="$(LimitedLocalPolicyArchive).manifest" />
</ItemGroup>
</Target>

<PropertyGroup>
<GenerateDependsOn>
GenerateLimitedLocalPolicy;
$(GenerateDependsOn);
</GenerateDependsOn>
</PropertyGroup>

<PropertyGroup>
<UnlimitedLocalPolicyArchive>$(IntermediateOutputPath)unlimited_local_policy.jar</UnlimitedLocalPolicyArchive>
</PropertyGroup>

<ItemGroup>
<UnlimitedLocalPolicyFiles Include="$(OpenJdkDir)jdk\make\data\cryptopolicy\unlimited\default_local.policy" />
</ItemGroup>

<Target Name="GenerateUnlimitedLocalPolicy" DependsOnTargets="ResolveJar" Inputs="$(MSBuildThisFileFullPath);@(UnlimitedLocalPolicyFiles)" Outputs="$(UnlimitedLocalPolicyArchive)">
<Error Text="Could not locate jar executable." Condition=" '$(JarPath)' == '' " />
<Error Text="jar could not be located at '$(JarPath)'." Condition="!Exists('$(JarPath)')" />
<Exec Command="chmod +x $(JarPath) &gt;/dev/null 2&gt;&amp;1" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" StandardErrorImportance="low" ContinueOnError="true" Condition="$([MSBuild]::IsOSUnixLike())" />

<WriteLinesToFile Lines="Crypto-Strength: unlimited" File="$(UnlimitedLocalPolicyArchive).manifest" Overwrite="true" />
<Exec Command="$(JarExec) cfm $(UnlimitedLocalPolicyArchive).tmp $(UnlimitedLocalPolicyArchive).manifest @(UnlimitedLocalPolicyFiles->'-C %(RootDir)%(Directory) %(Filename)%(Extension)', ' ')" />
<Move SourceFiles="$(UnlimitedLocalPolicyArchive).tmp" DestinationFiles="$(UnlimitedLocalPolicyArchive)" />
<Touch Files="$(UnlimitedLocalPolicyArchive)" ForceTouch="true" AlwaysCreate="true" />

<ItemGroup>
<IkvmImageItem Include="$(UnlimitedLocalPolicyArchive)" ImagePath="lib\security\policy\unlimited\local_policy.jar" TargetFramework="any" RuntimeIdentifier="any" />
<FileWrites Include="$(UnlimitedLocalPolicyArchive)" />
<FileWrites Include="$(UnlimitedLocalPolicyArchive).tmp" />
<FileWrites Include="$(UnlimitedLocalPolicyArchive).manifest" />
</ItemGroup>
</Target>

<PropertyGroup>
<GenerateDependsOn>
GenerateUnlimitedLocalPolicy;
$(GenerateDependsOn);
</GenerateDependsOn>
</PropertyGroup>

<PropertyGroup>
<GenerateDependsOn>
$(GenerateDependsOn);
Expand Down
12 changes: 12 additions & 0 deletions src/IKVM.Image/IKVM.Image.project.targets
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,18 @@
<Message Text="Using javac executable found in JAVA_HOME at '$(JavaCompilerPath)'." Importance="high" Condition=" '$(JavaCompilerPath)' != '' " />
</Target>

<!-- IKVM.Java uses the jar executable from JAVA_HOME -->
<Target Name="ResolveJar" Condition=" '$(JAVA_HOME)' != '' And '$(JarPath)' == '' ">
<PropertyGroup>
<JarPath Condition=" '$([MSBuild]::IsOSUnixLike())' == 'true' And Exists('$(JAVA_HOME)\bin\jar') ">$([System.IO.Path]::GetFullPath('$(JAVA_HOME)\bin\jar'))</JarPath>
<JarPath Condition=" '$([MSBuild]::IsOSUnixLike())' != 'true' And Exists('$(JAVA_HOME)\bin\jar.exe') ">$([System.IO.Path]::GetFullPath('$(JAVA_HOME)\bin\jar.exe'))</JarPath>
<JarArgs></JarArgs>
<JarExec Condition=" '$(JarPath)' != '' ">"$(JarPath)" $(JarArgs)</JarExec>
</PropertyGroup>
<Message Text="Using jar executable found in JAVA_HOME at '$(JarPath)'." Importance="high" Condition=" '$(JarPath)' != '' " />
<Error Text="Could not locate jar executable in JAVA_HOME. Ensure JAVA_HOME is set to an appropriate bootstrap JDK." Condition=" '$(JarPath)' == '' " />
</Target>

<Target Name="GetIkvmImageItemsToPack" DependsOnTargets="CollectIkvmImageItemsOutputItems" BeforeTargets="_GetPackageFiles" Condition=" '$(TargetFramework)' == '' ">
<ItemGroup>
<_PackageFiles Include="@(IkvmImageItem)">
Expand Down
2 changes: 1 addition & 1 deletion src/IKVM.Java.runtime.linux/IKVM.Java.runtime.linux.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="$(MSBuildThisFileDirectory)..\IKVM.NET.Sdk\Sdk\Sdk.props" />

<PropertyGroup>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
<PackageId>IKVM.Java.runtime.linux</PackageId>
<IkvmJavaRuntimeIdentifier>linux</IkvmJavaRuntimeIdentifier>
</PropertyGroup>
Expand Down
Binary file added src/IKVM.Java.runtime.linux/msbuild.binlog
Binary file not shown.
2 changes: 1 addition & 1 deletion src/IKVM.Java.runtime.osx/IKVM.Java.runtime.osx.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Import Project="$(MSBuildThisFileDirectory)..\IKVM.NET.Sdk\Sdk\Sdk.props" />

<PropertyGroup>
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
<PackageId>IKVM.Java.runtime.osx</PackageId>
<IkvmJavaRuntimeIdentifier>osx</IkvmJavaRuntimeIdentifier>
</PropertyGroup>
Expand Down
18 changes: 18 additions & 0 deletions src/IKVM.Java/IKVM.Java.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,26 @@
<TargetFrameworks>net472;net6.0;net8.0</TargetFrameworks>
<PackageId>IKVM.Java</PackageId>
<IkvmJavaRuntimeIdentifier>ref</IkvmJavaRuntimeIdentifier>
<DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType>
<TargetsTriggeredByCompilation>$(TargetsTriggeredByCompilation);ConvertRefAssembly</TargetsTriggeredByCompilation>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="JetBrains.Refasmer.CliTool" Version="1.0.33">
<PrivateAssets>all</PrivateAssets>
<ExcludeAssets>all</ExcludeAssets>
<GeneratePathProperty>true</GeneratePathProperty>
</PackageReference>
</ItemGroup>

<Target Name="ConvertRefAssembly">
<ItemGroup>
<RefasmerCliTool Include="$(PkgJetBrains_Refasmer_CliTool)\tools\net6.0\any\RefasmerCliTool.dll" />
</ItemGroup>
<Exec Command="dotnet exec @(RefasmerCliTool) --refasm --overwrite --noattr --all &quot;@(IntermediateAssembly)&quot; " />
</Target>

<Import Project="..\IKVM.Java\IKVM.Java.runtime.props" />
<Import Project="$(MSBuildThisFileDirectory)..\IKVM.NET.Sdk\Sdk\Sdk.targets" />
<Import Project="..\IKVM.Java\IKVM.Java.runtime.targets" />
Expand Down
7 changes: 4 additions & 3 deletions src/IKVM.Java/IKVM.Java.runtime.jdk.props
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
</PropertyGroup>

<ItemGroup>
<OpenJdkSource Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\gensrc\sun\util\CoreResourceBundleControl.java" PackagePath="sun\util" />
<OpenJdkSource Include="$(OpenJdkDir)\build\linux-x86_64-normal-server-release\jdk\gensrc\sun\util\locale\provider\LocaleDataMetaInfo.java" PackagePath="sun\util\locale\provider" />
<OpenJdkSource Include="$(OpenJdkDir)\jdk\src\share\classes\com\sun\awt\**\*.java" PackagePath="com\sun\awt" />
<OpenJdkSource Include="$(OpenJdkDir)\jdk\src\share\classes\com\sun\beans\**\*.java" PackagePath="com\sun\beans" />
<OpenJdkSource Include="$(OpenJdkDir)\jdk\src\share\classes\com\sun\crypto\**\*.java" PackagePath="com\sun\crypto" />
Expand Down Expand Up @@ -128,8 +126,11 @@
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\security\smartcardio\**\*.java" />
<OpenJdkSource Include="$(OpenJdkDir)\jdk\src\share\classes\sun\swing\**\*.java" PackagePath="sun\swing" />
<OpenJdkSource Include="$(OpenJdkDir)\jdk\src\share\classes\sun\text\**\*.java" PackagePath="sun\text" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\text\resources\BreakIteratorInfo.java" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\text\resources\BreakIteratorRules.java" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\text\resources\BreakIteratorRules_th.java" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\text\resources\th\BreakIteratorInfo_th.java" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\text\resources\th\BreakIteratorRules_th.java" />

<OpenJdkSource Include="$(OpenJdkDir)\jdk\src\share\classes\sun\tools\**\*.java" PackagePath="sun\tools" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\tools\attach\**\*.java" />
<OpenJdkSource Remove="$(OpenJdkDir)\jdk\src\share\classes\sun\tools\jcmd\**\*.java" />
Expand Down
Loading
Loading