Restore gfxstream_graphics_detector in host.

This was removed from host package by mistake by
2818639: Migrate code generation to typed python.

Also remove the shell generator.

Bug: b/296286524
Change-Id: Ib6c45c54fc7bd4fcbc639ab19e8ea7b80374fb2f
diff --git a/Android.bp b/Android.bp
index 5142f62..f76e01c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -26,6 +26,14 @@
   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 @@
 //   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 @@
     """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