* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/tools/
@ 2013-07-11 16:44 André Erdmann
2013-07-11 16:29 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
0 siblings, 1 reply; 4+ messages in thread
From: André Erdmann @ 2013-07-11 16:44 UTC (permalink / raw
To: gentoo-commits
commit: 6e32c4e171d304149425ab081c0105995160ba17
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Jul 11 16:25:37 2013 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Jul 11 16:25:37 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=6e32c4e1
fix minor typo in roverlay/tools/shenv
---
roverlay/tools/shenv.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roverlay/tools/shenv.py b/roverlay/tools/shenv.py
index f732040..5ae0f25 100644
--- a/roverlay/tools/shenv.py
+++ b/roverlay/tools/shenv.py
@@ -335,7 +335,7 @@ def run_script ( script, phase, return_success=False, logger=None ):
my_logger.info ( log_snip_here.format ( "stdout" ) )
for line in roverlay.strutil.pipe_lines ( output[0], use_filter=True ):
my_logger.info ( line )
- my_logger.info ( log_snip_here.format ( "end stdoutt" ) )
+ my_logger.info ( log_snip_here.format ( "end stdout" ) )
# -- end if stdout;
# log stderr
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/tools/
@ 2013-07-10 15:10 André Erdmann
0 siblings, 0 replies; 4+ messages in thread
From: André Erdmann @ 2013-07-10 15:10 UTC (permalink / raw
To: gentoo-commits
commit: e27a07c62d33a317562f6623600b4ad4b4a4496e
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Wed Jul 10 13:34:51 2013 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Wed Jul 10 13:34:51 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e27a07c6
roverlay/tools/ebuild: doebuild_fetch_and_manifest
A combined fetch/manifest command which can be used when importing ebuilds.
---
roverlay/tools/ebuild.py | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/roverlay/tools/ebuild.py b/roverlay/tools/ebuild.py
index e8f7e37..0ca0b8a 100644
--- a/roverlay/tools/ebuild.py
+++ b/roverlay/tools/ebuild.py
@@ -20,9 +20,15 @@ _EBUILD_CMDV = (
def doebuild (
ebuild_file, command, logger, env=None, opts=(), return_success=True
):
- logger.debug ( "doebuild: {c}, {e!r}".format ( e=ebuild_file, c=command ) )
+ if isinstance ( command, str ):
+ cmdv = ( _EBUILD_CMDV + opts + ( ebuild_file, command ) )
+ else:
+ cmdv = ( _EBUILD_CMDV + opts + ( ebuild_file, ) + command )
+
+ logger.debug ( "doebuild: {cmdv}".format ( cmdv=cmdv ) )
+
return roverlay.tools.runcmd.run_command (
- cmdv = ( _EBUILD_CMDV + opts + ( ebuild_file, command ) ),
+ cmdv = cmdv,
env = env,
logger = logger,
return_success = return_success
@@ -54,3 +60,16 @@ def doebuild_fetch (
return_success = return_success,
)
# --- end of doebuild_fetch (...) ---
+
+def doebuild_fetch_and_manifest (
+ ebuild_file, logger, env=None, opts=(), return_success=True
+):
+ return doebuild (
+ ebuild_file = ebuild_file,
+ command = ( "fetch", "manifest" ),
+ logger = logger,
+ env = env,
+ opts = opts,
+ return_success = return_success,
+ )
+# --- end of doebuild_fetch_and_manifest (...) ---
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] proj/R_overlay:master commit in: roverlay/tools/
@ 2013-06-22 15:24 André Erdmann
2013-06-20 23:40 ` [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
0 siblings, 1 reply; 4+ messages in thread
From: André Erdmann @ 2013-06-22 15:24 UTC (permalink / raw
To: gentoo-commits
commit: deafef91dfcc33fd8b491ce4fa6c0709f4afa7a1
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Jun 20 23:36:40 2013 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Jun 20 23:36:40 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=deafef91
roverlay/tools/shenv: run shell scripts
This commit adds support for running shell script files ("hooks") in an
environment that contains roverlay variables like $OVERLAY and $DISTROOT.
---
roverlay/tools/shenv.py | 322 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 322 insertions(+)
diff --git a/roverlay/tools/shenv.py b/roverlay/tools/shenv.py
new file mode 100644
index 0000000..7200851
--- /dev/null
+++ b/roverlay/tools/shenv.py
@@ -0,0 +1,322 @@
+# R overlay -- tools, run roverlay hooks (shell scripts)
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013 André Erdmann <dywi@mailerd.de>
+# Distributed under the terms of the GNU General Public License;
+# either version 2 of the License, or (at your option) any later version.
+
+import logging
+import os
+import subprocess
+import tempfile
+
+
+import roverlay.config
+import roverlay.strutil
+import roverlay.util
+
+
+# _SHELL_ENV, _SHELL_INTPR are created when calling run_script()
+#
+_SHELL_ENV = None
+#_SHELL_INTPR = None
+LOGGER = logging.getLogger ( 'shenv' )
+
+
+# shell env dict quickref
+# TODO: move this to doc/
+#
+# $PATH, $LOGNAME, $SHLVL, $TERM, [$PWD]
+#
+# taken from os.environ
+#
+# $ROVERLAY_PHASE
+#
+# hook phase (set in run_script())
+#
+# $OVERLAY == $S (== $HOME)
+#
+# overlay directory (depends on config value), initial directory for scripts
+#
+#
+# $DISTROOT
+#
+# mirror directory (depends on config value)
+#
+# $TMPDIR == $T
+#
+# depends on config value (+fallback)
+#
+# $ADDITIONS_DIR == $FILESDIR (optional)
+#
+# depends on config value
+#
+# $SHLIB (optional)
+#
+# shell functions dir (if found, ${ADDITIONS_DIR}/shlib)
+#
+# $FUNCTIONS (optional)
+#
+# core functions file (if found, ${ADDITIONS_DIR}/{shlib,}/functions.sh)
+#
+# $EBUILD
+#
+# ebuild executable, depends on config value
+#
+# $GIT_EDITOR
+# $GIT_ASKPASS
+#
+# set to /bin/false
+#
+# $NOSYNC
+#
+# depends on config value
+#
+# $NO_COLOR
+#
+# alway false ('n')
+#
+# $DEBUG
+# $VERBOSE
+# $QUIET
+#
+# shbools that indicate whether debug/verbose/quiet ouput is desired,
+# depends on log level
+#
+
+
+def setup_env():
+ """Returns a 'well-defined' env dict for running scripts."""
+
+ # @typedef shbool is SH_TRUE|SH_FALSE, where:
+ SH_TRUE = 'y'
+ SH_FALSE = 'n'
+
+ def shbool ( value ):
+ """Converts value into a shbool."""
+ return SH_TRUE if value else SH_FALSE
+ # --- end of shbool (...) ---
+
+ # import os.environ
+ if roverlay.config.get ( "SHELL_ENV.filter_env", True ):
+ # (keepenv does not support wildcars)
+ env = roverlay.util.keepenv (
+ ( 'PATH', '/usr/local/bin:/usr/bin:/bin' ),
+ 'PWD',
+ 'LOGNAME',
+ 'SHLVL',
+ 'TERM',
+ # what else?
+ )
+ #
+ # LANG, LC_ALL, LC_COLLATE, ...
+ #
+ # GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL,
+ # GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, ...
+ #
+ # GIT_EDITOR and GIT_ASKPASS are set to /bin/false here
+ #
+
+ else:
+ env = dict ( os.environ )
+
+ # setup* functions
+ def setup ( k, v ):
+ env [k] = v
+
+ def setup_conf ( k, c ):
+ env [k] = roverlay.config.get_or_fail ( c )
+
+ def setup_self ( k, c ):
+ env[k] = env[c]
+
+ ## create shell vars
+
+ # str $ROVERLAY_PHASE
+ # properly defined in shenv_run()
+ #
+ setup ( 'ROVERLAY_PHASE', 'null' )
+
+ # str::dirpath $OVERLAY
+ setup_conf ( 'OVERLAY', 'OVERLAY.dir' )
+
+ # str::dirpath $S renames $OVERLAY
+ setup_self ( 'S', 'OVERLAY' )
+
+ # str::dirpath $HOME renames $OVERLAY
+ #
+ # FIXME: this should/could be the parent dir of $OVERLAY
+ # FIXME: git wants to read $HOME/.gitconfig
+ #
+ setup_self ( 'HOME', 'OVERLAY' )
+
+ # str::dirpath $DISTROOT
+ setup_conf ( 'DISTROOT', 'OVERLAY.DISTDIR.root' )
+
+ # str::dirpath $TMPDIR := <default>
+ setup (
+ 'TMPDIR',
+ roverlay.config.get ( 'OVERLAY.TMPDIR.root' ) or tempfile.gettempdir()
+ )
+
+ # str::dirpath $T renames $TMPDIR
+ setup_self ( 'T', 'TMPDIR' )
+
+ # @optional str::dirpath $ADDITIONS_DIR
+ # @optional str::dirpath $FILESDIR renames $ADDITIONS_DIR
+ #
+ # @optional str::dirpath $SHLIB is ${ADDITIONS_DIR}/shlib
+ # directory with shell function files
+ #
+ # @optional str::filepath $FUNCTIONS is <see below>
+ # shell file with "core" functions
+ #
+ additions_dir = roverlay.config.get ( 'OVERLAY.additions_dir', None )
+ if additions_dir:
+ setup ( 'ADDITIONS_DIR', additions_dir )
+ setup_self ( 'FILESDIR', 'ADDITIONSDIR' )
+
+ shlib_root = additions_dir + os.sep + 'shlib'
+ shlib_file = None
+ SHFUNC_FILENAME = 'functions.sh'
+
+ if os.path.isdir ( shlib_root ):
+ setup ( 'SHLIB', shlib_root )
+ shlib_file = shlib_root + os.sep + SHFUNC_FILENAME
+
+ if os.path.isfile ( shlib_file ):
+ setup ( 'FUNCTIONS', shlib_file )
+ else:
+ shlib_file = None
+ # -- end if shlib_root;
+
+ if not shlib_file:
+ shlib_file = additions_dir + os.sep + SHFUNC_FILENAME
+ if os.path.isfile ( shlib_file ):
+ setup ( 'FUNCTIONS', shlib_file )
+ # -- end if additions_dir;
+
+ # str::exe $EBUILD
+ setup_conf ( 'EBUILD', 'TOOLS.EBUILD.exe' )
+
+ # str::exe $GIT_EDITOR = <disable>
+ #
+ # It's not that funny if the program waits for user interaction.
+ #
+ setup ( 'GIT_EDITOR', roverlay.util.sysnop ( False )[0] )
+
+ # str::exe $GIT_ASKPASS copies $GIT_EDITOR
+ setup_self ( 'GIT_ASKPASS', 'GIT_EDITOR' )
+
+ # shbool $NOSYNC
+ setup ( 'NOSYNC', shbool ( roverlay.config.get_or_fail ( 'nosync' ) ) )
+
+ # shbool $NO_COLOR
+ #
+ # stdout/stderr are logged, so colored output should be avoided
+ #
+ setup ( 'NO_COLOR', SH_TRUE )
+
+ # shbool $DEBUG, $VERBOSE, $QUIET
+ if LOGGER.isEnabledFor ( logging.DEBUG ):
+ setup ( 'DEBUG', SH_TRUE )
+ setup ( 'QUIET', SH_FALSE )
+ setup ( 'VERBOSE', SH_TRUE )
+ elif LOGGER.isEnabledFor ( logging.INFO ):
+ setup ( 'DEBUG', SH_FALSE )
+ setup ( 'QUIET', SH_FALSE )
+ setup ( 'VERBOSE', SH_TRUE )
+ elif LOGGER.isEnabledFor ( logging.WARNING ):
+ setup ( 'DEBUG', SH_FALSE )
+ setup ( 'VERBOSE', SH_FALSE )
+ setup ( 'QUIET', SH_FALSE )
+ else:
+ setup ( 'DEBUG', SH_FALSE )
+ setup ( 'VERBOSE', SH_FALSE )
+ setup ( 'QUIET', SH_TRUE )
+ # -- end if
+
+ # done
+ return env
+# --- end of setup_env (...) ---
+
+def get_env ( copy=False ):
+ global _SHELL_ENV
+ if _SHELL_ENV is None:
+ _SHELL_ENV = setup_env()
+
+ if copy:
+ return dict ( _SHELL_ENV )
+ else:
+ return _SHELL_ENV
+# --- end of get_env (...) ---
+
+def update_env ( **info ):
+ get_env().update ( info )
+ return _SHELL_ENV
+# --- end of update_env (...) ---
+
+
+def run_script ( script, phase, return_success=False, logger=None ):
+# global _SHELL_INTPR
+# if _SHELL_INTPR is None:
+# _SHELL_INTPR = roverlay.config.get ( 'SHELL_ENV.shell', '/bin/sh' )
+
+ my_logger = logger or LOGGER
+ if phase:
+ my_env = get_env ( copy=True )
+ my_env ['ROVERLAY_PHASE'] = str ( phase )
+ else:
+ # ref
+ my_env = get_env()
+ # -- end if phase;
+
+ script_call = subprocess.Popen (
+# ( _SHELL_INTPR, script, my_env ['ROVERLAY_PHASE'], ),
+ ( script, my_env ['ROVERLAY_PHASE'], ),
+ stdin = None,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = my_env ['S'],
+ env = my_env,
+ )
+
+ output = script_call.communicate()
+
+ # log stdout
+ if output[0] and my_logger.isEnabledFor ( logging.INFO ):
+ my_logger.info (
+ '--- stdout for script {!r} ---'.format ( script )
+ )
+ for line in roverlay.strutil.pipe_lines ( output[0], use_filter=True ):
+ my_logger.info ( line )
+ my_logger.info (
+ '--- end stdout for script {!r} ---'.format ( script )
+ )
+ # -- end if stdout;
+
+ # log stderr
+ if output[1] and my_logger.isEnabledFor ( logging.WARNING ):
+ my_logger.warning (
+ '--- stderr for script {!r} ---'.format ( script )
+ )
+ for line in roverlay.strutil.pipe_lines ( output[1], use_filter=True ):
+ my_logger.warning ( line )
+ my_logger.warning (
+ '--- end stderr for script {!r} ---'.format ( script )
+ )
+ # --- end if stderr;
+
+ if return_success:
+ if script_call.returncode == os.EX_OK:
+ my_logger.debug ( "script {!r}: success".format ( script ) )
+ return True
+ else:
+ my_logger.warning (
+ "script {!r} returned {}".format (
+ script, script_call.returncode
+ )
+ )
+ return False
+ else:
+ return script_call
+# --- end of run_script (...) ---
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/tools/
2013-06-22 15:24 [gentoo-commits] proj/R_overlay:master " André Erdmann
@ 2013-06-20 23:40 ` André Erdmann
0 siblings, 0 replies; 4+ messages in thread
From: André Erdmann @ 2013-06-20 23:40 UTC (permalink / raw
To: gentoo-commits
commit: deafef91dfcc33fd8b491ce4fa6c0709f4afa7a1
Author: André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Jun 20 23:36:40 2013 +0000
Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Jun 20 23:36:40 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=deafef91
roverlay/tools/shenv: run shell scripts
This commit adds support for running shell script files ("hooks") in an
environment that contains roverlay variables like $OVERLAY and $DISTROOT.
---
roverlay/tools/shenv.py | 322 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 322 insertions(+)
diff --git a/roverlay/tools/shenv.py b/roverlay/tools/shenv.py
new file mode 100644
index 0000000..7200851
--- /dev/null
+++ b/roverlay/tools/shenv.py
@@ -0,0 +1,322 @@
+# R overlay -- tools, run roverlay hooks (shell scripts)
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013 André Erdmann <dywi@mailerd.de>
+# Distributed under the terms of the GNU General Public License;
+# either version 2 of the License, or (at your option) any later version.
+
+import logging
+import os
+import subprocess
+import tempfile
+
+
+import roverlay.config
+import roverlay.strutil
+import roverlay.util
+
+
+# _SHELL_ENV, _SHELL_INTPR are created when calling run_script()
+#
+_SHELL_ENV = None
+#_SHELL_INTPR = None
+LOGGER = logging.getLogger ( 'shenv' )
+
+
+# shell env dict quickref
+# TODO: move this to doc/
+#
+# $PATH, $LOGNAME, $SHLVL, $TERM, [$PWD]
+#
+# taken from os.environ
+#
+# $ROVERLAY_PHASE
+#
+# hook phase (set in run_script())
+#
+# $OVERLAY == $S (== $HOME)
+#
+# overlay directory (depends on config value), initial directory for scripts
+#
+#
+# $DISTROOT
+#
+# mirror directory (depends on config value)
+#
+# $TMPDIR == $T
+#
+# depends on config value (+fallback)
+#
+# $ADDITIONS_DIR == $FILESDIR (optional)
+#
+# depends on config value
+#
+# $SHLIB (optional)
+#
+# shell functions dir (if found, ${ADDITIONS_DIR}/shlib)
+#
+# $FUNCTIONS (optional)
+#
+# core functions file (if found, ${ADDITIONS_DIR}/{shlib,}/functions.sh)
+#
+# $EBUILD
+#
+# ebuild executable, depends on config value
+#
+# $GIT_EDITOR
+# $GIT_ASKPASS
+#
+# set to /bin/false
+#
+# $NOSYNC
+#
+# depends on config value
+#
+# $NO_COLOR
+#
+# alway false ('n')
+#
+# $DEBUG
+# $VERBOSE
+# $QUIET
+#
+# shbools that indicate whether debug/verbose/quiet ouput is desired,
+# depends on log level
+#
+
+
+def setup_env():
+ """Returns a 'well-defined' env dict for running scripts."""
+
+ # @typedef shbool is SH_TRUE|SH_FALSE, where:
+ SH_TRUE = 'y'
+ SH_FALSE = 'n'
+
+ def shbool ( value ):
+ """Converts value into a shbool."""
+ return SH_TRUE if value else SH_FALSE
+ # --- end of shbool (...) ---
+
+ # import os.environ
+ if roverlay.config.get ( "SHELL_ENV.filter_env", True ):
+ # (keepenv does not support wildcars)
+ env = roverlay.util.keepenv (
+ ( 'PATH', '/usr/local/bin:/usr/bin:/bin' ),
+ 'PWD',
+ 'LOGNAME',
+ 'SHLVL',
+ 'TERM',
+ # what else?
+ )
+ #
+ # LANG, LC_ALL, LC_COLLATE, ...
+ #
+ # GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL,
+ # GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, ...
+ #
+ # GIT_EDITOR and GIT_ASKPASS are set to /bin/false here
+ #
+
+ else:
+ env = dict ( os.environ )
+
+ # setup* functions
+ def setup ( k, v ):
+ env [k] = v
+
+ def setup_conf ( k, c ):
+ env [k] = roverlay.config.get_or_fail ( c )
+
+ def setup_self ( k, c ):
+ env[k] = env[c]
+
+ ## create shell vars
+
+ # str $ROVERLAY_PHASE
+ # properly defined in shenv_run()
+ #
+ setup ( 'ROVERLAY_PHASE', 'null' )
+
+ # str::dirpath $OVERLAY
+ setup_conf ( 'OVERLAY', 'OVERLAY.dir' )
+
+ # str::dirpath $S renames $OVERLAY
+ setup_self ( 'S', 'OVERLAY' )
+
+ # str::dirpath $HOME renames $OVERLAY
+ #
+ # FIXME: this should/could be the parent dir of $OVERLAY
+ # FIXME: git wants to read $HOME/.gitconfig
+ #
+ setup_self ( 'HOME', 'OVERLAY' )
+
+ # str::dirpath $DISTROOT
+ setup_conf ( 'DISTROOT', 'OVERLAY.DISTDIR.root' )
+
+ # str::dirpath $TMPDIR := <default>
+ setup (
+ 'TMPDIR',
+ roverlay.config.get ( 'OVERLAY.TMPDIR.root' ) or tempfile.gettempdir()
+ )
+
+ # str::dirpath $T renames $TMPDIR
+ setup_self ( 'T', 'TMPDIR' )
+
+ # @optional str::dirpath $ADDITIONS_DIR
+ # @optional str::dirpath $FILESDIR renames $ADDITIONS_DIR
+ #
+ # @optional str::dirpath $SHLIB is ${ADDITIONS_DIR}/shlib
+ # directory with shell function files
+ #
+ # @optional str::filepath $FUNCTIONS is <see below>
+ # shell file with "core" functions
+ #
+ additions_dir = roverlay.config.get ( 'OVERLAY.additions_dir', None )
+ if additions_dir:
+ setup ( 'ADDITIONS_DIR', additions_dir )
+ setup_self ( 'FILESDIR', 'ADDITIONSDIR' )
+
+ shlib_root = additions_dir + os.sep + 'shlib'
+ shlib_file = None
+ SHFUNC_FILENAME = 'functions.sh'
+
+ if os.path.isdir ( shlib_root ):
+ setup ( 'SHLIB', shlib_root )
+ shlib_file = shlib_root + os.sep + SHFUNC_FILENAME
+
+ if os.path.isfile ( shlib_file ):
+ setup ( 'FUNCTIONS', shlib_file )
+ else:
+ shlib_file = None
+ # -- end if shlib_root;
+
+ if not shlib_file:
+ shlib_file = additions_dir + os.sep + SHFUNC_FILENAME
+ if os.path.isfile ( shlib_file ):
+ setup ( 'FUNCTIONS', shlib_file )
+ # -- end if additions_dir;
+
+ # str::exe $EBUILD
+ setup_conf ( 'EBUILD', 'TOOLS.EBUILD.exe' )
+
+ # str::exe $GIT_EDITOR = <disable>
+ #
+ # It's not that funny if the program waits for user interaction.
+ #
+ setup ( 'GIT_EDITOR', roverlay.util.sysnop ( False )[0] )
+
+ # str::exe $GIT_ASKPASS copies $GIT_EDITOR
+ setup_self ( 'GIT_ASKPASS', 'GIT_EDITOR' )
+
+ # shbool $NOSYNC
+ setup ( 'NOSYNC', shbool ( roverlay.config.get_or_fail ( 'nosync' ) ) )
+
+ # shbool $NO_COLOR
+ #
+ # stdout/stderr are logged, so colored output should be avoided
+ #
+ setup ( 'NO_COLOR', SH_TRUE )
+
+ # shbool $DEBUG, $VERBOSE, $QUIET
+ if LOGGER.isEnabledFor ( logging.DEBUG ):
+ setup ( 'DEBUG', SH_TRUE )
+ setup ( 'QUIET', SH_FALSE )
+ setup ( 'VERBOSE', SH_TRUE )
+ elif LOGGER.isEnabledFor ( logging.INFO ):
+ setup ( 'DEBUG', SH_FALSE )
+ setup ( 'QUIET', SH_FALSE )
+ setup ( 'VERBOSE', SH_TRUE )
+ elif LOGGER.isEnabledFor ( logging.WARNING ):
+ setup ( 'DEBUG', SH_FALSE )
+ setup ( 'VERBOSE', SH_FALSE )
+ setup ( 'QUIET', SH_FALSE )
+ else:
+ setup ( 'DEBUG', SH_FALSE )
+ setup ( 'VERBOSE', SH_FALSE )
+ setup ( 'QUIET', SH_TRUE )
+ # -- end if
+
+ # done
+ return env
+# --- end of setup_env (...) ---
+
+def get_env ( copy=False ):
+ global _SHELL_ENV
+ if _SHELL_ENV is None:
+ _SHELL_ENV = setup_env()
+
+ if copy:
+ return dict ( _SHELL_ENV )
+ else:
+ return _SHELL_ENV
+# --- end of get_env (...) ---
+
+def update_env ( **info ):
+ get_env().update ( info )
+ return _SHELL_ENV
+# --- end of update_env (...) ---
+
+
+def run_script ( script, phase, return_success=False, logger=None ):
+# global _SHELL_INTPR
+# if _SHELL_INTPR is None:
+# _SHELL_INTPR = roverlay.config.get ( 'SHELL_ENV.shell', '/bin/sh' )
+
+ my_logger = logger or LOGGER
+ if phase:
+ my_env = get_env ( copy=True )
+ my_env ['ROVERLAY_PHASE'] = str ( phase )
+ else:
+ # ref
+ my_env = get_env()
+ # -- end if phase;
+
+ script_call = subprocess.Popen (
+# ( _SHELL_INTPR, script, my_env ['ROVERLAY_PHASE'], ),
+ ( script, my_env ['ROVERLAY_PHASE'], ),
+ stdin = None,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ cwd = my_env ['S'],
+ env = my_env,
+ )
+
+ output = script_call.communicate()
+
+ # log stdout
+ if output[0] and my_logger.isEnabledFor ( logging.INFO ):
+ my_logger.info (
+ '--- stdout for script {!r} ---'.format ( script )
+ )
+ for line in roverlay.strutil.pipe_lines ( output[0], use_filter=True ):
+ my_logger.info ( line )
+ my_logger.info (
+ '--- end stdout for script {!r} ---'.format ( script )
+ )
+ # -- end if stdout;
+
+ # log stderr
+ if output[1] and my_logger.isEnabledFor ( logging.WARNING ):
+ my_logger.warning (
+ '--- stderr for script {!r} ---'.format ( script )
+ )
+ for line in roverlay.strutil.pipe_lines ( output[1], use_filter=True ):
+ my_logger.warning ( line )
+ my_logger.warning (
+ '--- end stderr for script {!r} ---'.format ( script )
+ )
+ # --- end if stderr;
+
+ if return_success:
+ if script_call.returncode == os.EX_OK:
+ my_logger.debug ( "script {!r}: success".format ( script ) )
+ return True
+ else:
+ my_logger.warning (
+ "script {!r} returned {}".format (
+ script, script_call.returncode
+ )
+ )
+ return False
+ else:
+ return script_call
+# --- end of run_script (...) ---
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-07-11 16:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-11 16:44 [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/tools/ André Erdmann
2013-07-11 16:29 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
-- strict thread matches above, loose matches on Subject: below --
2013-07-10 15:10 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-06-22 15:24 [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-06-20 23:40 ` [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox