The original check of /proc/net/tcp did not work on a headless Ubuntu 18.04.02 server. This new check- -and-reset routine should be equivalent if the script is executed. The assumption of DISPLAY=:1 was also troublesome in an environment where multiple VNC servers are running.
Changes: If the user sources this script, it will perform the new check-and-reset function as well as set DISPLAY to the instance found. This means EXTRACMD on certain builds can now be, e.g.: source ${SCRIPTSDIR}/checkvnc; oe-selftest ... This change has been added to run-config and config.json. Signed-off-by: Thomas Goodwin <btgood...@geontech.com> --- config.json | 8 ++++---- scripts/checkvnc | 35 +++++++++++++++++++++++++++++------ scripts/run-config | 2 +- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/config.json b/config.json index 2252b83..3d13720 100644 --- a/config.json +++ b/config.json @@ -67,7 +67,7 @@ }, "step3" : { "BUILDHISTORY" : false, - "EXTRACMDS" : ["${SCRIPTSDIR}/checkvnc; DISPLAY=:1 oe-selftest -r runqemu meta_ide -j 15"], + "EXTRACMDS" : ["source ${SCRIPTSDIR}/checkvnc; oe-selftest -r runqemu meta_ide -j 15"], "ADDLAYER" : ["${BUILDDIR}/../meta-selftest"] } }, @@ -149,7 +149,7 @@ "EXTRACMDS" : ["bitbake-selftest"] }, "step2" : { - "EXTRACMDS" : ["${SCRIPTSDIR}/checkvnc; DISPLAY=:1 oe-selftest --skip-tests distrodata.Distrodata.test_checkpkg buildoptions.SourceMirroring.test_yocto_source_mirror -j 15"], + "EXTRACMDS" : ["source ${SCRIPTSDIR}/checkvnc; oe-selftest --skip-tests distrodata.Distrodata.test_checkpkg buildoptions.SourceMirroring.test_yocto_source_mirror -j 15"], "ADDLAYER" : ["${BUILDDIR}/../meta-selftest"] }, "step3" : { @@ -166,7 +166,7 @@ ] }, "step2" : { - "EXTRACMDS" : ["${SCRIPTSDIR}/checkvnc; DISPLAY=:1 oe-selftest -r buildoptions.SourceMirroring.test_yocto_source_mirror"], + "EXTRACMDS" : ["source ${SCRIPTSDIR}/checkvnc; oe-selftest -r buildoptions.SourceMirroring.test_yocto_source_mirror"], "ADDLAYER" : ["${BUILDDIR}/../meta-selftest"] } } @@ -280,7 +280,7 @@ "extravars" : [ "RPM_GPG_SIGN_CHUNK = '1'" ], - "EXTRACMDS" : ["${SCRIPTSDIR}/checkvnc; DISPLAY=:1 oe-selftest --skip-tests distrodata.Distrodata.test_checkpkg buildoptions.SourceMirroring.test_yocto_source_mirror -j 15"], + "EXTRACMDS" : ["source ${SCRIPTSDIR}/checkvnc; oe-selftest --skip-tests distrodata.Distrodata.test_checkpkg buildoptions.SourceMirroring.test_yocto_source_mirror -j 15"], "ADDLAYER" : ["${BUILDDIR}/../meta-selftest"] } }, diff --git a/scripts/checkvnc b/scripts/checkvnc index 11e03bb..3935213 100755 --- a/scripts/checkvnc +++ b/scripts/checkvnc @@ -1,10 +1,33 @@ #!/bin/sh # -# check if vnc server is running, and if not, cleanup and restart +# Description: checks if vnc server is running, and if not, cleanup and restart +# +# Source this file if you want DISPLAY set to the result +# Execute this file if you only want the "check and restart" behavior. # -grep ':170D' /proc/net/tcp > /dev/null -if [ $? != 0 ]; then - echo "Xvnc not running, attempting restart" - vncserver -kill :1 +unset DISPLAY + +checkvnc() { + for pid_file in ~/.vnc/*.pid; do + [ -f "$pid_file" ] || break + vnc_display=$(echo $(basename "$pid_file") | cut -f 1 -d '.') + + # Test if running + kill -0 $(cat "$pid_file") > /dev/null + if [ $? == 0 ]; then + echo "Found running Xvnc server at $vnc_display" + DISPLAY=":$(echo $vnc_display | cut -d ':' -f 2)" + break + else + echo "Cleaning up display: $vnc_display" + vncserver -kill "$vnc_display" + fi + done +} + +checkvnc +if [ -z "$DISPLAY" ]; then + echo "Starting Xvnc" vncserver -fi + checkvnc +fi \ No newline at end of file diff --git a/scripts/run-config b/scripts/run-config index fe89163..2b39822 100755 --- a/scripts/run-config +++ b/scripts/run-config @@ -168,7 +168,7 @@ for stepnum in range(1, maxsteps + 1): sanitytargets = utils.getconfigvar("SANITYTARGETS", ourconfig, args.target, stepnum) if sanitytargets: hp.printheader("Step %s/%s: Running bitbake %s" % (stepnum, maxsteps, sanitytargets)) - bitbakecmd(args.builddir, "%s/checkvnc; DISPLAY=:1 bitbake %s -k" % (scriptsdir, sanitytargets), report, stepnum, 'c') + bitbakecmd(args.builddir, "source %s/checkvnc; bitbake %s -k" % (scriptsdir, sanitytargets), report, stepnum, 'c') # Run any extra commands specified cmds = utils.getconfiglist("EXTRACMDS", ourconfig, args.target, stepnum) -- 2.17.1 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto