mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 22:36:33 +00:00
169 lines
6 KiB
Bash
169 lines
6 KiB
Bash
#!/bin/bash
|
|
|
|
set -ex
|
|
|
|
show_ccache_sum() {
|
|
if [[ -n ${HAVE_CCACHE} ]]; then
|
|
ccache -s
|
|
fi
|
|
}
|
|
|
|
# XXX: This is copied and modified from the cerbero-uninstalled script
|
|
# Use `mount` to get a list of MSYS mount points that the MSYS shell uses.
|
|
# That's our reference point for translating from MSYS paths to Win32 paths.
|
|
# We assume that the MSYS mount point directories are only in the filesystem
|
|
# root. This will break if people add their own custom mount points beyond what
|
|
# MSYS automatically creates, which is highly unlikely.
|
|
#
|
|
# /d -> d:/
|
|
# /c -> c:/
|
|
# /d/projects/cerbero -> d:/projects/cerbero/
|
|
# /home/USERNAME/cerbero -> C:\\MinGW\\msys\\1.0/home/USERNAME/
|
|
# /mingw -> C:\\MinGW/
|
|
# /mingw/bin/foobar -> C:\\MinGW\\bin/foobar/
|
|
# /tmp/baz -> C:\\Users\\USERNAME\\AppData\\Local\\Temp/baz/
|
|
msys_dir_to_win32() {
|
|
set -e
|
|
local msys_path stripped_path mount_point path mounted_path
|
|
# If the path is already a native path, just return that
|
|
if [[ $1 == ?:/* ]] || [[ $1 == ?:\\* ]]; then
|
|
echo $1
|
|
return
|
|
fi
|
|
# Convert /c or /mingw etc to /c/ or /mingw/ etc; gives us a necessary
|
|
# anchor to split the path into components
|
|
msys_path="$1/"
|
|
# Strip leading slash
|
|
stripped_path="${msys_path#/}"
|
|
# Get the first path component, which may be a mount point
|
|
mount_point="/${stripped_path%%/*}"
|
|
# Get the path inside the mountp oint
|
|
path="/${stripped_path#*/}"
|
|
mounted_path="$(mount | sed -n "s|\(.*\) on $mount_point type.*|\1|p")"
|
|
# If it's not a mounted path (like /c or /tmp or /mingw), then it's in the
|
|
# general MSYS root mount
|
|
if [[ -z $mounted_path ]]; then
|
|
mounted_path="$(mount | sed -n "s|\(.*\) on / type.*|\1|p")"
|
|
path="$1"
|
|
fi
|
|
echo ${mounted_path}${path%/}
|
|
}
|
|
|
|
# Print the working directory in the native OS path format, but with forward
|
|
# slashes
|
|
pwd_native() {
|
|
if [[ -n "$MSYSTEM" ]]; then
|
|
msys_dir_to_win32 "$(pwd)"
|
|
else
|
|
pwd
|
|
fi
|
|
}
|
|
|
|
fix_build_tools() {
|
|
if [[ $(uname) == Darwin ]]; then
|
|
# Bison needs these env vars set for the build-tools prefix to be
|
|
# relocatable, and we only build it on macOS. On Linux we install it
|
|
# using the package manager, and on Windows we use the MSYS Bison.
|
|
export M4="$(pwd)/${CERBERO_HOME}/build-tools/bin/m4"
|
|
export BISON_PKGDATADIR="$(pwd)/${CERBERO_HOME}/build-tools/share/bison"
|
|
fi
|
|
}
|
|
|
|
# Produces runtime and devel tarball packages for linux/android or .pkg for macos
|
|
cerbero_package_and_check() {
|
|
$CERBERO $CERBERO_ARGS package --offline ${CERBERO_PACKAGE_ARGS} -o "$(pwd_native)" gstreamer-1.0
|
|
|
|
# Run gst-inspect-1.0 for some basic checks. Can't do this for cross-(android|ios)-universal, of course.
|
|
if [[ $CONFIG != *universal* ]]; then
|
|
$CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX --version
|
|
$CERBERO $CERBERO_ARGS run $CERBERO_RUN_WRAPPER gst-inspect-1.0$CERBERO_RUN_SUFFIX
|
|
fi
|
|
|
|
show_ccache_sum
|
|
}
|
|
|
|
cerbero_before_script() {
|
|
pwd
|
|
ls -lha
|
|
|
|
# Copy cerbero git repo stored on the image
|
|
cp -a "${CERBERO_HOST_DIR}/.git" .
|
|
git checkout .
|
|
git status
|
|
|
|
# If there's no cerbero-sources directory in the runner cache, copy it from
|
|
# the image cache
|
|
if ! [[ -d ${CERBERO_SOURCES} ]]; then
|
|
time cp -a "${CERBERO_HOST_DIR}/${CERBERO_SOURCES}" .
|
|
fi
|
|
du -sch "${CERBERO_SOURCES}" || true
|
|
|
|
echo "home_dir = \"$(pwd_native)/${CERBERO_HOME}\"" > localconf.cbc
|
|
echo "local_sources = \"$(pwd_native)/${CERBERO_SOURCES}\"" >> localconf.cbc
|
|
if [[ $CONFIG == win??.cbc ]]; then
|
|
# Visual Studio 2017 build tools install path
|
|
echo 'vs_install_path = "C:/BuildTools"' >> localconf.cbc
|
|
echo 'vs_install_version = "vs15"' >> localconf.cbc
|
|
fi
|
|
cat localconf.cbc
|
|
|
|
time ./cerbero-uninstalled --self-update manifest.xml
|
|
|
|
# GitLab runner does not always wipe the image after each job, so do that
|
|
# to ensure we don't have any leftover data from a previous job such as
|
|
# a dirty builddir, or tarballs/pkg files, leftover files from an old
|
|
# cerbero commit, etc. Skip the things we actually need to keep.
|
|
time git clean -xdff -e cerbero_setup.sh -e manifest.xml -e localconf.cbc -e "${CERBERO_SOURCES}"
|
|
}
|
|
|
|
cerbero_script() {
|
|
show_ccache_sum
|
|
|
|
$CERBERO $CERBERO_ARGS show-config
|
|
$CERBERO $CERBERO_ARGS fetch-bootstrap --jobs=4
|
|
$CERBERO $CERBERO_ARGS fetch-package --jobs=4 --deps gstreamer-1.0
|
|
du -sch "${CERBERO_SOURCES}" || true
|
|
|
|
$CERBERO $CERBERO_ARGS fetch-cache --branch "${GST_UPSTREAM_BRANCH}"
|
|
|
|
if [[ -n ${CERBERO_OVERRIDDEN_DIST_DIR} && -d "${CERBERO_HOME}/dist/${ARCH}" ]]; then
|
|
mkdir -p "${CERBERO_OVERRIDDEN_DIST_DIR}"
|
|
time rsync -aH "${CERBERO_HOME}/dist/${ARCH}/" "${CERBERO_OVERRIDDEN_DIST_DIR}"
|
|
fi
|
|
|
|
$CERBERO $CERBERO_ARGS bootstrap --offline --system=no
|
|
fix_build_tools
|
|
|
|
cerbero_package_and_check
|
|
}
|
|
|
|
cerbero_deps_script() {
|
|
show_ccache_sum
|
|
|
|
$CERBERO $CERBERO_ARGS show-config
|
|
$CERBERO $CERBERO_ARGS fetch-bootstrap --jobs=4
|
|
$CERBERO $CERBERO_ARGS fetch-package --jobs=4 --deps gstreamer-1.0
|
|
$CERBERO $CERBERO_ARGS bootstrap --offline --system=no
|
|
$CERBERO $CERBERO_ARGS build-deps --offline \
|
|
gstreamer-1.0 gst-plugins-base-1.0 gst-plugins-good-1.0 \
|
|
gst-plugins-bad-1.0 gst-plugins-ugly-1.0 gst-rtsp-server-1.0 \
|
|
gst-libav-1.0 gst-devtools-1.0 gst-editing-services-1.0 libnice
|
|
|
|
if [[ -n ${CERBERO_OVERRIDDEN_DIST_DIR} ]]; then
|
|
mkdir -p "${CERBERO_HOME}/dist/${ARCH}"
|
|
time rsync -aH "${CERBERO_OVERRIDDEN_DIST_DIR}/" "${CERBERO_HOME}/dist/${ARCH}"
|
|
fi
|
|
|
|
# Check that the env var is set. Don't expand this protected variable by
|
|
# doing something silly like [[ -n ${CERBERO_...} ]] because it will get
|
|
# printed in the CI logs due to set -x
|
|
if env | grep -q -e CERBERO_PRIVATE_SSH_KEY; then
|
|
time $CERBERO $CERBERO_ARGS gen-cache --branch "${GST_UPSTREAM_BRANCH}"
|
|
time $CERBERO $CERBERO_ARGS upload-cache --branch "${GST_UPSTREAM_BRANCH}"
|
|
fi
|
|
|
|
cerbero_package_and_check
|
|
}
|
|
|
|
# Run whichever function is asked of us
|
|
eval "$1"
|