69 lines
1.8 KiB
Bash
Executable File
69 lines
1.8 KiB
Bash
Executable File
#!/bin/sh -ex
|
|
# Environment variables are described in README.md
|
|
|
|
KERNEL_REMOTE_NAME="${KERNEL_REMOTE_NAME:-net-next}"
|
|
KERNEL_URL="${KERNEL_URL:-https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git}"
|
|
KERNEL_BRANCH="${KERNEL_BRANCH:-master}"
|
|
KERNEL_DIR=/cache/linux
|
|
|
|
|
|
# Add the kernel repository as git remote, fetch it, checkout the given branch
|
|
prepare_git_repo() {
|
|
local url
|
|
|
|
if ! [ -d "$KERNEL_DIR" ]; then
|
|
mkdir -p "$KERNEL_DIR"
|
|
git -C "$KERNEL_DIR" init
|
|
fi
|
|
|
|
cd "$KERNEL_DIR"
|
|
|
|
if ! git remote | grep -q "^$KERNEL_REMOTE_NAME$"; then
|
|
git remote add "$KERNEL_REMOTE_NAME" "$KERNEL_URL"
|
|
else
|
|
url="$(git remote get-url "$KERNEL_REMOTE_NAME")"
|
|
if [ "$url" != "$KERNEL_URL" ]; then
|
|
set +x
|
|
echo "ERROR: the checked out repository already has" \
|
|
"a remote with the same name, pointing to a" \
|
|
"different URL!"
|
|
echo
|
|
echo "KERNEL_REMOTE_NAME: $KERNEL_REMOTE_NAME"
|
|
echo "KERNEL_URL (parameter): $KERNEL_URL"
|
|
echo "KERNEL_URL (checked out): $url"
|
|
echo
|
|
echo "Please restart the job, and either change the" \
|
|
"KERNEL_URL parameter to the same value, or" \
|
|
"use a different KERNEL_REMOTE_NAME."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
git fetch "$KERNEL_REMOTE_NAME"
|
|
git checkout "$KERNEL_REMOTE_NAME/$KERNEL_BRANCH"
|
|
}
|
|
|
|
update_kernel_config() {
|
|
local previous="/cache/kernel-test/previous.config"
|
|
local fragment="/cache/kernel-test/fragment.config"
|
|
|
|
cd "$KERNEL_DIR"
|
|
make "$KERNEL_CONFIG_BASE"
|
|
scripts/kconfig/merge_config.sh -m .config "$fragment"
|
|
make olddefconfig
|
|
|
|
if [ -e "$previous" ] && ! diff -q "$previous" .config; then
|
|
# Remove everything built with previous config
|
|
echo "Kernel config changed, running 'make clean'"
|
|
make clean
|
|
fi
|
|
|
|
cp .config "$previous"
|
|
}
|
|
|
|
prepare_git_repo
|
|
update_kernel_config
|
|
|
|
make "-j$(nproc)"
|
|
cp arch/x86/boot/bzImage /cache/kernel-test/linux
|