From d4a7c7a26dcc31ac4d3b4291584d2d24a0e847d6 Mon Sep 17 00:00:00 2001 From: Michael Insel Date: Fri, 11 Oct 2019 18:42:48 +0200 Subject: [PATCH] Chocolatey: Add build script for package --- choco/CMakeLists.txt | 10 +---- ...e => chocolateyInstall.ps1.template.cmake} | 38 ++++++++--------- tools/win32/build-choco.ps1 | 42 +++++++++++++++++++ 3 files changed, 62 insertions(+), 28 deletions(-) rename choco/{chocolateyInstall.ps1.cmake => chocolateyInstall.ps1.template.cmake} (79%) mode change 100755 => 100644 create mode 100644 tools/win32/build-choco.ps1 diff --git a/choco/CMakeLists.txt b/choco/CMakeLists.txt index d7b90bb47..fb147a15c 100644 --- a/choco/CMakeLists.txt +++ b/choco/CMakeLists.txt @@ -1,14 +1,6 @@ # Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ if(WIN32) - find_program(CHOCO_BINARY choco) - configure_file(icinga2.nuspec.cmake icinga2.nuspec) - configure_file(chocolateyInstall.ps1.cmake chocolateyInstall.ps1) - - add_custom_target(choco-pkg ALL - COMMAND choco pack - COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/icinga2.${ICINGA2_VERSION_SAFE}.nupkg ${CMAKE_CURRENT_BINARY_DIR}/icinga2.nupkg - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/icinga2.nuspec ${CMAKE_CURRENT_BINARY_DIR}/chocolateyInstall.ps1 chocolateyUninstall.ps1 - ) + configure_file(chocolateyInstall.ps1.template.cmake chocolateyInstall.ps1.template) endif() diff --git a/choco/chocolateyInstall.ps1.cmake b/choco/chocolateyInstall.ps1.template.cmake old mode 100755 new mode 100644 similarity index 79% rename from choco/chocolateyInstall.ps1.cmake rename to choco/chocolateyInstall.ps1.template.cmake index 26fe2396a..424a73778 --- a/choco/chocolateyInstall.ps1.cmake +++ b/choco/chocolateyInstall.ps1.template.cmake @@ -1,20 +1,20 @@ -$packageName= 'icinga2' -$toolsDir = "$(Split-Path -Parent $MyInvocation.MyCommand.Definition)" -$url = 'https://packages.icinga.com/windows/Icinga2-v${CHOCO_VERSION_SHORT}-x86.msi' -$url64 = 'https://packages.icinga.com/windows/Icinga2-v${CHOCO_VERSION_SHORT}-x86_64.msi' - -$packageArgs = @{ - packageName = $packageName - fileType = 'msi' - url = $url - url64bit = $url64 - silentArgs = "/qn /norestart" - validExitCodes= @(0) - softwareName = 'Icinga 2*' - checksum = '' # TODO: Add checksum - checksumType = 'sha256' - checksum64 = '' # TODO: Add checksum - checksumType64= 'sha256' -} - +$packageName= 'icinga2' +$toolsDir = "$(Split-Path -Parent $MyInvocation.MyCommand.Definition)" +$url = 'https://packages.icinga.com/windows/Icinga2-v${CHOCO_VERSION_SHORT}-x86.msi' +$url64 = 'https://packages.icinga.com/windows/Icinga2-v${CHOCO_VERSION_SHORT}-x86_64.msi' + +$packageArgs = @{ + packageName = $packageName + fileType = 'msi' + url = $url + url64bit = $url64 + silentArgs = "/qn /norestart" + validExitCodes= @(0) + softwareName = 'Icinga 2*' + checksum = '%CHOCO_32BIT_CHECKSUM%' + checksumType = 'sha256' + checksum64 = '%CHOCO_64BIT_CHECKSUM%' + checksumType64= 'sha256' +} + Install-ChocolateyPackage @packageArgs \ No newline at end of file diff --git a/tools/win32/build-choco.ps1 b/tools/win32/build-choco.ps1 new file mode 100644 index 000000000..24fa5f498 --- /dev/null +++ b/tools/win32/build-choco.ps1 @@ -0,0 +1,42 @@ +Set-PsDebug -Trace 1 + +if(-not (Test-Path "$($env:ProgramData)\chocolatey\choco.exe")) { + throw "Could not find Choco executable. Abort." +} + +if (-not (Test-Path env:ICINGA2_BUILDPATH)) { + $env:ICINGA2_BUILDPATH = '.\debug' +} + +if(-not (Test-Path "$($env:ICINGA2_BUILDPATH)\choco\chocolateyInstall.ps1.template")) { + throw "Could not find Chocolatey install script template. Abort." +} + +$chocoInstallScriptTemplatePath = "$($env:ICINGA2_BUILDPATH)\choco\chocolateyInstall.ps1.template" +$chocoInstallScript = Get-Content $chocoInstallScriptTemplatePath + +if(-not (Test-Path "$($env:ICINGA2_BUILDPATH)\*-x86.msi")) { + throw "Could not find Icinga 2 32 bit MSI package. Abort." +} + +$hashMSIpackage32 = Get-FileHash "$($env:ICINGA2_BUILDPATH)\*-x86.msi" +Write-Output "File Hash for 32 bit MSI package: $($hashMSIpackage32.Hash)." + +if(-not (Test-Path "$($env:ICINGA2_BUILDPATH)\*-x86_64.msi")) { + throw "Could not find Icinga 2 64 bit MSI package. Abort." +} + +$hashMSIpackage64 = Get-FileHash "$($env:ICINGA2_BUILDPATH)\*-x86_64.msi" +Write-Output "File Hash for 32 bit MSI package: $($hashMSIpackage64.Hash)" + +$chocoInstallScript = $chocoInstallScript.Replace("%CHOCO_32BIT_CHECKSUM%", "$($hashMSIpackage32.Hash)") +$chocoInstallScript = $chocoInstallScript.Replace("%CHOCO_64BIT_CHECKSUM%", "$($hashMSIpackage64.Hash)") +Write-Output $chocoInstallScript + +Set-Content -Path "$($env:ICINGA2_BUILDPATH)\choco\chocolateyInstall.ps1" -Value $chocoInstallScript + +cd "$($env:ICINGA2_BUILDPATH)\choco" +& "$($env:ProgramData)\chocolatey\choco.exe" "pack" +cd "..\.." + +Move-Item -Path "$($env:ICINGA2_BUILDPATH)\choco\*.nupkg" -Destination "$($env:ICINGA2_BUILDPATH)" \ No newline at end of file -- 2.40.0