# Path: py-hwaftools/orch/util.py
# def check_output(*popenargs, **kwargs):
#     r"""Run command with arguments and return its output as a byte string.
# 
#     If the exit code was non-zero it raises a CalledProcessError.  The
#     CalledProcessError object will have the return code in the returncode
#     attribute and output in the output attribute.
# 
#     The arguments are the same as for the Popen constructor.  Example:
# 
#     >>> check_output(["ls", "-l", "/dev/null"])
#     'crw-rw-rw- 1 root root 1, 3 Oct 18  2007 /dev/null\n'
# 
#     The stdout argument is not allowed as it is used internally.
#     To capture standard error in the result, use stderr=STDOUT.
# 
#     >>> check_output(["/bin/sh", "-c",
#     ...               "ls -l non_existent_file ; exit 0"],
#     ...              stderr=STDOUT)
#     'ls: non_existent_file: No such file or directory\n'
#     """
#     if 'stdout' in kwargs:
#         raise ValueError('stdout argument not allowed, it will be overridden.')
#     process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
#     output, unused_err = process.communicate()
#     retcode = process.poll()
#     if retcode:
#         cmd = kwargs.get("args")
#         if cmd is None:
#             cmd = popenargs[0]
#         raise CalledProcessError(retcode, cmd, output=output)
#     return output
# 
# class CalledProcessError(Exception):
#     """This exception is raised when a process run by check_call() or
#     check_output() returns a non-zero exit status.
#     The exit status will be stored in the returncode attribute;
#     check_output() will also store the output in the output attribute.
#     """
#     def __init__(self, returncode, cmd, output=None):
#         self.returncode = returncode
#         self.cmd = cmd
#         self.output = output
#     def __str__(self):
#         return "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)


import os
import time
from .util import check_output, CalledProcessError
#!/usr/bin/env python
'''
A ten foot pole
'''


def flavor():
    '''
    Ow, my balls.
    '''
    try:
        flav = check_output(['ups','flavor'])
        #print 'UPS FLAVOR from ups: "%s"' % flav
        return flav.strip()
    except OSError:
        #print 'UPS failed to run, calculate flavor manually'
        pass

    kern, host, rel, vend, mach = os.uname()
    if mach in ['x86_64','sun','ppc64']:
        mach = '64bit'
    else:
        mach = ''
    rel = '.'.join(rel.split('.')[:2])
    if 'darwin' in kern.lower():
        libc = rel # FIXME: is there something better on mac ?
    else:

# Path: py-hwaftools/orch/util.py
# def check_output(*popenargs, **kwargs):
#     r"""Run command with arguments and return its output as a byte string.
# 
#     If the exit code was non-zero it raises a CalledProcessError.  The
#     CalledProcessError object will have the return code in the returncode
#     attribute and output in the output attribute.
# 
#     The arguments are the same as for the Popen constructor.  Example:
# 
#     >>> check_output(["ls", "-l", "/dev/null"])
#     'crw-rw-rw- 1 root root 1, 3 Oct 18  2007 /dev/null\n'
# 
#     The stdout argument is not allowed as it is used internally.
#     To capture standard error in the result, use stderr=STDOUT.
# 
#     >>> check_output(["/bin/sh", "-c",
#     ...               "ls -l non_existent_file ; exit 0"],
#     ...              stderr=STDOUT)
#     'ls: non_existent_file: No such file or directory\n'
#     """
#     if 'stdout' in kwargs:
#         raise ValueError('stdout argument not allowed, it will be overridden.')
#     process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
#     output, unused_err = process.communicate()
#     retcode = process.poll()
#     if retcode:
#         cmd = kwargs.get("args")
#         if cmd is None:
#             cmd = popenargs[0]
#         raise CalledProcessError(retcode, cmd, output=output)
#     return output
# 
# class CalledProcessError(Exception):
#     """This exception is raised when a process run by check_call() or
#     check_output() returns a non-zero exit status.
#     The exit status will be stored in the returncode attribute;
#     check_output() will also store the output in the output attribute.
#     """
#     def __init__(self, returncode, cmd, output=None):
#         self.returncode = returncode
#         self.cmd = cmd
#         self.output = output
#     def __str__(self):
#         return "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)


# Path: py-hwaftools/orch/ups.py
import os
import time
from .util import check_output, CalledProcessError

#!/usr/bin/env python
'''
A ten foot pole
'''


def flavor():
    '''
    Ow, my balls.
    '''
    try:
        flav = check_output(['ups','flavor'])
        #print 'UPS FLAVOR from ups: "%s"' % flav
        return flav.strip()
    except OSError:
        #print 'UPS failed to run, calculate flavor manually'
        pass

    kern, host, rel, vend, mach = os.uname()
    if mach in ['x86_64','sun','ppc64']:
        mach = '64bit'
    else:
        mach = ''
    rel = '.'.join(rel.split('.')[:2])
    if 'darwin' in kern.lower():
        libc = rel # FIXME: is there something better on mac ?
    else:

        libc = check_output(['ldd','--version']).split(b'\n')[0].split()[-1]