Jeongik Cha | d8f4655 | 2024-10-04 20:23:57 +0900 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 3 | show_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 Padhi | ac62a8b | 2024-12-06 00:48:07 +0000 | [diff] [blame] | 9 | echo "-k Build and use our custom kernel [default is cloud kernel]" |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 10 | 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 Cha | d8f4655 | 2024-10-04 20:23:57 +0900 | [diff] [blame] | 14 | |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 15 | arch="$(uname -m)" |
Saswat Padhi | ac62a8b | 2024-12-06 00:48:07 +0000 | [diff] [blame] | 16 | kernel_flag= |
Jeongik Cha | 06f4ac5 | 2024-11-12 15:56:05 +0900 | [diff] [blame] | 17 | release_flag= |
Saswat Padhi | 26c4ef3 | 2024-11-29 19:46:53 +0000 | [diff] [blame] | 18 | save_workdir_flag= |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 19 | shell_condition="||" |
Saswat Padhi | 26c4ef3 | 2024-11-29 19:46:53 +0000 | [diff] [blame] | 20 | |
Saswat Padhi | ac62a8b | 2024-12-06 00:48:07 +0000 | [diff] [blame] | 21 | while getopts "a:hkrsw" option; do |
maciek swiech | 0fdd051 | 2024-10-11 15:12:44 +0000 | [diff] [blame] | 22 | case ${option} in |
| 23 | a) |
maciek swiech | 0fdd051 | 2024-10-11 15:12:44 +0000 | [diff] [blame] | 24 | arch="$OPTARG" |
| 25 | ;; |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 26 | h) |
| 27 | show_help ; exit |
| 28 | ;; |
Saswat Padhi | ac62a8b | 2024-12-06 00:48:07 +0000 | [diff] [blame] | 29 | k) |
| 30 | kernel_flag="-k" |
| 31 | ;; |
Jeongik Cha | 06f4ac5 | 2024-11-12 15:56:05 +0900 | [diff] [blame] | 32 | r) |
| 33 | release_flag="-r" |
| 34 | ;; |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 35 | s) |
| 36 | shell_condition=";" |
| 37 | ;; |
Saswat Padhi | 26c4ef3 | 2024-11-29 19:46:53 +0000 | [diff] [blame] | 38 | w) |
| 39 | save_workdir_flag="-w" |
| 40 | ;; |
maciek swiech | 0fdd051 | 2024-10-11 15:12:44 +0000 | [diff] [blame] | 41 | *) |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 42 | echo "Invalid option: $OPTARG" ; exit 1 |
maciek swiech | 0fdd051 | 2024-10-11 15:12:44 +0000 | [diff] [blame] | 43 | ;; |
| 44 | esac |
| 45 | done |
| 46 | |
Saswat Padhi | bf8a9cb | 2024-12-04 02:32:33 +0000 | [diff] [blame] | 47 | if [[ "$arch" != "aarch64" && "$arch" != "x86_64" ]]; then |
| 48 | echo "Invalid architecture: $arch" ; exit 1 |
| 49 | fi |
| 50 | |
| 51 | if [ -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 |
| 55 | fi |
| 56 | |
Saswat Padhi | 957afce | 2024-11-27 23:04:22 +0000 | [diff] [blame] | 57 | docker 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 Padhi | 323a856 | 2025-01-27 13:54:07 -0800 | [diff] [blame^] | 61 | bash -c "./build.sh -a $arch $release_flag $kernel_flag $save_workdir_flag $shell_condition bash" |