Improve Postgresql installation on Windows
authorSimon Hausmann <simon.hausmann@qt.io>
Mon, 8 May 2017 12:28:56 +0000 (14:28 +0200)
committerSimon Hausmann <simon.hausmann@qt.io>
Tue, 6 Jun 2017 20:15:28 +0000 (20:15 +0000)
Similar to the mysql change (parent commit) it's faster to rename any
older artifacts and install only what we need. This also generalizes the
zip archive extraction code for "dev" packages.

Change-Id: I3ad1f23efaed80fab3e0778a3e8c46317138f1ad
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
coin/provisioning/common/helpers.ps1
coin/provisioning/qtci-windows-10-x86_64/mysql.ps1
coin/provisioning/qtci-windows-10-x86_64/postgresql.ps1

index 0e68445..132fcdd 100644 (file)
@@ -30,6 +30,32 @@ function Extract-Zip
     $destinationFolder.CopyHere($zipfile.Items(), 16)
 }
 
+function Extract-Dev-Folders-From-Zip
+{
+    Param (
+        [string]$package,
+        [string]$zipDir,
+        [string]$installPath
+    )
+
+    $shell = new-object -com shell.application
+
+    echo "Extracting contents of $package"
+    foreach ($subDir in "lib", "include", "bin", "share") {
+        $zip = $shell.Namespace($package + "\" + $zipDir + "\" + $subDir)
+        if ($zip) {
+            Write-Host "Extracting $subDir from zip archive"
+        } else {
+            Write-Host "$subDir is missing from zip archive - skipping"
+            continue
+        }
+        $destDir = $installPath + "\" + $subdir
+        New-Item $destDir -type directory
+        $destinationFolder = $shell.Namespace($destDir)
+        $destinationFolder.CopyHere($zip.Items(), 16)
+    }
+}
+
 function BadParam
 {
     Param ([string]$Description)
@@ -44,7 +70,11 @@ function Download
         [string] $Destination = $(BadParam("a download target location"))
     )
     try {
-        Invoke-WebRequest -UseBasicParsing $CachedUrl -OutFile $Destination
+        if ($CachedUrl.StartsWith("http")) {
+            Invoke-WebRequest -UseBasicParsing $CachedUrl -OutFile $Destination
+        } else {
+            Copy-Item $CachedUrl $Destination
+        }
     } catch {
         Invoke-WebRequest -UseBasicParsing $OfficialUrl -OutFile $Destination
     }
index 6f2c86a..ce1d2be 100644 (file)
@@ -51,22 +51,8 @@ function DownloadAndInstall
     echo "Fetching from URL ..."
     Copy-Item $internalUrl $package
 
-    $shell = new-object -com shell.application
-
-    echo "Extracting contents"
-    foreach ($subDir in "lib", "include", "bin") {
-        $zipDir = $shell.Namespace($package + "\" + [io.path]::GetFileNameWithoutExtension($package) + "\" + $subDir)
-        if ($zipDir) {
-            Write-Host "Extracting $subDir from zip archive"
-        } else {
-            Write-Host "$subDir is missing from zip archive - skipping"
-            continue
-        }
-        $destDir = $installPath + "\" + $subdir
-        New-Item $destDir -type directory
-        $destinationFolder = $shell.Namespace($destDir)
-        $destinationFolder.CopyHere($zipDir.Items(), 16)
-    }
+    $zipDir = [io.path]::GetFileNameWithoutExtension($package)
+    Extract-Dev-Folders-From-Zip $package $zipDir $installPath
 
     Remove-Item $package
 }
index 9b1d5d4..e2edadf 100644 (file)
@@ -42,16 +42,21 @@ $packagex86 = "C:\Windows\temp\postgresql-$version-windows-binaries.zip"
 
 # Install x64 bit versions
 $architecture = "x64"
-$installFolder = "C:\Utils\postgresql"
+$installFolder = "C:\Utils\postgresql\pgsql"
 $externalUrl = "http://get.enterprisedb.com/postgresql/postgresql-$version-windows-x64-binaries.zip"
-$internalUrl = "http://ci-files01-hki.ci.local/input/windows/postgresql-$version-windows-x64-binaries.zip"
+$internalUrl = "\\ci-files01-hki.ci.local\provisioning\windows\postgresql-$version-windows-x64-binaries.zip"
 $sha1 = "4da0453cdfda335e064d4437cf5bb9d356054cfd"
 
+# Delete any leftovers
+try {
+    Rename-Item -ErrorAction 'Stop' c:\utils\postgresql c:\utils\postgresql-deleted
+} catch {}
+
 echo "Fetching from URL ..."
 Download $externalUrl $internalUrl $packagex64
 Verify-Checksum $packagex64 $sha1
 echo "Installing $packagex64 ..."
-Extract-Zip $packagex64 $installFolder
+Extract-Dev-Folders-From-Zip $packagex64 "pgsql" $installFolder
 
 echo "Remove downloaded $packagex64 ..."
 Remove-Item $packagex64
@@ -62,16 +67,16 @@ echo "Set $architecture environment variables ..."
 
 # Install x86 bit version
 $architecture = "x86"
-$installFolder = "C:\Utils\postgresql$architecture"
+$installFolder = "C:\Utils\postgresql$architecture\pgsql"
 $externalUrl = "http://get.enterprisedb.com/postgresql/postgresql-$version-windows-binaries.zip"
-$internalUrl = "http://ci-files01-hki.ci.local/input/windows/postgresql-$version-windows-binaries.zip"
+$internalUrl = "\\ci-files01-hki.ci.local\provisioning\windows\postgresql-$version-windows-binaries.zip"
 $sha1 = "eb4f01845e1592800edbb74f60944b6c0aca51a9"
 
 echo "Fetching from URL..."
 Download $externalUrl $internalUrl $packagex86
 Verify-Checksum $packagex86 $sha1
 echo "Installing $packagex86 ..."
-Extract-Zip $packagex86 $installFolder
+Extract-Dev-Folders-From-Zip $packagex86 "pgsql" $installFolder
 
 echo "Remove downloaded $packagex86 ..."
 Remove-Item $packagex86