def test_bundled(self): """Test that a bundled context behaves identically.""" def _test_bundle(path): # load the bundled context r2 = ResolvedContext.load(os.path.join(path, "context.rxt")) # check the pkg we contain is in the bundled pkg repo variant = r2.resolved_packages[0] self.assertTrue( is_subdirectory(variant.root, path), "Expected variant root %r of variant %r to be a subdirectory of %r" % (variant.root, variant.uri, path)) self._test_execute_command_environ(r2) bundle_path = os.path.join(self.root, "bundle") # create context and bundle it r = ResolvedContext(["hello_world"]) bundle_context(context=r, dest_dir=bundle_path, force=True, verbose=True) # test the bundle _test_bundle(bundle_path) # copy the bundle and test the copy bundle_path2 = os.path.join(self.root, "bundle2") shutil.copytree(bundle_path, bundle_path2) _test_bundle(bundle_path2) # Create a bundle in a symlinked dest path. Bugs can arise where the # real path is used in some places and not others. # if platform.system().lower() in ("linux", "darwin"): hard_path = os.path.join(self.root, "foo") bundles_path = os.path.join(self.root, "bundles") bundle_path3 = os.path.join(bundles_path, "bundle3") os.mkdir(hard_path) os.symlink(hard_path, bundles_path) r = ResolvedContext(["hello_world"]) bundle_context(context=r, dest_dir=bundle_path3, force=True, verbose=True) _test_bundle(bundle_path3)
def command(opts, parser, extra_arg_groups=None): from rez.utils.logging_ import print_error from rez.bundle_context import bundle_context from rez.resolved_context import ResolvedContext rxt_filepath = os.path.abspath(os.path.expanduser(opts.RXT)) dest_dir = os.path.abspath(os.path.expanduser(opts.DEST_DIR)) # sanity checks if not os.path.exists(rxt_filepath): print_error("File does not exist: %s", rxt_filepath) sys.exit(1) context = ResolvedContext.load(rxt_filepath) bundle_context(context=context, dest_dir=dest_dir, force=opts.force, skip_non_relocatable=opts.skip_non_relocatable, verbose=opts.verbose)