blob: 8f0ad5f1b51e5c36c57d394dad5aeef841cdb42c [file] [log] [blame]
#!/bin/bash
#
# Copyright (C) 2019 The Android Open Source Project
#
# 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.
# Unmount Android Runtime and Core Libraries APEX packages required in the chroot directory.
# This script emulates some the actions performed by `apexd`.
# This script undoes the work done by tools/mount-buildbot-apexes.sh.
# Make sure to keep these files in sync.
green='\033[0;32m'
nc='\033[0m'
# Setup as root, as some actions performed here require it.
adb root
adb wait-for-device
# Exit early if there is no chroot.
[[ -n "$ART_TEST_CHROOT" ]] || exit
# Check that ART_TEST_CHROOT is correctly defined.
[[ "$ART_TEST_CHROOT" = /* ]] || { echo "$ART_TEST_CHROOT is not an absolute path"; exit 1; }
# Directory containing extracted APEX packages' payloads (ext4 images) under
# the chroot directory.
apex_image_dir="/tmp/apex"
# deactivate_system_package APEX_NAME
# -----------------------------------
# Unmount APEX_NAME in `/apex` under the chroot directory and delete the
# corresponding APEX package payload (ext4 image).
deactivate_system_package() {
local apex_name=$1
local abs_image_filename="$ART_TEST_CHROOT$apex_image_dir/$apex_name.img"
local abs_mount_point="$ART_TEST_CHROOT/apex/$apex_name"
echo -e "${green}Deactivating package $apex_name${nc}"
# Unmount the package's payload (ext4 image).
if adb shell mount | grep -q "^/dev/block/loop[0-9]\+ on $abs_mount_point type ext4"; then
adb shell umount "$abs_mount_point"
adb shell rmdir "$abs_mount_point"
# Delete the ext4 image.
adb shell rm "$abs_image_filename"
fi
}
# Deactivate the Android Runtime APEX.
deactivate_system_package com.android.runtime
# Delete the image's directory.
adb shell rmdir "$ART_TEST_CHROOT$apex_image_dir"