This is meant to replace both the runtime and build images.
Spliting it in two increasing the maintainance required without
any big benefits.
stages:
- "build runtime"
- "build base"
+ # Eventually will replace both of the above stages
+ - "build docker"
- "preparation"
# Test just one basic build, if succeds procced to test the rest
- "build"
- 'docker/runtime-images/Dockerfile-manifest-builder'
- 'gitlab/build_manifest.py'
-fedora amd64 run docker:
- stage: "build runtime"
- variables:
- ARCH: "amd64"
- TAG: "fedora-runtime"
- CONTEXT_DIR: "docker/runtime-images/"
- DOCKERFILE: "docker/runtime-images/Dockerfile-fedora"
- extends: .base
- only:
- changes:
- - 'docker/runtime-images/Dockerfile-fedora'
-
-fedora amd64 build docker:
- stage: "build base"
+fedora amd64 docker:
+ stage: "build docker"
variables:
ARCH: "amd64"
- TAG: "fedora-build"
- CONTEXT_DIR: "docker/build-base-images/"
- DOCKERFILE: "docker/build-base-images/Dockerfile-fedora"
+ TAG: "fedora"
+ CONTEXT_DIR: "docker/fedora/"
+ DOCKERFILE: "docker/fedora/Dockerfile"
extends: .base
only:
changes:
- - 'docker/build-base-images/Dockerfile-fedora'
+ - 'docker/fedora/*'
ubuntu amd64 run docker:
stage: "build runtime"
build fedora x86_64 local:
extends: '.build'
stage: 'build'
- image: "${CI_REGISTRY_IMAGE}/amd64/fedora-build:latest"
+ image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
build ubuntu x86_64 local:
extends: '.build'
+++ /dev/null
-FROM registry.freedesktop.org/gstreamer/gst-ci/amd64/fedora-runtime
-# Add rpmfusion repositories and install all build dependencies of GStreamer
-RUN dnf builddep -y \
- gstreamer1 \
- gstreamer1-plugins-base \
- gstreamer1-plugins-good \
- gstreamer1-plugins-good-extras \
- gstreamer1-plugins-ugly \
- gstreamer1-plugins-ugly-free \
- gstreamer1-plugins-bad-nonfree \
- gstreamer1-plugins-bad-free \
- gstreamer1-plugins-bad-free-extras \
- gstreamer1-plugins-bad-freeworld \
- gstreamer1-libav \
- gstreamer1-rtsp-server \
- gstreamer1-vaapi \
- python3-gstreamer1 \
- && \
- rpm -e \
- gstreamer1-devel \
- gstreamer1-plugins-base-devel \
- gstreamer1-plugins-bad-free-devel \
- && \
- dnf install -y \
- ccache \
- gcc \
- gcc-c++ \
- gdb \
- git \
- ffmpeg \
- ffmpeg-libs \
- ffmpeg-devel \
- procps-ng \
- patch \
- redhat-rpm-config \
- json-glib \
- json-glib-devel \
- libnice \
- libnice-devel \
- libunwind \
- libunwind-devel \
- opencv \
- opencv-devel \
- openjpeg2 \
- openjpeg2-devel \
- x264 \
- x264-libs \
- x264-devel \
- pygobject3-devel \
- python3-gobject \
- python3-cairo \
- python3-cairo-devel \
- xorg-x11-server-utils \
- xorg-x11-server-Xvfb \
- ninja-build \
- cmake && \
- dnf clean all && \
- pip3 install meson hotdoc && \
- export PATH="$PATH:/usr/local/lib/python3.6/site-packages"
-
-ENV GST_BUILD_PATH="/gst-build/"
-
-# Configure git for various usage
-RUN git config --global user.email "gst-build@gstreamer.net" && git config --global user.name "Gstbuild Runner"
-
-# get gst-build and make all subprojects available
-RUN git clone git://anongit.freedesktop.org/gstreamer/gst-build $GST_BUILD_PATH && \
- cd $GST_BUILD_PATH && \
- meson build/ && \
- rm -rf build/
--- /dev/null
+FROM fedora:29
+
+COPY prepare.sh cleanup.sh /root/
+
+RUN /usr/bin/sh /root/prepare.sh && \
+ /usr/bin/sh /root/cleanup.sh
--- /dev/null
+set -eu
+
+echo "Removing DNF cache"
+dnf clean all
+
+rm -R /root/*
+rm -rf /var/cache/dnf /var/log/dnf*
--- /dev/null
+set -eu
+
+dnf install -y git ninja-build dnf-plugins-core
+
+# Configure git for various usage
+git config --global user.email "gst-build@gstreamer.net"
+git config --global user.name "Gstbuild Runner"
+
+# Add rpm fusion repositories in order to access all of the gst plugins
+dnf install -y "http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-29.noarch.rpm" \
+ "http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-29.noarch.rpm"
+
+rpm --import "/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-29"
+rpm --import "/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-29"
+dnf upgrade -y
+
+# Enable the cisco openh264 repo
+dnf config-manager --set-enabled fedora-cisco-openh264
+
+# install rest of the extra deps
+dnf install -y ccache \
+ cmake \
+ elfutils \
+ gcc \
+ gcc-c++ \
+ gdb \
+ gtk3 \
+ gtk3-devel \
+ ffmpeg \
+ ffmpeg-libs \
+ ffmpeg-devel \
+ procps-ng \
+ patch \
+ redhat-rpm-config \
+ json-glib \
+ json-glib-devel \
+ libnice \
+ libnice-devel \
+ libunwind \
+ libunwind-devel \
+ opencv \
+ opencv-devel \
+ openjpeg2 \
+ openjpeg2-devel \
+ openh264 \
+ openh264-devel \
+ x264 \
+ x264-libs \
+ x264-devel \
+ python3-gobject \
+ python3-cairo \
+ python3-cairo-devel \
+ vulkan \
+ vulkan-devel \
+ xorg-x11-server-utils \
+ xorg-x11-server-Xvfb
+
+pip3 install meson
+# Add the pip3 installation to the path
+export PATH="$PATH:/usr/local/lib/python3.7/site-packages"
+
+# Install the dependencies of gstreamer
+dnf builddep -y gstreamer1 \
+ gstreamer1-plugins-base \
+ gstreamer1-plugins-good \
+ gstreamer1-plugins-good-extras \
+ gstreamer1-plugins-ugly \
+ gstreamer1-plugins-ugly-free \
+ gstreamer1-plugins-bad-nonfree \
+ gstreamer1-plugins-bad-free \
+ gstreamer1-plugins-bad-free-extras \
+ gstreamer1-plugins-bad-freeworld \
+ gstreamer1-libav \
+ gstreamer1-rtsp-server \
+ gstreamer1-vaapi \
+ python3-gstreamer1 \
+ -x meson
+
+# Remove gst-devel packages installed by builddep above
+dnf remove -y "gstreamer1*devel"
+
+# get gst-build and make all subprojects available
+git clone git://anongit.freedesktop.org/gstreamer/gst-build /gst-build/
+cd /gst-build && meson build/ && rm -rf build/
\ No newline at end of file
+++ /dev/null
-FROM fedora:29
-
-# install the config manager
-RUN dnf install -y dnf-plugins-core
-
-# Add rpmfusion repositories and install all build dependencies of GStreamer
-# and then remove the gst packages themselves
-RUN echo "fastestmirror=true" >> /etc/dnf/dnf.conf && \
- dnf install -y http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-29.noarch.rpm \
- http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-29.noarch.rpm && \
- rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-29 && \
- rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-29 && \
- dnf upgrade -y && \
- dnf install -y \
- dnf-plugins-core \
- git \
- meson \
- json-glib \
- libnice \
- libunwind \
- openjpeg2 \
- procps-ng \
- x264 \
- x264-libs \
- python3-gobject \
- python3-cairo \
- ffmpeg \
- ffmpeg-libs \
- xorg-x11-server-utils \
- xorg-x11-server-Xvfb \
- && \
- dnf install -y \
- gstreamer1 \
- gstreamer1-plugins-base \
- gstreamer1-plugins-good \
- gstreamer1-plugins-good-extras \
- gstreamer1-plugins-ugly \
- gstreamer1-plugins-ugly-free \
- gstreamer1-plugins-bad-nonfree \
- gstreamer1-plugins-bad-free \
- gstreamer1-plugins-bad-free-extras \
- gstreamer1-plugins-bad-freeworld \
- gstreamer1-libav \
- gstreamer1-rtsp-server \
- && \
- rpm -e \
- gstreamer1 \
- gstreamer1-plugins-base \
- gstreamer1-plugins-good \
- gstreamer1-plugins-good-extras \
- gstreamer1-plugins-ugly \
- gstreamer1-plugins-ugly-free \
- gstreamer1-plugins-bad-nonfree \
- gstreamer1-plugins-bad-free \
- gstreamer1-plugins-bad-free-extras \
- gstreamer1-plugins-bad-freeworld \
- gstreamer1-rtsp-server \
- gstreamer1-libav \
- && \
- dnf clean all
\ No newline at end of file