Let's get this straight:

        VIRTUALX_COMMAND="foo" virtualmake --bar --baz

is just ugly. Instead, introduce a function which can be used as:

        virtualx foo --bar -baz
---
 gx86/eclass/virtualx.eclass | 45 ++++++++++++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 17 deletions(-)

diff --git a/gx86/eclass/virtualx.eclass b/gx86/eclass/virtualx.eclass
index 0621b18..47116fd 100644
--- a/gx86/eclass/virtualx.eclass
+++ b/gx86/eclass/virtualx.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2012 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: /var/cvsroot/gentoo-x86/eclass/virtualx.eclass,v 1.43 2012/10/03 
22:47:12 chithanh Exp $
 
@@ -69,11 +69,12 @@ case ${VIRTUALX_REQUIRED} in
                ;;
 esac
 
-# @FUNCTION: virtualmake
+# @FUNCTION: virtualx
+# @USAGE: <argv>...
 # @DESCRIPTION:
-# Function which attach to running X session or start new Xvfb session
-# where the VIRTUALX_COMMAND variable content gets executed.
-virtualmake() {
+# Attach to a running X session or start a new Xvfb session, then run
+# the command passed as arguments.
+virtualx() {
        debug-print-function ${FUNCNAME} "$@"
 
        local i=0
@@ -83,14 +84,6 @@ virtualmake() {
        local XHOST=$(type -p xhost)
        local xvfbargs="-screen 0 1280x1024x24"
 
-       # backcompat for maketype
-       if [[ -n ${maketype} ]]; then
-               ewarn "QA: ebuild is exporting \$maketype=${maketype}"
-               ewarn "QA: Ebuild should be migrated to use 
VIRTUALX_COMMAND=${maketype} instead."
-               ewarn "QA: Setting VIRTUALX_COMMAND to \$maketype conveniently 
for now."
-               VIRTUALX_COMMAND=${maketype}
-       fi
-
        # If $DISPLAY is not set, or xhost cannot connect to an X
        # display, then do the Xvfb hack.
        if [[ -n ${XVFB} && -n ${XHOST} ]] && \
@@ -145,10 +138,10 @@ virtualmake() {
                # to kill Xvfb
                debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\""
                if has "${EAPI}" 2 3; then
-                       ${VIRTUALX_COMMAND} "$@"
+                       "$@"
                        retval=$?
                else
-                       nonfatal ${VIRTUALX_COMMAND} "$@"
+                       nonfatal "$@"
                        retval=$?
                fi
 
@@ -158,16 +151,34 @@ virtualmake() {
                debug-print "${FUNCNAME}: attaching to running X display"
                # Normal make if we can connect to an X display
                debug-print "${FUNCNAME}: ${VIRTUALX_COMMAND} \"$@\""
-               ${VIRTUALX_COMMAND} "$@"
+               "$@"
                retval=$?
        fi
 
        # die if our command failed
-       [[ ${retval} -ne 0 ]] && die "${FUNCNAME}: the ${VIRTUALX_COMMAND} 
failed."
+       [[ ${retval} -ne 0 ]] && die "${FUNCNAME}: ${1} failed."
 
        return 0 # always return 0, it can be altered by failed kill for Xvfb
 }
 
+# @FUNCTION: virtualmake
+# @DESCRIPTION:
+# Function which attach to running X session or start new Xvfb session
+# where the VIRTUALX_COMMAND variable content gets executed.
+virtualmake() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       # backcompat for maketype
+       if [[ -n ${maketype} ]]; then
+               ewarn "QA: ebuild is exporting \$maketype=${maketype}"
+               ewarn "QA: Ebuild should be migrated to use 
VIRTUALX_COMMAND=${maketype} instead."
+               ewarn "QA: Setting VIRTUALX_COMMAND to \$maketype conveniently 
for now."
+               VIRTUALX_COMMAND=${maketype}
+       fi
+
+       virtualx ${VIRTUALX_COMMAND} "$@"
+}
+
 # @FUNCTION: Xmake
 # @DESCRIPTION:
 # Same as "make", but set up the Xvfb hack if needed.
-- 
1.8.1.2


Reply via email to