162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0+
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# Build a kvm-ready Linux kernel from the tree in the current directory.
562306a36Sopenharmony_ci#
662306a36Sopenharmony_ci# Usage: kvm-build.sh config-template resdir
762306a36Sopenharmony_ci#
862306a36Sopenharmony_ci# Copyright (C) IBM Corporation, 2011
962306a36Sopenharmony_ci#
1062306a36Sopenharmony_ci# Authors: Paul E. McKenney <paulmck@linux.ibm.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciif test -f "$TORTURE_STOPFILE"
1362306a36Sopenharmony_cithen
1462306a36Sopenharmony_ci	echo "kvm-build.sh early exit due to run STOP request"
1562306a36Sopenharmony_ci	exit 1
1662306a36Sopenharmony_cifi
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciconfig_template=${1}
1962306a36Sopenharmony_ciif test -z "$config_template" -o ! -f "$config_template" -o ! -r "$config_template"
2062306a36Sopenharmony_cithen
2162306a36Sopenharmony_ci	echo "kvm-build.sh :$config_template: Not a readable file"
2262306a36Sopenharmony_ci	exit 1
2362306a36Sopenharmony_cifi
2462306a36Sopenharmony_ciresdir=${2}
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciT="`mktemp -d ${TMPDIR-/tmp}/kvm-build.sh.XXXXXX`"
2762306a36Sopenharmony_citrap 'rm -rf $T' 0
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cicp ${config_template} $T/config
3062306a36Sopenharmony_cicat << ___EOF___ >> $T/config
3162306a36Sopenharmony_ciCONFIG_INITRAMFS_SOURCE="$TORTURE_INITRD"
3262306a36Sopenharmony_ciCONFIG_VIRTIO_PCI=y
3362306a36Sopenharmony_ciCONFIG_VIRTIO_CONSOLE=y
3462306a36Sopenharmony_ci___EOF___
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciconfiginit.sh $T/config $resdir
3762306a36Sopenharmony_ciretval=$?
3862306a36Sopenharmony_ciif test $retval -gt 1
3962306a36Sopenharmony_cithen
4062306a36Sopenharmony_ci	exit 2
4162306a36Sopenharmony_cifi
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci# Tell "make" to use double the number of real CPUs on the build system.
4462306a36Sopenharmony_cincpus="`getconf _NPROCESSORS_ONLN`"
4562306a36Sopenharmony_cimake -j$((2 * ncpus)) $TORTURE_KMAKE_ARG > $resdir/Make.out 2>&1
4662306a36Sopenharmony_ciretval=$?
4762306a36Sopenharmony_ciif test $retval -ne 0 || grep "rcu[^/]*": < $resdir/Make.out | grep -E -q "Stop|Error|error:|warning:" || grep -E -q "Stop|Error|error:" < $resdir/Make.out
4862306a36Sopenharmony_cithen
4962306a36Sopenharmony_ci	echo Kernel build error
5062306a36Sopenharmony_ci	grep -E "Stop|Error|error:|warning:" < $resdir/Make.out
5162306a36Sopenharmony_ci	echo Run aborted.
5262306a36Sopenharmony_ci	exit 3
5362306a36Sopenharmony_cifi
54