win: update docker image

The docker image is now build
with an argument coming the
images_templates.yml

move gst and gtk to job

Remove the build of gstreamer and gtk
and build it during the job as macos job.

Use gstreamer 1.26
This commit is contained in:
Stéphane Cerveau 2025-04-01 13:39:05 +02:00
parent f509db3f82
commit 38ae5b92af
8 changed files with 38 additions and 133 deletions

View file

@ -12,10 +12,13 @@ stages:
- deploy
variables:
WINDOWS_AMD64_SUFFIX: "amd64/windows"
CI_GST_REGISTRY_IMAGE: "registry.freedesktop.org/gstreamer/gstreamer"
GST_WINDOWS_IMAGE: "$CI_GST_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$GST_WIN_IMG_TAG-$GST_UPSTREAM_BRANCH"
FDO_UPSTREAM_REPO: "dabrain34/GstPipelineStudio"
GNOME_RUNTIME_IMAGE: "quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master"
WINDOWS_RUST_STABLE_IMAGE: "$CI_REGISTRY_IMAGE/windows:$GST_RS_WIN_IMG_TAG"
WINDOWS_RUST_STABLE_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows:$GST_RS_WIN_IMG_TAG"
GPS_WINDOWS_RUST_STABLE_IMAGE: "$CI_REGISTRY_IMAGE/windows:$GPS_RS_WIN_IMG_TAG"
GPS_WINDOWS_RUST_STABLE_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows:$GPS_RS_WIN_IMG_TAG"
# Version and tag for our current container
.fedora:
@ -73,14 +76,14 @@ build-fedora-container:
# We also don't need a CONTEXT_DIR var as its also
# hardcoded to be windows-docker/
DOCKERFILE: "ci/windows-docker/Dockerfile"
GST_UPSTREAM_BRANCH: "1.22"
tags:
- "windows"
- "shell"
- "2022"
script:
# We need to pass an array and to resolve the env vars, so we can't use a variable:
- $DOCKER_BUILD_ARGS = @("--build-arg", "DEFAULT_GST_BRANCH=$GST_UPSTREAM_BRANCH", "--build-arg", "RUST_VERSION=$RUST_VERSION")
- $DOCKER_BUILD_ARGS = @("--build-arg", "RUST_VERSION=$GST_RS_STABLE", "--build-arg", "GST_WINDOWS_IMAGE=$GST_WINDOWS_IMAGE")
- "& ci/windows-docker/container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $RUST_IMAGE $RUST_UPSTREAM_IMAGE $DOCKERFILE"
- |
if (!($?)) {
@ -91,9 +94,8 @@ build-fedora-container:
windows rust docker stable:
extends: ".windows rust docker build"
variables:
RUST_IMAGE: $WINDOWS_RUST_STABLE_IMAGE
RUST_UPSTREAM_IMAGE: $WINDOWS_RUST_STABLE_UPSTREAM_IMAGE"]
RUST_VERSION: $GST_RS_STABLE
RUST_IMAGE: $GPS_WINDOWS_RUST_STABLE_IMAGE
RUST_UPSTREAM_IMAGE: $GPS_WINDOWS_RUST_STABLE_UPSTREAM_IMAGE"]
.msvc2019 build:
stage: test
@ -106,7 +108,7 @@ windows installer stable:
needs:
- job: "windows rust docker stable"
artifacts: false
image: "$WINDOWS_RUST_STABLE_IMAGE"
image: "$GPS_WINDOWS_RUST_STABLE_IMAGE"
extends: ".msvc2019 build"
script:
- rustc --version

View file

@ -1,6 +1,27 @@
$env:MESON_ARGS = "--prefix=C:\gst-install\ -Dbuildtype=release"
$env:MESON_ARGS = "-Dforce_fallback_for=gstreamer-1.0,glib,libffi,pcre2,gtk " +
"-Dgstreamer-1.0:libav=disabled " +
"-Dgstreamer-1.0:examples=disabled " +
"-Dgstreamer-1.0:introspection=disabled " +
"-Dgstreamer-1.0:rtsp_server=disabled " +
"-Dgstreamer-1.0:devtools=disabled " +
"-Dgstreamer-1.0:ges=disabled " +
"-Dgstreamer-1.0:tests=disabled " +
"-Dgstreamer-1.0:python=disabled " +
"-Dgst-plugins-base:tests=disabled " +
"-Dgst-plugins-bad:openexr=disabled " +
"-Dgstreamer-1.0:gst-examples=disabled " +
"-Dorc:gtk_doc=disabled " +
"-Dgtk:introspection=disabled " +
"-Dgtk:build-examples=false " +
"-Dgtk:build-tests=false " +
"-Dgtk:media-gstreamer=disabled " +
"-Djson-glib:introspection=disabled" +
"--prefix=C:\gst-install\"
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 GstPipelineStudio"
Exit 1
}
}

View file

@ -1,4 +1,6 @@
variables:
GST_RS_WIN_IMG_TAG: "2025-03-13.0"
GST_UPSTREAM_BRANCH: "main"
GST_WIN_IMG_TAG: "2025-02-23.0"
GPS_RS_WIN_IMG_TAG: "2025-04-01.1"
GST_RS_FDO_IMG_TAG: "2025-01-13.0"
GST_RS_STABLE: "1.85.0"

View file

@ -1,6 +1,6 @@
# escape=`
FROM "registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2023-08-24.0-main"
ARG GST_WINDOWS_IMAGE="registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2023-08-24.0-main"
FROM ${GST_WINDOWS_IMAGE}
# Make sure any failure in PowerShell is fatal
ENV ErrorActionPreference='Stop'
@ -16,10 +16,6 @@ RUN choco install -y pkgconfiglite nasm llvm
RUN setx PATH '%PATH%;C:\Program Files\NASM;C:\gst-install\bin;c:\Program Files\gettext-iconv\bin'
ENV PKG_CONFIG_PATH="C:\gst-install\lib\pkgconfig"
COPY install_gst.ps1 install_gtk.ps1 C:\
RUN C:\install_gst.ps1
RUN C:\install_gtk.ps1
RUN Invoke-WebRequest -Uri https://win.rustup.rs/x86_64 -OutFile C:\rustup-init.exe
RUN C:\rustup-init.exe -y --profile minimal --default-toolchain $env:RUST_VERSION

View file

@ -1,62 +0,0 @@
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
# Download gstreamer and all its subprojects
git clone -b $env:DEFAULT_GST_BRANCH --depth 1 https://gitlab.freedesktop.org/gstreamer/gstreamer.git C:\gstreamer
if (!$?) {
Write-Host "Failed to clone gstreamer"
Exit 1
}
Set-Location C:\gstreamer
# Copy the cache we already have in the image to avoid massive redownloads
Move-Item C:/subprojects/* C:\gstreamer\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
}
$env:MESON_ARGS = "--prefix=C:\gst-install\ -Dbuildtype=release " +
"-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 " +
"-Dgpl=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
}
cd C:\
cmd /c rmdir /s /q C:\gstreamer
if (!$?) {
Write-Host "Failed to remove gst checkout"
Exit 1
}

View file

@ -1,27 +0,0 @@
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
$env:MESON_ARGS = "--prefix=C:\gst-install\ -Dbuildtype=release"
# Download gtk and all its subprojects
git clone -b $env:DEFAULT_GTK_BRANCH --depth 1 https://gitlab.gnome.org/gnome/gtk.git C:\gtk
if (!$?) {
Write-Host "Failed to clone gtk"
Exit 1
}
Set-Location C:\gtk
Write-Output "Building gtk"
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 gtk"
Exit 1
}
cd C:\
cmd /c rmdir /s /q C:\gtk
if (!$?) {
Write-Host "Failed to remove gtk checkout"
Exit 1
}

View file

@ -1,27 +0,0 @@
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
$env:MESON_ARGS = "--prefix=C:\gst-install\ --wrap-mode=forcefallback"
# Download pango all its subprojects
git clone -b $env:DEFAULT_PANGO_BRANCH --depth 1 https://gitlab.gnome.org/gnome/pango.git C:\pango
if (!$?) {
Write-Host "Failed to clone pango"
Exit 1
}
Set-Location C:\pango
Write-Output "Building pango"
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 pango"
Exit 1
}
cd C:\
cmd /c rmdir /s /q C:\pango
if (!$?) {
Write-Host "Failed to remove gtk checkout"
Exit 1
}

View file

@ -2,7 +2,7 @@
directory=gstreamer-1.0
url=https://gitlab.freedesktop.org/gstreamer/gstreamer.git
push-url=git@gitlab.freedesktop.org:gstreamer/gstreamer.git
revision=1.24
revision=1.26
[provide]
dependency_names = gstreamer-1.0, gstreamer-base-1.0, gstreamer-sys-1.0, gstreamer-plugins-bad-1.0, gstreamer-video-1.0, gstreamer-player-1.0 gstreamer-gl-1.0