blob: f1117ad03946c9b5e306761ccea4beaa893d4402 [file] [log] [blame]
# Copyright 2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from portage.repository.storage.interface import (
RepoStorageException,
RepoStorageInterface,
)
from portage.util.futures.compat_coroutine import coroutine, coroutine_return
class InplaceRepoStorage(RepoStorageInterface):
"""
Legacy repo storage behavior, where updates are applied in-place.
This module is not recommended, since the repository is left in an
unspecified (possibly malicious) state if the update fails.
"""
def __init__(self, repo, spawn_kwargs):
self._user_location = repo.location
self._update_location = None
@coroutine
def init_update(self):
self._update_location = self._user_location
coroutine_return(self._update_location)
yield None
@property
def current_update(self):
if self._update_location is None:
raise RepoStorageException('current update does not exist')
return self._update_location
@coroutine
def commit_update(self):
self.current_update
self._update_location = None
coroutine_return()
yield None
@coroutine
def abort_update(self):
self._update_location = None
coroutine_return()
yield None
@coroutine
def garbage_collection(self):
coroutine_return()
yield None