#!/bin/bash # Wrapper around dev-environment.sh which runs an automated native build # using a control image, and sets up an FTP server on the host to upload # results to. # If you already have an FTP server, export FTP_SERVER and/or FTP_PORT. # Parse arguments if test $Argc -ne 1 { echo "usage: $0 CONTROL_IMAGE" > !2 exit 1 } if test ! -f $1 { echo "Filesystem image $1 missing" > !2 exit 1 } global HDCFILE := $[readlink -f $1] INCLUDE unique-port.sh # Do we already have an FTP daemon? if test -z $FTP_SERVER { global FTP_SERVER := '127.0.0.1' } elif test -z $FTP_PORT { global FTP_PORT := '21' } if test -z $FTP_PORT { if test -z $[which toybox] { echo "Warning: can't find toybox, no ftp daemon launched." > !2 } else { global FTP_PORT := $[unique_port] echo === launching FTP daemon on port $FTP_PORT # Fire off an ftp daemon, making sure it's killed when this script exits. # (We use the busybox version because no two ftp daemons have quite the same # command line arguments, and this one's a known quantity.) mkdir -p upload toybox nc -s 127.0.0.1 -p $FTP_PORT -L busybox ftpd -w upload & trap "kill $[jobs -p]" EXIT disown $[jobs -p] # QEMU's alias for host loopback global FTP_SERVER := '10.0.2.2' } } # Run emulator as a child process, feeding in -hdc and some extra environment # variables so it auto-launches the build process. export HDC = $HDCFILE global NATIVE_BUILD := $[echo $HDCFILE | sed -e 's@.*/@@' -e 's@[.]hdc$@@] export KERNEL_EXTRA = ""FTP_SERVER=$FTP_SERVER FTP_PORT=$FTP_PORT NATIVE_BUILD=$NATIVE_BUILD $KERNEL_EXTRA"" test -z $HDB && rm -f hdb.img ./dev-environment.sh echo === End native build