Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Dockerfile 5.19 KiB
# SPDX-License-Identifier: AGPL-3.0-or-later
FROM microsoft/dotnet-framework:3.5-runtime
LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
RUN mkdir $PSHome/profile.d | out-null
ADD powershell/Profile.ps1 /Windows/System32/WindowsPowerShell/v1.0/Profile.ps1
ADD powershell/00-Must-Run.ps1 /Windows/System32/WindowsPowerShell/v1.0/profile.d/00-Must-Run.ps1
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
$env:chocolateyUseWindowsCompression = 'true'; \
Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); \
Must-Run choco install -y dotnetfx --version 4.7.2.20180712; \
Must-Run choco install -y cmake --version 3.17.3 --installargs "ADD_CMAKE_TO_PATH=System"; \
Must-Run choco install -y kitware-ninja --version 1.8.2.8127911; \
Must-Run choco install -y \
git \
curl \
7zip \
wixtoolset; \
Must-Run choco install -y python --version 3.7.6; \
$env:PATH = "\"$([Environment]::GetEnvironmentVariable('PATH', [EnvironmentVariableTarget]::User));$([Environment]::GetEnvironmentVariable('PATH', [EnvironmentVariableTarget]::Machine))\""; \
Must-Run python -m pip --no-cache-dir install --no-warn-script-location wheel; \
Must-Run choco install -y visualstudio2017buildtools; \
Must-Run choco install -y visualstudio2017-workload-vctools; \
Start-Process "\"C:/Program Files (x86)/Microsoft Visual Studio/Installer/vs_installer.exe\"" -NoNewWindow -Wait -ArgumentList 'modify --installPath \"C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools\" --quiet --norestart --remove Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Tools.14.16 --add Microsoft.VisualStudio.Component.VC.ATL'
ADD powershell/10-VSDevEnv.ps1 /Windows/System32/WindowsPowerShell/v1.0/profile.d/10-VSDevEnv.ps1
ADD powershell/20-MSVC-15.9.ps1 /Windows/System32/WindowsPowerShell/v1.0/profile.d/20-MSVC-15.9.ps1
COPY qtifwsilent.qs C:/qtifwsilent.qs
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
(New-Object Net.WebClient).DownloadFile('https://download.qt.io/official_releases/qt/5.12/5.12.8/qt-opensource-windows-x86-5.12.8.exe', 'C:/qt.exe'); \
$env:QT_INSTALL_DIR = 'C:/ProgramData/Qt'; \
Add-Content "\"/Windows/System32/drivers/etc/hosts\"" "\"`r`n127.0.0.1 iapi.qt.io`r`n::1 iapi.qt.io\""; \
Start-Process C:/qt.exe -NoNewWindow -Wait -ArgumentList '--verbose --script C:/qtifwsilent.qs'; \
Remove-Item -Force C:/qtifwsilent.qs; \
Remove-Item -Force C:/qt.exe; \
[Environment]::SetEnvironmentVariable('Qt5_DIR', 'C:/ProgramData/Qt/5.12.8/msvc2017_64', [EnvironmentVariableTarget]::Machine)
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
(New-Object Net.WebClient).DownloadFile('https://www.baslerweb.com/fp-1551786641/media/downloads/software/pylon_software/Basler_pylon_5.2.0.13457.exe', 'C:/Basler_pylon_5.2.0.13457.exe'); \
Start-Process C:/Basler_pylon_5.2.0.13457.exe -NoNewWindow -Wait -ArgumentList '/quiet /install=SDKs /targetpath=C:/ProgramData/Pylon5'; \
Remove-Item -Force C:/Basler_pylon_5.2.0.13457.exe; \
[Environment]::SetEnvironmentVariable('Pylon5_DIR', 'C:/ProgramData/Pylon5/Development', [EnvironmentVariableTarget]::Machine);
RUN $vcpkg_dir = 'C:/ProgramData/vcpkg'; \
git clone -b robofish --single-branch https://git.imp.fu-berlin.de/bioroboticslab/robofish/vcpkg.git; \
cd $vcpkg_dir; \
git checkout d61d47c5cac2198bf0262d75742e8a4a38e573d6; \
./scripts/bootstrap.ps1 -disableMetrics; \
$vcpkg_target_triplet = 'x64-windows-14.16'; \
[Environment]::SetEnvironmentVariable('VCPKG_DIR', "\"$vcpkg_dir\"", [EnvironmentVariableTarget]::Machine); \
[Environment]::SetEnvironmentVariable('VCPKG_TRIPLET', "\"$vcpkg_target_triplet\"", [EnvironmentVariableTarget]::Machine); \
[Environment]::SetEnvironmentVariable('VCPKG_TARGET_TRIPLET', "\"$vcpkg_target_triplet\"", [EnvironmentVariableTarget]::Machine); \
[Environment]::SetEnvironmentVariable('CMAKE_TOOLCHAIN_FILE', "\"$vcpkg_dir/scripts/buildsystems/vcpkg.cmake\"", [EnvironmentVariableTarget]::Machine); \
[Environment]::SetEnvironmentVariable('VCPKG_INSTALL_DIR', "\"$vcpkg_dir/installed/$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine);
ADD powershell/30-Vcpkg-CMake.ps1 /Windows/System32/WindowsPowerShell/v1.0/profile.d/30-Vcpkg-CMake.ps1
RUN cd $env:VCPKG_DIR; \
Must-Run ./vcpkg install --triplet "$env:VCPKG_TARGET_TRIPLET" \
libepoxy \
glm \
cgal \
"\"hdf5[cpp]\"" \
pybind11 \
boost-program-options \
boost-property-tree \
boost-circular-buffer \
boost-timer \
jsoncpp \
websocketpp \
freetype \
harfbuzz \
rpclib \
eigen3 \
openblas \
libjpeg-turbo \
libwebp \
opengl \
protobuf \
tiff \
; \
Remove-Item -Force -Recurse ./downloads; \
Remove-Item -Force -Recurse ./buildtrees; \
Remove-Item -Force -Recurse ./packages;