Ejemplo n.º 1
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)
    tests = kwargs.get('tests', False)

    try:
        specs = spack.spec.parse(args)
        for spec in specs:
            if concretize:
                spec.concretize(tests=tests)  # implies normalize
            elif normalize:
                spec.normalize(tests=tests)

        return specs

    except spack.spec.SpecParseError as e:
        msg = e.message + "\n" + str(e.string) + "\n"
        msg += (e.pos + 2) * " " + "^"
        raise SpackError(msg)

    except spack.spec.SpecError as e:

        msg = e.message
        if e.long_message:
            msg += e.long_message

        raise SpackError(msg)
Ejemplo n.º 2
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)
    tests = kwargs.get('tests', False)

    try:
        specs = spack.spec.parse(args)
        for spec in specs:
            if concretize:
                spec.concretize(tests=tests)  # implies normalize
            elif normalize:
                spec.normalize(tests=tests)

        return specs

    except spack.spec.SpecParseError as e:
        msg = e.message + "\n" + str(e.string) + "\n"
        msg += (e.pos + 2) * " " + "^"
        raise SpackError(msg)

    except spack.spec.SpecError as e:

        msg = e.message
        if e.long_message:
            msg += e.long_message

        raise SpackError(msg)
Ejemplo n.º 3
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)

    if isinstance(args, (python_list, tuple)):
        args = " ".join(args)

    try:
        specs = spack.spec.parse(args)
        for spec in specs:
            if concretize:
                spec.concretize()  # implies normalize
            elif normalize:
                spec.normalize()

        return specs

    except spack.parse.ParseError as e:
        tty.error(e.message, e.string, e.pos * " " + "^")
        sys.exit(1)

    except spack.spec.SpecError as e:
        tty.error(e.message)
        sys.exit(1)
Ejemplo n.º 4
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)
    tests = kwargs.get('tests', False)

    sargs = args
    if not isinstance(args, six.string_types):
        sargs = ' '.join(args)
    unquoted_flags = _UnquotedFlags.extract(sargs)

    try:
        specs = spack.spec.parse(sargs)
        for spec in specs:
            if concretize:
                spec.concretize(tests=tests)  # implies normalize
            elif normalize:
                spec.normalize(tests=tests)
        return specs

    except spack.error.SpecError as e:

        msg = e.message
        if e.long_message:
            msg += e.long_message
        if unquoted_flags:
            msg += '\n\n'
            msg += unquoted_flags.report()

        raise spack.error.SpackError(msg)
Ejemplo n.º 5
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)
    tests = kwargs.get('tests', False)

    try:
        sargs = args
        if not isinstance(args, six.string_types):
            if len(sargs) == 1:
                # a single argument contains a full spec and will confuse the
                # Parser if escaped -> simply take it out of the list
                if not isinstance(sargs, type([])):
                    # Since the list keyword is taken we have to get the type
                    # via the literal.
                    # Sets do not support indexing -> convert to list as simply
                    # popping the only element would modify the argument.
                    sargs = type([])(sargs)
                sargs = sargs[0]
            else:
                sargs = ' '.join(spack.util.string.quote(args))
        specs = spack.spec.parse(sargs)
        for spec in specs:
            if concretize:
                spec.concretize(tests=tests)  # implies normalize
            elif normalize:
                spec.normalize(tests=tests)

        return specs

    except spack.spec.SpecParseError as e:
        msg = e.message + "\n" + str(e.string) + "\n"
        msg += (e.pos + 2) * " " + "^"
        raise SpackError(msg)

    except spack.spec.SpecError as e:

        msg = e.message
        if e.long_message:
            msg += e.long_message

        raise SpackError(msg)
Ejemplo n.º 6
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)
    tests = kwargs.get('tests', False)

    sargs = args
    if not isinstance(args, six.string_types):
        sargs = ' '.join(spack.util.string.quote(args))
    specs = spack.spec.parse(sargs)
    for spec in specs:
        if concretize:
            spec.concretize(tests=tests)  # implies normalize
        elif normalize:
            spec.normalize(tests=tests)

    return specs
Ejemplo n.º 7
0
def parse_specs(args, **kwargs):
    """Convenience function for parsing arguments from specs.  Handles common
       exceptions and dies if there are errors.
    """
    concretize = kwargs.get('concretize', False)
    normalize = kwargs.get('normalize', False)

    if isinstance(args, (python_list, tuple)):
        args = " ".join(args)

    try:
        specs = spack.spec.parse(args)
        for spec in specs:
            if concretize:
                spec.concretize() # implies normalize
            elif normalize:
                spec.normalize()

        return specs

    except spack.parse.ParseError, e:
        tty.error(e.message, e.string, e.pos * " " + "^")
        sys.exit(1)
Ejemplo n.º 8
0
def test_ambiguous_version_spec(mock_packages):
    spec = Spec('[email protected]:5.0,6.1,7.3+debug~opt')
    spec.normalize()
    check_yaml_round_trip(spec)
    check_json_round_trip(spec)
Ejemplo n.º 9
0
def test_normal_spec(mock_packages):
    spec = Spec('mpileaks+debug~opt')
    spec.normalize()
    check_yaml_round_trip(spec)
    check_json_round_trip(spec)