mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-28 20:05:38 +00:00
docker: Add a unified image for fedora
This is meant to replace both the runtime and build images. Spliting it in two increasing the maintainance required without any big benefits.
This commit is contained in:
parent
3cc8d5efb5
commit
72ec8cd33f
6 changed files with 106 additions and 149 deletions
|
@ -1,6 +1,8 @@
|
|||
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"
|
||||
|
@ -74,29 +76,17 @@ alpine amd64 manifest builder docker:
|
|||
- 'docker/runtime-images/Dockerfile-manifest-builder'
|
||||
- 'gitlab/build_manifest.py'
|
||||
|
||||
fedora amd64 run docker:
|
||||
stage: "build runtime"
|
||||
fedora amd64 docker:
|
||||
stage: "build docker"
|
||||
variables:
|
||||
ARCH: "amd64"
|
||||
TAG: "fedora-runtime"
|
||||
CONTEXT_DIR: "docker/runtime-images/"
|
||||
DOCKERFILE: "docker/runtime-images/Dockerfile-fedora"
|
||||
TAG: "fedora"
|
||||
CONTEXT_DIR: "docker/fedora/"
|
||||
DOCKERFILE: "docker/fedora/Dockerfile"
|
||||
extends: .base
|
||||
only:
|
||||
changes:
|
||||
- 'docker/runtime-images/Dockerfile-fedora'
|
||||
|
||||
fedora amd64 build docker:
|
||||
stage: "build base"
|
||||
variables:
|
||||
ARCH: "amd64"
|
||||
TAG: "fedora-build"
|
||||
CONTEXT_DIR: "docker/build-base-images/"
|
||||
DOCKERFILE: "docker/build-base-images/Dockerfile-fedora"
|
||||
extends: .base
|
||||
only:
|
||||
changes:
|
||||
- 'docker/build-base-images/Dockerfile-fedora'
|
||||
- 'docker/fedora/*'
|
||||
|
||||
ubuntu amd64 run docker:
|
||||
stage: "build runtime"
|
||||
|
@ -128,7 +118,7 @@ include: "gitlab/ci_template.yml"
|
|||
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'
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
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/
|
6
docker/fedora/Dockerfile
Normal file
6
docker/fedora/Dockerfile
Normal file
|
@ -0,0 +1,6 @@
|
|||
FROM fedora:29
|
||||
|
||||
COPY prepare.sh cleanup.sh /root/
|
||||
|
||||
RUN /usr/bin/sh /root/prepare.sh && \
|
||||
/usr/bin/sh /root/cleanup.sh
|
7
docker/fedora/cleanup.sh
Normal file
7
docker/fedora/cleanup.sh
Normal file
|
@ -0,0 +1,7 @@
|
|||
set -eu
|
||||
|
||||
echo "Removing DNF cache"
|
||||
dnf clean all
|
||||
|
||||
rm -R /root/*
|
||||
rm -rf /var/cache/dnf /var/log/dnf*
|
84
docker/fedora/prepare.sh
Normal file
84
docker/fedora/prepare.sh
Normal file
|
@ -0,0 +1,84 @@
|
|||
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/
|
|
@ -1,60 +0,0 @@
|
|||
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
|
Loading…
Reference in a new issue