aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Labatut <plabatut@google.com>2023-11-20 17:37:33 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-11-20 17:37:33 +0000
commit23b18868866b2470ed9b52095f401c2aca52d168 (patch)
treee3b0f92a4ef1770f97b53df76948c8cfce496457
parent8ed21937edb287fb5ae6524344b9e47e4b701380 (diff)
parent25f1246d03296419772b79e1e48b6fd407585a78 (diff)
downloadcuttlefish_vmm-23b18868866b2470ed9b52095f401c2aca52d168.tar.gz
Restore gfxstream_graphics_detector in host. am: 25f1246d03
Original change: https://android-review.googlesource.com/c/device/google/cuttlefish_vmm/+/2838655 Change-Id: Iedd349e84060572374e65eb2146499262eb16922 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--Android.bp16
-rw-r--r--gen_android_bp.py1
-rwxr-xr-xgen_android_bp.sh264
3 files changed, 17 insertions, 264 deletions
diff --git a/Android.bp b/Android.bp
index 5142f62..f76e01c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -26,6 +26,14 @@ cc_prebuilt_binary {
check_elf_files: false,
}
cc_prebuilt_binary {
+ name: "aarch64_linux_gnu_gfxstream_graphics_detector_for_crosvm",
+ srcs: ["aarch64-linux-gnu/bin/gfxstream_graphics_detector"],
+ stem: "gfxstream_graphics_detector",
+ relative_install_path: "aarch64-linux-gnu",
+ defaults: ["cuttlefish_host"],
+ check_elf_files: false,
+}
+cc_prebuilt_binary {
name: "aarch64_linux_gnu_libdrm.so.2_for_crosvm",
srcs: ["aarch64-linux-gnu/bin/libdrm.so.2"],
stem: "libdrm.so.2",
@@ -114,6 +122,14 @@ prebuilt_usr_share_host {
// check_elf_files: false,
// }
cc_prebuilt_binary {
+ name: "x86_64_linux_gnu_gfxstream_graphics_detector_for_crosvm",
+ srcs: ["x86_64-linux-gnu/bin/gfxstream_graphics_detector"],
+ stem: "gfxstream_graphics_detector",
+ relative_install_path: "x86_64-linux-gnu",
+ defaults: ["cuttlefish_host"],
+ check_elf_files: false,
+}
+cc_prebuilt_binary {
name: "x86_64_linux_gnu_libc++.so.1_binary_for_qemu",
srcs: ["qemu/x86_64-linux-gnu/bin/libc++.so.1"],
stem: "libc++.so.1",
diff --git a/gen_android_bp.py b/gen_android_bp.py
index 91aba12..7c02aec 100644
--- a/gen_android_bp.py
+++ b/gen_android_bp.py
@@ -187,6 +187,7 @@ def crosvm_binaries(arch: Architecture) -> Iterator[Path]:
"""Lists crosvm binary paths."""
dir = arch.dir() / "bin"
yield dir / "crosvm"
+ yield dir / "gfxstream_graphics_detector"
yield dir / "libminijail.so"
yield dir / "libgfxstream_backend.so"
yield from dir.glob("*.so.?")
diff --git a/gen_android_bp.sh b/gen_android_bp.sh
deleted file mode 100755
index 4e751d9..0000000
--- a/gen_android_bp.sh
+++ /dev/null
@@ -1,264 +0,0 @@
-#!/bin/bash
-#
-# This script generates Android.bp files for this and all subdirs of this
-#
-
-set -e
-
-readonly my_name=`basename $0`
-readonly seccomp_archs=("x86_64" "aarch64")
-# under get_arch_dir() in cuttlefish_vmm, where is seccomp?
-readonly subdir="etc/seccomp"
-
-# Replaces the generated section with content read from stdin.
-#
-# Args:
-# path to the file to edit in place
-# tag uniquely identifying the generated section.
-# The generated content is delimited by two lines ending with
-# "Start of generated ${tag}" and "End of generated ${tag}"
-function update_generated_section {
- local -r file="$1"
- local -r tag="$2"
- local -r lead="^.*Start of generated ${tag}$"
- local -r tail="^.*End of generated ${tag}$"
- egrep --silent "${lead}" "${file}"
- egrep --silent "${tail}" "${file}"
- sed -i -e "
- /$lead/,/$tail/{
- /$lead/{
- p;
- a \ // Generated by device/google/cuttlefish_vmm/gen_android_bp.sh
- r /dev/stdin
- };
- /$tail/p;
- d
- }" "${file}"""
-}
-
-function remove_trailing_slash {
- if [[ $1 == "/" ]]; then
- echo $i
- else
- echo ${1%/}
- fi
-}
-
-# define arch dir pattern: e.g. ${ARCH}-linux-gnu
-function get_arch_dir() {
- local suffix="-linux-gnu"
- local arch=$1
- echo ${arch}${suffix}
-}
-
-# take arch, return the path of the output Android.bp file
-function get_output_file() {
- local blueprint_dir=$1
- blueprint_dir="$(remove_trailing_slash ${blueprint_dir})"
- echo "${blueprint_dir}/Android.bp"
-}
-
-# utility function to enumerate policy files
-#
-# 1: seccomp dir to scan
-function scan_policy_name() {
- local seccomp_dir=$1
- (
- # pushd but no output to stdout/stderr
- # the output is taken and used by the caller
- pushd $seccomp_dir > /dev/null 2>&1
- ls -1
- popd > /dev/null 2>&1
- )
-}
-
-# starting from old Android.bp
-function gen_license() {
- local year=${1:-"2019"}
-cat <<EOF
-// Autogenerated via ${my_name}
-//
-// Copyright (C) ${year} 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.
-
-EOF
-}
-
-#
-# first two args are module type (e.g. prebuilt_usr_share_host)
-# and the whitespaces for indentation
-#
-# the rest must be in this form:
-# --name=value
-#
-# then, it simply generates this line repeatedly:
-# <indent>name: value,
-#
-# e.g. --name="\"foo\"" will generate
-# name: "foo",
-#
-function gen_module() {
- local mod_name=$1 # e.g. prebuilt_usr_share_host
- local indent="$2"
- shift 2
- local long_options=()
- local long_opt=""
- local OPTIND=1
- while getopts ":-:" op; do
- # a long opt like --srcs="some" is actually:
- # - + - + "srcs=some"
- # that's a short option '-' just like h, and
- # the OPTARGS of the option '-' is srcs=some
- if [[ "$op" != "-" ]]; then
- >&2 echo "gen_module does take long options with = only"
- exit 8
- fi
- long_op="${OPTARG%%=*}"
- OPTARG="${OPTARG#$long_op}"
- OPTARG="${OPTARG#=}"
- long_options+=( "$long_op" )
- declare local ${long_op}="${OPTARG}"
- done
-
- echo "$mod_name {"
- for field in "${long_options[@]}"; do
- eval local value=\$$field
- echo "${indent}${field}: ${value},"
- done
- echo "}"
-}
-
-# Reads lines from the input stream and outputs them with a slashes
-# at the beginning of each line.
-function comment_out() {
- # Internal Field Separator (IFS) cleared to preserve leading space.
- # -r predisables backslashe interpretation.
- while IFS= read -r line; do
- echo "// ${line}"
- done
-}
-
-function gen_android_bp4seccomp() {
- local arch="$1"
- local arch_dir="$(get_arch_dir ${arch})"
- local seccomp_dir="${arch_dir}/${subdir}"
- local where_in_etc_on_user_machine="cuttlefish/${arch_dir}/seccomp"
- gen_license 2019
- for i in $(scan_policy_name $seccomp_dir); do
- # first two are: e.g. prebuilt_usr_share_host and whitespace for intentation
- local base_name="$(basename $i)"
- gen_module "prebuilt_usr_share_host" ' ' \
- --name="\"${base_name}_at_${arch}\"" \
- --src="\"${subdir}/${base_name}\"" \
- --filename="\"${base_name}\"" \
- --sub_dir="\"${where_in_etc_on_user_machine}\""
- done
-}
-
-function gen_main_android_bp() {
- gen_license 2019
-
- cat <<EOF
-// NOTE: Using cc_prebuilt_binary because cc_prebuilt_library will add
-// unwanted .so file extensions when installing shared libraries
-
-EOF
-
-for arch_dir in $(get_arch_dir aarch64) $(get_arch_dir x86_64); do
- for i in $(echo $arch_dir/bin/{crosvm,gfxstream_graphics_detector,lib{minijail.so,gfxstream_backend.so,*.so{.0,.1,.2,.7}}} | xargs -n1 | sort); do
- name="${i//\//_}"
- name="${name//-/_}"
- name="${name/_bin_/_}"
- path="$(dirname $(dirname "$i"))"
- stem="$(basename "$i")"
-
-
- if [[ "crosvm" != "${stem}" ]]; then
- name="${name}_for_crosvm"
- fi
-
- # Command used to process gen_module output.
- comment_or_noop='cat'
-
- if [[ "x86_64_linux_gnu_crosvm" == "${name}" ]]; then
- echo '// Note: This is commented out to avoid a conflict with the binary built'
- echo '// from external/crosvm. This should be uncommented out when backporting to'
- echo '// older branches with just use the prebuilt and which do not build from'
- echo '// source.'
- comment_or_noop="comment_out"
- fi
-
- gen_module "cc_prebuilt_binary" ' ' \
- --name="\"${name}\"" \
- --srcs="[\"$i\"]" \
- --stem="\"$stem"\" \
- --relative_install_path="\"${path}\"" \
- --defaults="[\"cuttlefish_host\"]" \
- --check_elf_files="false" | "${comment_or_noop}"
- done
-done
-
- for binary_path in qemu/x86_64-linux-gnu/bin/*.so* qemu/x86_64-linux-gnu/bin/qemu-system*; do
- gen_module "cc_prebuilt_binary" ' ' \
- --name="\"x86_64_linux_gnu_$(basename "${binary_path}")_binary_for_qemu\"" \
- --srcs="[\"${binary_path}\"]" \
- --stem="\"$(basename "${binary_path}")"\" \
- --defaults="[\"cuttlefish_host\"]" \
- --check_elf_files="false"
- done
- resource_paths=(
- qemu/efi-virtio.rom
- qemu/keymaps/en-us
- qemu/opensbi-riscv64-generic-fw_dynamic.bin
- )
-
- for resource_path in "${resource_paths[@]}"
- do
- local base_name="$(basename "${resource_path}")"
- local arch='x86_64'
- local arch_dir="$(get_arch_dir ${arch})"
- local sub_dir="$(dirname "${resource_path}")"
- gen_module "prebuilt_usr_share_host" ' ' \
- --name="\"${arch}_${base_name}_resource_for_qemu\"" \
- --src="\"qemu/x86_64-linux-gnu/usr/share/${resource_path}\"" \
- --filename="\"${base_name}\"" \
- --sub_dir="\"${sub_dir}\""
- done
-}
-
-function generate_all_cuttlefish_host_package_android_bp() {
- #TODO: Handle Crosvm prebuilts which are currently performed manually.
- qemu_binaries="$(grep "_binary_for_qemu" Android.bp | sed 's/name: / /g')"
- qemu_resources="$(grep "_resource_for_qemu" Android.bp | sed 's/name: / /g')"
-
- local android_bp_file="../cuttlefish/build/Android.bp"
- echo "${qemu_binaries}" | update_generated_section "${android_bp_file}" "qemu_x86_64_linux_gnu_binary"
- echo "${qemu_resources}" | update_generated_section "${android_bp_file}" "qemu_x86_64_linux_gnu_resource"
-}
-
-
-# main
-
-# Set the current directory to the script location.
-cd "$(dirname "$0")"
-
-gen_main_android_bp > $(get_output_file .)
-generate_all_cuttlefish_host_package_android_bp
-
-
-for arch in ${seccomp_archs[@]}; do
- arch_dir=$(get_arch_dir ${arch})
- outfile="$(get_output_file ${arch_dir})"
- gen_android_bp4seccomp $arch > $outfile
-done