Add script to resync kernel configs
It runs inside the chroot and takes the kernel source dir as an
argument.
BUG=None
TEST=`./cos/resync_kernel_configs.sh --kernel_tree ../third_party/kernel/v6.6` inside the chroot
RELEASE_NOTE=None
Change-Id: I638b09ce81d3d5c341bcd83dd18700068352120f
Reviewed-on: https://cos-review.googlesource.com/c/cos/scripts/+/88619
Tested-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Reviewed-by: Kevin Berry <kpberry@google.com>
diff --git a/resync_kernel_configs.sh b/resync_kernel_configs.sh
new file mode 100755
index 0000000..29d8e9a
--- /dev/null
+++ b/resync_kernel_configs.sh
@@ -0,0 +1,67 @@
+# Copyright 2024 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
+SCRIPT_ROOT=${SCRIPT_ROOT%cos}
+. "${SCRIPT_ROOT}/build_library/build_common.sh" || exit 1
+
+# Script must be run inside the chroot.
+restart_in_chroot_if_needed "$@"
+
+DEFINE_string kernel_tree "" \
+ "In-chroot path to the kernel tree to sync configs in."
+
+# Parse command line.
+FLAGS "$@" || exit 1
+eval set -- "${FLAGS_ARGV}"
+
+switch_to_strict_mode
+
+sync_config() {
+ local -r config=$1
+ local -r arch=$2
+ local tuple
+ case "${arch}" in
+ x86_64)
+ tuple=x86_64-cros-linux-gnu
+ ;;
+ arm64)
+ tuple=aarch64-cros-linux-gnu
+ ;;
+ *)
+ error "Unknown arch ${arch}"
+ return 1
+ ;;
+ esac
+ local build_dir
+ build_dir="$(mktemp -d)"
+ cp "${config}" "${build_dir}/.config"
+ make -C "${FLAGS_kernel_tree}" O="${build_dir}" ARCH="${arch}" \
+ CC="${tuple}-clang" LD="${tuple}-ld.lld" CROSS_COMPILE="${tuple}-" \
+ olddefconfig
+ cp "${build_dir}/.config" "${config}"
+ rm -rf "${build_dir}"
+}
+
+main() {
+ if [[ -z "${FLAGS_kernel_tree}" ]]; then
+ error "Please provide a --kernel_tree value"
+ return 1
+ fi
+ update_chroot
+ sync_config "${FLAGS_kernel_tree}/arch/x86/configs/lakitu_defconfig" x86_64
+ sync_config "${FLAGS_kernel_tree}/arch/arm64/configs/lakitu_defconfig" arm64
+}
+
+main "$@"