From 0723c6d1917ce3ae47b94d5c140fa349d2313316 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Mon, 25 Feb 2019 13:37:41 +0100 Subject: [PATCH 1/8] Allow libs installed via `vcpkg` to be linked to by crates The `vcpkg` crate for finding dependencies installed by vcpkg requires some extra configuration. --- windows/Dockerfile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/windows/Dockerfile b/windows/Dockerfile index f6a0327..9435f9d 100644 --- a/windows/Dockerfile +++ b/windows/Dockerfile @@ -21,12 +21,21 @@ SHELL ["powershell", "-Command"] ADD https://github.com/Microsoft/vcpkg/archive/master.zip C:\TEMP\vcpkg-master.zip RUN $ErrorActionPreference = 'Stop'; ` Expand-Archive -Path C:\TEMP\vcpkg-master.zip -DestinationPath .; ` + rm C:\TEMP\vcpkg-master.zip; ` cd .\vcpkg-master; ` .\bootstrap-vcpkg.bat; ` .\vcpkg integrate install # Install packages +# +# The `vcpkg` crate searches for libraries matching the target architecture +# exactly. It won't use x86 libraries on a 64-bit system. Setting the default +# triplet tells `vcpkg` to install 64-bit versions. +ENV VCPKG_DEFAULT_TRIPLET=x64-windows COPY vc-packages.txt C:\ RUN .\vcpkg-master\vcpkg install @(Get-Content C:\vc-packages.txt) +# Tell the `vcpkg` crate to generate dynamically linked executables +ENV VCPKGRS_DYNAMIC=1 + CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"] From ba794704e60e34c1fc522b6b97b4b208b3bd5105 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Mon, 25 Feb 2019 21:36:57 +0100 Subject: [PATCH 2/8] Install available libraries for reverse dependencies of `vcpkg` --- windows/vc-packages.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/windows/vc-packages.txt b/windows/vc-packages.txt index f22003e..db77c03 100644 --- a/windows/vc-packages.txt +++ b/windows/vc-packages.txt @@ -1 +1,8 @@ +curl +libmysql +libpq +libsodium +libssh2 +openssl +sqlite3 zlib From 20cdc39d3e8a18c4bb865af4e7d4a5fee0faeb3f Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Mon, 22 Jul 2019 14:32:56 -0700 Subject: [PATCH 3/8] Remove `libmysql` so container builds in a reasonable amount of time `libmysql` pulls in a lot of dependencies (`icu` and every `boost` module), increasing the image build time by over an hour on Azure pipelines. --- windows/vc-packages.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/windows/vc-packages.txt b/windows/vc-packages.txt index db77c03..95a21a5 100644 --- a/windows/vc-packages.txt +++ b/windows/vc-packages.txt @@ -1,5 +1,4 @@ curl -libmysql libpq libsodium libssh2 From ae65dffb8001f50425a9f0f3d18af9a84d499ec0 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Sun, 21 Jul 2019 14:55:11 -0700 Subject: [PATCH 4/8] Increase timeout to maximum Azure pipelines has a default job timeout of 60 minutes, which is no longer sufficient now that we're installing more dependencies. Set the timeout to unlimited (currently 5 hours for public projects on Microsoft hosted agents). --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 705737e..0782eed 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,6 +3,7 @@ variables: jobs: - job: Windows + timeoutInMinutes: 0 pool: vmImage: win1803 variables: From 4e40593c745c7717192e90592333e9eaedd68de4 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Mon, 22 Jul 2019 14:04:01 -0700 Subject: [PATCH 5/8] Install packages with chocolately --- windows/Dockerfile | 19 +++++++++++++++++-- windows/choco-packages.txt | 5 +++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 windows/choco-packages.txt diff --git a/windows/Dockerfile b/windows/Dockerfile index 9435f9d..2c7fbc3 100644 --- a/windows/Dockerfile +++ b/windows/Dockerfile @@ -15,7 +15,22 @@ RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache ` --includeRecommended ` || IF "%ERRORLEVEL%"=="3010" EXIT 0 -SHELL ["powershell", "-Command"] +SHELL ["powershell", "-ExecutionPolicy", "Bypass", "-Command"] + +# Install chocolatey +RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) + +# Install packages +# +# We need to get the new value of `$PATH` after `choco install`, but +# chocolatey's `refreshenv` won't be available until we restart the shell. +# Make `refreshenv` available right away, by importing the Chocolatey profile +# module. See https://stackoverflow.com/a/46760714. +COPY choco-packages.txt C:\ +RUN $ErrorActionPreference = 'Stop'; ` + choco install -y @(Get-Content C:\choco-packages.txt); ` + Import-Module "C:\ProgramData\chocolatey\helpers\chocolateyProfile.psm1"; ` + refreshenv # Install vcpkg ADD https://github.com/Microsoft/vcpkg/archive/master.zip C:\TEMP\vcpkg-master.zip @@ -26,7 +41,7 @@ RUN $ErrorActionPreference = 'Stop'; ` .\bootstrap-vcpkg.bat; ` .\vcpkg integrate install -# Install packages +# Install C libraries # # The `vcpkg` crate searches for libraries matching the target architecture # exactly. It won't use x86 libraries on a 64-bit system. Setting the default diff --git a/windows/choco-packages.txt b/windows/choco-packages.txt new file mode 100644 index 0000000..66a913e --- /dev/null +++ b/windows/choco-packages.txt @@ -0,0 +1,5 @@ +cmake +--installargs='ADD_CMAKE_TO_PATH=System' +git +mingw +ninja From f0f03959577c4ca6c26724281354315a1001599d Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Wed, 24 Jul 2019 16:34:28 +0200 Subject: [PATCH 6/8] Add two more chocolatey packages - llvm and dotnet-sdk --- windows/choco-packages.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/windows/choco-packages.txt b/windows/choco-packages.txt index 66a913e..23b1325 100644 --- a/windows/choco-packages.txt +++ b/windows/choco-packages.txt @@ -3,3 +3,5 @@ cmake git mingw ninja +netfx-4.6.1-devpack +llvm From 9f6a1e50cbf86507244882db0c3e7db07dcee27f Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Thu, 25 Jul 2019 10:10:23 -0700 Subject: [PATCH 7/8] Add additional libraries --- windows/vc-packages.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/windows/vc-packages.txt b/windows/vc-packages.txt index 95a21a5..d99c4a2 100644 --- a/windows/vc-packages.txt +++ b/windows/vc-packages.txt @@ -2,6 +2,9 @@ curl libpq libsodium libssh2 +openal-soft openssl +portmidi +sdl2 sqlite3 zlib From d3016719df2f32b453ed4f11e9288ceefe526a57 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Thu, 25 Jul 2019 10:11:17 -0700 Subject: [PATCH 8/8] Sort `choco-packages.txt` --- windows/choco-packages.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/choco-packages.txt b/windows/choco-packages.txt index 23b1325..efe2658 100644 --- a/windows/choco-packages.txt +++ b/windows/choco-packages.txt @@ -1,7 +1,7 @@ cmake --installargs='ADD_CMAKE_TO_PATH=System' git +llvm mingw -ninja netfx-4.6.1-devpack -llvm +ninja