Build port_listener in debian VM

Bug: 340126051
Test: check /usr/local/bin/port_listener in the VM
Change-Id: Ic596b2865766d3a98ab1d110a4745a9a1e2b172b
diff --git a/build/debian/build.sh b/build/debian/build.sh
index 5894eaf..655e8d2 100755
--- a/build/debian/build.sh
+++ b/build/debian/build.sh
@@ -100,7 +100,7 @@
 	wget ${url} -O ${dst}/files/usr/local/bin/ttyd/AVF
 	chmod 777 ${dst}/files/usr/local/bin/ttyd/AVF
 
-        pushd $(dirname $0)/forwarder_guest > /dev/null
+	pushd $(dirname $0)/forwarder_guest > /dev/null
 		RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc" cargo build \
 			--target aarch64-unknown-linux-gnu \
 			--target-dir ${workdir}/forwarder_guest
@@ -108,6 +108,14 @@
 		cp ${workdir}/forwarder_guest/aarch64-unknown-linux-gnu/debug/forwarder_guest ${dst}/files/usr/local/bin/forwarder_guest/AVF
 		chmod 777 ${dst}/files/usr/local/bin/forwarder_guest/AVF
 	popd > /dev/null
+
+	# Pasting files under port_listener into /etc/port_listener
+	pushd $(dirname $0) > /dev/null
+		for file in $(find port_listener -type f); do
+			mkdir -p ${dst}/files/etc/${file}
+			cp ${file} ${dst}/files/etc/${file}/AVF
+		done
+	popd > /dev/null
 }
 
 run_fai() {
diff --git a/build/debian/fai_config/scripts/AVF/20-port_listener b/build/debian/fai_config/scripts/AVF/20-port_listener
new file mode 100755
index 0000000..586a551
--- /dev/null
+++ b/build/debian/fai_config/scripts/AVF/20-port_listener
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+set -e
+chmod +x $target/etc/port_listener/build.sh
+$ROOTCMD /bin/bash -c "/etc/port_listener/build.sh /usr/local/bin"
+rm -rf $target/etc/port_listener
diff --git a/build/debian/port_listener/build.sh b/build/debian/port_listener/build.sh
index a1d0205..9aeba05 100755
--- a/build/debian/port_listener/build.sh
+++ b/build/debian/port_listener/build.sh
@@ -3,10 +3,18 @@
 set -e
 
 check_sudo() {
-	if [ "$EUID" -ne 0 ]; then
-		echo "Please run as root."
-		exit
-	fi
+    if [ "$EUID" -ne 0 ]; then
+        echo "Please run as root."
+        exit
+    fi
+}
+
+parse_options() {
+    if [ -n "$1" ]; then
+        out_dir=$1
+    else
+        out_dir=${PWD}
+    fi
 }
 
 install_prerequisites() {
@@ -14,15 +22,14 @@
     apt install --no-install-recommends --assume-yes \
         bpftool \
         clang \
+        g++ \
         libbpf-dev \
-        libgoogle-glog-dev \
-        libstdc++-14-dev
+        libgoogle-glog-dev
 }
 
 build_port_listener() {
     cp $(dirname $0)/src/* ${workdir}
-    out_dir=${PWD}
-    pushd ${workdir}
+    pushd ${workdir} > /dev/null
         bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
         clang \
             -O2 \
@@ -40,15 +47,16 @@
             -o port_listener \
             main.cc
         cp port_listener ${out_dir}
-    popd
+    popd > /dev/null
 }
 
 clean_up() {
-	rm -rf ${workdir}
+    rm -rf ${workdir}
 }
 trap clean_up EXIT
 workdir=$(mktemp -d)
 
 check_sudo
+parse_options $@
 install_prerequisites
 build_port_listener