xref: /nrf52832-nimble/rt-thread/tools/kconfig-frontends/scripts/ksync.sh (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero#!/bin/sh
2*10465441SEvalZeroset -e
3*10465441SEvalZero
4*10465441SEvalZeromy_name="${0##*/}"
5*10465441SEvalZero
6*10465441SEvalZero# If an argument is given, it's the location
7*10465441SEvalZero# of the Linux kernel source tree
8*10465441SEvalZerok_dir="${1}"
9*10465441SEvalZeroif [ ! \( -n "${k_dir}" -a -d "${k_dir}/kernel" \) ]; then
10*10465441SEvalZero    if [ -n "${k_dir}" ]; then
11*10465441SEvalZero        printf "%s: \`%s': not a Linux kernel source tree\n"    \
12*10465441SEvalZero               "${my_name}" "${k_dir}"
13*10465441SEvalZero    else
14*10465441SEvalZero        printf "Usage: %s /path/to/kernel/dir\n" "${my_name}"
15*10465441SEvalZero    fi
16*10465441SEvalZero    exit 1
17*10465441SEvalZerofi
18*10465441SEvalZero
19*10465441SEvalZero# Save current version
20*10465441SEvalZerok_cset_old=$( head -n 1 .version |awk '{ print $(2); }' )
21*10465441SEvalZero
22*10465441SEvalZero# Get the kernel version
23*10465441SEvalZeroeval $( head -n 5 "${k_dir}/Makefile"                       \
24*10465441SEvalZero        |sed -e 's/^/K_/; s/"//g; s/ = \{0,1\}/="/; s/$/"/;'  \
25*10465441SEvalZero      )
26*10465441SEvalZerok_cset="$( cd "${k_dir}";                   \
27*10465441SEvalZero           git log -n 1 --pretty='format:%H' \
28*10465441SEvalZero         )"
29*10465441SEvalZeroprintf "Found Linux kernel %d.%d.%d%s '%s' (%7.7s)\n"   \
30*10465441SEvalZero       "${K_VERSION}" "${K_PATCHLEVEL}" "${K_SUBLEVEL}" \
31*10465441SEvalZero       "${K_EXTRAVERSION}" "${K_NAME}" "${k_cset}"
32*10465441SEvalZero
33*10465441SEvalZero# Get the kconfig-frontends version
34*10465441SEvalZerokf_version="$( tail -n 1 .version )"
35*10465441SEvalZero
36*10465441SEvalZero# Store the new version
37*10465441SEvalZeroprintf "%d.%d.%d%s %s %s\n%s\n"             \
38*10465441SEvalZero       "${K_VERSION}" "${K_PATCHLEVEL}"     \
39*10465441SEvalZero       "${K_SUBLEVEL}" "${K_EXTRAVERSION}"  \
40*10465441SEvalZero       "${k_cset}" "${K_NAME}"              \
41*10465441SEvalZero       "${kf_version}"                      \
42*10465441SEvalZero       >.version
43*10465441SEvalZero
44*10465441SEvalZero# Sync-up the files
45*10465441SEvalZerok_files=""
46*10465441SEvalZerowhile read k_file trash kf_file; do
47*10465441SEvalZero    k_files="${k_files} ${k_file}"
48*10465441SEvalZero    mkdir -p "${kf_file%/*}"
49*10465441SEvalZero    cp -v "${k_dir}/${k_file}" "${kf_file}"
50*10465441SEvalZero    if [ -f "${kf_file}.patch" ]; then
51*10465441SEvalZero        patch --no-backup-if-mismatch -g0 -F1 -p1 -f <"${kf_file}.patch"
52*10465441SEvalZero    fi
53*10465441SEvalZerodone <scripts/ksync.list
54*10465441SEvalZero
55*10465441SEvalZero# Save the changelog between the old cset and now
56*10465441SEvalZeroprintf "Synced-up these changes:\n"
57*10465441SEvalZero( cd "${k_dir}"
58*10465441SEvalZero  git log --no-merges --pretty='tformat:%h %s'  \
59*10465441SEvalZero    "${k_cset_old}..${k_cset}"                  \
60*10465441SEvalZero    ${k_files}                                  \
61*10465441SEvalZero)|tac                                           \
62*10465441SEvalZero |tee -a "scripts/ksync.log"                    \
63*10465441SEvalZero |sed -e 's/^/    /;'
64