blob: e3adcaec901d81cd905aad84a0be4216da3a3a8e [file] [log] [blame]
Jeongik Chad8f46552024-10-04 20:23:57 +09001#!/bin/bash
2
Saswat Padhibf8a9cb2024-12-04 02:32:33 +00003show_help() {
4 echo "Usage: sudo $0 [OPTION]..."
5 echo "Builds a debian image and save it to image.raw."
6 echo "Options:"
7 echo "-h Print usage and this help message and exit."
8 echo "-a ARCH Architecture of the image [default is host arch: $(uname -m)]"
Saswat Padhiac62a8b2024-12-06 00:48:07 +00009 echo "-k Build and use our custom kernel [default is cloud kernel]"
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000010 echo "-r Release mode build"
11 echo "-s Leave a shell open [default: only if the build fails]"
12 echo "-w Save temp work directory in the container [for debugging]"
13}
Jeongik Chad8f46552024-10-04 20:23:57 +090014
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000015arch="$(uname -m)"
Saswat Padhiac62a8b2024-12-06 00:48:07 +000016kernel_flag=
Jeongik Cha06f4ac52024-11-12 15:56:05 +090017release_flag=
Saswat Padhi26c4ef32024-11-29 19:46:53 +000018save_workdir_flag=
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000019shell_condition="||"
Saswat Padhi26c4ef32024-11-29 19:46:53 +000020
Saswat Padhiac62a8b2024-12-06 00:48:07 +000021while getopts "a:hkrsw" option; do
maciek swiech0fdd0512024-10-11 15:12:44 +000022 case ${option} in
23 a)
maciek swiech0fdd0512024-10-11 15:12:44 +000024 arch="$OPTARG"
25 ;;
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000026 h)
27 show_help ; exit
28 ;;
Saswat Padhiac62a8b2024-12-06 00:48:07 +000029 k)
30 kernel_flag="-k"
31 ;;
Jeongik Cha06f4ac52024-11-12 15:56:05 +090032 r)
33 release_flag="-r"
34 ;;
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000035 s)
36 shell_condition=";"
37 ;;
Saswat Padhi26c4ef32024-11-29 19:46:53 +000038 w)
39 save_workdir_flag="-w"
40 ;;
maciek swiech0fdd0512024-10-11 15:12:44 +000041 *)
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000042 echo "Invalid option: $OPTARG" ; exit 1
maciek swiech0fdd0512024-10-11 15:12:44 +000043 ;;
44 esac
45done
46
Saswat Padhibf8a9cb2024-12-04 02:32:33 +000047if [[ "$arch" != "aarch64" && "$arch" != "x86_64" ]]; then
48 echo "Invalid architecture: $arch" ; exit 1
49fi
50
51if [ -z "$ANDROID_BUILD_TOP" ] ; then
52 echo '`ANDROID_BUILD_TOP` is undefined.'
53 echo 'Please `lunch` an Android target, or manually set the variable.'
54 exit 1
55fi
56
Saswat Padhi957afce2024-11-27 23:04:22 +000057docker run --privileged -it -v /dev:/dev \
58 -v "$ANDROID_BUILD_TOP/packages/modules/Virtualization:/root/Virtualization" \
59 --workdir /root/Virtualization/build/debian \
60 ubuntu:22.04 \
Saswat Padhi323a8562025-01-27 13:54:07 -080061 bash -c "./build.sh -a $arch $release_flag $kernel_flag $save_workdir_flag $shell_condition bash"