diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 905f994004f..f369c28c88f 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -33,6 +33,16 @@ env: AWS_ACCESS_KEY_ID: ${{secrets.S3_ACCESS_KEY}} AWS_SECRET_ACCESS_KEY: ${{secrets.S3_SECRET_KEY}} AWS_DEFAULT_REGION: us-west-2 + AZURE_CLIENT_ID: ${{secrets.AZURE_CLIENT_ID}} + AZURE_CLIENT_SECRET: ${{secrets.AZURE_CLIENT_SECRET}} + AZURE_TENANT_ID: ${{secrets.AZURE_TENANT_ID}} + AZURE_ENDPOINT: ${{secrets.AZURE_ENDPOINT}} + AZURE_CODE_SIGNING_NAME: ${{secrets.AZURE_CODE_SIGNING_NAME}} + AZURE_CERT_PROFILE_NAME: ${{secrets.AZURE_CERT_PROFILE_NAME}} + + TSCT: ${{github.workspace}}\temp\TSCT + DLIB: ${{github.workspace}}\temp\TSCT\Microsoft.Trusted.Signing.Client\bin\x64\Azure.CodeSigning.Dlib.dll + DMDF: ${{github.workspace}}\metadata.json jobs: build: @@ -88,9 +98,18 @@ jobs: ${{github.workspace}}\3rdParty\Windows\cuda\ key: windows-${{matrix.platform}}-${{matrix.configuration}}-${{hashFiles('win_build/vcpkg_3rdparty_dependencies.vcxproj', '.github/workflows/windows.yml')}} + - name: Install Trusted Signing Client Tools + if: success() && matrix.type == 'msbuild' + run: nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.60 -x -OutputDirectory "${{ env.TSCT }}" + + - name: Write metadata.json + if: success() && matrix.type == 'msbuild' + run: | + python ./ci_tools/create_signing_metadata.py "${{ env.DMDF }}" "${{ env.AZURE_ENDPOINT }}" "${{ env.AZURE_CODE_SIGNING_NAME }}" "${{ env.AZURE_CERT_PROFILE_NAME }}" + - name: Build if: success() && matrix.type == 'msbuild' - run: msbuild win_build\boinc.sln -p:Configuration=${{matrix.configuration}} -p:Platform=${{matrix.platform}} -p:VcpkgTripletConfig=ci -m + run: msbuild win_build\boinc.sln -p:Configuration=${{matrix.configuration}} -p:Platform=${{matrix.platform}} -p:VcpkgTripletConfig=ci -p:DLIB=${{ env.DLIB }} -p:DMDF=${{ env.DMDF }} -m - name: Build CMake if: success() && matrix.type == 'libs-cmake' diff --git a/ci_tools/check_custom_vcpkg_ports_for_updates.py b/ci_tools/check_custom_vcpkg_ports_for_updates.py index 40ca149cdfe..cc4c7b107ac 100644 --- a/ci_tools/check_custom_vcpkg_ports_for_updates.py +++ b/ci_tools/check_custom_vcpkg_ports_for_updates.py @@ -1,3 +1,20 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2024 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + import json import os import sys diff --git a/ci_tools/create_signing_metadata.py b/ci_tools/create_signing_metadata.py new file mode 100644 index 00000000000..0d038e2f8b8 --- /dev/null +++ b/ci_tools/create_signing_metadata.py @@ -0,0 +1,37 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2024 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + +import sys +import json + +def main(): + if len(sys.argv) != 5: + print("Usage: create_signing_metadata.py ") + sys.exit(1) + + output_file = sys.argv[1] + metadata = { + "Endpoint": sys.argv[2], + "CodeSigningAccountName": sys.argv[3], + "CertificateProfileName": sys.argv[4] + } + + with open(output_file, 'w', encoding='utf-8') as f: + json.dump(metadata, f, ensure_ascii=False, indent=4) + +if __name__ == "__main__": + main() diff --git a/ci_tools/source_code_check.py b/ci_tools/source_code_check.py index 993697f7259..0bd2ca88f5d 100644 --- a/ci_tools/source_code_check.py +++ b/ci_tools/source_code_check.py @@ -1,3 +1,20 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2024 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + import os import pathlib import sys diff --git a/ci_tools/trailing_whitespaces_check.py b/ci_tools/trailing_whitespaces_check.py index bf1753ccb1f..88c668618dc 100644 --- a/ci_tools/trailing_whitespaces_check.py +++ b/ci_tools/trailing_whitespaces_check.py @@ -1,3 +1,20 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2024 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + import os import pathlib import sys diff --git a/ci_tools/update_actions.py b/ci_tools/update_actions.py index 28900d2a442..6da59cf3904 100644 --- a/ci_tools/update_actions.py +++ b/ci_tools/update_actions.py @@ -1,3 +1,20 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2024 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + import os import requests import sys diff --git a/win_build/boinc.sln b/win_build/boinc.sln index f637609f3bd..ae401bb3118 100644 --- a/win_build/boinc.sln +++ b/win_build/boinc.sln @@ -152,6 +152,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer_icon", "installer EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer_setup", "installer_setup.vcxproj", "{80DFF29A-7B1D-41F4-BEAE-307CDB39BF54}" ProjectSection(ProjectDependencies) = postProject + {88EB73FC-A865-4C3F-906D-44E00EF27A27} = {88EB73FC-A865-4C3F-906D-44E00EF27A27} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer_msi", "installer_msi.vcxproj", "{88EB73FC-A865-4C3F-906D-44E00EF27A27}" + ProjectSection(ProjectDependencies) = postProject + {49723CA5-DA05-43C0-93AB-6FD30D046919} = {49723CA5-DA05-43C0-93AB-6FD30D046919} {BB5EF2AB-F453-463B-835A-65BBE7182378} = {BB5EF2AB-F453-463B-835A-65BBE7182378} EndProjectSection EndProject @@ -505,6 +511,14 @@ Global {80DFF29A-7B1D-41F4-BEAE-307CDB39BF54}.Release|ARM64.Build.0 = Release|ARM64 {80DFF29A-7B1D-41F4-BEAE-307CDB39BF54}.Release|x64.ActiveCfg = Release|x64 {80DFF29A-7B1D-41F4-BEAE-307CDB39BF54}.Release|x64.Build.0 = Release|x64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Debug|ARM64.Build.0 = Debug|ARM64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Debug|x64.ActiveCfg = Debug|x64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Debug|x64.Build.0 = Debug|x64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Release|ARM64.ActiveCfg = Release|ARM64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Release|ARM64.Build.0 = Release|ARM64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Release|x64.ActiveCfg = Release|x64 + {88EB73FC-A865-4C3F-906D-44E00EF27A27}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/win_build/boinc_signing.targets b/win_build/boinc_signing.targets index efa7e372b10..11a1bf8164f 100644 --- a/win_build/boinc_signing.targets +++ b/win_build/boinc_signing.targets @@ -2,7 +2,7 @@ - - + + diff --git a/win_build/installer.vcxproj b/win_build/installer.vcxproj index c57a9609d97..831937b390b 100644 --- a/win_build/installer.vcxproj +++ b/win_build/installer.vcxproj @@ -182,12 +182,7 @@ - - - - - - + diff --git a/win_build/installer_msi.vcxproj b/win_build/installer_msi.vcxproj new file mode 100644 index 00000000000..e59b9d438a7 --- /dev/null +++ b/win_build/installer_msi.vcxproj @@ -0,0 +1,33 @@ + + + + installer_msi + {88EB73FC-A865-4C3F-906D-44E00EF27A27} + + + Application + MultiByte + + + + boinc + .msi + + + + + + + + + + ClCompile + + + + $(SolutionDir)Build\x64\$(Configuration)\installer.exe -p $(Platform) + $(OutDir)$(TargetName)$(TargetExt) + + + + diff --git a/win_build/installer_setup.vcxproj b/win_build/installer_setup.vcxproj index 3e41e65e927..53d871b1bb4 100644 --- a/win_build/installer_setup.vcxproj +++ b/win_build/installer_setup.vcxproj @@ -35,17 +35,6 @@ - - - - ClCompile - - - - $(SolutionDir)Build\x64\$(Configuration)\installer.exe -p $(Platform) - $(MSBuildThisFileDirectory)..\installer\boinc.json;$(MSBuildThisFileDirectory)..\installer\locale\en.json;$(OutDir)boinccas.dll;$(SolutionDir)Build\x64\$(Configuration)\installer.exe - $(OutDir)boinc.msi - - +