mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
docker/windows: create a rust image for gst-rs
Based on the build image for the existing windows jobs, add an image with rust toolchain and a (stable) gstreamer install for the bindings to build against. See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/701 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-ci/-/merge_requests/405>
This commit is contained in:
parent
37c0ee7280
commit
9c21b05d1b
4 changed files with 118 additions and 2 deletions
|
@ -1,15 +1,28 @@
|
||||||
|
$env:ErrorActionPreference='Stop'
|
||||||
|
|
||||||
$env:DEFAULT_BRANCH='master'
|
$env:DEFAULT_BRANCH='master'
|
||||||
$env:VERSION='v18'
|
$env:VERSION='v18'
|
||||||
$env:tag ="registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:$env:VERSION-$env:DEFAULT_BRANCH"
|
$env:tag ="registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:$env:VERSION-$env:DEFAULT_BRANCH"
|
||||||
|
$env:rust_tag ="registry.freedesktop.org/gstreamer/gst-ci/amd64/windows-rust:$env:VERSION-$env:DEFAULT_BRANCH"
|
||||||
|
|
||||||
|
Set-Location './docker/windows/'
|
||||||
|
|
||||||
Get-Date
|
Get-Date
|
||||||
Write-Output "Building $env:tag"
|
Write-Output "Building $env:tag"
|
||||||
docker build --build-arg DEFAULT_BRANCH=$env:DEFAULT_BRANCH -f Dockerfile -t $env:tag .
|
docker build --isolation=hyperv -m 12g --build-arg DEFAULT_BRANCH=$env:DEFAULT_BRANCH -f Dockerfile -t $env:tag .
|
||||||
if (!$?) {
|
if (!$?) {
|
||||||
Write-Host "Failed to build docker image $env:tag"
|
Write-Host "Failed to build docker image $env:tag"
|
||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Get-Date
|
||||||
|
Write-Output "Building $env:rust_tag"
|
||||||
|
docker build --isolation=hyperv -m 12g --build-arg DEFAULT_BRANCH=$env:DEFAULT_BRANCH -f rust.Dockerfile -t $env:rust_tag .
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to build docker image $env:rust_tag"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# Get-Date
|
# Get-Date
|
||||||
# Write-Output "Pushing $env:tag"
|
# Write-Output "Pushing $env:tag"
|
||||||
# docker push $env:tag
|
# docker push $env:tag
|
||||||
|
@ -18,5 +31,14 @@ if (!$?) {
|
||||||
# Exit 1
|
# Exit 1
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
# Get-Date
|
||||||
|
# Write-Output "Pushing $env:rust_tag"
|
||||||
|
# docker push $env:rust_tag
|
||||||
|
# if (!$?) {
|
||||||
|
# Write-Host "Failed to push docker image $env:rust_tag"
|
||||||
|
# Exit 1
|
||||||
|
# }
|
||||||
|
|
||||||
|
|
||||||
Get-Date
|
Get-Date
|
||||||
Write-Output "Build Finished"
|
Write-Output "Build Finished"
|
76
docker/windows/install_gst.ps1
Normal file
76
docker/windows/install_gst.ps1
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
|
||||||
|
|
||||||
|
# FIXME: Python fails to validate github.com SSL certificate, unless we first
|
||||||
|
# run a dummy download to force refreshing Windows' CA database.
|
||||||
|
# See: https://bugs.python.org/issue36137
|
||||||
|
(New-Object System.Net.WebClient).DownloadString("https://github.com") >$null
|
||||||
|
|
||||||
|
# Download gst-build and all its subprojects
|
||||||
|
# git clone -b $env:DEFAULT_BRANCH https://gitlab.freedesktop.org/gstreamer/gst-build.git C:\gst-build
|
||||||
|
# FIXME: need 1.19+ for cairo subproject :/
|
||||||
|
# Should use a stable branch instead
|
||||||
|
git clone -b master --depth 1 https://gitlab.freedesktop.org/gstreamer/gst-build.git C:\gst-build
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to clone gst-build"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-Location C:\gst-build
|
||||||
|
|
||||||
|
# Copy the cache we already have in the image to avoid massive redownloads
|
||||||
|
Move-Item C:/subprojects/* C:\gst-build\subprojects
|
||||||
|
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to copy subprojects cache"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update the subprojects cache
|
||||||
|
Write-Output "Running meson subproject reset"
|
||||||
|
meson subprojects update --reset
|
||||||
|
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to reset subprojects state"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "Running git update"
|
||||||
|
python git-update --no-interaction
|
||||||
|
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to run git-update"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$env:MESON_ARGS = "-Dglib:installed_tests=false " +
|
||||||
|
"-Dlibnice:tests=disabled " +
|
||||||
|
"-Dlibnice:examples=disabled " +
|
||||||
|
"-Dffmpeg:tests=disabled " +
|
||||||
|
"-Dopenh264:tests=disabled " +
|
||||||
|
"-Dpygobject:tests=false " +
|
||||||
|
"-Dugly=enabled " +
|
||||||
|
"-Dbad=enabled " +
|
||||||
|
"-Dges=enabled " +
|
||||||
|
"-Drtsp_server=enabled " +
|
||||||
|
"-Ddevtools=enabled " +
|
||||||
|
"-Dsharp=disabled " +
|
||||||
|
"-Dpython=disabled " +
|
||||||
|
"-Dlibav=disabled " +
|
||||||
|
"-Dvaapi=disabled " +
|
||||||
|
"-Dgst-plugins-base:pango=enabled " +
|
||||||
|
"-Dgst-plugins-good:cairo=enabled "
|
||||||
|
|
||||||
|
Write-Output "Building gst"
|
||||||
|
cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 && meson _build $env:MESON_ARGS && meson compile -C _build && ninja -C _build install"
|
||||||
|
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to build and install gst"
|
||||||
|
Exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
git clean -fdxx
|
||||||
|
|
||||||
|
if (!$?) {
|
||||||
|
Write-Host "Failed to git clean"
|
||||||
|
Exit 1
|
||||||
|
}
|
18
docker/windows/rust.Dockerfile
Normal file
18
docker/windows/rust.Dockerfile
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# escape=`
|
||||||
|
|
||||||
|
FROM 'registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v16-master'
|
||||||
|
|
||||||
|
ARG DEFAULT_BRANCH="master"
|
||||||
|
ARG RUST_VERSION="1.52.1"
|
||||||
|
|
||||||
|
COPY install_gst.ps1 C:\
|
||||||
|
RUN C:\install_gst.ps1
|
||||||
|
RUN choco install -y pkgconfiglite
|
||||||
|
ENV PKG_CONFIG_PATH="C:/lib/pkgconfig"
|
||||||
|
|
||||||
|
ADD https://win.rustup.rs/x86_64 C:\rustup-init.exe
|
||||||
|
RUN C:\rustup-init.exe -y --profile minimal --default-toolchain $env:RUST_VERSION
|
||||||
|
|
||||||
|
# Uncomment for easy testing
|
||||||
|
# RUN git clone --depth 1 https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
|
||||||
|
# RUN cd gstreamer-rs; cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64; cargo build --all; cargo test --all"
|
|
@ -27,7 +27,7 @@ variables:
|
||||||
MANIFEST_TAG: '2020-10-22.0'
|
MANIFEST_TAG: '2020-10-22.0'
|
||||||
TEST_MANIFEST_TAG: '2020-10-22.0'
|
TEST_MANIFEST_TAG: '2020-10-22.0'
|
||||||
INDENT_TAG: '2020-10-22.0'
|
INDENT_TAG: '2020-10-22.0'
|
||||||
WINDOWS_TAG: "2021-06-30.0"
|
WINDOWS_TAG: "2021-07-12.0"
|
||||||
|
|
||||||
GST_UPSTREAM_REPO: 'gstreamer/gst-ci'
|
GST_UPSTREAM_REPO: 'gstreamer/gst-ci'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue