From c42fdd8546bd5d3d99f250691194d1f510adfcb6 Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <mm@ucw.sh>
Date: Wed, 3 Jun 2020 20:42:08 +0200
Subject: [PATCH] [windows] Move shared packages into base, build FFmpeg with
 Nvidia hardware encoding capability in gpu image

---
 windows-1809/base/Dockerfile       | 29 ++++++++++++++++++++++++++-
 windows-1809/cuda-devel/Dockerfile | 32 +++++++++---------------------
 windows-1809/devel/Dockerfile      | 32 +++++++++---------------------
 3 files changed, 46 insertions(+), 47 deletions(-)

diff --git a/windows-1809/base/Dockerfile b/windows-1809/base/Dockerfile
index 3f186a8..2c140f6 100644
--- a/windows-1809/base/Dockerfile
+++ b/windows-1809/base/Dockerfile
@@ -50,4 +50,31 @@ RUN $vcpkg_dir = 'C:/ProgramData/vcpkg'; \
     cd $vcpkg_dir; \
     git checkout d61d47c5cac2198bf0262d75742e8a4a38e573d6; \
     ./scripts/bootstrap.ps1 -disableMetrics; \
-    [Environment]::SetEnvironmentVariable('VCPKG_DIR', "\"$vcpkg_dir\"", [EnvironmentVariableTarget]::Machine);
+    $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; \
+    Remove-Item -Force -Recurse ./downloads; \
+    Remove-Item -Force -Recurse ./buildtrees; \
+    Remove-Item -Force -Recurse ./packages;
diff --git a/windows-1809/cuda-devel/Dockerfile b/windows-1809/cuda-devel/Dockerfile
index 320b679..cc49b57 100644
--- a/windows-1809/cuda-devel/Dockerfile
+++ b/windows-1809/cuda-devel/Dockerfile
@@ -14,35 +14,21 @@ RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tl
     Remove-Item -Force -Recurse "./cuda"; \
     Remove-Item -Force C:/cudnn-10.1-windows10-x64-v7.6.1.34.zip
 
+RUN cd $env:VCPKG_DIR; \
+    ./vcpkg install --triplet "$env:VCPKG_TARGET_TRIPLET" \
+        "\"ffmpeg[nvcodec,avresample,core]\"" \
+        "\"opencv4[cuda,ffmpeg,ximea,opengl,contrib,ipp,dnn]\""; \
+    Remove-Item -Force -Recurse ./downloads; \
+    Remove-Item -Force -Recurse ./buildtrees; \
+    Remove-Item -Force -Recurse ./packages;
+
 COPY opengl32.dll C:/Windows/System32/opengl32.dll
 COPY glu32.dll C:/Windows/System32/glu32.dll
 COPY ddraw.dll C:/Windows/System32/ddraw.dll
 COPY nvcuda.dll C:/Windows/System32/nvcuda.dll
 RUN cd $env:VCPKG_DIR; \
-    $vcpkg_triplet = 'x64-windows-14.16'; \
-    Must-Run ./vcpkg install --triplet "$vcpkg_triplet"  \
-        libepoxy \
-        glm \
-        cgal \
-        "\"hdf5[cpp]\"" \
-        pybind11 \
-        boost-program-options \
-        boost-property-tree \
-        boost-circular-buffer \
-        boost-timer \
-        jsoncpp \
-        websocketpp \
-        freetype \
-        harfbuzz \
-        rpclib \
-        eigen3 \
-        "\"opencv4[cuda,ffmpeg,ximea,opengl,contrib,ipp,dnn]\"" \
+    ./vcpkg install --triplet "$env:VCPKG_TARGET_TRIPLET" \
         "\"mxnet[cpp,opencv,cuda,cudnn]\""; \
-    [Environment]::SetEnvironmentVariable('VCPKG_TRIPLET', "\"$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine); \
-    [Environment]::SetEnvironmentVariable('CMAKE_TOOLCHAIN_FILE', "\"$env:VCPKG_DIR/scripts/buildsystems/vcpkg.cmake\"", [EnvironmentVariableTarget]::Machine); \
-    [Environment]::SetEnvironmentVariable('VCPKG_TARGET_TRIPLET', "\"$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine); \
-    [Environment]::SetEnvironmentVariable('VCPKG_INSTALL_DIR', "\"$env:VCPKG_DIR/installed/$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine); \
     Remove-Item -Force -Recurse ./downloads; \
     Remove-Item -Force -Recurse ./buildtrees; \
     Remove-Item -Force -Recurse ./packages;
-ADD powershell/30-Vcpkg-CMake.ps1 /Windows/System32/WindowsPowerShell/v1.0/profile.d/30-Vcpkg-CMake.ps1
diff --git a/windows-1809/devel/Dockerfile b/windows-1809/devel/Dockerfile
index f3d55a2..de30942 100644
--- a/windows-1809/devel/Dockerfile
+++ b/windows-1809/devel/Dockerfile
@@ -4,34 +4,20 @@ FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker:base-windows-1809
 LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
 LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
 
+RUN cd $env:VCPKG_DIR; \
+    ./vcpkg install --triplet "$env:VCPKG_TARGET_TRIPLET" \
+        "\"ffmpeg[avresample,core]\"" \
+        "\"opencv4[ffmpeg,ximea,opengl,contrib,ipp,dnn]\""; \
+    Remove-Item -Force -Recurse ./downloads; \
+    Remove-Item -Force -Recurse ./buildtrees; \
+    Remove-Item -Force -Recurse ./packages;
+
 COPY opengl32.dll C:/Windows/System32/opengl32.dll
 COPY glu32.dll C:/Windows/System32/glu32.dll
 COPY ddraw.dll C:/Windows/System32/ddraw.dll
 RUN cd $env:VCPKG_DIR; \
-    $vcpkg_triplet = 'x64-windows-14.16'; \
-    Must-Run ./vcpkg install --triplet "$vcpkg_triplet"  \
-        libepoxy \
-        glm \
-        cgal \
-        "\"hdf5[cpp]\"" \
-        pybind11 \
-        boost-program-options \
-        boost-property-tree \
-        boost-circular-buffer \
-        boost-timer \
-        jsoncpp \
-        websocketpp \
-        freetype \
-        harfbuzz \
-        rpclib \
-        eigen3 \
-        "\"opencv4[ffmpeg,ximea,opengl,contrib,ipp,dnn]\"" \
+    ./vcpkg install --triplet "$env:VCPKG_TARGET_TRIPLET" \
         "\"mxnet[cpp,opencv]\""; \
-    [Environment]::SetEnvironmentVariable('VCPKG_TRIPLET', "\"$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine); \
-    [Environment]::SetEnvironmentVariable('CMAKE_TOOLCHAIN_FILE', "\"$env:VCPKG_DIR/scripts/buildsystems/vcpkg.cmake\"", [EnvironmentVariableTarget]::Machine); \
-    [Environment]::SetEnvironmentVariable('VCPKG_TARGET_TRIPLET', "\"$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine); \
-    [Environment]::SetEnvironmentVariable('VCPKG_INSTALL_DIR', "\"$env:VCPKG_DIR/installed/$vcpkg_triplet\"", [EnvironmentVariableTarget]::Machine); \
     Remove-Item -Force -Recurse ./downloads; \
     Remove-Item -Force -Recurse ./buildtrees; \
     Remove-Item -Force -Recurse ./packages;
-ADD powershell/30-Vcpkg-CMake.ps1 /Windows/System32/WindowsPowerShell/v1.0/profile.d/30-Vcpkg-CMake.ps1
-- 
GitLab