mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 18:20:44 +00:00
06f1dfc724
As of now all integration tests endup fetching 600MB of media every run. This will increase the docker side, but this is to the traceof that the docker image will quickly be cached on all runners. Fixes #841 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1413>
259 lines
5.5 KiB
Bash
259 lines
5.5 KiB
Bash
set -eux
|
|
|
|
# Fedora base image disable installing documentation files. See https://pagure.io/atomic-wg/issue/308
|
|
# We need them to cleanly build our doc.
|
|
sed -i "s/tsflags=nodocs//g" /etc/dnf/dnf.conf
|
|
|
|
dnf install -y git-core ninja-build dnf-plugins-core python3-pip
|
|
|
|
# Configure git for various usage
|
|
git config --global user.email "gstreamer@gstreamer.net"
|
|
git config --global user.name "Gstbuild Runner"
|
|
|
|
# Add rpm fusion repositories in order to access all of the gst plugins
|
|
sudo dnf install -y \
|
|
"https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm" \
|
|
"https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm"
|
|
|
|
dnf upgrade -y
|
|
|
|
# install rest of the extra deps
|
|
dnf install -y \
|
|
aalib-devel \
|
|
aom \
|
|
bat \
|
|
intel-mediasdk-devel \
|
|
libaom \
|
|
libaom-devel \
|
|
libcaca-devel \
|
|
libdav1d \
|
|
libdav1d-devel \
|
|
ccache \
|
|
cmake \
|
|
clang-devel \
|
|
elfutils \
|
|
elfutils-libs \
|
|
elfutils-devel \
|
|
gcc \
|
|
gcc-c++ \
|
|
gdb \
|
|
git-lfs \
|
|
glslc \
|
|
gtk3 \
|
|
gtk3-devel \
|
|
gtest \
|
|
gtest-devel \
|
|
graphene \
|
|
graphene-devel \
|
|
gsl \
|
|
gsl-devel \
|
|
gupnp \
|
|
gupnp-devel \
|
|
gupnp-igd \
|
|
gupnp-igd-devel \
|
|
gssdp \
|
|
gssdp-devel \
|
|
faac-devel \
|
|
ffmpeg \
|
|
ffmpeg-libs \
|
|
ffmpeg-devel \
|
|
flex \
|
|
flite \
|
|
flite-devel \
|
|
mono-devel \
|
|
procps-ng \
|
|
patch \
|
|
qt5-devel \
|
|
redhat-rpm-config \
|
|
json-glib \
|
|
json-glib-devel \
|
|
libnice \
|
|
libnice-devel \
|
|
libsodium-devel \
|
|
libunwind \
|
|
libunwind-devel \
|
|
libyaml-devel \
|
|
libxml2-devel \
|
|
libxslt-devel \
|
|
llvm-devel \
|
|
log4c-devel \
|
|
make \
|
|
nasm \
|
|
neon \
|
|
neon-devel \
|
|
nunit \
|
|
npm \
|
|
opencv \
|
|
opencv-devel \
|
|
openjpeg2 \
|
|
openjpeg2-devel \
|
|
SDL2 \
|
|
SDL2-devel \
|
|
sbc \
|
|
sbc-devel \
|
|
x264 \
|
|
x264-libs \
|
|
x264-devel \
|
|
python3 \
|
|
python3-devel \
|
|
python3-libs \
|
|
python3-gobject \
|
|
python3-cairo \
|
|
python3-cairo-devel \
|
|
valgrind \
|
|
vulkan \
|
|
vulkan-devel \
|
|
mesa-omx-drivers \
|
|
mesa-libGL \
|
|
mesa-libGL-devel \
|
|
mesa-libGLU \
|
|
mesa-libGLU-devel \
|
|
mesa-libGLES \
|
|
mesa-libGLES-devel \
|
|
mesa-libOpenCL \
|
|
mesa-libOpenCL-devel \
|
|
mesa-libgbm \
|
|
mesa-libgbm-devel \
|
|
mesa-libd3d \
|
|
mesa-libd3d-devel \
|
|
mesa-libOSMesa \
|
|
mesa-libOSMesa-devel \
|
|
mesa-vulkan-drivers \
|
|
wpewebkit \
|
|
wpewebkit-devel \
|
|
xorg-x11-server-utils \
|
|
xorg-x11-server-Xvfb
|
|
|
|
# Install common debug symbols
|
|
dnf debuginfo-install -y gtk3 \
|
|
glib2 \
|
|
glibc \
|
|
gupnp \
|
|
gupnp-igd \
|
|
gssdp \
|
|
freetype \
|
|
openjpeg \
|
|
gobject-introspection \
|
|
python3 \
|
|
python3-libs \
|
|
python3-gobject \
|
|
libappstream-glib-devel \
|
|
libjpeg-turbo \
|
|
glib-networking \
|
|
libcurl \
|
|
libsoup \
|
|
nss \
|
|
nss-softokn \
|
|
nss-softokn-freebl \
|
|
nss-sysinit \
|
|
nss-util \
|
|
openssl \
|
|
openssl-libs \
|
|
openssl-pkcs11 \
|
|
brotli \
|
|
bzip2-libs \
|
|
gpm-libs \
|
|
harfbuzz \
|
|
harfbuzz-icu \
|
|
json-c \
|
|
json-glib \
|
|
libbabeltrace \
|
|
libffi \
|
|
libsrtp \
|
|
libunwind \
|
|
mpg123-libs \
|
|
neon \
|
|
orc-compiler \
|
|
orc \
|
|
pixman \
|
|
pulseaudio-libs \
|
|
pulseaudio-libs-glib2 \
|
|
wavpack \
|
|
webrtc-audio-processing \
|
|
ffmpeg \
|
|
ffmpeg-libs \
|
|
faad2-libs \
|
|
libavdevice \
|
|
libmpeg2 \
|
|
faac \
|
|
fdk-aac \
|
|
x264 \
|
|
x264-libs \
|
|
x265 \
|
|
x265-libs \
|
|
xz \
|
|
xz-libs \
|
|
zip \
|
|
zlib
|
|
|
|
# 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-free \
|
|
gstreamer1-plugins-bad-free-extras \
|
|
gstreamer1-plugins-bad-freeworld \
|
|
gstreamer1-libav \
|
|
gstreamer1-rtsp-server \
|
|
gstreamer1-vaapi \
|
|
python3-gstreamer1
|
|
|
|
dnf remove -y meson
|
|
pip3 install meson==0.59.1 hotdoc python-gitlab
|
|
|
|
|
|
# Remove gst-devel packages installed by builddep above
|
|
dnf remove -y "gstreamer1*devel"
|
|
|
|
# FIXME: Why does installing directly with dnf doesn't actually install
|
|
# the documentation files?
|
|
dnf download glib2-doc gdk-pixbuf2-devel*x86_64* gtk3-devel-docs
|
|
rpm -i --reinstall *.rpm
|
|
rm -f *.rpm
|
|
|
|
# Install Rust
|
|
RUSTUP_VERSION=1.24.3
|
|
RUST_VERSION=1.55.0
|
|
RUST_ARCH="x86_64-unknown-linux-gnu"
|
|
|
|
dnf install -y wget
|
|
RUSTUP_URL=https://static.rust-lang.org/rustup/archive/$RUSTUP_VERSION/$RUST_ARCH/rustup-init
|
|
wget $RUSTUP_URL
|
|
dnf remove -y wget
|
|
|
|
export RUSTUP_HOME="/usr/local/rustup"
|
|
export CARGO_HOME="/usr/local/cargo"
|
|
export PATH="/usr/local/cargo/bin:$PATH"
|
|
|
|
chmod +x rustup-init;
|
|
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION;
|
|
rm rustup-init;
|
|
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
|
|
|
|
rustup --version
|
|
cargo --version
|
|
rustc --version
|
|
|
|
# get gstreamer and make all subprojects available
|
|
git clone -b ${GIT_BRANCH} ${GIT_URL} /gstreamer
|
|
git -C /gstreamer submodule update --init --depth=1
|
|
meson subprojects download --sourcedir /gstreamer
|
|
/gstreamer/ci/scripts/handle-subprojects-cache.py --build /gstreamer/subprojects/
|
|
|
|
# Run git gc to prune unwanted refs and reduce the size of the image
|
|
for i in $(find /subprojects/ -mindepth 1 -maxdepth 1 -type d);
|
|
do
|
|
git -C $i gc --aggressive || true;
|
|
done
|
|
|
|
# Now remove the gstreamer clone
|
|
rm -rf /gstreamer
|
|
|
|
echo "Removing DNF cache"
|
|
dnf clean all
|
|
|
|
rm -R /root/*
|
|
rm -rf /var/cache/dnf /var/log/dnf*
|