├── .gitignore ├── docker ├── icu-mingw │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── icu-mingw-14 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── icu-msvc-2019 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── icu-msvc-2022 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── openssl-mingw-14 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── openssl-mingw │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── openssl-msvc-2017 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── openssl-msvc-2019 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── openssl-msvc-2022 │ ├── .gitattributes │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── build.bat │ └── README.md ├── boost-mingw │ ├── src │ │ ├── app │ │ │ ├── patches │ │ │ │ ├── boost-1.75.0.patch │ │ │ │ ├── boost-1.76.0.patch │ │ │ │ ├── boost-1.77.0.patch │ │ │ │ ├── boost-1.78.0.patch │ │ │ │ ├── boost-1.79.0.patch │ │ │ │ ├── boost-1.80.0.patch │ │ │ │ └── boost-1.83.0.patch │ │ │ ├── bootstrap.bat │ │ │ ├── build.bat │ │ │ └── start.ps1 │ │ └── Dockerfile │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── README.md ├── boost-mingw-14 │ ├── src │ │ ├── app │ │ │ ├── patches │ │ │ │ ├── boost-1.80.0.patch │ │ │ │ └── boost-1.83.0.patch │ │ │ ├── bootstrap.bat │ │ │ ├── build.bat │ │ │ └── start.ps1 │ │ └── Dockerfile │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── README.md ├── boost-msvc-2017 │ ├── src │ │ ├── app │ │ │ ├── bootstrap.bat │ │ │ ├── build.bat │ │ │ └── start.ps1 │ │ └── Dockerfile │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── README.md ├── boost-msvc-2019 │ ├── src │ │ ├── app │ │ │ ├── bootstrap.bat │ │ │ └── build.bat │ │ └── Dockerfile │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── README.md ├── boost-msvc-2022 │ ├── src │ │ ├── app │ │ │ ├── bootstrap.bat │ │ │ ├── build.bat │ │ │ ├── patches │ │ │ │ └── boost-1.83.0.patch │ │ │ └── start.ps1 │ │ └── Dockerfile │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── README.md ├── README.md ├── mingw-14 │ ├── README.md │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── src │ │ ├── Dockerfile │ │ └── app │ │ └── install.ps1 ├── mingw │ ├── README.md │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ └── src │ │ ├── Dockerfile │ │ └── app │ │ └── install.ps1 ├── windows-dev │ ├── src │ │ ├── app │ │ │ └── msys2.bat │ │ └── Dockerfile │ ├── README.md │ └── scripts │ │ ├── deploy.ps1 │ │ ├── build.ps1 │ │ └── test.ps1 ├── msvc-2017 │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── install.ps1 │ └── README.md ├── msvc-2019 │ ├── scripts │ │ ├── test.ps1 │ │ ├── deploy.ps1 │ │ └── build.ps1 │ ├── src │ │ ├── Dockerfile │ │ └── app │ │ │ └── install.ps1 │ └── README.md └── msvc-2022 │ ├── scripts │ ├── test.ps1 │ ├── deploy.ps1 │ └── build.ps1 │ ├── src │ ├── Dockerfile │ └── app │ │ └── install.ps1 │ └── README.md ├── .gitattributes ├── README.md ├── .travis.yml ├── scripts ├── travis │ ├── travis_jigger.sh │ ├── travis_wait.sh │ └── build_and_test.sh ├── test.ps1 ├── build.ps1 ├── deploy.ps1 └── install.ps1 ├── appveyor.yml └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ -------------------------------------------------------------------------------- /docker/icu-mingw/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=crlf 2 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=crlf 2 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=crlf 2 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=crlf 2 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=lf 2 | -------------------------------------------------------------------------------- /docker/openssl-mingw/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=lf 2 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=lf 2 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=lf 2 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/.gitattributes: -------------------------------------------------------------------------------- 1 | *.patch text eol=lf 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.sh text eol=lf 3 | *.bat text eol=crlf 4 | *.ps1 text eol=crlf 5 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.75.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.76.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.77.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.78.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.79.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.80.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/src/app/patches/boost-1.80.0.patch: -------------------------------------------------------------------------------- 1 | --- ./bootstrap.bat 2020-12-03 08:01:08 +0300 2 | +++ ./bootstrap.bat 2020-12-03 08:01:08 +0300 3 | @@ -12,7 +12,7 @@ 4 | if exist ".\tools\build\src\engine\b2.exe" del tools\build\src\engine\b2.exe 5 | pushd tools\build\src\engine 6 | 7 | -call .\build.bat 8 | +call .\build.bat %* 9 | @ECHO OFF 10 | 11 | popd 12 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/bootstrap.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%PATH%" 12 | 13 | call "%BOOST_BOOTSTRAP%" gcc 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | :exit 18 | exit /B %exit_code% 19 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/src/app/bootstrap.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%PATH%" 12 | 13 | call "%BOOST_BOOTSTRAP%" gcc 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | :exit 18 | exit /B %exit_code% 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Build Scripts 2 | 3 | [![Release](https://img.shields.io/github/release/mabrarov/build-scripts.svg)](https://github.com/mabrarov/build-scripts/releases/latest) 4 | [![License](https://img.shields.io/github/license/mabrarov/build-scripts)](https://github.com/mabrarov/asio_samples/tree/master/LICENSE) 5 | 6 | Utilities for building of 3rd-party libraries. 7 | 8 | Refer to [docker](docker) directory for source code of Docker images building 3rd-party libraries. 9 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/src/app/bootstrap.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 12 | set exit_code=%errorlevel% 13 | if %exit_code% neq 0 goto exit 14 | 15 | call "%BOOST_BOOTSTRAP%" 16 | set exit_code=%errorlevel% 17 | if %exit_code% neq 0 goto exit 18 | 19 | :exit 20 | exit /B %exit_code% 21 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/src/app/bootstrap.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 12 | set exit_code=%errorlevel% 13 | if %exit_code% neq 0 goto exit 14 | 15 | call "%BOOST_BOOTSTRAP%" 16 | set exit_code=%errorlevel% 17 | if %exit_code% neq 0 goto exit 18 | 19 | :exit 20 | exit /B %exit_code% 21 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/src/app/bootstrap.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 12 | set exit_code=%errorlevel% 13 | if %exit_code% neq 0 goto exit 14 | 15 | call "%BOOST_BOOTSTRAP%" 16 | set exit_code=%errorlevel% 17 | if %exit_code% neq 0 goto exit 18 | 19 | :exit 20 | exit /B %exit_code% 21 | -------------------------------------------------------------------------------- /docker/README.md: -------------------------------------------------------------------------------- 1 | # Builder Docker Images 2 | 3 | Docker images building 3rd-party libraries. 4 | 5 | Assumptions for Docker images utilizing Windows Containers: 6 | 7 | 1. [Docker](https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/deploy-containers-on-server) runs on [Windows Server 2022 LTSC](https://docs.microsoft.com/en-us/windows-server/get-started/windows-server-release-info) 8 | 1. Docker 20.10+ 9 | 1. Commands in README files use Bash (Git Bash) syntax, unless different is explicitly specified 10 | 1. Commands in README files assume current directory is the directory where this repository is cloned 11 | -------------------------------------------------------------------------------- /docker/icu-mingw/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build ICU4C using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build ICU4C" 17 | } 18 | -------------------------------------------------------------------------------- /docker/mingw-14/README.md: -------------------------------------------------------------------------------- 1 | # MinGW-w64 14 2 | 3 | Docker image with MinGW-w64 from [niXman mingw-builds](https://github.com/niXman/mingw-builds-binaries). 4 | 5 | Contains: 6 | 7 | 1. MinGW-w64 targeting Win32 8 | 1. MinGW-w64 targeting Win64 9 | 10 | ## Building 11 | 12 | ```bash 13 | docker build -t abrarov/mingw-14 docker/mingw-14/src 14 | ``` 15 | 16 | ## Usage 17 | 18 | Get version of MinGW x64 compiler: 19 | 20 | ```bash 21 | docker run --rm abrarov/mingw-14 "C:\mingw64\bin\g++" --version 22 | ``` 23 | 24 | Get version of MinGW x86 compiler: 25 | 26 | ```bash 27 | docker run --rm abrarov/mingw-14 "C:\mingw32\bin\g++" --version 28 | ``` 29 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | os: windows 8 | language: shell 9 | 10 | env: 11 | global: 12 | - DOCKER_USER: abrarov 13 | 14 | install: 15 | - powershell -ExecutionPolicy Bypass -File ./scripts/install.ps1 16 | 17 | script: 18 | - ./scripts/travis/build_and_test.sh 19 | 20 | # Disabled due to testing and AppVeyor (which does the same) 21 | #deploy: 22 | # skip_cleanup: true 23 | # provider: script 24 | # script: powershell -ExecutionPolicy Bypass -File ./scripts/deploy.ps1 25 | # on: 26 | # branch: master 27 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build ICU4C using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build ICU4C" 17 | } 18 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build ICU4C using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build ICU4C" 17 | } 18 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build ICU4C using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build ICU4C" 17 | } 18 | -------------------------------------------------------------------------------- /scripts/travis/travis_jigger.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # Copied from https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/bash/travis_jigger.bash 6 | travis_jigger() { 7 | local cmd_pid="${1}" 8 | shift 9 | local timeout="${1}" 10 | shift 11 | local count=0 12 | 13 | echo -e "\\n" 14 | 15 | while [[ "${count}" -lt "${timeout}" ]]; do 16 | count="$((count + 1))" 17 | echo -ne "Still running (${count} of ${timeout}): ${*}\\r" 18 | sleep 60 19 | done 20 | 21 | echo -e "\\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"${*}\"${ANSI_RESET}\\n" 22 | kill -9 "${cmd_pid}" 23 | } 24 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build OpenSSL using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build OpenSSL" 17 | } 18 | -------------------------------------------------------------------------------- /docker/openssl-mingw/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build OpenSSL using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build OpenSSL" 17 | } 18 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build OpenSSL using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build OpenSSL" 17 | } 18 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build OpenSSL using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build OpenSSL" 17 | } 18 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build OpenSSL using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build OpenSSL" 17 | } 18 | -------------------------------------------------------------------------------- /docker/mingw/README.md: -------------------------------------------------------------------------------- 1 | # MinGW 2 | 3 | Docker image with MinGW from MinGW-builds. 4 | 5 | Contains: 6 | 7 | 1. [MinGW](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/) targeting Win32 8 | 1. MinGW targeting Win64 9 | 10 | ## Building 11 | 12 | ```bash 13 | docker build -t abrarov/mingw docker/mingw/src 14 | ``` 15 | 16 | ## Usage 17 | 18 | Get version of MinGW x64 compiler: 19 | 20 | ```bash 21 | docker run --rm abrarov/mingw "C:\mingw64\bin\g++" --version 22 | ``` 23 | 24 | Get version of MinGW x86 compiler: 25 | 26 | ```bash 27 | docker run --rm abrarov/mingw "C:\mingw32\bin\g++" --version 28 | ``` 29 | -------------------------------------------------------------------------------- /docker/boost-mingw/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build Boost C++ Libraries using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build Boost C++ Libraries" 17 | } 18 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build Boost C++ Libraries using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build Boost C++ Libraries" 17 | } 18 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build Boost C++ Libraries using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build Boost C++ Libraries" 17 | } 18 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build Boost C++ Libraries using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build Boost C++ Libraries" 17 | } 18 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Build Boost C++ Libraries using default configuration and ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to build Boost C++ Libraries" 17 | } 18 | -------------------------------------------------------------------------------- /docker/openssl-mingw/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/mingw:2.18.0 8 | 9 | ENV OPENSSL_VERSION="3.5.0" \ 10 | OPENSSL_URL="https://github.com/openssl/openssl/releases/download" \ 11 | OPENSSL_TEST="" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/openssl-mingw" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of OpenSSL with MinGW" 24 | -------------------------------------------------------------------------------- /docker/windows-dev/src/app/msys2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set "PATH=%MSYS_HOME%\usr\bin;%PATH%" 10 | 11 | set exit_code=0 12 | 13 | echo Initializing MSYS2 14 | call "%MSYS_HOME%\msys2_shell.cmd" -no-start -defterm -c exit 15 | set exit_code=%errorlevel% 16 | if %exit_code% neq 0 goto exit 17 | 18 | echo Installing pacman base-devel package group (MSYS2 development tools) 19 | pacman -S --needed --noconfirm base-devel 20 | set exit_code=%errorlevel% 21 | if %exit_code% neq 0 goto exit 22 | 23 | :exit 24 | exit /B %exit_code% 25 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%PATH%" 12 | 13 | "%B2_BIN%" ^ 14 | --toolset="%B2_TOOLSET%" ^ 15 | address-model="%BOOST_ADDRESS_MODEL%" ^ 16 | debug release ^ 17 | link="%BOOST_LINKAGE%" ^ 18 | runtime-link="%BOOST_RUNTIME_LINKAGE%" ^ 19 | threading=multi ^ 20 | install ^ 21 | --prefix="%BOOST_INSTALL_DIR%" ^ 22 | %B2_OPTIONS% 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | :exit 27 | exit /B %exit_code% 28 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%PATH%" 12 | 13 | "%B2_BIN%" ^ 14 | --toolset="%B2_TOOLSET%" ^ 15 | address-model="%BOOST_ADDRESS_MODEL%" ^ 16 | debug release ^ 17 | link="%BOOST_LINKAGE%" ^ 18 | runtime-link="%BOOST_RUNTIME_LINKAGE%" ^ 19 | threading=multi ^ 20 | install ^ 21 | --prefix="%BOOST_INSTALL_DIR%" ^ 22 | %B2_OPTIONS% 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | :exit 27 | exit /B %exit_code% 28 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/mingw-14:2.18.0 8 | 9 | ENV OPENSSL_VERSION="3.5.0" \ 10 | OPENSSL_URL="https://github.com/openssl/openssl/releases/download" \ 11 | OPENSSL_TEST="" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/openssl-mingw-14" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of OpenSSL with MinGW 14" 24 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | image: Visual Studio 2017 8 | 9 | environment: 10 | DOCKER_USER: abrarov 11 | DOCKER_PASS: 12 | secure: f3DqVP4VKrZqL/5I+s2M7kmMFrG0nINb0qdcamN2GtU= 13 | 14 | install: 15 | - ps: .\scripts\install.ps1 16 | 17 | build_script: 18 | - ps: Write-Warning "Skipping due to exhausted quotas" 19 | #- ps: .\scripts\build.ps1 20 | 21 | test_script: 22 | - ps: Write-Host "Skipping due to build is disabled" 23 | #- ps: .\scripts\test.ps1 24 | 25 | deploy_script: 26 | - ps: Write-Host "Skipping due to build is disabled" 27 | # - ps: .\scripts\deploy.ps1 28 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2017:2.18.0 8 | 9 | ENV OPENSSL_VERSION="3.5.0" \ 10 | OPENSSL_URL="https://github.com/openssl/openssl/releases/download" \ 11 | OPENSSL_TEST="" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/openssl-msvc-2017" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of OpenSSL with Microsoft Visual C++ 2017" 24 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2019:2.18.0 8 | 9 | ENV OPENSSL_VERSION="3.5.0" \ 10 | OPENSSL_URL="https://github.com/openssl/openssl/releases/download" \ 11 | OPENSSL_TEST="" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/openssl-msvc-2019" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of OpenSSL with Microsoft Visual C++ 2019" 24 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2022:2.18.0 8 | 9 | ENV OPENSSL_VERSION="3.5.0" \ 10 | OPENSSL_URL="https://github.com/openssl/openssl/releases/download" \ 11 | OPENSSL_TEST="" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/openssl-msvc-2022" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of OpenSSL with Microsoft Visual C++ 2022" 24 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/mingw:2.18.0 8 | 9 | ENV BOOST_VERSION="1.83.0" \ 10 | BOOST_RELEASE_URL="https://archives.boost.io/release" \ 11 | B2_OPTIONS="--without-python --without-mpi --without-graph_parallel" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/boost-mingw" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of Boost C++ Libraries with MinGW" 24 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/mingw-14:2.18.0 8 | 9 | ENV BOOST_VERSION="1.83.0" \ 10 | BOOST_RELEASE_URL="https://archives.boost.io/release" \ 11 | B2_OPTIONS="--without-python --without-mpi --without-graph_parallel" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/boost-mingw" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of Boost C++ Libraries with MinGW-w64 14" 24 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2017:2.18.0 8 | 9 | ENV BOOST_VERSION="1.83.0" \ 10 | BOOST_RELEASE_URL="https://archives.boost.io/release" \ 11 | B2_OPTIONS="--without-python --without-mpi --without-graph_parallel" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/boost-msvc-2017" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of Boost C++ Libraries with MS Visual C++ 2017" 24 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2019:2.18.0 8 | 9 | ENV BOOST_VERSION="1.83.0" \ 10 | BOOST_RELEASE_URL="https://archives.boost.io/release" \ 11 | B2_OPTIONS="--without-python --without-mpi --without-graph_parallel" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/boost-msvc-2019" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of Boost C++ Libraries with MS Visual C++ 2019" 24 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2022:2.18.0 8 | 9 | ENV BOOST_VERSION="1.83.0" \ 10 | BOOST_RELEASE_URL="https://archives.boost.io/release" \ 11 | B2_OPTIONS="--without-python --without-mpi --without-graph_parallel" 12 | 13 | ADD ["app", "C:/app/"] 14 | 15 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 16 | 17 | ARG image_version="" 18 | ARG image_revision="" 19 | 20 | LABEL name="abrarov/boost-msvc-2022" \ 21 | version="${image_version}" \ 22 | revision="${image_revision}" \ 23 | description="Builder of Boost C++ Libraries with MS Visual C++ 2022" 24 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 12 | set exit_code=%errorlevel% 13 | if %exit_code% neq 0 goto exit 14 | 15 | "%B2_BIN%" ^ 16 | --toolset="%B2_TOOLSET%" ^ 17 | address-model="%BOOST_ADDRESS_MODEL%" ^ 18 | debug release ^ 19 | link="%BOOST_LINKAGE%" ^ 20 | runtime-link="%BOOST_RUNTIME_LINKAGE%" ^ 21 | threading=multi ^ 22 | install ^ 23 | --prefix="%BOOST_INSTALL_DIR%" ^ 24 | %B2_OPTIONS% 25 | set exit_code=%errorlevel% 26 | if %exit_code% neq 0 goto exit 27 | 28 | :exit 29 | exit /B %exit_code% 30 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 12 | set exit_code=%errorlevel% 13 | if %exit_code% neq 0 goto exit 14 | 15 | "%B2_BIN%" ^ 16 | --toolset="%B2_TOOLSET%" ^ 17 | address-model="%BOOST_ADDRESS_MODEL%" ^ 18 | debug release ^ 19 | link="%BOOST_LINKAGE%" ^ 20 | runtime-link="%BOOST_RUNTIME_LINKAGE%" ^ 21 | threading=multi ^ 22 | install ^ 23 | --prefix="%BOOST_INSTALL_DIR%" ^ 24 | %B2_OPTIONS% 25 | set exit_code=%errorlevel% 26 | if %exit_code% neq 0 goto exit 27 | 28 | :exit 29 | exit /B %exit_code% 30 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 12 | set exit_code=%errorlevel% 13 | if %exit_code% neq 0 goto exit 14 | 15 | "%B2_BIN%" ^ 16 | --toolset="%B2_TOOLSET%" ^ 17 | address-model="%BOOST_ADDRESS_MODEL%" ^ 18 | debug release ^ 19 | link="%BOOST_LINKAGE%" ^ 20 | runtime-link="%BOOST_RUNTIME_LINKAGE%" ^ 21 | threading=multi ^ 22 | install ^ 23 | --prefix="%BOOST_INSTALL_DIR%" ^ 24 | %B2_OPTIONS% 25 | set exit_code=%errorlevel% 26 | if %exit_code% neq 0 goto exit 27 | 28 | :exit 29 | exit /B %exit_code% 30 | -------------------------------------------------------------------------------- /docker/msvc-2017/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Get folder where MS Visual Studio 2017 is installed in container created from ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" vswhere -latest -products Microsoft.VisualStudio.Product.Community -version '[15.0,16.0)' -property installationPath 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to get folder where MS Visual Studio 2017 is installed" 17 | } 18 | -------------------------------------------------------------------------------- /docker/msvc-2019/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Get folder where MS Visual Studio 2019 is installed in container created from ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" vswhere -latest -products Microsoft.VisualStudio.Product.Community -version '[16.0,17.0)' -property installationPath 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to get folder where MS Visual Studio 2019 is installed" 17 | } 18 | -------------------------------------------------------------------------------- /docker/windows-dev/README.md: -------------------------------------------------------------------------------- 1 | # windows-dev 2 | 3 | Base Docker image for Docker images building on Windows. 4 | 5 | Contains: 6 | 7 | 1. [Chocolatey](https://chocolatey.org) 8 | 1. [7-Zip](https://www.7-zip.org) 9 | 1. [Git](https://git-scm.com) 10 | 1. [CMake](https://cmake.org) 11 | 1. [MSYS2](http://www.msys2.org) with base-devel Pacman package group 12 | 1. [Strawberry Perl](https://www.activestate.com/products/activeperl) 13 | 1. [Python 2.x and 3.x](https://www.python.org) 14 | 15 | ## Building 16 | 17 | ```bash 18 | docker build -t abrarov/windows-dev docker/windows-dev/src 19 | ``` 20 | 21 | ## Usage 22 | 23 | It's a base image with common tools, which is intended to be inherited by other images building on Windows. 24 | 25 | Test 7-Zip setup: 26 | 27 | ```bash 28 | docker run --rm abrarov/windows-dev "C:\Program Files\7-Zip\7z.exe" 29 | ``` -------------------------------------------------------------------------------- /docker/msvc-2022/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Get folder where MS Visual Studio Build Tools 2022 is installed in container created from ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" vswhere -latest -products Microsoft.VisualStudio.Product.BuildTools -version '[17.0,18.0)' -property installationPath 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to get folder where MS Visual Studio Build Tools 2022 is installed" 17 | } 18 | -------------------------------------------------------------------------------- /docker/icu-mingw/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/mingw:2.18.0 8 | 9 | ENV ICU_VERSION="77.1" \ 10 | ICU_URL="https://github.com/unicode-org/icu/releases/download" \ 11 | ICU_TEST="" 12 | 13 | RUN set "PATH=%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" && \ 14 | "%PYTHON3_HOME%\Scripts\pip" --disable-pip-version-check install buildtool && \ 15 | powershell "Remove-Item -Path \"${env:TMP}\*\" -Recurse -Force" 16 | 17 | ADD ["app", "C:/app/"] 18 | 19 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/icu-mingw" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Builder of ICU with MinGW" 28 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/mingw-14:2.18.0 8 | 9 | ENV ICU_VERSION="77.1" \ 10 | ICU_URL="https://github.com/unicode-org/icu/releases/download" \ 11 | ICU_TEST="" 12 | 13 | RUN set "PATH=%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" && \ 14 | "%PYTHON3_HOME%\Scripts\pip" --disable-pip-version-check install buildtool && \ 15 | powershell "Remove-Item -Path \"${env:TMP}\*\" -Recurse -Force" 16 | 17 | ADD ["app", "C:/app/"] 18 | 19 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/icu-mingw-14" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Builder of ICU with MinGW 14" 28 | -------------------------------------------------------------------------------- /docker/msvc-2017/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/windows-dev:2.18.0 8 | 9 | ENV MSVS_VERSION="15" \ 10 | MSVS_URL="https://aka.ms/vs" \ 11 | MSVS_DIST_NAME="vs_community.exe" \ 12 | VSWHERE_URL="https://github.com/Microsoft/vswhere/releases/download" \ 13 | VSWHERE_VERSION="3.1.7" \ 14 | VSWHERE_DIST_NAME="vswhere.exe" 15 | 16 | ADD ["app", "C:/app/"] 17 | 18 | RUN powershell -ExecutionPolicy Bypass -File "C:\app\install.ps1" && \ 19 | powershell "Remove-Item -Path 'C:\app' -Recurse -Force" 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/msvc-2017" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Microsoft Visual C++ as part of Microsoft Visual Studio 2017 Community" 28 | -------------------------------------------------------------------------------- /docker/msvc-2019/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/windows-dev:2.18.0 8 | 9 | ENV MSVS_VERSION="16" \ 10 | MSVS_URL="https://aka.ms/vs" \ 11 | MSVS_DIST_NAME="vs_community.exe" \ 12 | VSWHERE_URL="https://github.com/Microsoft/vswhere/releases/download" \ 13 | VSWHERE_VERSION="3.1.7" \ 14 | VSWHERE_DIST_NAME="vswhere.exe" 15 | 16 | ADD ["app", "C:/app/"] 17 | 18 | RUN powershell -ExecutionPolicy Bypass -File "C:\app\install.ps1" && \ 19 | powershell "Remove-Item -Path 'C:\app' -Recurse -Force" 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/msvc-2019" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Microsoft Visual C++ as part of Microsoft Visual Studio 2019 Community" 28 | -------------------------------------------------------------------------------- /docker/msvc-2022/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/windows-dev:2.18.0 8 | 9 | ENV MSVS_VERSION="17" \ 10 | MSVS_URL="https://aka.ms/vs" \ 11 | MSVS_DIST_NAME="vs_buildtools.exe" \ 12 | VSWHERE_URL="https://github.com/Microsoft/vswhere/releases/download" \ 13 | VSWHERE_VERSION="3.1.7" \ 14 | VSWHERE_DIST_NAME="vswhere.exe" 15 | 16 | ADD ["app", "C:/app/"] 17 | 18 | RUN powershell -ExecutionPolicy Bypass -File "C:\app\install.ps1" && \ 19 | powershell "Remove-Item -Path 'C:\app' -Recurse -Force" 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/msvc-2022" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Microsoft Visual C++ as part of Microsoft Visual Studio Build Tools 2022" 28 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2019:2.18.0 8 | 9 | ENV ICU_VERSION="77.1" \ 10 | ICU_URL="https://github.com/unicode-org/icu/releases/download" \ 11 | ICU_TEST="" 12 | 13 | RUN set "PATH=%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" && \ 14 | "%PYTHON3_HOME%\Scripts\pip" --disable-pip-version-check install buildtool && \ 15 | powershell "Remove-Item -Path \"${env:TMP}\*\" -Recurse -Force" 16 | 17 | ADD ["app", "C:/app/"] 18 | 19 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/icu-msvc-2019" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Builder of ICU with Microsoft Visual C++ 2019" 28 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/msvc-2022:2.18.0 8 | 9 | ENV ICU_VERSION="77.1" \ 10 | ICU_URL="https://github.com/unicode-org/icu/releases/download" \ 11 | ICU_TEST="" 12 | 13 | RUN set "PATH=%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" && \ 14 | "%PYTHON3_HOME%\Scripts\pip" --disable-pip-version-check install buildtool && \ 15 | powershell "Remove-Item -Path \"${env:TMP}\*\" -Recurse -Force" 16 | 17 | ADD ["app", "C:/app/"] 18 | 19 | CMD ["powershell", "-ExecutionPolicy", "Bypass", "-File", "C:\\app\\start.ps1"] 20 | 21 | ARG image_version="" 22 | ARG image_revision="" 23 | 24 | LABEL name="abrarov/icu-msvc-2022" \ 25 | version="${image_version}" \ 26 | revision="${image_revision}" \ 27 | description="Builder of ICU with Microsoft Visual C++ 2022" 28 | -------------------------------------------------------------------------------- /docker/mingw-14/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Get version of MinGW x64 in container created from ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" "C:\mingw64\bin\g++" --version 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to get version of MinGW x64" 17 | } 18 | 19 | Write-Host "Get version of MinGW x86 in container created from ${image_repository}:latest image" 20 | docker run --rm "${image_repository}:latest" "C:\mingw32\bin\g++" --version 21 | if (${LastExitCode} -ne 0) { 22 | throw "Failed to get version of MinGW x86" 23 | } 24 | -------------------------------------------------------------------------------- /docker/mingw/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Get version of MinGW x64 in container created from ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" "C:\mingw64\bin\g++" --version 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to get version of MinGW x64" 17 | } 18 | 19 | Write-Host "Get version of MinGW x86 in container created from ${image_repository}:latest image" 20 | docker run --rm "${image_repository}:latest" "C:\mingw32\bin\g++" --version 21 | if (${LastExitCode} -ne 0) { 22 | throw "Failed to get version of MinGW x86" 23 | } 24 | -------------------------------------------------------------------------------- /scripts/travis/travis_wait.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # Copied from https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/bash/travis_wait.bash 6 | travis_wait() { 7 | local timeout="${1}" 8 | 9 | if [[ "${timeout}" =~ ^[0-9]+$ ]]; then 10 | shift 11 | else 12 | timeout=20 13 | fi 14 | 15 | local cmd=("${@}") 16 | 17 | "${cmd[@]}" & 18 | local cmd_pid="${!}" 19 | 20 | travis_jigger "${cmd_pid}" "${timeout}" "${cmd[@]}" & 21 | local jigger_pid="${!}" 22 | local result 23 | 24 | { 25 | wait "${cmd_pid}" &> /dev/null && result=0 || result="${?}" 26 | ps -p "${jigger_pid}" &> /dev/null && kill "${jigger_pid}" || true 27 | } 28 | 29 | if [[ "${result}" -eq 0 ]]; then 30 | echo -e "\\n${ANSI_GREEN}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" 31 | else 32 | echo -e "\\n${ANSI_RED}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" 33 | fi 34 | 35 | return "${result}" 36 | } 37 | -------------------------------------------------------------------------------- /docker/msvc-2017/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Visual C++ 2017 2 | 3 | Docker image with Microsoft Visual C++ 2017 installed as part of Microsoft Visual Studio 2017 Community. 4 | 5 | Contains: 6 | 7 | 1. Microsoft Visual Studio 2017 Community with installed packages for desktop development with Visual C++ 8 | 1. [Visual Studio Locator](https://github.com/Microsoft/vswhere) (`vswhere` tool) for locating of folders where Visual Studio is installed 9 | 10 | ## Building 11 | 12 | ```bash 13 | docker build -t abrarov/msvc-2017 docker/msvc-2017/src 14 | ``` 15 | 16 | ## Usage 17 | 18 | Run windows command prompt inside Docker container in interactive mode: 19 | 20 | ```bash 21 | docker run --rm -it abrarov/msvc-2017 cmd 22 | ``` 23 | 24 | Get folder where MS Visual Studio 2017 is installed: 25 | 26 | ```bash 27 | docker run --rm \ 28 | abrarov/msvc-2017 \ 29 | vswhere -latest \ 30 | -products Microsoft.VisualStudio.Product.Community \ 31 | -version '[15.0,16.0)' \ 32 | -property installationPath 33 | ``` 34 | -------------------------------------------------------------------------------- /docker/msvc-2019/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Visual C++ 2019 2 | 3 | Docker image with Microsoft Visual C++ 2019 installed as part of Microsoft Visual Studio 2019 Community. 4 | 5 | Contains: 6 | 7 | 1. Microsoft Visual Studio 2019 Community with installed packages for desktop development with Visual C++ 8 | 1. [Visual Studio Locator](https://github.com/Microsoft/vswhere) (`vswhere` tool) for locating of folders where Visual Studio is installed 9 | 10 | ## Building 11 | 12 | ```bash 13 | docker build -t abrarov/msvc-2019 docker/msvc-2019/src 14 | ``` 15 | 16 | ## Usage 17 | 18 | Run windows command prompt inside Docker container in interactive mode: 19 | 20 | ```bash 21 | docker run --rm -it abrarov/msvc-2019 cmd 22 | ``` 23 | 24 | Get folder where MS Visual Studio 2019 is installed: 25 | 26 | ```bash 27 | docker run --rm \ 28 | abrarov/msvc-2019 \ 29 | vswhere -latest \ 30 | -products Microsoft.VisualStudio.Product.Community \ 31 | -version '[16.0,17.0)' \ 32 | -property installationPath 33 | ``` 34 | -------------------------------------------------------------------------------- /docker/msvc-2022/README.md: -------------------------------------------------------------------------------- 1 | # Microsoft Visual C++ 2022 2 | 3 | Docker image with Microsoft Visual C++ 2022 installed as part of Microsoft Visual Studio Build Tools 2022. 4 | 5 | Contains: 6 | 7 | 1. Microsoft Visual Studio Build Tools 2022 with installed packages for desktop development with Visual C++ 8 | 1. [Visual Studio Locator](https://github.com/Microsoft/vswhere) (`vswhere` tool) for locating of folders where Visual Studio is installed 9 | 10 | ## Building 11 | 12 | ```bash 13 | docker build -t abrarov/msvc-2022 docker/msvc-2022/src 14 | ``` 15 | 16 | ## Usage 17 | 18 | Run windows command prompt inside Docker container in interactive mode: 19 | 20 | ```bash 21 | docker run --rm -it abrarov/msvc-2022 cmd 22 | ``` 23 | 24 | Get folder where Microsoft Visual Studio Build Tools 2022 are installed: 25 | 26 | ```bash 27 | docker run --rm \ 28 | abrarov/msvc-2022 \ 29 | vswhere -latest \ 30 | -products Microsoft.VisualStudio.Product.BuildTools \ 31 | -version '[17.0,18.0)' \ 32 | -property installationPath 33 | ``` 34 | -------------------------------------------------------------------------------- /scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | 12 | $dirs = @( 13 | "docker\windows-dev", 14 | "docker\mingw", 15 | "docker\mingw-14", 16 | "docker\msvc-2017", 17 | "docker\boost-mingw", 18 | "docker\boost-mingw-14", 19 | "docker\boost-msvc-2017", 20 | "docker\icu-mingw", 21 | "docker\openssl-mingw", 22 | "docker\openssl-mingw-14", 23 | "docker\openssl-msvc-2017", 24 | "docker\msvc-2019", 25 | "docker\boost-msvc-2019", 26 | "docker\icu-msvc-2019", 27 | "docker\openssl-msvc-2019", 28 | "docker\msvc-2022", 29 | "docker\boost-msvc-2022", 30 | "docker\openssl-msvc-2022", 31 | "docker\icu-msvc-2022", 32 | "docker\icu-mingw-14" 33 | ) 34 | 35 | ${dirs}.GetEnumerator() | ForEach-Object { 36 | & "${project_dir}\$_\scripts\test.ps1" 37 | } 38 | -------------------------------------------------------------------------------- /docker/mingw-14/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/mingw/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/boost-mingw/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/icu-mingw/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/msvc-2017/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/msvc-2019/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/msvc-2022/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/openssl-mingw/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/windows-dev/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | $image_version = $(docker inspect "${image_repository}:latest" --format '{{ index .Config.Labels \"version\" }}') 14 | Write-Host "Detected version of ${image_repository}:latest image is ${image_version}" 15 | 16 | Write-Host "Pushing ${image_repository}:${image_version} image" 17 | docker push "${image_repository}:${image_version}" 18 | if (${LastExitCode} -ne 0) { 19 | throw "Failed to push ${image_repository}:${image_version} image" 20 | } 21 | 22 | Write-Host "Pushing ${image_repository}:latest image" 23 | docker push "${image_repository}:latest" 24 | if (${LastExitCode} -ne 0) { 25 | throw "Failed to push ${image_repository}:latest image" 26 | } 27 | -------------------------------------------------------------------------------- /scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | 12 | $dirs = @( 13 | "docker\windows-dev", 14 | "docker\mingw", 15 | "docker\mingw-14", 16 | "docker\msvc-2017", 17 | "docker\boost-mingw", 18 | "docker\boost-mingw-14", 19 | "docker\boost-msvc-2017", 20 | "docker\icu-mingw", 21 | "docker\openssl-mingw", 22 | "docker\openssl-mingw-14", 23 | "docker\openssl-msvc-2017", 24 | "docker\msvc-2019", 25 | "docker\boost-msvc-2019", 26 | "docker\icu-msvc-2019", 27 | "docker\openssl-msvc-2019", 28 | "docker\msvc-2022", 29 | "docker\boost-msvc-2022", 30 | "docker\openssl-msvc-2022", 31 | "docker\icu-msvc-2022", 32 | "docker\icu-mingw-14" 33 | ) 34 | 35 | ${dirs}.GetEnumerator() | ForEach-Object { 36 | & "${project_dir}\$_\scripts\build.ps1" 37 | } 38 | 39 | docker images 40 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%STRAWBERRY_PERL_HOME%\perl\bin;%NASM_HOME%;%PATH%" 12 | 13 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%OPENSSL_BUILD_DIR%" 18 | perl "%OPENSSL_HOME%\Configure" --prefix="%OPENSSL_INSTALL_DIR%" --openssldir="%OPENSSL_INSTALL_DIR%\ssl" "%OPENSSL_BUILD_TYPE_CONFIG%" "%OPENSSL_TOOLSET%" "%OPENSSL_LINKAGE_CONFIG%" 19 | set exit_code=%errorlevel% 20 | if %exit_code% neq 0 goto exit 21 | 22 | nmake 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | if not "--%OPENSSL_TEST%" == "--" ( 27 | nmake test 28 | set exit_code=%errorlevel% 29 | if %exit_code% neq 0 goto exit 30 | ) 31 | 32 | nmake install 33 | set exit_code=%errorlevel% 34 | if %exit_code% neq 0 goto exit 35 | 36 | :exit 37 | exit /B %exit_code% 38 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%STRAWBERRY_PERL_HOME%\perl\bin;%NASM_HOME%;%PATH%" 12 | 13 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%OPENSSL_BUILD_DIR%" 18 | perl "%OPENSSL_HOME%\Configure" --prefix="%OPENSSL_INSTALL_DIR%" --openssldir="%OPENSSL_INSTALL_DIR%\ssl" "%OPENSSL_BUILD_TYPE_CONFIG%" "%OPENSSL_TOOLSET%" "%OPENSSL_LINKAGE_CONFIG%" 19 | set exit_code=%errorlevel% 20 | if %exit_code% neq 0 goto exit 21 | 22 | nmake 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | if not "--%OPENSSL_TEST%" == "--" ( 27 | nmake test 28 | set exit_code=%errorlevel% 29 | if %exit_code% neq 0 goto exit 30 | ) 31 | 32 | nmake install 33 | set exit_code=%errorlevel% 34 | if %exit_code% neq 0 goto exit 35 | 36 | :exit 37 | exit /B %exit_code% 38 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%STRAWBERRY_PERL_HOME%\perl\bin;%NASM_HOME%;%PATH%" 12 | 13 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%OPENSSL_BUILD_DIR%" 18 | perl "%OPENSSL_HOME%\Configure" --prefix="%OPENSSL_INSTALL_DIR%" --openssldir="%OPENSSL_INSTALL_DIR%\ssl" "%OPENSSL_BUILD_TYPE_CONFIG%" "%OPENSSL_TOOLSET%" "%OPENSSL_LINKAGE_CONFIG%" 19 | set exit_code=%errorlevel% 20 | if %exit_code% neq 0 goto exit 21 | 22 | nmake 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | if not "--%OPENSSL_TEST%" == "--" ( 27 | nmake test 28 | set exit_code=%errorlevel% 29 | if %exit_code% neq 0 goto exit 30 | ) 31 | 32 | nmake install 33 | set exit_code=%errorlevel% 34 | if %exit_code% neq 0 goto exit 35 | 36 | :exit 37 | exit /B %exit_code% 38 | -------------------------------------------------------------------------------- /docker/mingw-14/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/windows-dev:2.18.0 8 | 9 | ENV MINGW_VERSION="14.2.0" \ 10 | MINGW_RT_FILE_SUFFIX="12" \ 11 | MINGW_REVISON="2" \ 12 | MINGW_URL="https://github.com/niXman/mingw-builds-binaries/releases/download" \ 13 | MINGW_64_TARGET="x86_64" \ 14 | MINGW_64_THREADS="posix" \ 15 | MINGW_64_EXCEPTIONS="seh" \ 16 | MINGW_64_MSVCRT="msvcrt" \ 17 | MINGW_32_TARGET="i686" \ 18 | MINGW_32_THREADS="posix" \ 19 | MINGW_32_EXCEPTIONS="dwarf" \ 20 | MINGW_32_MSVCRT="msvcrt" \ 21 | MINGW64_HOME="C:\mingw64" \ 22 | MINGW32_HOME="C:\mingw32" 23 | 24 | ADD ["app", "C:/app/"] 25 | 26 | RUN powershell -ExecutionPolicy Bypass -File "C:\app\install.ps1" && \ 27 | powershell "Remove-Item -Path 'C:\app' -Recurse -Force" 28 | 29 | ARG image_version="" 30 | ARG image_revision="" 31 | 32 | LABEL name="abrarov/mingw" \ 33 | version="${image_version}" \ 34 | revision="${image_revision}" \ 35 | description="MinGW-w64 14" 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Marat Abrarov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docker/openssl-mingw/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%MSYS_HOME%\usr\bin;%PATH%" 12 | 13 | for /f "tokens=*" %%a in ('cygpath "%OPENSSL_INSTALL_DIR%"') do set openssl_install_dir_msys=%%a 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%OPENSSL_BUILD_DIR%" 18 | perl "%OPENSSL_HOME%/Configure" --prefix="%openssl_install_dir_msys%" --openssldir="%openssl_install_dir_msys%/ssl" "%OPENSSL_BUILD_TYPE_CONFIG%" "%OPENSSL_TOOLSET%" "%OPENSSL_LINKAGE_CONFIG%" 19 | set exit_code=%errorlevel% 20 | if %exit_code% neq 0 goto exit 21 | 22 | make 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | if not "--%OPENSSL_TEST%" == "--" ( 27 | make test 28 | set exit_code=%errorlevel% 29 | if %exit_code% neq 0 goto exit 30 | ) 31 | 32 | make install 33 | set exit_code=%errorlevel% 34 | if %exit_code% neq 0 goto exit 35 | 36 | :exit 37 | exit /B %exit_code% 38 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%MSYS_HOME%\usr\bin;%PATH%" 12 | 13 | for /f "tokens=*" %%a in ('cygpath "%OPENSSL_INSTALL_DIR%"') do set openssl_install_dir_msys=%%a 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%OPENSSL_BUILD_DIR%" 18 | perl "%OPENSSL_HOME%/Configure" --prefix="%openssl_install_dir_msys%" --openssldir="%openssl_install_dir_msys%/ssl" "%OPENSSL_BUILD_TYPE_CONFIG%" "%OPENSSL_TOOLSET%" "%OPENSSL_LINKAGE_CONFIG%" 19 | set exit_code=%errorlevel% 20 | if %exit_code% neq 0 goto exit 21 | 22 | make 23 | set exit_code=%errorlevel% 24 | if %exit_code% neq 0 goto exit 25 | 26 | if not "--%OPENSSL_TEST%" == "--" ( 27 | make test 28 | set exit_code=%errorlevel% 29 | if %exit_code% neq 0 goto exit 30 | ) 31 | 32 | make install 33 | set exit_code=%errorlevel% 34 | if %exit_code% neq 0 goto exit 35 | 36 | :exit 37 | exit /B %exit_code% 38 | -------------------------------------------------------------------------------- /scripts/travis/build_and_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 5 | # 6 | # Distributed under the MIT License (see accompanying LICENSE) 7 | # 8 | 9 | set -e 10 | 11 | this_path="$(cd "$(dirname "${0}")" &> /dev/null && pwd)" 12 | 13 | # shellcheck source=travis_jigger.sh 14 | source "${this_path}/travis_jigger.sh" 15 | 16 | # shellcheck source=travis_wait.sh 17 | source "${this_path}/travis_wait.sh" 18 | 19 | project_dir="$(cd "${this_path}/../.." &> /dev/null && pwd)" 20 | 21 | # Full build disabled due to testing and resource consumption 22 | #travis_wait 360 powershell -ExecutionPolicy Bypass -File "${project_dir}/scripts/build.ps1" 23 | #travis_wait 60 powershell -ExecutionPolicy Bypass -File "${project_dir}/scripts/test.ps1" 24 | travis_wait 60 powershell -ExecutionPolicy Bypass -File "${project_dir}/docker/windows-dev/scripts/build.ps1" 25 | travis_wait 60 powershell -ExecutionPolicy Bypass -File "${project_dir}/docker/mingw/scripts/build.ps1" 26 | travis_wait 20 powershell -ExecutionPolicy Bypass -File "${project_dir}/docker/windows-dev/scripts/test.ps1" 27 | travis_wait 20 powershell -ExecutionPolicy Bypass -File "${project_dir}/docker/mingw/scripts/test.ps1" 28 | -------------------------------------------------------------------------------- /docker/mingw/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/mingw/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM abrarov/windows-dev:2.18.0 8 | 9 | ENV MINGW_VERSION="8.1.0" \ 10 | MINGW_RT_FILE_SUFFIX="6" \ 11 | MINGW_REVISON="0" \ 12 | MINGW_URL="https://sourceforge.net/projects/mingw-w64/files" \ 13 | MINGW_URL_POSTFIX="/download" \ 14 | MINGW_64_TOOLCHAIN_PATH="Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds" \ 15 | MINGW_64_TARGET="x86_64" \ 16 | MINGW_64_THREADS="posix" \ 17 | MINGW_64_EXCEPTIONS="seh" \ 18 | MINGW_32_TOOLCHAIN_PATH="Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds" \ 19 | MINGW_32_TARGET="i686" \ 20 | MINGW_32_THREADS="posix" \ 21 | MINGW_32_EXCEPTIONS="dwarf" \ 22 | MINGW64_HOME="C:\mingw64" \ 23 | MINGW32_HOME="C:\mingw32" 24 | 25 | ADD ["app", "C:/app/"] 26 | 27 | RUN powershell -ExecutionPolicy Bypass -File "C:\app\install.ps1" && \ 28 | powershell "Remove-Item -Path 'C:\app' -Recurse -Force" 29 | 30 | ARG image_version="" 31 | ARG image_revision="" 32 | 33 | LABEL name="abrarov/mingw" \ 34 | version="${image_version}" \ 35 | revision="${image_revision}" \ 36 | description="MinGW-w64 from MinGW-builds" 37 | -------------------------------------------------------------------------------- /docker/icu-mingw/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/mingw-14/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/boost-mingw/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/openssl-mingw/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/windows-dev/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | "${project_dir}\src" 22 | if (${LastExitCode} -ne 0) { 23 | throw "Failed to build ${image_repository} image" 24 | } 25 | 26 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 27 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 28 | if (${LastExitCode} -ne 0) { 29 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 30 | } 31 | -------------------------------------------------------------------------------- /docker/msvc-2017/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | -m "2GB" ` 22 | "${project_dir}\src" 23 | if (${LastExitCode} -ne 0) { 24 | throw "Failed to build ${image_repository} image" 25 | } 26 | 27 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 28 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 29 | if (${LastExitCode} -ne 0) { 30 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 31 | } 32 | -------------------------------------------------------------------------------- /docker/msvc-2019/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | -m "2GB" ` 22 | "${project_dir}\src" 23 | if (${LastExitCode} -ne 0) { 24 | throw "Failed to build ${image_repository} image" 25 | } 26 | 27 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 28 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 29 | if (${LastExitCode} -ne 0) { 30 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 31 | } 32 | -------------------------------------------------------------------------------- /docker/msvc-2022/scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | #TODO: find way to deal with tags and versions 13 | $image_version = "2.18.0" 14 | $image_revision = "$(git -C "${project_dir}" rev-parse --verify HEAD)" 15 | 16 | Write-Host "Building ${image_repository}:${image_version} image with ${image_revision} revision" 17 | docker build ` 18 | -t "${image_repository}:${image_version}" ` 19 | --build-arg "image_version=${image_version}" ` 20 | --build-arg "image_revision=${image_revision}" ` 21 | -m "2GB" ` 22 | "${project_dir}\src" 23 | if (${LastExitCode} -ne 0) { 24 | throw "Failed to build ${image_repository} image" 25 | } 26 | 27 | Write-Host "Tagging ${image_repository}:${image_version} image as latest" 28 | docker tag "${image_repository}:${image_version}" "${image_repository}:latest" 29 | if (${LastExitCode} -ne 0) { 30 | throw "Failed to tag ${image_repository}:${image_version} image as ${image_repository}:latest" 31 | } 32 | -------------------------------------------------------------------------------- /docker/icu-mingw/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%MSYS_HOME%\usr\bin;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" 12 | 13 | for /f "tokens=*" %%a in ('cygpath "%ICU_INSTALL_DIR%"') do set icu_install_dir_msys=%%a 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%ICU_HOME%\source" 18 | 19 | bash -C ./runConfigureICU ^ 20 | %ICU_CONFIGURE_OPTIONS% ^ 21 | "%ICU_PLATFORM%" ^ 22 | --prefix="%icu_install_dir_msys%" ^ 23 | --build="%ICU_BUILD_MACHINE%" ^ 24 | %ICU_BUILD_OPTIONS% 25 | set exit_code=%errorlevel% 26 | if %exit_code% neq 0 goto exit 27 | 28 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-20531 29 | mkdir "data\out\tmp" 30 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-22417 31 | mkdir "data\out\tmp\dirs.timestamp" 32 | set exit_code=%errorlevel% 33 | if %exit_code% neq 0 goto exit 34 | 35 | make 36 | set exit_code=%errorlevel% 37 | if %exit_code% neq 0 goto exit 38 | 39 | if not "--%ICU_TEST%" == "--" ( 40 | set "ICU_DATA=%ICU_HOME%\source\data\out/" 41 | make check 42 | set exit_code=%errorlevel% 43 | if %exit_code% neq 0 goto exit 44 | ) 45 | 46 | make install 47 | set exit_code=%errorlevel% 48 | if %exit_code% neq 0 goto exit 49 | 50 | :exit 51 | exit /B %exit_code% 52 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MINGW_HOME%\bin;%MSYS_HOME%\usr\bin;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" 12 | 13 | for /f "tokens=*" %%a in ('cygpath "%ICU_INSTALL_DIR%"') do set icu_install_dir_msys=%%a 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | cd /d "%ICU_HOME%\source" 18 | 19 | bash -C ./runConfigureICU ^ 20 | %ICU_CONFIGURE_OPTIONS% ^ 21 | "%ICU_PLATFORM%" ^ 22 | --prefix="%icu_install_dir_msys%" ^ 23 | --build="%ICU_BUILD_MACHINE%" ^ 24 | %ICU_BUILD_OPTIONS% 25 | set exit_code=%errorlevel% 26 | if %exit_code% neq 0 goto exit 27 | 28 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-20531 29 | mkdir "data\out\tmp" 30 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-22417 31 | mkdir "data\out\tmp\dirs.timestamp" 32 | set exit_code=%errorlevel% 33 | if %exit_code% neq 0 goto exit 34 | 35 | make 36 | set exit_code=%errorlevel% 37 | if %exit_code% neq 0 goto exit 38 | 39 | if not "--%ICU_TEST%" == "--" ( 40 | set "ICU_DATA=%ICU_HOME%\source\data\out/" 41 | make check 42 | set exit_code=%errorlevel% 43 | if %exit_code% neq 0 goto exit 44 | ) 45 | 46 | make install 47 | set exit_code=%errorlevel% 48 | if %exit_code% neq 0 goto exit 49 | 50 | :exit 51 | exit /B %exit_code% 52 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MSYS_HOME%\usr\bin;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" 12 | 13 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | for /f "tokens=*" %%a in ('cygpath "%ICU_INSTALL_DIR%"') do set icu_install_dir_msys=%%a 18 | set exit_code=%errorlevel% 19 | if %exit_code% neq 0 goto exit 20 | 21 | cd /d "%ICU_HOME%\source" 22 | 23 | bash -C ./runConfigureICU ^ 24 | %ICU_CONFIGURE_OPTIONS% ^ 25 | "%ICU_PLATFORM%" ^ 26 | --prefix="%icu_install_dir_msys%" ^ 27 | --build="%ICU_BUILD_MACHINE%" ^ 28 | %ICU_BUILD_OPTIONS% 29 | set exit_code=%errorlevel% 30 | if %exit_code% neq 0 goto exit 31 | 32 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-20531 33 | mkdir "data\out\tmp" 34 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-22417 35 | mkdir "data\out\tmp\dirs.timestamp" 36 | set exit_code=%errorlevel% 37 | if %exit_code% neq 0 goto exit 38 | 39 | make 40 | set exit_code=%errorlevel% 41 | if %exit_code% neq 0 goto exit 42 | 43 | if not "--%ICU_TEST%" == "--" ( 44 | set "ICU_DATA=%ICU_HOME%\source\data\out/" 45 | make check 46 | set exit_code=%errorlevel% 47 | if %exit_code% neq 0 goto exit 48 | ) 49 | 50 | make install 51 | set exit_code=%errorlevel% 52 | if %exit_code% neq 0 goto exit 53 | 54 | :exit 55 | exit /B %exit_code% 56 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/src/app/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem 4 | rem Copyright (c) 2025 Marat Abrarov (abrarov@gmail.com) 5 | rem 6 | rem Distributed under the MIT License (see accompanying LICENSE) 7 | rem 8 | 9 | set exit_code=0 10 | 11 | set "PATH=%MSYS_HOME%\usr\bin;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;%PATH%" 12 | 13 | call "%MSVC_BUILD_DIR%\%MSVC_CMD_BOOTSTRAP%" 14 | set exit_code=%errorlevel% 15 | if %exit_code% neq 0 goto exit 16 | 17 | for /f "tokens=*" %%a in ('cygpath "%ICU_INSTALL_DIR%"') do set icu_install_dir_msys=%%a 18 | set exit_code=%errorlevel% 19 | if %exit_code% neq 0 goto exit 20 | 21 | cd /d "%ICU_HOME%\source" 22 | 23 | bash -C ./runConfigureICU ^ 24 | %ICU_CONFIGURE_OPTIONS% ^ 25 | "%ICU_PLATFORM%" ^ 26 | --prefix="%icu_install_dir_msys%" ^ 27 | --build="%ICU_BUILD_MACHINE%" ^ 28 | %ICU_BUILD_OPTIONS% 29 | set exit_code=%errorlevel% 30 | if %exit_code% neq 0 goto exit 31 | 32 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-20531 33 | mkdir "data\out\tmp" 34 | rem Workaround for https://unicode-org.atlassian.net/browse/ICU-22417 35 | mkdir "data\out\tmp\dirs.timestamp" 36 | set exit_code=%errorlevel% 37 | if %exit_code% neq 0 goto exit 38 | 39 | make 40 | set exit_code=%errorlevel% 41 | if %exit_code% neq 0 goto exit 42 | 43 | if not "--%ICU_TEST%" == "--" ( 44 | set "ICU_DATA=%ICU_HOME%\source\data\out/" 45 | make check 46 | set exit_code=%errorlevel% 47 | if %exit_code% neq 0 goto exit 48 | ) 49 | 50 | make install 51 | set exit_code=%errorlevel% 52 | if %exit_code% neq 0 goto exit 53 | 54 | :exit 55 | exit /B %exit_code% 56 | -------------------------------------------------------------------------------- /scripts/deploy.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | 12 | if (${env:APPVEYOR_PULL_REQUEST_NUMBER} -or -not ${env:APPVEYOR_REPO_BRANCH}.Equals("master")) { 13 | Write-Host "Nothing to deploy" 14 | Exit 0 15 | } 16 | 17 | Write-Host "Starting deploy" 18 | 19 | # "$env:DOCKER_PASS" | docker login --username "$env:DOCKER_USER" --password-stdin 20 | # docker login with the old config.json style that is needed for manifest-tool 21 | $auth =[System.Text.Encoding]::UTF8.GetBytes("$(${env:DOCKER_USER}):$(${env:DOCKER_PASS})") 22 | $auth64 = [Convert]::ToBase64String($auth) 23 | @" 24 | { 25 | "auths": { 26 | "https://index.docker.io/v1/": { 27 | "auth": "$auth64" 28 | } 29 | } 30 | } 31 | "@ | Out-File -Encoding Ascii ~/.docker/config.json 32 | 33 | $dirs = @( 34 | "docker\windows-dev", 35 | "docker\mingw", 36 | "docker\mingw-14", 37 | "docker\msvc-2017", 38 | "docker\boost-mingw", 39 | "docker\boost-mingw-14", 40 | "docker\boost-msvc-2017", 41 | "docker\icu-mingw", 42 | "docker\openssl-mingw", 43 | "docker\openssl-mingw-14", 44 | "docker\openssl-msvc-2017", 45 | "docker\msvc-2019", 46 | "docker\boost-msvc-2019", 47 | "docker\icu-msvc-2019", 48 | "docker\openssl-msvc-2019", 49 | "docker\msvc-2022", 50 | "docker\boost-msvc-2022", 51 | "docker\openssl-msvc-2022", 52 | "docker\icu-msvc-2022", 53 | "docker\icu-mingw-14" 54 | ) 55 | 56 | ${dirs}.GetEnumerator() | ForEach-Object { 57 | & "${project_dir}\$_\scripts\deploy.ps1" 58 | } 59 | -------------------------------------------------------------------------------- /scripts/install.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | $docker_host_win_version = $(gp 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').BuildLabEx 8 | Write-Host "Windows version ${docker_host_win_version}" 9 | 10 | docker version 11 | if (${LastExitCode} -ne 0) { 12 | throw "Failed to connect to Docker Engine" 13 | } 14 | 15 | if ((Test-Path env:TRAVIS) -and (${env:TRAVIS} -eq "true")) { 16 | $windows_image_repository = "mcr.microsoft.com/windows/servercore" 17 | $windows_image_version = "ltsc2019" 18 | 19 | Write-Host "List of Docker images" 20 | docker images 21 | if (${LastExitCode} -ne 0) { 22 | throw "Failed to list Docker images" 23 | } 24 | 25 | docker inspect --type image "${windows_image_repository}:${windows_image_version}" *> $null 26 | if (${LastExitCode} -ne 0) { 27 | Write-Host "${windows_image_repository}:${windows_image_version} image not found, pulling it..." 28 | docker pull "${windows_image_repository}:${windows_image_version}" 29 | if (${LastExitCode} -ne 0) { 30 | throw "Failed to pull ${windows_image_repository}:${windows_image_version} image" 31 | } 32 | docker images 33 | if (${LastExitCode} -ne 0) { 34 | throw "Failed to list Docker images" 35 | } 36 | } 37 | 38 | Write-Host "Testing if Travis CI Docker is able to run containers created from ${windows_image_repository}:${windows_image_version} image" 39 | docker run --rm "${windows_image_repository}:${windows_image_version}" cmd /c "echo Container run successfully" 40 | if (${LastExitCode} -ne 0) { 41 | throw "Failed to run ${windows_image_repository}:${windows_image_version} image" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/patches/boost-1.83.0.patch: -------------------------------------------------------------------------------- 1 | --- ./boost/stacktrace/detail/frame_msvc.ipp 2023-08-09 00:03:01.000000000 +0300 2 | +++ ./boost/stacktrace/detail/frame_msvc.ipp 2025-04-13 10:50:34.038053000 +0300 3 | @@ -18,7 +18,17 @@ 4 | #include 5 | #include 6 | #include 7 | + 8 | +#ifdef WIN32_LEAN_AND_MEAN 9 | +#include 10 | +#else 11 | +// Prevent inclusion of extra Windows SDK headers which can cause conflict 12 | +// with other code using Windows SDK 13 | +#define WIN32_LEAN_AND_MEAN 14 | #include 15 | +#undef WIN32_LEAN_AND_MEAN 16 | +#endif 17 | + 18 | #include "dbgeng.h" 19 | 20 | #ifdef BOOST_MSVC 21 | @@ -28,9 +38,13 @@ 22 | 23 | 24 | #ifdef __CRT_UUID_DECL // for __MINGW32__ 25 | +#if !defined(__MINGW32__) || \ 26 | + (!defined(__clang__) && __GNUC__ < 12) || \ 27 | + (defined(__clang__) && __clang_major__ < 16) 28 | __CRT_UUID_DECL(IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8) 29 | __CRT_UUID_DECL(IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba) 30 | __CRT_UUID_DECL(IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50) 31 | +#endif 32 | #elif defined(DEFINE_GUID) && !defined(BOOST_MSVC) 33 | DEFINE_GUID(IID_IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8); 34 | DEFINE_GUID(IID_IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba); 35 | --- ./tools/build/src/tools/gcc.jam 2023-08-09 00:03:02.000000000 +0300 36 | +++ ./tools/build/src/tools/gcc.jam 2025-04-13 11:30:00.194278900 +0300 37 | @@ -1093,7 +1093,7 @@ 38 | # 39 | actions piecemeal archive 40 | { 41 | - "$(.AR)" $(AROPTIONS) $(.ARFLAGS) "$(<)" @($(<[-1]:T).rsp:O=FC:<=@":>=":E="$(>)") 42 | + "$(.AR)" $(AROPTIONS) $(.ARFLAGS) "$(<)" @($(<[-1]:T).rsp:O=FC:<=@":>=":E="$(>:T)") 43 | } 44 | 45 | ### 46 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/src/app/patches/boost-1.83.0.patch: -------------------------------------------------------------------------------- 1 | --- ./boost/stacktrace/detail/frame_msvc.ipp 2023-08-09 00:03:01.000000000 +0300 2 | +++ ./boost/stacktrace/detail/frame_msvc.ipp 2025-04-13 10:50:34.038053000 +0300 3 | @@ -18,7 +18,17 @@ 4 | #include 5 | #include 6 | #include 7 | + 8 | +#ifdef WIN32_LEAN_AND_MEAN 9 | +#include 10 | +#else 11 | +// Prevent inclusion of extra Windows SDK headers which can cause conflict 12 | +// with other code using Windows SDK 13 | +#define WIN32_LEAN_AND_MEAN 14 | #include 15 | +#undef WIN32_LEAN_AND_MEAN 16 | +#endif 17 | + 18 | #include "dbgeng.h" 19 | 20 | #ifdef BOOST_MSVC 21 | @@ -28,9 +38,13 @@ 22 | 23 | 24 | #ifdef __CRT_UUID_DECL // for __MINGW32__ 25 | +#if !defined(__MINGW32__) || \ 26 | + (!defined(__clang__) && __GNUC__ < 12) || \ 27 | + (defined(__clang__) && __clang_major__ < 16) 28 | __CRT_UUID_DECL(IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8) 29 | __CRT_UUID_DECL(IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba) 30 | __CRT_UUID_DECL(IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50) 31 | +#endif 32 | #elif defined(DEFINE_GUID) && !defined(BOOST_MSVC) 33 | DEFINE_GUID(IID_IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8); 34 | DEFINE_GUID(IID_IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba); 35 | --- ./tools/build/src/tools/gcc.jam 2023-08-09 00:03:02.000000000 +0300 36 | +++ ./tools/build/src/tools/gcc.jam 2025-04-13 11:30:00.194278900 +0300 37 | @@ -1093,7 +1093,7 @@ 38 | # 39 | actions piecemeal archive 40 | { 41 | - "$(.AR)" $(AROPTIONS) $(.ARFLAGS) "$(<)" @($(<[-1]:T).rsp:O=FC:<=@":>=":E="$(>)") 42 | + "$(.AR)" $(AROPTIONS) $(.ARFLAGS) "$(<)" @($(<[-1]:T).rsp:O=FC:<=@":>=":E="$(>:T)") 43 | } 44 | 45 | ### 46 | -------------------------------------------------------------------------------- /docker/windows-dev/src/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | FROM mcr.microsoft.com/windows/servercore:ltsc2022 8 | 9 | ENV DOWNLOAD_DIR="C:\download" \ 10 | BUILD_DIR="C:\build" \ 11 | TARGET_DIR="C:\target" \ 12 | SEVEN_ZIP_VERSION="24.09" \ 13 | SEVEN_ZIP_DOWNLOAD_URL="http://www.7-zip.org/a" \ 14 | SEVEN_ZIP_HOME="C:\Program Files\7-Zip" \ 15 | GIT_VERSION="2.49.0" \ 16 | CMAKE_VERSION="3.31.6" \ 17 | CMAKE_URL="https://github.com/Kitware/CMake/releases/download" \ 18 | CMAKE_HOME="C:\cmake" \ 19 | MSYS2_URL="http://repo.msys2.org/distrib" \ 20 | MSYS2_TARGET="x86_64" \ 21 | MSYS2_VERSION="20250221" \ 22 | MSYS_HOME="C:\msys64" \ 23 | STRAWBERRY_PERL_VERSION="5.40.0.1" \ 24 | STRAWBERRY_PERL_URL="https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_54001_64bit_UCRT/" \ 25 | STRAWBERRY_PERL_HOME="C:\Perl" \ 26 | PYTHON_URL="https://www.python.org/ftp/python" \ 27 | PYTHON3_VERSION="3.13.3" \ 28 | PYTHON3_HOME="C:\Python3" \ 29 | PYTHON2_VERSION="2.7.18" \ 30 | PYTHON2_HOME="C:\Python2" \ 31 | NINJA_VERSION="1.12.1" \ 32 | NINJA_URL="https://github.com/ninja-build/ninja/releases/download" \ 33 | NINJA_HOME="C:\ninja" \ 34 | NASM_VERSION="2.16.03" \ 35 | NASM_URL="https://www.nasm.us/pub/nasm/releasebuilds" \ 36 | NASM64_HOME="C:\nasm64" \ 37 | NASM32_HOME="C:\nasm32" 38 | 39 | ADD ["app", "C:/app/"] 40 | 41 | RUN mkdir "%DOWNLOAD_DIR%" && \ 42 | mkdir "%BUILD_DIR%" && \ 43 | mkdir "%TARGET_DIR%" && \ 44 | powershell -ExecutionPolicy Bypass -File "C:\app\install.ps1" && \ 45 | powershell "Remove-Item -Path 'C:\app' -Recurse -Force" 46 | 47 | ARG image_version="" 48 | ARG image_revision="" 49 | 50 | LABEL name="abrarov/windows-dev" \ 51 | version="${image_version}" \ 52 | revision="${image_revision}" \ 53 | description="Base image for builders on Windows" 54 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/src/app/patches/boost-1.83.0.patch: -------------------------------------------------------------------------------- 1 | --- ./tools/build/src/tools/msvc.jam 2024-10-27 01:03:50.705233500 +0300 2 | +++ ./tools/build/src/tools/msvc.jam 2024-10-27 01:03:50.705233500 +0300 3 | @@ -23,6 +23,7 @@ 4 | tools on Microsoft Windows. The supported products and versions of 5 | command line tools are listed below: 6 | 7 | +* Visual Studio 2019-14.3 8 | * Visual Studio 2019-14.2 9 | * Visual Studio 2017—14.1 10 | * Visual Studio 2015—14.0 11 | @@ -1137,7 +1138,7 @@ 12 | } 13 | else 14 | { 15 | - if [ MATCH "(14.3)" : $(version) ] 16 | + if [ MATCH "(14.[34])" : $(version) ] 17 | { 18 | if $(.debug-configuration) 19 | { 20 | @@ -1316,7 +1317,7 @@ 21 | # version from the path. 22 | # FIXME: We currently detect both Microsoft Visual Studio 9.0 and 23 | # 9.0express as 9.0 here. 24 | - if [ MATCH "(MSVC\\\\14.3)" : $(command) ] 25 | + if [ MATCH "(MSVC\\\\14.[34])" : $(command) ] 26 | { 27 | version = 14.3 ; 28 | } 29 | --- ./boost/config/compiler/visualc.hpp 2023-08-09 00:02:55.000000000 +0300 30 | +++ ./boost/config/compiler/visualc.hpp 2023-08-09 00:02:55.000000000 +0300 31 | @@ -365,7 +365,7 @@ 32 | # define BOOST_COMPILER_VERSION 14.1 33 | # elif _MSC_VER < 1930 34 | # define BOOST_COMPILER_VERSION 14.2 35 | -# elif _MSC_VER < 1940 36 | +# elif _MSC_VER < 1950 37 | # define BOOST_COMPILER_VERSION 14.3 38 | # else 39 | # define BOOST_COMPILER_VERSION _MSC_VER 40 | @@ -378,8 +378,8 @@ 41 | #include 42 | 43 | // 44 | -// last known and checked version is 19.3x (VS2022): 45 | -#if (_MSC_VER >= 1940) 46 | +// last known and checked version is 19.4x (VS2022 17.10): 47 | +#if (_MSC_VER >= 1950) 48 | # if defined(BOOST_ASSERT_CONFIG) 49 | # error "Boost.Config is older than your current compiler version." 50 | # elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) 51 | -------------------------------------------------------------------------------- /docker/msvc-2022/src/app/install.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Download Visual Studio Build Tools 2022 14 | $msvs_url = "${env:MSVS_URL}/${env:MSVS_VERSION}/release/${env:MSVS_DIST_NAME}" 15 | $msvs_dist = "${env:TMP}\${env:MSVS_DIST_NAME}" 16 | Write-Host "Downloading Visual Studio Build Tools 2022 from ${msvs_url} into ${msvs_dist}" 17 | (New-Object System.Net.WebClient).DownloadFile("${msvs_url}", "${msvs_dist}") 18 | 19 | # Install Visual C++ part of Visual Studio Build Tools 2022 20 | Write-Host "Installing Visual C++ part of Visual Studio Build Tools 2022 with support of Desktop applications and MFC" 21 | $p = Start-Process -FilePath "${msvs_dist}" -ArgumentList ` 22 | ("--locale en-US", ` 23 | "--quiet", ` 24 | "--norestart", ` 25 | "--wait", ` 26 | "--nocache", ` 27 | "--add Microsoft.VisualStudio.Workload.VCTools", ` 28 | "--add Microsoft.VisualStudio.Component.VC.ATLMFC", ` 29 | "--includeRecommended") ` 30 | -Wait -PassThru 31 | if (${p}.ExitCode -ne 0) { 32 | throw "Failed to install Visual Studio Build Tools 2022" 33 | } 34 | Write-Host "Visual C++ part of Visual Studio Build Tools 2022 (${env:MSVS_VERSION}) installed" 35 | 36 | # Download and install Visual Studio Locator 37 | $vswhere_url = "${env:VSWHERE_URL}/${env:VSWHERE_VERSION}/${env:VSWHERE_DIST_NAME}" 38 | $vswhere_dist = "${env:SystemRoot}\${env:VSWHERE_DIST_NAME}" 39 | Write-Host "Downloading Visual Studio Locator from ${vswhere_url} into ${vswhere_dist}" 40 | (New-Object System.Net.WebClient).DownloadFile("${vswhere_url}", "${vswhere_dist}") 41 | Write-Host "Visual Studio Locator ${env:VSWHERE_VERSION} installed" 42 | 43 | # Cleanup 44 | Write-Host "Removing all files and directories from ${env:TMP}" 45 | Remove-Item -Path "${env:TMP}\*" -Recurse -Force 46 | -------------------------------------------------------------------------------- /docker/msvc-2017/src/app/install.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Download Visual Studio 2017 Community edition 14 | $msvs_url = "${env:MSVS_URL}/${env:MSVS_VERSION}/release/${env:MSVS_DIST_NAME}" 15 | $msvs_dist = "${env:TMP}\${env:MSVS_DIST_NAME}" 16 | Write-Host "Downloading Visual Studio 2017 Community edition from ${msvs_url} into ${msvs_dist}" 17 | (New-Object System.Net.WebClient).DownloadFile("${msvs_url}", "${msvs_dist}") 18 | 19 | # Install Visual C++ part of Visual Studio 2017 Community edition 20 | Write-Host "Installing Visual C++ part of Visual Studio 2017 Community edition with support of Desktop applications and MFC" 21 | $p = Start-Process -FilePath "${msvs_dist}" -ArgumentList ` 22 | ("--locale en-US", ` 23 | "--quiet", ` 24 | "--norestart", ` 25 | "--wait", ` 26 | "--nocache", ` 27 | "--add Microsoft.VisualStudio.Workload.NativeDesktop", ` 28 | "--add Microsoft.VisualStudio.Component.VC.ATLMFC", ` 29 | "--includeRecommended") ` 30 | -Wait -PassThru 31 | if (${p}.ExitCode -ne 0) { 32 | throw "Failed to install Visual Studio 2017 Community edition" 33 | } 34 | Write-Host "Visual C++ part of Visual Studio 2017 (${env:MSVS_VERSION}) installed" 35 | 36 | # Download and install Visual Studio Locator 37 | $vswhere_url = "${env:VSWHERE_URL}/${env:VSWHERE_VERSION}/${env:VSWHERE_DIST_NAME}" 38 | $vswhere_dist = "${env:SystemRoot}\${env:VSWHERE_DIST_NAME}" 39 | Write-Host "Downloading Visual Studio Locator from ${vswhere_url} into ${vswhere_dist}" 40 | (New-Object System.Net.WebClient).DownloadFile("${vswhere_url}", "${vswhere_dist}") 41 | Write-Host "Visual Studio Locator ${env:VSWHERE_VERSION} installed" 42 | 43 | # Cleanup 44 | Write-Host "Removing all files and directories from ${env:TMP}" 45 | Remove-Item -Path "${env:TMP}\*" -Recurse -Force 46 | -------------------------------------------------------------------------------- /docker/msvc-2019/src/app/install.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2019 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Download Visual Studio 2019 Community edition 14 | $msvs_url = "${env:MSVS_URL}/${env:MSVS_VERSION}/release/${env:MSVS_DIST_NAME}" 15 | $msvs_dist = "${env:TMP}\${env:MSVS_DIST_NAME}" 16 | Write-Host "Downloading Visual Studio 2019 Community edition from ${msvs_url} into ${msvs_dist}" 17 | (New-Object System.Net.WebClient).DownloadFile("${msvs_url}", "${msvs_dist}") 18 | 19 | # Install Visual C++ part of Visual Studio 2019 Community edition 20 | Write-Host "Installing Visual C++ part of Visual Studio 2019 Community edition with support of Desktop applications and MFC" 21 | $p = Start-Process -FilePath "${msvs_dist}" -ArgumentList ` 22 | ("--locale en-US", ` 23 | "--quiet", ` 24 | "--norestart", ` 25 | "--wait", ` 26 | "--nocache", ` 27 | "--add Microsoft.VisualStudio.Workload.NativeDesktop", ` 28 | "--add Microsoft.VisualStudio.Component.VC.ATLMFC", ` 29 | "--includeRecommended") ` 30 | -Wait -PassThru 31 | if (${p}.ExitCode -ne 0) { 32 | throw "Failed to install Visual Studio 2019 Community edition" 33 | } 34 | Write-Host "Visual C++ part of Visual Studio 2019 (${env:MSVS_VERSION}) installed" 35 | 36 | # Download and install Visual Studio Locator 37 | $vswhere_url = "${env:VSWHERE_URL}/${env:VSWHERE_VERSION}/${env:VSWHERE_DIST_NAME}" 38 | $vswhere_dist = "${env:SystemRoot}\${env:VSWHERE_DIST_NAME}" 39 | Write-Host "Downloading Visual Studio Locator from ${vswhere_url} into ${vswhere_dist}" 40 | (New-Object System.Net.WebClient).DownloadFile("${vswhere_url}", "${vswhere_dist}") 41 | Write-Host "Visual Studio Locator ${env:VSWHERE_VERSION} installed" 42 | 43 | # Cleanup 44 | Write-Host "Removing all files and directories from ${env:TMP}" 45 | Remove-Item -Path "${env:TMP}\*" -Recurse -Force 46 | -------------------------------------------------------------------------------- /docker/mingw-14/src/app/install.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Download MinGW-w64 x64 14 | $mingw64_dist_name = "${env:MINGW_64_TARGET}-${env:MINGW_VERSION}-release-${env:MINGW_64_THREADS}-${env:MINGW_64_EXCEPTIONS}-${env:MINGW_64_MSVCRT}-rt_v${env:MINGW_RT_FILE_SUFFIX}-rev${env:MINGW_REVISON}.7z" 15 | $mingw64_url = "${env:MINGW_URL}/${env:MINGW_VERSION}-rt_v${env:MINGW_RT_FILE_SUFFIX}-rev${env:MINGW_REVISON}/${mingw64_dist_name}" 16 | $mingw64_dist = "${env:TMP}\${mingw64_dist_name}" 17 | Write-Host "Downloading MinGW-w64 x64 from ${mingw64_url} into ${mingw64_dist}" 18 | (New-Object System.Net.WebClient).DownloadFile("${mingw64_url}", "${mingw64_dist}") 19 | # Extract MinGW-w64 x64 and install it into C:\mingw64 20 | Write-Host "Extracting MinGW-w64 x64 from ${mingw64_dist} into ${env:MINGW64_HOME}" 21 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${mingw64_dist}" -o"C:" -aoa -y -bd | out-null 22 | Write-Host "MinGW-w64 x64 ${env:MINGW_VERSION} installed into ${env:MINGW64_HOME}" 23 | 24 | # Download MinGW-w64 x86 25 | $mingw32_dist_name = "${env:MINGW_32_TARGET}-${env:MINGW_VERSION}-release-${env:MINGW_32_THREADS}-${env:MINGW_32_EXCEPTIONS}-${env:MINGW_32_MSVCRT}-rt_v${env:MINGW_RT_FILE_SUFFIX}-rev${env:MINGW_REVISON}.7z" 26 | $mingw32_url = "${env:MINGW_URL}/${env:MINGW_VERSION}-rt_v${env:MINGW_RT_FILE_SUFFIX}-rev${env:MINGW_REVISON}/${mingw32_dist_name}" 27 | $mingw32_dist = "${env:TMP}\${mingw32_dist_name}" 28 | Write-Host "Downloading MinGW-w64 x86 from ${mingw32_url} into ${mingw32_dist}" 29 | (New-Object System.Net.WebClient).DownloadFile("${mingw32_url}", "${mingw32_dist}") 30 | # Extract MinGW-w64 x86 and install it into C:\mingw32 31 | Write-Host "Extracting MinGW-w64 x86 from ${mingw32_dist} into ${env:MINGW32_HOME}" 32 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${mingw32_dist}" -o"C:" -aoa -y -bd | out-null 33 | Write-Host "MinGW-w64 x86 ${env:MINGW_VERSION} installed into ${env:MINGW32_HOME}" 34 | 35 | # Cleanup 36 | Write-Host "Removing all files and directories from ${env:TMP}" 37 | Remove-Item -Path "${env:TMP}\*" -Recurse -Force 38 | -------------------------------------------------------------------------------- /docker/mingw/src/app/install.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Download MinGW x64 14 | $mingw64_dist_name = "${env:MINGW_64_TARGET}-${env:MINGW_VERSION}-release-${env:MINGW_64_THREADS}-${env:MINGW_64_EXCEPTIONS}-rt_v${env:MINGW_RT_FILE_SUFFIX}-rev${env:MINGW_REVISON}.7z" 15 | $mingw64_url = "${env:MINGW_URL}/${env:MINGW_64_TOOLCHAIN_PATH}/${env:MINGW_VERSION}/threads-${env:MINGW_64_THREADS}/${env:MINGW_64_EXCEPTIONS}/${mingw64_dist_name}${env:mingw64_url_POSTFIX}" 16 | $mingw64_dist = "${env:TMP}\${mingw64_dist_name}" 17 | Write-Host "Downloading MinGW x64 from ${mingw64_url} into ${mingw64_dist}" 18 | (New-Object System.Net.WebClient).DownloadFile("${mingw64_url}", "${mingw64_dist}") 19 | # Extract MinGW x64 and install it into C:\mingw64 20 | Write-Host "Extracting MinGW x64 from ${mingw64_dist} into ${env:MINGW64_HOME}" 21 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${mingw64_dist}" -o"C:" -aoa -y -bd | out-null 22 | Write-Host "MinGW x64 ${env:MINGW_VERSION} installed into ${env:MINGW64_HOME}" 23 | 24 | # Download MinGW x86 25 | $mingw32_dist_name = "${env:MINGW_32_TARGET}-${env:MINGW_VERSION}-release-${env:MINGW_32_THREADS}-${env:MINGW_32_EXCEPTIONS}-rt_v${env:MINGW_RT_FILE_SUFFIX}-rev${env:MINGW_REVISON}.7z" 26 | $mingw32_url = "${env:MINGW_URL}/${env:MINGW_32_TOOLCHAIN_PATH}/${env:MINGW_VERSION}/threads-${env:MINGW_32_THREADS}/${env:MINGW_32_EXCEPTIONS}/${mingw32_dist_name}${env:mingw32_url_POSTFIX}" 27 | $mingw32_dist = "${env:TMP}\${mingw32_dist_name}" 28 | Write-Host "Downloading MinGW x86 from ${mingw32_url} into ${mingw32_dist}" 29 | (New-Object System.Net.WebClient).DownloadFile("${mingw32_url}", "${mingw32_dist}") 30 | # Extract MinGW x86 and install it into C:\mingw32 31 | Write-Host "Extracting MinGW x86 from ${mingw32_dist} into ${env:MINGW32_HOME}" 32 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${mingw32_dist}" -o"C:" -aoa -y -bd | out-null 33 | Write-Host "MinGW x86 ${env:MINGW_VERSION} installed into ${env:MINGW32_HOME}" 34 | 35 | # Cleanup 36 | Write-Host "Removing all files and directories from ${env:TMP}" 37 | Remove-Item -Path "${env:TMP}\*" -Recurse -Force 38 | -------------------------------------------------------------------------------- /docker/icu-mingw/README.md: -------------------------------------------------------------------------------- 1 | # Builder of ICU4C with MinGW 2 | 3 | Docker image for building [ICU4C](http://site.icu-project.org/) with MinGW. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/icu-mingw docker/icu-mingw/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | ICU_VERSION | Version of ICU to build | `77.1` | `77.1` | | 18 | | ICU_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | ICU_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | ICU_PATCH_FILE | Path to file in container with path applied to ICU before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of ICU. Embedded patches are located in `C:\app\patches` directory of image | 21 | | ICU_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `check` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built ICU, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded ICU source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of ICU is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\icu-mingw\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v /C:/Users/Public/icu-mingw/target:C:/target \ 39 | abrarov/icu-mingw 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\icu-mingw\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e ICU_ADDRESS_MODEL=64 \ 48 | -e ICU_LINKAGE=shared \ 49 | -v /C:/Users/Public/icu-mingw/target:C:/target \ 50 | abrarov/icu-mingw 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/icu-mingw-14/README.md: -------------------------------------------------------------------------------- 1 | # Builder of ICU4C with MinGW 14 2 | 3 | Docker image for building [ICU4C](http://site.icu-project.org/) with MinGW 14. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/icu-mingw-14 docker/icu-mingw-14/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | ICU_VERSION | Version of ICU to build | `77.1` | `77.1` | | 18 | | ICU_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | ICU_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | ICU_PATCH_FILE | Path to file in container with path applied to ICU before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of ICU. Embedded patches are located in `C:\app\patches` directory of image | 21 | | ICU_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `check` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built ICU, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded ICU source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of ICU is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\icu-mingw-14\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v /C:/Users/Public/icu-mingw-14/target:C:/target \ 39 | abrarov/icu-mingw-14 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\icu-mingw-14\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e ICU_ADDRESS_MODEL=64 \ 48 | -e ICU_LINKAGE=shared \ 49 | -v /C:/Users/Public/icu-mingw-14/target:C:/target \ 50 | abrarov/icu-mingw-14 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/openssl-mingw/README.md: -------------------------------------------------------------------------------- 1 | # Builder of OpenSSL with MinGW 2 | 3 | Docker image for building [OpenSSL](https://www.openssl.org/) with MinGW. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/openssl-mingw docker/openssl-mingw/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | OPENSSL_VERSION | Version of OpenSSL to build | One of: `3.5.0` | `3.5.0` | | 18 | | OPENSSL_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | OPENSSL_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | OPENSSL_PATCH_FILE | Path to file in container with path applied to OpenSSL before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of OpenSSL. Embedded patches are located in `C:\app\patches` directory of image | 21 | | OPENSSL_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `test` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built OpenSSL, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded OpenSSL source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of OpenSSL is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\openssl-mingw\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/openssl-mingw/target:C:/target \ 39 | abrarov/openssl-mingw 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\openssl-mingw\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e OPENSSL_ADDRESS_MODEL=64 \ 48 | -e OPENSSL_LINKAGE=shared \ 49 | -v C:/Users/Public/openssl-mingw/target:C:/target \ 50 | abrarov/openssl-mingw 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/openssl-mingw-14/README.md: -------------------------------------------------------------------------------- 1 | # Builder of OpenSSL with MinGW 14 2 | 3 | Docker image for building [OpenSSL](https://www.openssl.org/) with MinGW 14. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/openssl-mingw-14 docker/openssl-mingw-14/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | OPENSSL_VERSION | Version of OpenSSL to build | One of: `3.5.0` | `3.5.0` | | 18 | | OPENSSL_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | OPENSSL_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | OPENSSL_PATCH_FILE | Path to file in container with path applied to OpenSSL before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of OpenSSL. Embedded patches are located in `C:\app\patches` directory of image | 21 | | OPENSSL_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `test` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built OpenSSL, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded OpenSSL source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of OpenSSL is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\openssl-mingw\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/openssl-mingw-14/target:C:/target \ 39 | abrarov/openssl-mingw-14 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\openssl-mingw\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e OPENSSL_ADDRESS_MODEL=64 \ 48 | -e OPENSSL_LINKAGE=shared \ 49 | -v C:/Users/Public/openssl-mingw-14/target:C:/target \ 50 | abrarov/openssl-mingw-14 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2017/README.md: -------------------------------------------------------------------------------- 1 | # Builder of OpenSSL with Microsoft Visual C++ 2017 2 | 3 | Docker image for building [OpenSSL](https://www.openssl.org/) with Microsoft Visual C++ 2017. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/openssl-msvc-2017 docker/openssl-msvc-2017/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | OPENSSL_VERSION | Version of OpenSSL to build | One of: `3.5.0` | `3.5.0` | | 18 | | OPENSSL_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | OPENSSL_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | OPENSSL_PATCH_FILE | Path to file in container with path applied to OpenSSL before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of OpenSSL. Embedded patches are located in `C:\app\patches` directory of image | 21 | | OPENSSL_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `test` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built OpenSSL, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded OpenSSL source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of OpenSSL is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\openssl-msvc-2017\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/openssl-msvc-2017/target:C:/target \ 39 | abrarov/openssl-msvc-2017 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\openssl-msvc-2017\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e OPENSSL_ADDRESS_MODEL=64 \ 48 | -e OPENSSL_LINKAGE=shared \ 49 | -v C:/Users/Public/openssl-msvc-2017/target:C:/target \ 50 | abrarov/openssl-msvc-2017 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2019/README.md: -------------------------------------------------------------------------------- 1 | # Builder of OpenSSL with Microsoft Visual C++ 2019 2 | 3 | Docker image for building [OpenSSL](https://www.openssl.org/) with Microsoft Visual C++ 2019. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/openssl-msvc-2019 docker/openssl-msvc-2019/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | OPENSSL_VERSION | Version of OpenSSL to build | One of: `3.5.0` | `3.5.0` | | 18 | | OPENSSL_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | OPENSSL_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | OPENSSL_PATCH_FILE | Path to file in container with path applied to OpenSSL before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of OpenSSL. Embedded patches are located in `C:\app\patches` directory of image | 21 | | OPENSSL_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `test` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built OpenSSL, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded OpenSSL source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of OpenSSL is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\openssl-msvc-2019\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/openssl-msvc-2019/target:C:/target \ 39 | abrarov/openssl-msvc-2019 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\openssl-msvc-2019\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e OPENSSL_ADDRESS_MODEL=64 \ 48 | -e OPENSSL_LINKAGE=shared \ 49 | -v C:/Users/Public/openssl-msvc-2019/target:C:/target \ 50 | abrarov/openssl-msvc-2019 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/openssl-msvc-2022/README.md: -------------------------------------------------------------------------------- 1 | # Builder of OpenSSL with Microsoft Visual C++ 2022 2 | 3 | Docker image for building [OpenSSL](https://www.openssl.org/) with Microsoft Visual C++ 2022. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/openssl-msvc-2022 docker/openssl-msvc-2022/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | OPENSSL_VERSION | Version of OpenSSL to build | One of: `3.5.0` | `3.5.0` | | 18 | | OPENSSL_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | OPENSSL_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | OPENSSL_PATCH_FILE | Path to file in container with path applied to OpenSSL before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of OpenSSL. Embedded patches are located in `C:\app\patches` directory of image | 21 | | OPENSSL_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `test` goal of Makefile executed before `install` goal | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built OpenSSL, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded OpenSSL source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of OpenSSL is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 34 | `C:\Users\Public\openssl-msvc-2022\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/openssl-msvc-2022/target:C:/target \ 39 | abrarov/openssl-msvc-2022 40 | ``` 41 | 42 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\openssl-msvc-2022\target` 43 | folder of Docker Host: 44 | 45 | ```bash 46 | docker run --rm \ 47 | -e OPENSSL_ADDRESS_MODEL=64 \ 48 | -e OPENSSL_LINKAGE=shared \ 49 | -v C:/Users/Public/openssl-msvc-2022/target:C:/target \ 50 | abrarov/openssl-msvc-2022 51 | ``` 52 | -------------------------------------------------------------------------------- /docker/icu-msvc-2019/README.md: -------------------------------------------------------------------------------- 1 | # Builder of ICU4C with Microsoft Visual C++ 2019 2 | 3 | Docker image for building [ICU4C](http://site.icu-project.org/) with Microsoft Visual C++ 2019. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/icu-msvc-2019 docker/icu-msvc-2019/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | ICU_VERSION | Version of ICU to build | `77.1` | `77.1` | | 18 | | ICU_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | ICU_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | ICU_BUILD_TYPE | Linkage of C/C++ runtime | One of: `release`, `debug` | Undefined | When undefined then both `release` and `debug` (in the same order) are built. If both are built then `bin` subdirectory is populated with binaries of `release` only | 21 | | ICU_PATCH_FILE | Path to file in container with path applied to ICU before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of ICU. Embedded patches are located in `C:\app\patches` directory of image | 22 | | ICU_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `check` goal of Makefile executed before `install` goal | 23 | 24 | ### Paths and volumes 25 | 26 | | Path in Docker image | Meaning of path | Comments | 27 | |----------------------|-----------------|----------| 28 | | C:\target | Location of built ICU, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 29 | | C:\download | Location of downloaded ICU source archive | May be mapped to external directory for caching / speedup | 30 | | C:\build | Location where the building of ICU is performed | May be mapped to external directory for debug | 31 | 32 | ### Examples 33 | 34 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 35 | `C:\Users\Public\icu-msvc-2019\target` folder of Docker Host: 36 | 37 | ```bash 38 | docker run --rm \ 39 | -v C:/Users/Public/icu-msvc-2019/target:C:/target \ 40 | abrarov/icu-msvc-2019 41 | ``` 42 | 43 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\icu-msvc-2019\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -e ICU_ADDRESS_MODEL=64 \ 49 | -e ICU_LINKAGE=shared \ 50 | -v C:/Users/Public/icu-msvc-2019/target:C:/target \ 51 | abrarov/icu-msvc-2019 52 | ``` 53 | -------------------------------------------------------------------------------- /docker/icu-msvc-2022/README.md: -------------------------------------------------------------------------------- 1 | # Builder of ICU4C with Microsoft Visual C++ 2022 2 | 3 | Docker image for building [ICU4C](http://site.icu-project.org/) with Microsoft Visual C++ 2022. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/icu-msvc-2022 docker/icu-msvc-2022/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | ICU_VERSION | Version of ICU to build | `77.1` | `77.1` | | 18 | | ICU_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | ICU_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, `static` build uses static C/C++ runtime | 20 | | ICU_BUILD_TYPE | Linkage of C/C++ runtime | One of: `release`, `debug` | Undefined | When undefined then both `release` and `debug` (in the same order) are built. If both are built then `bin` subdirectory is populated with binaries of `release` only | 21 | | ICU_PATCH_FILE | Path to file in container with path applied to ICU before building | | Undefined | When undefined then patch is chosen among embedded patches based on version of ICU. Embedded patches are located in `C:\app\patches` directory of image | 22 | | ICU_TEST | Flag to run tests during build | Any value or empty string | Empty string | When is not empty string then tests are executed during build with `check` goal of Makefile executed before `install` goal | 23 | 24 | ### Paths and volumes 25 | 26 | | Path in Docker image | Meaning of path | Comments | 27 | |----------------------|-----------------|----------| 28 | | C:\target | Location of built ICU, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 29 | | C:\download | Location of downloaded ICU source archive | May be mapped to external directory for caching / speedup | 30 | | C:\build | Location where the building of ICU is performed | May be mapped to external directory for debug | 31 | 32 | ### Examples 33 | 34 | Download source archive, build all combinations (x86, x64, shared and static libraries) and put results of build into 35 | `C:\Users\Public\icu-msvc-2022\target` folder of Docker Host: 36 | 37 | ```bash 38 | docker run --rm \ 39 | -v C:/Users/Public/icu-msvc-2022/target:C:/target \ 40 | abrarov/icu-msvc-2022 41 | ``` 42 | 43 | Download source archive, build x64 shared libraries and put results of build into `C:\Users\Public\icu-msvc-2022\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -e ICU_ADDRESS_MODEL=64 \ 49 | -e ICU_LINKAGE=shared \ 50 | -v C:/Users/Public/icu-msvc-2022/target:C:/target \ 51 | abrarov/icu-msvc-2022 52 | ``` 53 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/README.md: -------------------------------------------------------------------------------- 1 | # Builder of Boost C++ Libraries with MinGW-w64 14 2 | 3 | Docker image for building [Boost C++ Libraries](http://www.boost.org/) with MinGW-w64 14. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/boost-mingw-14 docker/boost-mingw/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | BOOST_VERSION | Version of Boost to build | `1.80.0`, `1.83.0` | `1.83.0` | 18 | | BOOST_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | BOOST_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built | 20 | | BOOST_RUNTIME_LINKAGE | Linkage of C/C++ runtime | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, when `BOOST_LINKAGE` is `shared` then `static` value of `BOOST_RUNTIME_LINKAGE` is ignored | 21 | | B2_OPTIONS | Extra options for Boost.Jam | Any extra options separated with space and passed to Boost.Jam | `--without-python --without-mpi --without-graph_parallel` | | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built Boost libraries, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded Boost source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of Boost is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries, shared and static C/C++ runtime) 34 | and put results of build into `C:\Users\Public\Documents\boost-mingw-target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/Documents/boost-mingw-target:C:/target \ 39 | abrarov/boost-mingw-14 40 | ``` 41 | 42 | Use pre-downloaded source archive located at `C:\Users\Public\Documents\boost-mingw\download\boost_1_74_0.zip` file 43 | on Docker Host, build all combinations and put results of build into `C:\Users\Public\Documents\boost-mingw\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -v C:/Users/Public/Documents/boost-mingw/target:C:/target \ 49 | -v C:/Users/Public/Documents/boost-mingw/download/boost_1_74_0.zip:C:/download/boost_1_74_0.zip \ 50 | abrarov/boost-mingw-14 51 | ``` 52 | 53 | Download source archive, build all combinations for x64 platform (shared and static libraries, shared and static C/C++ runtime) 54 | and put results of build into `C:\Users\Public\Documents\boost-mingw\target` folder of Docker Host: 55 | 56 | ```bash 57 | docker run --rm \ 58 | -e BOOST_ADDRESS_MODEL=64 \ 59 | -v C:/Users/Public/Documents/boost-mingw/target:C:/target \ 60 | abrarov/boost-mingw-14 61 | ``` 62 | 63 | Download source archive, build static libraries with shared C/C++ runtime for x64 platform and put results of build into 64 | `C:\Users\Public\Documents\boost-mingw\target` folder of Docker Host: 65 | 66 | ```bash 67 | docker run --rm \ 68 | -e BOOST_ADDRESS_MODEL=64 \ 69 | -e BOOST_LINKAGE=static \ 70 | -e BOOST_RUNTIME_LINKAGE=shared \ 71 | -v C:/Users/Public/Documents/boost-mingw/target:C:/target \ 72 | abrarov/boost-mingw-14 73 | ``` 74 | -------------------------------------------------------------------------------- /docker/boost-mingw/README.md: -------------------------------------------------------------------------------- 1 | # Builder of Boost C++ Libraries with MinGW 2 | 3 | Docker image for building [Boost C++ Libraries](http://www.boost.org/) with MinGW. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/boost-mingw docker/boost-mingw/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | BOOST_VERSION | Version of Boost to build | One of: `1.70.0`, `1.71.0`, `1.72.0`, `1.73.0`, `1.74.0`, `1.75.0`, `1.76.0`, `1.77.0`, `1.78.0`, `1.79.0`, `1.80.0`, `1.82.0`, `1.83.0` | `1.83.0` | 18 | | BOOST_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | BOOST_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built | 20 | | BOOST_RUNTIME_LINKAGE | Linkage of C/C++ runtime | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, when `BOOST_LINKAGE` is `shared` then `static` value of `BOOST_RUNTIME_LINKAGE` is ignored | 21 | | B2_OPTIONS | Extra options for Boost.Jam | Any extra options separated with space and passed to Boost.Jam | `--without-python --without-mpi --without-graph_parallel` | | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built Boost libraries, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded Boost source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of Boost is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries, shared and static C/C++ runtime) 34 | and put results of build into `C:\Users\Public\Documents\boost-mingw-target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/Documents/boost-mingw-target:C:/target \ 39 | abrarov/boost-mingw 40 | ``` 41 | 42 | Use pre-downloaded source archive located at `C:\Users\Public\Documents\boost-mingw\download\boost_1_74_0.zip` file 43 | on Docker Host, build all combinations and put results of build into `C:\Users\Public\Documents\boost-mingw\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -v C:/Users/Public/Documents/boost-mingw/target:C:/target \ 49 | -v C:/Users/Public/Documents/boost-mingw/download/boost_1_74_0.zip:C:/download/boost_1_74_0.zip \ 50 | abrarov/boost-mingw 51 | ``` 52 | 53 | Download source archive, build all combinations for x64 platform (shared and static libraries, shared and static C/C++ runtime) 54 | and put results of build into `C:\Users\Public\Documents\boost-mingw\target` folder of Docker Host: 55 | 56 | ```bash 57 | docker run --rm \ 58 | -e BOOST_ADDRESS_MODEL=64 \ 59 | -v C:/Users/Public/Documents/boost-mingw/target:C:/target \ 60 | abrarov/boost-mingw 61 | ``` 62 | 63 | Download source archive, build static libraries with shared C/C++ runtime for x64 platform and put results of build into 64 | `C:\Users\Public\Documents\boost-mingw\target` folder of Docker Host: 65 | 66 | ```bash 67 | docker run --rm \ 68 | -e BOOST_ADDRESS_MODEL=64 \ 69 | -e BOOST_LINKAGE=static \ 70 | -e BOOST_RUNTIME_LINKAGE=shared \ 71 | -v C:/Users/Public/Documents/boost-mingw/target:C:/target \ 72 | abrarov/boost-mingw 73 | ``` 74 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/README.md: -------------------------------------------------------------------------------- 1 | # Builder of Boost C++ Libraries with MS Visual C++ 2022 2 | 3 | Docker image for building [Boost C++ Libraries](http://www.boost.org/) with Microsoft Visual C++ 2022. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/boost-msvc-2022 docker/boost-msvc-2022/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | BOOST_VERSION | Version of Boost to build | One of: `1.78.0`, `1.79.0`, `1.80.0`, `1.83.0` | `1.83.0` | | 18 | | BOOST_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | BOOST_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built | 20 | | BOOST_RUNTIME_LINKAGE | Linkage of C/C++ runtime | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, when `BOOST_LINKAGE` is `shared` then `static` value of `BOOST_RUNTIME_LINKAGE` is ignored | 21 | | B2_OPTIONS | Extra options for Boost.Jam | Any extra options separated with space and passed to Boost.Jam | `--without-python --without-mpi --without-graph_parallel` | | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built Boost libraries, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded Boost source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of Boost is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries, shared and static C/C++ runtime) 34 | and put results of build into `C:\Users\Public\Documents\boost-msvc-2022-target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/Documents/boost-msvc-2022-target:C:/target \ 39 | abrarov/boost-msvc-2022 40 | ``` 41 | 42 | Use pre-downloaded source archive located at `C:\Users\Public\Documents\boost-msvc-2022\download\boost_1_78_0.zip` file 43 | on Docker Host, build all combinations and put results of build into `C:\Users\Public\Documents\boost-msvc-2022\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -v C:/Users/Public/Documents/boost-msvc-2022/target:C:/target \ 49 | -v C:/Users/Public/Documents/boost-msvc-2022/download/boost_1_78_0.zip:C:/download/boost_1_78_0.zip \ 50 | abrarov/boost-msvc-2022 51 | ``` 52 | 53 | Download source archive, build all combinations for x64 platform (shared and static libraries, shared and static C/C++ runtime) 54 | and put results of build into `C:\Users\Public\Documents\boost-msvc-2022\target` folder of Docker Host: 55 | 56 | ```bash 57 | docker run --rm \ 58 | -e BOOST_ADDRESS_MODEL=64 \ 59 | -v C:/Users/Public/Documents/boost-msvc-2022/target:C:/target \ 60 | abrarov/boost-msvc-2022 61 | ``` 62 | 63 | Download source archive, build static libraries with shared C/C++ runtime for x64 platform and put results of build into 64 | `C:\Users\Public\Documents\boost-msvc-2022\target` folder of Docker Host: 65 | 66 | ```bash 67 | docker run --rm \ 68 | -e BOOST_ADDRESS_MODEL=64 \ 69 | -e BOOST_LINKAGE=static \ 70 | -e BOOST_RUNTIME_LINKAGE=shared \ 71 | -v C:/Users/Public/Documents/boost-msvc-2022/target:C:/target \ 72 | abrarov/boost-msvc-2022 73 | ``` 74 | -------------------------------------------------------------------------------- /docker/boost-msvc-2019/README.md: -------------------------------------------------------------------------------- 1 | # Builder of Boost C++ Libraries with MS Visual C++ 2019 2 | 3 | Docker image for building [Boost C++ Libraries](http://www.boost.org/) with Microsoft Visual C++ 2019. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/boost-msvc-2019 docker/boost-msvc-2019/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | BOOST_VERSION | Version of Boost to build | One of: `1.77.0`, `1.78.0`, `1.79.0`, `1.80.0`, `1.83.0` | `1.83.0` | | 18 | | BOOST_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | BOOST_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built | 20 | | BOOST_RUNTIME_LINKAGE | Linkage of C/C++ runtime | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, when `BOOST_LINKAGE` is `shared` then `static` value of `BOOST_RUNTIME_LINKAGE` is ignored | 21 | | B2_OPTIONS | Extra options for Boost.Jam | Any extra options separated with space and passed to Boost.Jam | `--without-python --without-mpi --without-graph_parallel` | | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built Boost libraries, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded Boost source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of Boost is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries, shared and static C/C++ runtime) 34 | and put results of build into `C:\Users\Public\Documents\boost-msvc-2019\target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/Documents/boost-msvc-2019/target:C:/target \ 39 | abrarov/boost-msvc-2019 40 | ``` 41 | 42 | Use pre-downloaded source archive located at `C:\Users\Public\Documents\boost-msvc-2019\download\boost_1_78_0.zip` file 43 | on Docker Host, build all combinations and put results of build into `C:\Users\Public\Documents\boost-msvc-2019\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -v C:/Users/Public/Documents/boost-msvc-2019/target:C:/target \ 49 | -v C:/Users/Public/Documents/boost-msvc-2019/download/boost_1_78_0.zip:C:/download/boost_1_78_0.zip \ 50 | abrarov/boost-msvc-2019 51 | ``` 52 | 53 | Download source archive, build all combinations for x64 platform (shared and static libraries, shared and static C/C++ runtime) 54 | and put results of build into `C:\Users\Public\Documents\boost-msvc-2019\target` folder of Docker Host: 55 | 56 | ```bash 57 | docker run --rm \ 58 | -e BOOST_ADDRESS_MODEL=64 \ 59 | -v C:/Users/Public/Documents/boost-msvc-2019/target:C:/target \ 60 | abrarov/boost-msvc-2019 61 | ``` 62 | 63 | Download source archive, build static libraries with shared C/C++ runtime for x64 platform and put results of build into 64 | `C:\Users\Public\Documents\boost-msvc-2019\target` folder of Docker Host: 65 | 66 | ```bash 67 | docker run --rm \ 68 | -e BOOST_ADDRESS_MODEL=64 \ 69 | -e BOOST_LINKAGE=static \ 70 | -e BOOST_RUNTIME_LINKAGE=shared \ 71 | -v C:/Users/Public/Documents/boost-msvc-2019/target:C:/target \ 72 | abrarov/boost-msvc-2019 73 | ``` 74 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/README.md: -------------------------------------------------------------------------------- 1 | # Builder of Boost C++ Libraries with MS Visual C++ 2017 2 | 3 | Docker image for building [Boost C++ Libraries](http://www.boost.org/) with Microsoft Visual C++ 2017. 4 | 5 | ## Building 6 | 7 | ```bash 8 | docker build -t abrarov/boost-msvc-2017 docker/boost-msvc-2017/src 9 | ``` 10 | 11 | ## Usage 12 | 13 | ### Environment variable 14 | 15 | | Name | Meaning of variable | Possible values | Default value | Comments | 16 | |------|---------------------|-----------------|---------------|----------| 17 | | BOOST_VERSION | Version of Boost to build | One of: `1.70.0`, `1.71.0`, `1.72.0`, `1.73.0`, `1.74.0`, `1.75.0`, `1.76.0`, `1.77.0`, `1.78.0`, `1.79.0`, `1.80.0`, `1.83.0` | `1.83.0` | | 18 | | BOOST_ADDRESS_MODEL | CPU architecture | One of: `32`, `64` | Undefined | When undefined then both `64` and `32` (in the same order) are built | 19 | | BOOST_LINKAGE | Linkage of built libraries | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built | 20 | | BOOST_RUNTIME_LINKAGE | Linkage of C/C++ runtime | One of: `shared`, `static` | Undefined | When undefined then both `shared` and `static` (in the same order) are built, when `BOOST_LINKAGE` is `shared` then `static` value of `BOOST_RUNTIME_LINKAGE` is ignored | 21 | | B2_OPTIONS | Extra options for Boost.Jam | Any extra options separated with space and passed to Boost.Jam | `--without-python --without-mpi --without-graph_parallel` | | 22 | 23 | ### Paths and volumes 24 | 25 | | Path in Docker image | Meaning of path | Comments | 26 | |----------------------|-----------------|----------| 27 | | C:\target | Location of built Boost libraries, i.e. output directory | Usually is mapped to external directory to retrieve results of build | 28 | | C:\download | Location of downloaded Boost source archive | May be mapped to external directory for caching / speedup | 29 | | C:\build | Location where the building of Boost is performed | May be mapped to external directory for debug | 30 | 31 | ### Examples 32 | 33 | Download source archive, build all combinations (x86, x64, shared and static libraries, shared and static C/C++ runtime) 34 | and put results of build into `C:\Users\Public\Documents\boost-msvc-2017-target` folder of Docker Host: 35 | 36 | ```bash 37 | docker run --rm \ 38 | -v C:/Users/Public/Documents/boost-msvc-2017-target:C:/target \ 39 | abrarov/boost-msvc-2017 40 | ``` 41 | 42 | Use pre-downloaded source archive located at `C:\Users\Public\Documents\boost-msvc-2017\download\boost_1_74_0.zip` file 43 | on Docker Host, build all combinations and put results of build into `C:\Users\Public\Documents\boost-msvc-2017\target` 44 | folder of Docker Host: 45 | 46 | ```bash 47 | docker run --rm \ 48 | -v C:/Users/Public/Documents/boost-msvc-2017/target:C:/target \ 49 | -v C:/Users/Public/Documents/boost-msvc-2017/download/boost_1_74_0.zip:C:/download/boost_1_74_0.zip \ 50 | abrarov/boost-msvc-2017 51 | ``` 52 | 53 | Download source archive, build all combinations for x64 platform (shared and static libraries, shared and static C/C++ runtime) 54 | and put results of build into `C:\Users\Public\Documents\boost-msvc-2017\target` folder of Docker Host: 55 | 56 | ```bash 57 | docker run --rm \ 58 | -e BOOST_ADDRESS_MODEL=64 \ 59 | -v C:/Users/Public/Documents/boost-msvc-2017/target:C:/target \ 60 | abrarov/boost-msvc-2017 61 | ``` 62 | 63 | Download source archive, build static libraries with shared C/C++ runtime for x64 platform and put results of build into 64 | `C:\Users\Public\Documents\boost-msvc-2017\target` folder of Docker Host: 65 | 66 | ```bash 67 | docker run --rm \ 68 | -e BOOST_ADDRESS_MODEL=64 \ 69 | -e BOOST_LINKAGE=static \ 70 | -e BOOST_RUNTIME_LINKAGE=shared \ 71 | -v C:/Users/Public/Documents/boost-msvc-2017/target:C:/target \ 72 | abrarov/boost-msvc-2017 73 | ``` 74 | -------------------------------------------------------------------------------- /docker/windows-dev/scripts/test.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | $project_dir = (Get-Item "${PSScriptRoot}").Parent.FullName 11 | $image_repository = "${env:DOCKER_USER}/$(Split-Path "${project_dir}" -Leaf)" 12 | 13 | Write-Host "Running Chocolatey package manager in container created from ${image_repository}:latest image" 14 | docker run --rm "${image_repository}:latest" choco --version 15 | if (${LastExitCode} -ne 0) { 16 | throw "Failed to get version of Chocolatey package manager" 17 | } 18 | 19 | Write-Host "Running 7-Zip in container created from ${image_repository}:latest image" 20 | docker run --rm "${image_repository}:latest" "C:\Program Files\7-Zip\7z.exe" i 21 | if (${LastExitCode} -ne 0) { 22 | throw "Failed to get help from 7-Zip command line utility" 23 | } 24 | 25 | Write-Host "Running Git in container created from ${image_repository}:latest image" 26 | docker run --rm "${image_repository}:latest" git --version 27 | if (${LastExitCode} -ne 0) { 28 | throw "Failed to get version of Git" 29 | } 30 | 31 | Write-Host "Running CMake in container created from ${image_repository}:latest image" 32 | docker run --rm "${image_repository}:latest" "C:\cmake\bin\cmake.exe" --version 33 | if (${LastExitCode} -ne 0) { 34 | throw "Failed to get version of CMake" 35 | } 36 | 37 | Write-Host "Running MSYS2 GNU Make in container created from ${image_repository}:latest image" 38 | docker run --rm "${image_repository}:latest" "C:\msys64\usr\bin\make" --version 39 | if (${LastExitCode} -ne 0) { 40 | throw "Failed to get version of MSYS2 GNU Make" 41 | } 42 | 43 | Write-Host "Running MSYS2 GNU tar in container created from ${image_repository}:latest image" 44 | docker run --rm "${image_repository}:latest" "C:\msys64\usr\bin\tar" --version 45 | if (${LastExitCode} -ne 0) { 46 | throw "Failed to get version of MSYS2 GNU tar" 47 | } 48 | 49 | Write-Host "Running MSYS2 GNU patch in container created from ${image_repository}:latest image" 50 | docker run --rm "${image_repository}:latest" "C:\msys64\usr\bin\patch" --version 51 | if (${LastExitCode} -ne 0) { 52 | throw "Failed to get version of MSYS2 GNU patch" 53 | } 54 | 55 | Write-Host "Running MSYS2 GNU make in container created from ${image_repository}:latest image" 56 | docker run --rm "${image_repository}:latest" "C:\msys64\usr\bin\make" --version 57 | if (${LastExitCode} -ne 0) { 58 | throw "Failed to get version of MSYS2 GNU make" 59 | } 60 | 61 | Write-Host "Running MSYS2 bison in container created from ${image_repository}:latest image" 62 | docker run --rm "${image_repository}:latest" "C:\msys64\usr\bin\bison" --version 63 | if (${LastExitCode} -ne 0) { 64 | throw "Failed to get version of MSYS2 bison" 65 | } 66 | 67 | Write-Host "Running MSYS2 diff in container created from ${image_repository}:latest image" 68 | docker run --rm "${image_repository}:latest" "C:\msys64\usr\bin\diff" --version 69 | if (${LastExitCode} -ne 0) { 70 | throw "Failed to get version of MSYS2 diff" 71 | } 72 | 73 | Write-Host "Running Strawberry Perl in container created from ${image_repository}:latest image" 74 | docker run --rm "${image_repository}:latest" "C:\Perl\perl\bin\perl.exe" --version 75 | if (${LastExitCode} -ne 0) { 76 | throw "Failed to get version of Strawberry Perl" 77 | } 78 | 79 | Write-Host "Running Python 2 in container created from ${image_repository}:latest image" 80 | docker run --rm "${image_repository}:latest" "C:\Python2\python.exe" --version 81 | if (${LastExitCode} -ne 0) { 82 | throw "Failed to get version of Python 2" 83 | } 84 | 85 | Write-Host "Running Python 3 in container created from ${image_repository}:latest image" 86 | docker run --rm "${image_repository}:latest" "C:\Python3\python.exe" --version 87 | if (${LastExitCode} -ne 0) { 88 | throw "Failed to get version of Python 3" 89 | } 90 | 91 | Write-Host "Running Ninja in container created from ${image_repository}:latest image" 92 | docker run --rm "${image_repository}:latest" "C:\ninja\ninja.exe" --version 93 | if (${LastExitCode} -ne 0) { 94 | throw "Failed to get version of Ninja" 95 | } 96 | 97 | Write-Host "Running NASM win64 in container created from ${image_repository}:latest image" 98 | docker run --rm "${image_repository}:latest" "C:\nasm64\nasm.exe" -v 99 | if (${LastExitCode} -ne 0) { 100 | throw "Failed to get version of NASM win64" 101 | } 102 | 103 | Write-Host "Running NASM win32 in container created from ${image_repository}:latest image" 104 | docker run --rm "${image_repository}:latest" "C:\nasm32\nasm.exe" -v 105 | if (${LastExitCode} -ne 0) { 106 | throw "Failed to get version of NASM win32" 107 | } 108 | -------------------------------------------------------------------------------- /docker/boost-mingw/src/app/start.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | $boost_version_underscore = "${env:BOOST_VERSION}" -replace "\.", '_' 14 | $env:BOOST_ROOT_DIR = "${env:BUILD_DIR}\boost_${boost_version_underscore}" 15 | Write-Host "Assuming root folder for sources is: ${env:BOOST_ROOT_DIR}" 16 | 17 | if (Test-Path -Path "${env:BOOST_ROOT_DIR}") { 18 | Write-Host "Found existing folder ${env:BOOST_ROOT_DIR}, assuming that sources are in place and skipping downloading and unpacking of sources" 19 | } else { 20 | # Boost sources were not mounted or were not deployed yet 21 | $boost_archive_file = "${env:DOWNLOAD_DIR}\boost_${boost_version_underscore}.zip" 22 | if (Test-Path -Path "${boost_archive_file}") { 23 | Write-Host "Found existing file ${boost_archive_file}, assuming that sources are downloaded and skipping downloading of sources" 24 | } else { 25 | # Download Boost C++ Libraries 26 | $boost_download_url = "${env:BOOST_RELEASE_URL}/${env:BOOST_VERSION}/source/boost_${boost_version_underscore}.zip" 27 | Write-Host "Downloading Boost C++ Libraries (source code archive) from: ${boost_download_url} into: ${boost_archive_file}" 28 | (New-Object System.Net.WebClient).DownloadFile("${boost_download_url}", "${boost_archive_file}") 29 | } 30 | # Unpack Boost C++ Libraries 31 | Write-Host "Extracting source code archive to: ${env:BUILD_DIR}" 32 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${boost_archive_file}" -o"${env:BUILD_DIR}" -aoa -y -bd | out-null 33 | if (${LastExitCode} -ne 0) { 34 | throw "Failed to extract Boost from ${boost_archive_file} to ${env:BUILD_DIR}" 35 | } 36 | Write-Host "Extracted source code archive" 37 | } 38 | 39 | $env:B2_BIN = "${env:BOOST_ROOT_DIR}\b2.exe" 40 | $env:B2_TOOLSET = "gcc" 41 | 42 | # Patch Boost 43 | if (-not (Test-Path env:BOOST_PATCH_FILE)) { 44 | $env:BOOST_PATCH_FILE = "${PSScriptRoot}\patches\boost-${env:BOOST_VERSION}.patch" 45 | } 46 | if (-not (Test-Path -Path "${env:BOOST_PATCH_FILE}")) { 47 | Write-Warning "Patch for chosen version of Boost (${env:BOOST_VERSION}) was not found at ${env:BOOST_PATCH_FILE}" 48 | } else { 49 | Write-Host "Patching Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 50 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 51 | $path_backup = "${env:PATH}" 52 | $env:PATH = "${env:MSYS_HOME}\usr\bin;${env:PATH}" 53 | & patch.exe -uNf -p0 -i "${env:BOOST_PATCH_FILE}" 54 | $patch_exit_code = ${LastExitCode} 55 | $env:PATH = "${path_backup}" 56 | if (${patch_exit_code} -ne 0) { 57 | throw "Failed to patch Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 58 | } 59 | } 60 | 61 | # Build Boost C++ Libraries 62 | $address_models = @("64", "32") 63 | $boost_linkages = @("shared", "static") 64 | $runtime_linkages = @("shared", "static") 65 | 66 | # Limit build configurations if user asked for that 67 | if (Test-Path env:BOOST_ADDRESS_MODEL) { 68 | $address_models = @("${env:BOOST_ADDRESS_MODEL}") 69 | } 70 | if (Test-Path env:BOOST_LINKAGE) { 71 | $boost_linkages = @("${env:BOOST_LINKAGE}") 72 | } 73 | if (Test-Path env:BOOST_RUNTIME_LINKAGE) { 74 | $runtime_linkages = @("${env:BOOST_RUNTIME_LINKAGE}") 75 | } 76 | 77 | if (!(Test-Path env:B2_OPTIONS)) { 78 | $env:B2_OPTIONS = "" 79 | } 80 | 81 | foreach ($address_model in ${address_models}) { 82 | $env:BOOST_ADDRESS_MODEL = ${address_model} 83 | 84 | # Determine parameters dependent on address model 85 | switch (${env:BOOST_ADDRESS_MODEL}) { 86 | "32" { 87 | $env:MINGW_HOME = "${env:MINGW32_HOME}" 88 | $target_dir_suffix = "x86" 89 | } 90 | "64" { 91 | $env:MINGW_HOME = "${env:MINGW64_HOME}" 92 | $target_dir_suffix = "x64" 93 | } 94 | default { 95 | throw "Unsupported address model: ${env:BOOST_ADDRESS_MODEL}" 96 | } 97 | } 98 | 99 | $mingw_version_suffix = "${env:MINGW_VERSION}" -replace "([0-9]+)\.([0-9]+)\.([0-9]+)", '$1$2' 100 | $env:BOOST_INSTALL_DIR = "${env:TARGET_DIR}\boost-${env:BOOST_VERSION}-${target_dir_suffix}-mingw${mingw_version_suffix}" 101 | 102 | $boost_build_bin_dir = "${env:BOOST_ROOT_DIR}\bin.v2" 103 | if (Test-Path -Path "${boost_build_bin_dir}") { 104 | Write-Host "Removing Boost bin directory: ${boost_build_bin_dir}" 105 | Remove-Item -Path "${boost_build_bin_dir}" -Recurse -Force 106 | } 107 | 108 | # Build Boost.Build 109 | $env:BOOST_BOOTSTRAP = "${env:BOOST_ROOT_DIR}\bootstrap.bat" 110 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 111 | Write-Host "Building Boost.Build engine" 112 | & "${PSScriptRoot}\bootstrap.bat" 113 | if (${LastExitCode} -ne 0) { 114 | throw "Failed to build Boost.Build" 115 | } 116 | 117 | foreach ($boost_linkage in ${boost_linkages}) { 118 | $env:BOOST_LINKAGE = ${boost_linkage} 119 | foreach ($runtime_linkage in ${runtime_linkages}) { 120 | if (${runtime_linkage} -eq "static" -and -not (${boost_linkage} -eq "static")) { 121 | # Nothing to do with this type of configuration - just skip it 122 | continue 123 | } 124 | $env:BOOST_RUNTIME_LINKAGE = ${runtime_linkage} 125 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 126 | Write-Host "Building Boost C++ Libraries with these parameters:" 127 | Write-Host "MINGW_HOME : ${env:MINGW_HOME}" 128 | Write-Host "B2_BIN : ${env:B2_BIN}" 129 | Write-Host "B2_TOOLSET : ${env:B2_TOOLSET}" 130 | Write-Host "BOOST_INSTALL_DIR : ${env:BOOST_INSTALL_DIR}" 131 | Write-Host "BOOST_ADDRESS_MODEL : ${env:BOOST_ADDRESS_MODEL}" 132 | Write-Host "BOOST_LINKAGE : ${env:BOOST_LINKAGE}" 133 | Write-Host "BOOST_RUNTIME_LINKAGE: ${env:BOOST_RUNTIME_LINKAGE}" 134 | Write-Host "B2_OPTIONS : ${env:B2_OPTIONS}" 135 | & "${PSScriptRoot}\build.bat" 136 | if (${LastExitCode} -ne 0) { 137 | throw "Failed to build Boost with BOOST_ADDRESS_MODEL = ${env:BOOST_ADDRESS_MODEL}, BOOST_LINKAGE = ${env:BOOST_LINKAGE}, BOOST_RUNTIME_LINKAGE = ${env:BOOST_RUNTIME_LINKAGE}" 138 | } 139 | } 140 | } 141 | } 142 | 143 | Write-Host "Build completed successfully" 144 | -------------------------------------------------------------------------------- /docker/boost-mingw-14/src/app/start.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | $boost_version_underscore = "${env:BOOST_VERSION}" -replace "\.", '_' 14 | $env:BOOST_ROOT_DIR = "${env:BUILD_DIR}\boost_${boost_version_underscore}" 15 | Write-Host "Assuming root folder for sources is: ${env:BOOST_ROOT_DIR}" 16 | 17 | if (Test-Path -Path "${env:BOOST_ROOT_DIR}") { 18 | Write-Host "Found existing folder ${env:BOOST_ROOT_DIR}, assuming that sources are in place and skipping downloading and unpacking of sources" 19 | } else { 20 | # Boost sources were not mounted or were not deployed yet 21 | $boost_archive_file = "${env:DOWNLOAD_DIR}\boost_${boost_version_underscore}.zip" 22 | if (Test-Path -Path "${boost_archive_file}") { 23 | Write-Host "Found existing file ${boost_archive_file}, assuming that sources are downloaded and skipping downloading of sources" 24 | } else { 25 | # Download Boost C++ Libraries 26 | $boost_download_url = "${env:BOOST_RELEASE_URL}/${env:BOOST_VERSION}/source/boost_${boost_version_underscore}.zip" 27 | Write-Host "Downloading Boost C++ Libraries (source code archive) from: ${boost_download_url} into: ${boost_archive_file}" 28 | (New-Object System.Net.WebClient).DownloadFile("${boost_download_url}", "${boost_archive_file}") 29 | } 30 | # Unpack Boost C++ Libraries 31 | Write-Host "Extracting source code archive to: ${env:BUILD_DIR}" 32 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${boost_archive_file}" -o"${env:BUILD_DIR}" -aoa -y -bd | out-null 33 | if (${LastExitCode} -ne 0) { 34 | throw "Failed to extract Boost from ${boost_archive_file} to ${env:BUILD_DIR}" 35 | } 36 | Write-Host "Extracted source code archive" 37 | } 38 | 39 | $env:B2_BIN = "${env:BOOST_ROOT_DIR}\b2.exe" 40 | $env:B2_TOOLSET = "gcc" 41 | 42 | # Patch Boost 43 | if (-not (Test-Path env:BOOST_PATCH_FILE)) { 44 | $env:BOOST_PATCH_FILE = "${PSScriptRoot}\patches\boost-${env:BOOST_VERSION}.patch" 45 | } 46 | if (-not (Test-Path -Path "${env:BOOST_PATCH_FILE}")) { 47 | Write-Warning "Patch for chosen version of Boost (${env:BOOST_VERSION}) was not found at ${env:BOOST_PATCH_FILE}" 48 | } else { 49 | Write-Host "Patching Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 50 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 51 | $path_backup = "${env:PATH}" 52 | $env:PATH = "${env:MSYS_HOME}\usr\bin;${env:PATH}" 53 | & patch.exe -uNf -p0 -i "${env:BOOST_PATCH_FILE}" 54 | $patch_exit_code = ${LastExitCode} 55 | $env:PATH = "${path_backup}" 56 | if (${patch_exit_code} -ne 0) { 57 | throw "Failed to patch Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 58 | } 59 | } 60 | 61 | # Build Boost C++ Libraries 62 | $address_models = @("64", "32") 63 | $boost_linkages = @("shared", "static") 64 | $runtime_linkages = @("shared", "static") 65 | 66 | # Limit build configurations if user asked for that 67 | if (Test-Path env:BOOST_ADDRESS_MODEL) { 68 | $address_models = @("${env:BOOST_ADDRESS_MODEL}") 69 | } 70 | if (Test-Path env:BOOST_LINKAGE) { 71 | $boost_linkages = @("${env:BOOST_LINKAGE}") 72 | } 73 | if (Test-Path env:BOOST_RUNTIME_LINKAGE) { 74 | $runtime_linkages = @("${env:BOOST_RUNTIME_LINKAGE}") 75 | } 76 | 77 | if (!(Test-Path env:B2_OPTIONS)) { 78 | $env:B2_OPTIONS = "" 79 | } 80 | 81 | foreach ($address_model in ${address_models}) { 82 | $env:BOOST_ADDRESS_MODEL = ${address_model} 83 | 84 | # Determine parameters dependent on address model 85 | switch (${env:BOOST_ADDRESS_MODEL}) { 86 | "32" { 87 | $env:MINGW_HOME = "${env:MINGW32_HOME}" 88 | $target_dir_suffix = "x86" 89 | } 90 | "64" { 91 | $env:MINGW_HOME = "${env:MINGW64_HOME}" 92 | $target_dir_suffix = "x64" 93 | } 94 | default { 95 | throw "Unsupported address model: ${env:BOOST_ADDRESS_MODEL}" 96 | } 97 | } 98 | 99 | $mingw_version_suffix = "${env:MINGW_VERSION}" -replace "([0-9]+)\.([0-9]+)\.([0-9]+)", '$1$2' 100 | $env:BOOST_INSTALL_DIR = "${env:TARGET_DIR}\boost-${env:BOOST_VERSION}-${target_dir_suffix}-mingw${mingw_version_suffix}" 101 | 102 | $boost_build_bin_dir = "${env:BOOST_ROOT_DIR}\bin.v2" 103 | if (Test-Path -Path "${boost_build_bin_dir}") { 104 | Write-Host "Removing Boost bin directory: ${boost_build_bin_dir}" 105 | Remove-Item -Path "${boost_build_bin_dir}" -Recurse -Force 106 | } 107 | 108 | # Build Boost.Build 109 | $env:BOOST_BOOTSTRAP = "${env:BOOST_ROOT_DIR}\bootstrap.bat" 110 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 111 | Write-Host "Building Boost.Build engine" 112 | & "${PSScriptRoot}\bootstrap.bat" 113 | if (${LastExitCode} -ne 0) { 114 | throw "Failed to build Boost.Build" 115 | } 116 | 117 | foreach ($boost_linkage in ${boost_linkages}) { 118 | $env:BOOST_LINKAGE = ${boost_linkage} 119 | foreach ($runtime_linkage in ${runtime_linkages}) { 120 | if (${runtime_linkage} -eq "static" -and -not (${boost_linkage} -eq "static")) { 121 | # Nothing to do with this type of configuration - just skip it 122 | continue 123 | } 124 | $env:BOOST_RUNTIME_LINKAGE = ${runtime_linkage} 125 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 126 | Write-Host "Building Boost C++ Libraries with these parameters:" 127 | Write-Host "MINGW_HOME : ${env:MINGW_HOME}" 128 | Write-Host "B2_BIN : ${env:B2_BIN}" 129 | Write-Host "B2_TOOLSET : ${env:B2_TOOLSET}" 130 | Write-Host "BOOST_INSTALL_DIR : ${env:BOOST_INSTALL_DIR}" 131 | Write-Host "BOOST_ADDRESS_MODEL : ${env:BOOST_ADDRESS_MODEL}" 132 | Write-Host "BOOST_LINKAGE : ${env:BOOST_LINKAGE}" 133 | Write-Host "BOOST_RUNTIME_LINKAGE: ${env:BOOST_RUNTIME_LINKAGE}" 134 | Write-Host "B2_OPTIONS : ${env:B2_OPTIONS}" 135 | & "${PSScriptRoot}\build.bat" 136 | if (${LastExitCode} -ne 0) { 137 | throw "Failed to build Boost with BOOST_ADDRESS_MODEL = ${env:BOOST_ADDRESS_MODEL}, BOOST_LINKAGE = ${env:BOOST_LINKAGE}, BOOST_RUNTIME_LINKAGE = ${env:BOOST_RUNTIME_LINKAGE}" 138 | } 139 | } 140 | } 141 | } 142 | 143 | Write-Host "Build completed successfully" 144 | -------------------------------------------------------------------------------- /docker/boost-msvc-2022/src/app/start.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2022 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Find location of Visual Studio 14 | $env:MSVS_INSTALL_DIR = &vswhere --% -latest -products Microsoft.VisualStudio.Product.BuildTools -version [17.0,18.0) -requires Microsoft.VisualStudio.Workload.VCTools -property installationPath 15 | $env:MSVC_AUXILARY_DIR = "${env:MSVS_INSTALL_DIR}\VC\Auxiliary" 16 | $env:MSVC_BUILD_DIR = "${env:MSVC_AUXILARY_DIR}\Build" 17 | 18 | $boost_version_underscore = "${env:BOOST_VERSION}" -replace "\.", '_' 19 | $env:BOOST_ROOT_DIR = "${env:BUILD_DIR}\boost_${boost_version_underscore}" 20 | Write-Host "Assuming root folder for sources is: ${env:BOOST_ROOT_DIR}" 21 | 22 | if (Test-Path -Path "${env:BOOST_ROOT_DIR}") { 23 | Write-Host "Found existing folder ${env:BOOST_ROOT_DIR}, assuming that sources are in place and skipping downloading and unpacking of sources" 24 | } else { 25 | # Boost sources were not mounted or were not deployed yet 26 | $boost_archive_file = "${env:DOWNLOAD_DIR}\boost_${boost_version_underscore}.zip" 27 | if (Test-Path -Path "${boost_archive_file}") { 28 | Write-Host "Found existing file ${boost_archive_file}, assuming that sources are downloaded and skipping downloading of sources" 29 | } else { 30 | # Download Boost C++ Libraries 31 | $boost_download_url = "${env:BOOST_RELEASE_URL}/${env:BOOST_VERSION}/source/boost_${boost_version_underscore}.zip" 32 | Write-Host "Downloading Boost C++ Libraries (source code archive) from: ${boost_download_url} into: ${boost_archive_file}" 33 | (New-Object System.Net.WebClient).DownloadFile("${boost_download_url}", "${boost_archive_file}") 34 | } 35 | # Unpack Boost C++ Libraries 36 | Write-Host "Extracting source code archive to: ${env:BUILD_DIR}" 37 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${boost_archive_file}" -o"${env:BUILD_DIR}" -aoa -y -bd | out-null 38 | if (${LastExitCode} -ne 0) { 39 | throw "Failed to extract Boost from ${boost_archive_file} to ${env:BUILD_DIR}" 40 | } 41 | Write-Host "Extracted source code archive" 42 | } 43 | 44 | $env:B2_BIN = "${env:BOOST_ROOT_DIR}\b2.exe" 45 | $env:B2_TOOLSET = "msvc-14.3" 46 | 47 | # Patch Boost 48 | if (-not (Test-Path env:BOOST_PATCH_FILE)) { 49 | $env:BOOST_PATCH_FILE = "${PSScriptRoot}\patches\boost-${env:BOOST_VERSION}.patch" 50 | } 51 | if (-not (Test-Path -Path "${env:BOOST_PATCH_FILE}")) { 52 | Write-Warning "Patch for chosen version of Boost (${env:BOOST_VERSION}) was not found at ${env:BOOST_PATCH_FILE}" 53 | } else { 54 | Write-Host "Patching Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 55 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 56 | $path_backup = "${env:PATH}" 57 | $env:PATH = "${env:MSYS_HOME}\usr\bin;${env:PATH}" 58 | & patch.exe -uNf -p0 -i "${env:BOOST_PATCH_FILE}" 59 | $patch_exit_code = ${LastExitCode} 60 | $env:PATH = "${path_backup}" 61 | if (${patch_exit_code} -ne 0) { 62 | throw "Failed to patch Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 63 | } 64 | } 65 | 66 | # Build Boost.Build 67 | $env:MSVC_CMD_BOOTSTRAP = "vcvars64.bat" 68 | $env:BOOST_BOOTSTRAP = "${env:BOOST_ROOT_DIR}\bootstrap.bat" 69 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 70 | Write-Host "Building Boost.Build engine" 71 | & "${PSScriptRoot}\bootstrap.bat" 72 | if (${LastExitCode} -ne 0) { 73 | throw "Failed to build Boost.Build" 74 | } 75 | 76 | # Build Boost C++ Libraries 77 | $address_models = @("64", "32") 78 | $boost_linkages = @("shared", "static") 79 | $runtime_linkages = @("shared", "static") 80 | 81 | # Limit build configurations if user asked for that 82 | if (Test-Path env:BOOST_ADDRESS_MODEL) { 83 | $address_models = @("${env:BOOST_ADDRESS_MODEL}") 84 | } 85 | if (Test-Path env:BOOST_LINKAGE) { 86 | $boost_linkages = @("${env:BOOST_LINKAGE}") 87 | } 88 | if (Test-Path env:BOOST_RUNTIME_LINKAGE) { 89 | $runtime_linkages = @("${env:BOOST_RUNTIME_LINKAGE}") 90 | } 91 | 92 | if (!(Test-Path env:B2_OPTIONS)) { 93 | $env:B2_OPTIONS = "" 94 | } 95 | 96 | foreach ($address_model in ${address_models}) { 97 | $env:BOOST_ADDRESS_MODEL = ${address_model} 98 | 99 | # Determine parameters dependent on address model 100 | switch (${env:BOOST_ADDRESS_MODEL}) { 101 | "32" { 102 | $env:MSVC_CMD_BOOTSTRAP = "vcvars32.bat" 103 | $target_dir_suffix = "x86" 104 | } 105 | "64" { 106 | $env:MSVC_CMD_BOOTSTRAP = "vcvars64.bat" 107 | $target_dir_suffix = "x64" 108 | } 109 | default { 110 | throw "Unsupported address model: ${env:BOOST_ADDRESS_MODEL}" 111 | } 112 | } 113 | 114 | $env:BOOST_INSTALL_DIR = "${env:TARGET_DIR}\boost-${env:BOOST_VERSION}-${target_dir_suffix}-vs2022" 115 | foreach ($boost_linkage in ${boost_linkages}) { 116 | $env:BOOST_LINKAGE = ${boost_linkage} 117 | foreach ($runtime_linkage in ${runtime_linkages}) { 118 | if (${runtime_linkage} -eq "static" -and -not (${boost_linkage} -eq "static")) { 119 | # Nothing to do with this type of configuration - just skip it 120 | continue 121 | } 122 | $env:BOOST_RUNTIME_LINKAGE = ${runtime_linkage} 123 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 124 | Write-Host "Building Boost C++ Libraries with these parameters:" 125 | Write-Host "MSVS_INSTALL_DIR : ${env:MSVS_INSTALL_DIR}" 126 | Write-Host "MSVC_BUILD_DIR : ${env:MSVC_BUILD_DIR}" 127 | Write-Host "MSVC_CMD_BOOTSTRAP : ${env:MSVC_CMD_BOOTSTRAP}" 128 | Write-Host "B2_BIN : ${env:B2_BIN}" 129 | Write-Host "B2_TOOLSET : ${env:B2_TOOLSET}" 130 | Write-Host "BOOST_INSTALL_DIR : ${env:BOOST_INSTALL_DIR}" 131 | Write-Host "BOOST_ADDRESS_MODEL : ${env:BOOST_ADDRESS_MODEL}" 132 | Write-Host "BOOST_LINKAGE : ${env:BOOST_LINKAGE}" 133 | Write-Host "BOOST_RUNTIME_LINKAGE: ${env:BOOST_RUNTIME_LINKAGE}" 134 | Write-Host "B2_OPTIONS : ${env:B2_OPTIONS}" 135 | & "${PSScriptRoot}\build.bat" 136 | if (${LastExitCode} -ne 0) { 137 | throw "Failed to build Boost with BOOST_ADDRESS_MODEL = ${env:BOOST_ADDRESS_MODEL}, BOOST_LINKAGE = ${env:BOOST_LINKAGE}, BOOST_RUNTIME_LINKAGE = ${env:BOOST_RUNTIME_LINKAGE}" 138 | } 139 | } 140 | } 141 | } 142 | 143 | Write-Host "Build completed successfully" 144 | -------------------------------------------------------------------------------- /docker/boost-msvc-2017/src/app/start.ps1: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2017 Marat Abrarov (abrarov@gmail.com) 3 | # 4 | # Distributed under the MIT License (see accompanying LICENSE) 5 | # 6 | 7 | # Stop immediately if any error happens 8 | $ErrorActionPreference = "Stop" 9 | 10 | # Enable all versions of TLS 11 | [System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3") 12 | 13 | # Find location of Visual Studio 14 | $env:MSVS_INSTALL_DIR = &vswhere --% -latest -products Microsoft.VisualStudio.Product.Community -version [15.0,16.0) -requires Microsoft.VisualStudio.Workload.NativeDesktop -property installationPath 15 | $env:MSVC_AUXILARY_DIR = "${env:MSVS_INSTALL_DIR}\VC\Auxiliary" 16 | $env:MSVC_BUILD_DIR = "${env:MSVC_AUXILARY_DIR}\Build" 17 | 18 | $boost_version_underscore = "${env:BOOST_VERSION}" -replace "\.", '_' 19 | $env:BOOST_ROOT_DIR = "${env:BUILD_DIR}\boost_${boost_version_underscore}" 20 | Write-Host "Assuming root folder for sources is: ${env:BOOST_ROOT_DIR}" 21 | 22 | if (Test-Path -Path "${env:BOOST_ROOT_DIR}") { 23 | Write-Host "Found existing folder ${env:BOOST_ROOT_DIR}, assuming that sources are in place and skipping downloading and unpacking of sources" 24 | } else { 25 | # Boost sources were not mounted or were not deployed yet 26 | $boost_archive_file = "${env:DOWNLOAD_DIR}\boost_${boost_version_underscore}.zip" 27 | if (Test-Path -Path "${boost_archive_file}") { 28 | Write-Host "Found existing file ${boost_archive_file}, assuming that sources are downloaded and skipping downloading of sources" 29 | } else { 30 | # Download Boost C++ Libraries 31 | $boost_download_url = "${env:BOOST_RELEASE_URL}/${env:BOOST_VERSION}/source/boost_${boost_version_underscore}.zip" 32 | Write-Host "Downloading Boost C++ Libraries (source code archive) from: ${boost_download_url} into: ${boost_archive_file}" 33 | (New-Object System.Net.WebClient).DownloadFile("${boost_download_url}", "${boost_archive_file}") 34 | } 35 | # Unpack Boost C++ Libraries 36 | Write-Host "Extracting source code archive to: ${env:BUILD_DIR}" 37 | & "${env:SEVEN_ZIP_HOME}\7z.exe" x "${boost_archive_file}" -o"${env:BUILD_DIR}" -aoa -y -bd | out-null 38 | if (${LastExitCode} -ne 0) { 39 | throw "Failed to extract Boost from ${boost_archive_file} to ${env:BUILD_DIR}" 40 | } 41 | Write-Host "Extracted source code archive" 42 | } 43 | 44 | $env:B2_BIN = "${env:BOOST_ROOT_DIR}\b2.exe" 45 | $env:B2_TOOLSET = "msvc-14.1" 46 | 47 | # Patch Boost 48 | if (-not (Test-Path env:BOOST_PATCH_FILE)) { 49 | $env:BOOST_PATCH_FILE = "${PSScriptRoot}\patches\boost-${env:BOOST_VERSION}.patch" 50 | } 51 | if (-not (Test-Path -Path "${env:BOOST_PATCH_FILE}")) { 52 | Write-Warning "Patch for chosen version of Boost (${env:BOOST_VERSION}) was not found at ${env:BOOST_PATCH_FILE}" 53 | } else { 54 | Write-Host "Patching Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 55 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 56 | $path_backup = "${env:PATH}" 57 | $env:PATH = "${env:MSYS_HOME}\usr\bin;${env:PATH}" 58 | & patch.exe -uNf -p0 -i "${env:BOOST_PATCH_FILE}" 59 | $patch_exit_code = ${LastExitCode} 60 | $env:PATH = "${path_backup}" 61 | if (${patch_exit_code} -ne 0) { 62 | throw "Failed to patch Boost C++ Libraries located at ${env:BOOST_ROOT_DIR} with ${env:BOOST_PATCH_FILE}" 63 | } 64 | } 65 | 66 | # Build Boost.Build 67 | $env:MSVC_CMD_BOOTSTRAP = "vcvars64.bat" 68 | $env:BOOST_BOOTSTRAP = "${env:BOOST_ROOT_DIR}\bootstrap.bat" 69 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 70 | Write-Host "Building Boost.Build engine" 71 | & "${PSScriptRoot}\bootstrap.bat" 72 | if (${LastExitCode} -ne 0) { 73 | throw "Failed to build Boost.Build" 74 | } 75 | 76 | # Build Boost C++ Libraries 77 | $address_models = @("64", "32") 78 | $boost_linkages = @("shared", "static") 79 | $runtime_linkages = @("shared", "static") 80 | 81 | # Limit build configurations if user asked for that 82 | if (Test-Path env:BOOST_ADDRESS_MODEL) { 83 | $address_models = @("${env:BOOST_ADDRESS_MODEL}") 84 | } 85 | if (Test-Path env:BOOST_LINKAGE) { 86 | $boost_linkages = @("${env:BOOST_LINKAGE}") 87 | } 88 | if (Test-Path env:BOOST_RUNTIME_LINKAGE) { 89 | $runtime_linkages = @("${env:BOOST_RUNTIME_LINKAGE}") 90 | } 91 | 92 | if (!(Test-Path env:B2_OPTIONS)) { 93 | $env:B2_OPTIONS = "" 94 | } 95 | 96 | foreach ($address_model in ${address_models}) { 97 | $env:BOOST_ADDRESS_MODEL = ${address_model} 98 | 99 | # Determine parameters dependent on address model 100 | switch (${env:BOOST_ADDRESS_MODEL}) { 101 | "32" { 102 | $env:MSVC_CMD_BOOTSTRAP = "vcvars32.bat" 103 | $target_dir_suffix = "x86" 104 | } 105 | "64" { 106 | $env:MSVC_CMD_BOOTSTRAP = "vcvars64.bat" 107 | $target_dir_suffix = "x64" 108 | } 109 | default { 110 | throw "Unsupported address model: ${env:BOOST_ADDRESS_MODEL}" 111 | } 112 | } 113 | 114 | $env:BOOST_INSTALL_DIR = "${env:TARGET_DIR}\boost-${env:BOOST_VERSION}-${target_dir_suffix}-vs2017" 115 | foreach ($boost_linkage in ${boost_linkages}) { 116 | $env:BOOST_LINKAGE = ${boost_linkage} 117 | foreach ($runtime_linkage in ${runtime_linkages}) { 118 | if (${runtime_linkage} -eq "static" -and -not (${boost_linkage} -eq "static")) { 119 | # Nothing to do with this type of configuration - just skip it 120 | continue 121 | } 122 | $env:BOOST_RUNTIME_LINKAGE = ${runtime_linkage} 123 | Set-Location -Path "${env:BOOST_ROOT_DIR}" 124 | Write-Host "Building Boost C++ Libraries with these parameters:" 125 | Write-Host "MSVS_INSTALL_DIR : ${env:MSVS_INSTALL_DIR}" 126 | Write-Host "MSVC_BUILD_DIR : ${env:MSVC_BUILD_DIR}" 127 | Write-Host "MSVC_CMD_BOOTSTRAP : ${env:MSVC_CMD_BOOTSTRAP}" 128 | Write-Host "B2_BIN : ${env:B2_BIN}" 129 | Write-Host "B2_TOOLSET : ${env:B2_TOOLSET}" 130 | Write-Host "BOOST_INSTALL_DIR : ${env:BOOST_INSTALL_DIR}" 131 | Write-Host "BOOST_ADDRESS_MODEL : ${env:BOOST_ADDRESS_MODEL}" 132 | Write-Host "BOOST_LINKAGE : ${env:BOOST_LINKAGE}" 133 | Write-Host "BOOST_RUNTIME_LINKAGE: ${env:BOOST_RUNTIME_LINKAGE}" 134 | Write-Host "B2_OPTIONS : ${env:B2_OPTIONS}" 135 | & "${PSScriptRoot}\build.bat" 136 | if (${LastExitCode} -ne 0) { 137 | throw "Failed to build Boost with BOOST_ADDRESS_MODEL = ${env:BOOST_ADDRESS_MODEL}, BOOST_LINKAGE = ${env:BOOST_LINKAGE}, BOOST_RUNTIME_LINKAGE = ${env:BOOST_RUNTIME_LINKAGE}" 138 | } 139 | } 140 | } 141 | } 142 | 143 | Write-Host "Build completed successfully" 144 | --------------------------------------------------------------------------------