mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-21 07:46:38 +00:00
97 lines
2.1 KiB
Bash
97 lines
2.1 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# Based on the build-linux.sh script from the Mutter project:
|
||
|
# https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/tests/kvm/build-linux.sh
|
||
|
#
|
||
|
# Script for building the Linux kernel from git. It aims to build a kernel image
|
||
|
# that is suitable for running in a virtual machine and is aimed to used for
|
||
|
# testing.
|
||
|
#
|
||
|
# Usage: build-linux.sh [REPO-URL] [BRANCH|TAG] [OUTPUT-FILE] [...CONFIGS]
|
||
|
#
|
||
|
# Where [..CONFIGS] can be any number of configuration options, e.g.
|
||
|
# --enable CONFIG_DRM_VKMS
|
||
|
#
|
||
|
|
||
|
set -e
|
||
|
|
||
|
# From scripts/subarch.include in linux
|
||
|
function get-subarch()
|
||
|
{
|
||
|
uname -m | sed -e s/i.86/x86/ \
|
||
|
-e s/x86_64/x86/ \
|
||
|
-e s/sun4u/sparc64/ \
|
||
|
-e s/arm.*/arm/ -e s/sa110/arm/ \
|
||
|
-e s/s390x/s390/ -e s/parisc64/parisc/ \
|
||
|
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
|
||
|
-e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ \
|
||
|
-e s/riscv.*/riscv/
|
||
|
}
|
||
|
|
||
|
REPO="$1"
|
||
|
BRANCH_OR_TAG="$2"
|
||
|
IMAGE="$3"
|
||
|
|
||
|
ARCH=$(uname -m)
|
||
|
SUBARCH=$(get-subarch)
|
||
|
|
||
|
shift
|
||
|
shift
|
||
|
shift
|
||
|
|
||
|
# ./scripts/config --enable CONFIG_VIDEO_VISL
|
||
|
CONFIGS=()
|
||
|
while [[ "x$1" != "x" ]]; do
|
||
|
CONFIGS+=( "$1" )
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
echo Building Linux for $ARCH \($SUBARCH\)...
|
||
|
|
||
|
set -x
|
||
|
|
||
|
if [ -d linux ]; then
|
||
|
pushd linux
|
||
|
git fetch --depth=1 $REPO $BRANCH_OR_TAG
|
||
|
git checkout FETCH_HEAD
|
||
|
else
|
||
|
git clone --depth=1 --branch=$BRANCH_OR_TAG $REPO linux
|
||
|
pushd linux
|
||
|
fi
|
||
|
|
||
|
# Apply visl patches until they are upstreamed
|
||
|
for patch in /gstreamer/ci/docker/fedora/patches/*.patch; do
|
||
|
patch -p1 < "${patch}"
|
||
|
done
|
||
|
|
||
|
make defconfig
|
||
|
sync
|
||
|
make kvm_guest.config
|
||
|
|
||
|
echo "Disabling unused features..."
|
||
|
./scripts/config \
|
||
|
--disable USB \
|
||
|
--disable SOUND \
|
||
|
--disable SND \
|
||
|
--disable NETDEVICES \
|
||
|
--disable DRM \
|
||
|
--disable INPUT \
|
||
|
--disable I2C \
|
||
|
--disable HID \
|
||
|
--disable CRYPTO \
|
||
|
--disable IPV6
|
||
|
|
||
|
echo Enabling ${CONFIGS[@]}...
|
||
|
./scripts/config ${CONFIGS[@]/#/--enable }
|
||
|
|
||
|
make olddefconfig
|
||
|
make -j8 WERROR=0
|
||
|
|
||
|
popd
|
||
|
|
||
|
TARGET_DIR="$(dirname "$IMAGE")"
|
||
|
mkdir -p "$TARGET_DIR"
|
||
|
mv linux/arch/$SUBARCH/boot/bzImage "$IMAGE"
|
||
|
mv linux/.config $TARGET_DIR/.config
|
||
|
rm -rf linux
|