mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +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:VERSION='v18'
|
||||
$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
|
||||
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 (!$?) {
|
||||
Write-Host "Failed to build docker image $env:tag"
|
||||
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
|
||||
# Write-Output "Pushing $env:tag"
|
||||
# docker push $env:tag
|
||||
|
@ -18,5 +31,14 @@ if (!$?) {
|
|||
# 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
|
||||
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'
|
||||
TEST_MANIFEST_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'
|
||||
|
||||
|
|
Loading…
Reference in a new issue