def _lock_package(self, package_name, package_version=None): from rez.vendor.lockfile import LockFile path = self.location if self.file_lock_dir: path = os.path.join(path, self.file_lock_dir) if not os.path.exists(path): raise PackageRepositoryError( "Lockfile directory %s does not exist - please create and try " "again" % path) filename = ".lock.%s" % package_name if package_version: filename += "-%s" % str(package_version) lock_file = os.path.join(path, filename) lock = LockFile(lock_file) try: lock.acquire(timeout=_settings.file_lock_timeout) yield finally: if lock.is_locked(): lock.release()
def install_variant(self, variant_resource, dry_run=False, overrides=None): if variant_resource._repository is self: return variant_resource from rez.vendor.lockfile import LockFile filename = ".lock.%s" % variant_resource.name if variant_resource.version: filename += "-%s" % str(variant_resource.version) path = self.location if self.file_lock_dir: path = os.path.join(path, self.file_lock_dir) if not os.path.exists(path): raise PackageRepositoryError( "Lockfile directory %s does not exist - please create and try " "again" % path) lock_file = os.path.join(path, filename) lock = LockFile(lock_file) try: lock.acquire(timeout=_settings.file_lock_timeout) variant = self._create_variant(variant_resource, dry_run=dry_run, overrides=overrides) finally: if lock.is_locked(): lock.release() return variant