xref: /aosp_15_r20/prebuilts/qemu-kernel/update_emu_kernels.sh (revision 8f44c3f556abf1c3d5b54135eb52d5c1f558a738)
1*8f44c3f5SXin Li#!/bin/bash
2*8f44c3f5SXin LiKERNEL_VERSION="5.15"
3*8f44c3f5SXin LiDEFAULT_BRANCH="aosp_kernel-common-android13-${KERNEL_VERSION}"
4*8f44c3f5SXin Li
5*8f44c3f5SXin Li# Examples:
6*8f44c3f5SXin Li# to update
7*8f44c3f5SXin Li# * kernel and goldfish modules (recommended):
8*8f44c3f5SXin Li#   ./update_emu_kernel.sh --bug 123 --bid 6332140
9*8f44c3f5SXin Li# * only goldfish modules:
10*8f44c3f5SXin Li#   ./update_emu_kernel.sh --bug 123 --bid 6332140 --update modules
11*8f44c3f5SXin Li# * only kernel:
12*8f44c3f5SXin Li#   ./update_emu_kernel.sh --bug 123 --bid 6332140 --update kernel
13*8f44c3f5SXin Liset -e
14*8f44c3f5SXin Liset -o errexit
15*8f44c3f5SXin Lisource gbash.sh
16*8f44c3f5SXin Li
17*8f44c3f5SXin LiDEFINE_int bug 0 "Bug with the reason for the update"
18*8f44c3f5SXin LiDEFINE_int bid 0 "Build id for goldfish modules"
19*8f44c3f5SXin LiDEFINE_string update "both" "Select which prebuilts to update, (kernel|modules|both)"
20*8f44c3f5SXin LiDEFINE_string branch "${DEFAULT_BRANCH}" "Branch for fetch_artifact"
21*8f44c3f5SXin Li
22*8f44c3f5SXin Lifetch_arch() {
23*8f44c3f5SXin Li  scratch_dir="${1}"
24*8f44c3f5SXin Li  branch="${2}"
25*8f44c3f5SXin Li  bid="${3}"
26*8f44c3f5SXin Li  do_fetch_kernel="${4}"
27*8f44c3f5SXin Li  do_fetch_modules="${5}"
28*8f44c3f5SXin Li  kernel_target="${6}"
29*8f44c3f5SXin Li  kernel_artifact="${7}"
30*8f44c3f5SXin Li  modules_target="${8}"
31*8f44c3f5SXin Li
32*8f44c3f5SXin Li  mkdir "${scratch_dir}"
33*8f44c3f5SXin Li  pushd "${scratch_dir}"
34*8f44c3f5SXin Li
35*8f44c3f5SXin Li  if [[ "${do_fetch_kernel}" -ne 0 ]]; then
36*8f44c3f5SXin Li    /google/data/ro/projects/android/fetch_artifact \
37*8f44c3f5SXin Li      --bid "${bid}" \
38*8f44c3f5SXin Li      --target "${kernel_target}" \
39*8f44c3f5SXin Li      "${kernel_artifact}"
40*8f44c3f5SXin Li  fi
41*8f44c3f5SXin Li
42*8f44c3f5SXin Li  if [[ "${do_fetch_modules}" -ne 0 ]]; then
43*8f44c3f5SXin Li    /google/data/ro/projects/android/fetch_artifact \
44*8f44c3f5SXin Li      --bid "${bid}" \
45*8f44c3f5SXin Li      --target "${modules_target}" \
46*8f44c3f5SXin Li      "*.ko"
47*8f44c3f5SXin Li  fi
48*8f44c3f5SXin Li
49*8f44c3f5SXin Li  popd
50*8f44c3f5SXin Li}
51*8f44c3f5SXin Li
52*8f44c3f5SXin Limove_artifacts() {
53*8f44c3f5SXin Li  scratch_dir="${1}"
54*8f44c3f5SXin Li  dst_dir="${2}"
55*8f44c3f5SXin Li  kernel_artifact="${3}"
56*8f44c3f5SXin Li  kernel_filename="${4}"
57*8f44c3f5SXin Li  do_fetch_modules="${5}"
58*8f44c3f5SXin Li
59*8f44c3f5SXin Li  pushd "${scratch_dir}"
60*8f44c3f5SXin Li
61*8f44c3f5SXin Li  if [[ -f "${kernel_artifact}" ]]; then
62*8f44c3f5SXin Li    mv "${kernel_artifact}" "${dst_dir}/${kernel_filename}"
63*8f44c3f5SXin Li  fi
64*8f44c3f5SXin Li
65*8f44c3f5SXin Li  if [[ "${do_fetch_modules}" -ne 0 ]]; then
66*8f44c3f5SXin Li    rm -rf "${dst_dir}/ko-new"
67*8f44c3f5SXin Li    rm -rf "${dst_dir}/ko-old"
68*8f44c3f5SXin Li    mkdir "${dst_dir}/ko-new"
69*8f44c3f5SXin Li    mv *.ko "${dst_dir}/ko-new"
70*8f44c3f5SXin Li    mv "${dst_dir}/ko" "${dst_dir}/ko-old"
71*8f44c3f5SXin Li    mv "${dst_dir}/ko-new" "${dst_dir}/ko"
72*8f44c3f5SXin Li    rm -rf "${dst_dir}/ko-old"
73*8f44c3f5SXin Li  fi
74*8f44c3f5SXin Li
75*8f44c3f5SXin Li  popd
76*8f44c3f5SXin Li}
77*8f44c3f5SXin Li
78*8f44c3f5SXin Limake_git_commit() {
79*8f44c3f5SXin Li  x86_dst_dir="${1}"
80*8f44c3f5SXin Li  arm_dst_dir="${2}"
81*8f44c3f5SXin Li  git add "${x86_dst_dir}"
82*8f44c3f5SXin Li  git add "${arm_dst_dir}"
83*8f44c3f5SXin Li
84*8f44c3f5SXin Li  git commit -a -m "$(
85*8f44c3f5SXin Li  echo Update kernel prebuilts to go/ab/${FLAGS_bid}
86*8f44c3f5SXin Li  echo
87*8f44c3f5SXin Li  echo Test: TreeHugger
88*8f44c3f5SXin Li  echo Bug: ${FLAGS_bug}
89*8f44c3f5SXin Li  )"
90*8f44c3f5SXin Li
91*8f44c3f5SXin Li  git commit --amend -s
92*8f44c3f5SXin Li}
93*8f44c3f5SXin Li
94*8f44c3f5SXin Limain() {
95*8f44c3f5SXin Li  fail=0
96*8f44c3f5SXin Li
97*8f44c3f5SXin Li  if [[ "${FLAGS_bug}" -eq 0 ]]; then
98*8f44c3f5SXin Li    echo "Must specify --bug" 1>&2
99*8f44c3f5SXin Li    fail=1
100*8f44c3f5SXin Li  fi
101*8f44c3f5SXin Li
102*8f44c3f5SXin Li  if [[ "${FLAGS_bid}" -eq 0 ]]; then
103*8f44c3f5SXin Li    echo "Must specify --bid" 1>&2
104*8f44c3f5SXin Li    fail=1
105*8f44c3f5SXin Li  fi
106*8f44c3f5SXin Li
107*8f44c3f5SXin Li  do_fetch_kernel=0
108*8f44c3f5SXin Li  do_fetch_modules=0
109*8f44c3f5SXin Li  case "${FLAGS_update}" in
110*8f44c3f5SXin Li    both)
111*8f44c3f5SXin Li      do_fetch_kernel=1
112*8f44c3f5SXin Li      do_fetch_modules=1
113*8f44c3f5SXin Li      ;;
114*8f44c3f5SXin Li    kernel)
115*8f44c3f5SXin Li      do_fetch_kernel=1
116*8f44c3f5SXin Li      ;;
117*8f44c3f5SXin Li    modules)
118*8f44c3f5SXin Li      do_fetch_modules=1
119*8f44c3f5SXin Li      ;;
120*8f44c3f5SXin Li    *)
121*8f44c3f5SXin Li      echo "Unexpected value for --update, '${FLAGS_update}'" 1>&2
122*8f44c3f5SXin Li      fail=1
123*8f44c3f5SXin Li      ;;
124*8f44c3f5SXin Li  esac
125*8f44c3f5SXin Li
126*8f44c3f5SXin Li  if [[ "${fail}" -ne 0 ]]; then
127*8f44c3f5SXin Li    exit "${fail}"
128*8f44c3f5SXin Li  fi
129*8f44c3f5SXin Li
130*8f44c3f5SXin Li  here="$(pwd)"
131*8f44c3f5SXin Li  x86_dst_dir="${here}/x86_64/${KERNEL_VERSION}"
132*8f44c3f5SXin Li  arm_dst_dir="${here}/arm64/${KERNEL_VERSION}"
133*8f44c3f5SXin Li
134*8f44c3f5SXin Li  if [[ ! -d "${x86_dst_dir}" ]]; then
135*8f44c3f5SXin Li    mkdir "${x86_dst_dir}"
136*8f44c3f5SXin Li  fi
137*8f44c3f5SXin Li  if [[ ! -d "${x86_dst_dir}/ko" ]]; then
138*8f44c3f5SXin Li    mkdir "${x86_dst_dir}/ko"
139*8f44c3f5SXin Li  fi
140*8f44c3f5SXin Li  if [[ ! -d "${arm_dst_dir}" ]]; then
141*8f44c3f5SXin Li    mkdir "${arm_dst_dir}"
142*8f44c3f5SXin Li  fi
143*8f44c3f5SXin Li  if [[ ! -d "${arm_dst_dir}/ko" ]]; then
144*8f44c3f5SXin Li    mkdir "${arm_dst_dir}/ko"
145*8f44c3f5SXin Li  fi
146*8f44c3f5SXin Li
147*8f44c3f5SXin Li  scratch_dir="$(mktemp -d)"
148*8f44c3f5SXin Li  x86_scratch_dir="${scratch_dir}/x86"
149*8f44c3f5SXin Li  arm_scratch_dir="${scratch_dir}/arm"
150*8f44c3f5SXin Li
151*8f44c3f5SXin Li  fetch_arch "${x86_scratch_dir}" \
152*8f44c3f5SXin Li    "${FLAGS_branch}" "${FLAGS_bid}" \
153*8f44c3f5SXin Li    "${do_fetch_kernel}" "${do_fetch_modules}" \
154*8f44c3f5SXin Li    "kernel_x86_64" "bzImage" \
155*8f44c3f5SXin Li    "kernel_virt_x86_64"
156*8f44c3f5SXin Li
157*8f44c3f5SXin Li  fetch_arch "${arm_scratch_dir}" \
158*8f44c3f5SXin Li    "${FLAGS_branch}" "${FLAGS_bid}" \
159*8f44c3f5SXin Li    "${do_fetch_kernel}" "${do_fetch_modules}" \
160*8f44c3f5SXin Li    "kernel_aarch64" "Image" \
161*8f44c3f5SXin Li    "kernel_virt_aarch64"
162*8f44c3f5SXin Li
163*8f44c3f5SXin Li  if [[ -f "${arm_scratch_dir}/Image" ]]; then
164*8f44c3f5SXin Li    gzip -9 "${arm_scratch_dir}/Image"
165*8f44c3f5SXin Li  fi
166*8f44c3f5SXin Li
167*8f44c3f5SXin Li  move_artifacts "${x86_scratch_dir}" "${x86_dst_dir}" \
168*8f44c3f5SXin Li    "bzImage" "kernel-${KERNEL_VERSION}" \
169*8f44c3f5SXin Li    "${do_fetch_modules}"
170*8f44c3f5SXin Li
171*8f44c3f5SXin Li  move_artifacts "${arm_scratch_dir}" "${arm_dst_dir}" \
172*8f44c3f5SXin Li    "Image.gz" "kernel-${KERNEL_VERSION}-gz" \
173*8f44c3f5SXin Li    "${do_fetch_modules}"
174*8f44c3f5SXin Li
175*8f44c3f5SXin Li  make_git_commit "${x86_dst_dir}" "${arm_dst_dir}"
176*8f44c3f5SXin Li}
177*8f44c3f5SXin Li
178*8f44c3f5SXin Ligbash::main "$@"
179