diff options
author | Pierre Labatut <plabatut@google.com> | 2023-11-20 18:24:30 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-11-20 18:24:30 +0000 |
commit | a5533cacc8e9dffd59ce48b0473fa4821569581c (patch) | |
tree | e3b0f92a4ef1770f97b53df76948c8cfce496457 | |
parent | f357965caa30e401bbfad0805be6bb7844c1bae0 (diff) | |
parent | 28ac73807c1284d1bc82b7191361cc4c2797dc35 (diff) | |
download | cuttlefish_vmm-a5533cacc8e9dffd59ce48b0473fa4821569581c.tar.gz |
Restore gfxstream_graphics_detector in host. am: 25f1246d03 am: 28ac73807c
Original change: https://android-review.googlesource.com/c/device/google/cuttlefish_vmm/+/2838655
Change-Id: Iaf02b7aa8143ffdbb035e86a7ed720204653339b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | Android.bp | 16 | ||||
-rw-r--r-- | gen_android_bp.py | 1 | ||||
-rwxr-xr-x | gen_android_bp.sh | 264 |
3 files changed, 17 insertions, 264 deletions
@@ -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 |