Ejemplo n.º 1
0
    def test_2(self):
        """Resolve a package with a dependency, see that their commands are
        concatenated as expected."""
        pkg = VersionedObject("rextest2-2")
        base = os.path.join(self.packages_path, "rextest", "1.3")
        base2 = os.path.join(self.packages_path, "rextest2", "2")

        cmds = [
            Setenv('REZ_USED_REQUEST', "rextest2-2"),
            Setenv('REZ_USED_RESOLVE', "rextest-1.3 rextest2-2"),
            # rez's rextest vars
            Setenv('REZ_REXTEST_VERSION', "1.3"),
            Setenv('REZ_REXTEST_BASE', base),
            Setenv('REZ_REXTEST_ROOT', base),
            # rez's rextest2 vars
            Setenv('REZ_REXTEST2_VERSION', '2'),
            Setenv('REZ_REXTEST2_BASE', base2),
            Setenv('REZ_REXTEST2_ROOT', base2),
            # rextest's commands
            Setenv('REXTEST_ROOT', base),
            Setenv('REXTEST_VERSION', "1.3"),
            Setenv('REXTEST_MAJOR_VERSION', "1"),
            Setenv('REXTEST_DIRS', "/".join([base, "data"])),
            Alias('rextest', 'foobar'),
            # rextext2's commands
            Appendenv('REXTEST_DIRS', "/".join([base2, "data2"])),
            Setenv('REXTEST2_REXTEST_VER', '1.3'),
            Setenv('REXTEST2_REXTEST_BASE',
                   os.path.join(self.packages_path, "rextest", "1.3"))
        ]

        self._test_package(pkg, {}, cmds)
        # first prepend should still override
        self._test_package(pkg, {"REXTEST_DIRS": "TEST"}, cmds)
Ejemplo n.º 2
0
Archivo: mv.py Proyecto: wwfxuk/rez
def command(opts, parser, extra_arg_groups=None):
    from rez.vendor.version.requirement import VersionedObject
    from rez.packages import get_package_from_repository
    from rez.package_move import move_package
    import sys

    obj = VersionedObject(opts.PKG)

    if opts.PATH is None:
        list_repos_containing_pkg(obj.name, obj.version)
        sys.exit(0)

    # find src pkg
    src_pkg = get_package_from_repository(obj.name, obj.version, opts.PATH)

    if src_pkg is None:
        print("Package not found.", file=sys.stderr)
        sys.exit(1)

    move_package(
        package=src_pkg,
        dest_repository=opts.dest_path,
        keep_timestamp=opts.keep_timestamp,
        force=opts.force,
        verbose=opts.verbose
    )
Ejemplo n.º 3
0
def remove_package_family(opts, parser, force=False):
    from rez.vendor.version.requirement import VersionedObject
    from rez.package_remove import remove_package_family
    from rez.exceptions import PackageRepositoryError

    if opts.dry_run:
        parser.error("--dry-run is not supported with --family")

    if not opts.PATH:
        parser.error("Must specify PATH with --family")

    obj = VersionedObject(opts.family)
    if obj.version:
        parser.error("Expected package name, not version")

    success = False
    try:
        success = remove_package_family(obj.name, opts.PATH, force=force)
    except PackageRepositoryError as e:
        print("Error: %s" % e, file=sys.stderr)
        sys.exit(1)

    if success:
        print("Package family removed.")
    else:
        print("Package family not found.", file=sys.stderr)
        sys.exit(1)
Ejemplo n.º 4
0
    def _test_rextest_package(self, version):
        pkg = VersionedObject("rextest-%s" % version)

        cmds = [Setenv('REZ_USED_REQUEST', str(pkg)),
                Setenv('REZ_USED_RESOLVE', str(pkg))]
        cmds += self._get_rextest_commands(pkg)

        self._test_package(pkg, {}, cmds)
        # first prepend should still override
        self._test_package(pkg, {"REXTEST_DIRS": "TEST"}, cmds)
Ejemplo n.º 5
0
def get_package_from_string(txt, paths=None):
    """Get a package given a string.

    Args:
        txt (str): String such as 'foo', 'bah-1.3'.
        paths (list of str, optional): paths to search for package, defaults
            to `config.packages_path`.

    Returns:
        `Package` instance, or None if no package was found.
    """
    o = VersionedObject(txt)
    return get_package(o.name, o.version, paths=paths)
Ejemplo n.º 6
0
def remove_package(opts, parser):
    from rez.vendor.version.requirement import VersionedObject
    from rez.package_remove import remove_package

    if opts.dry_run:
        parser.error("--dry-run is not supported with --package")

    if not opts.PATH:
        parser.error("Must specify PATH with --package")

    obj = VersionedObject(opts.package)

    if remove_package(obj.name, obj.version, opts.PATH):
        print("Package removed.")
    else:
        print("Package not found.", file=sys.stderr)
        sys.exit(1)
Ejemplo n.º 7
0
def expand_requirement(request):
    """Expands a requirement string like 'python-2.*'

    Only trailing wildcards are supported; they will be replaced with the
    latest package version found within the range. If none are found, the
    wildcards will just be stripped.

    Example:

        >>> print expand_requirement('python-2.*')
        python-2.7

    Args:
        request (str): Request to expand, eg 'python-2.*'

    Returns:
        str: Expanded request string.
    """
    if '*' not in request:
        return request

    from rez.vendor.version.requirement import VersionedObject, Requirement
    from rez.packages_ import get_latest_package

    txt = request.replace('*', '_')
    obj = VersionedObject(txt)
    rank = len(obj.version)

    request_ = request
    while request_.endswith('*'):
        request_ = request_[:-2]  # strip sep + *

    req = Requirement(request_)
    package = get_latest_package(name=req.name, range_=req.range_)

    if package is None:
        return request_

    obj.version_ = package.version.trim(rank)
    return str(obj)
Ejemplo n.º 8
0
def command(opts, parser, extra_arg_groups=None):
    from rez.package_repository import package_repository_manager
    from rez.vendor.version.requirement import VersionedObject
    import sys

    obj = VersionedObject(opts.PKG)

    if opts.PATH is None:
        if opts.allow_missing:
            list_repos()
        else:
            list_repos_containing_pkg(obj.name, obj.version)
        sys.exit(0)

    repo = package_repository_manager.get_repository(opts.PATH)

    if opts.unignore:
        i = repo.unignore_package(obj.name, obj.version)
    else:
        i = repo.ignore_package(obj.name,
                                obj.version,
                                allow_missing=opts.allow_missing)

    if i == 1:
        if opts.unignore:
            print("Package is now visible to resolves once more")
        else:
            print("Package is now ignored and will not be visible to resolves")
    elif i == 0:
        if opts.unignore:
            print("No action taken - package was already visible")
        else:
            print("No action taken - package was already ignored")
    else:
        print("Package not found", file=sys.stderr)
        sys.exit(1)