Add lock-file functionality for qvm-template install.
This commit is contained in:
parent
c573faa9c0
commit
e6392ba4ec
@ -25,6 +25,7 @@ TEMP_DIR = '/var/tmp'
|
|||||||
PACKAGE_NAME_PREFIX = 'qubes-template-'
|
PACKAGE_NAME_PREFIX = 'qubes-template-'
|
||||||
CACHE_DIR = os.path.join(xdg.BaseDirectory.xdg_cache_home, 'qvm-template')
|
CACHE_DIR = os.path.join(xdg.BaseDirectory.xdg_cache_home, 'qvm-template')
|
||||||
UNVERIFIED_SUFFIX = '.unverified'
|
UNVERIFIED_SUFFIX = '.unverified'
|
||||||
|
LOCK_FILE = '/var/tmp/qvm-template.lck'
|
||||||
|
|
||||||
def qubes_release():
|
def qubes_release():
|
||||||
if os.path.exists('/usr/share/qubes/marker-vm'):
|
if os.path.exists('/usr/share/qubes/marker-vm'):
|
||||||
@ -142,7 +143,15 @@ def parse_config(path):
|
|||||||
|
|
||||||
def install(args, app, version_selector=VersionSelector.LATEST,
|
def install(args, app, version_selector=VersionSelector.LATEST,
|
||||||
ignore_existing=False):
|
ignore_existing=False):
|
||||||
# TODO: Lock, mentioned in the note above
|
try:
|
||||||
|
with open(LOCK_FILE, 'x') as _:
|
||||||
|
pass
|
||||||
|
except FileExistsError:
|
||||||
|
parser.error(('%s already exists.'
|
||||||
|
' Perhaps another instance of qvm-template is running?')
|
||||||
|
% LOCK_FILE)
|
||||||
|
|
||||||
|
try:
|
||||||
transaction_set = rpm.TransactionSet()
|
transaction_set = rpm.TransactionSet()
|
||||||
|
|
||||||
rpm_list = []
|
rpm_list = []
|
||||||
@ -200,7 +209,8 @@ def install(args, app, version_selector=VersionSelector.LATEST,
|
|||||||
# Another check for already-downloaded RPMs
|
# Another check for already-downloaded RPMs
|
||||||
if not ignore_existing and name in app.domains:
|
if not ignore_existing and name in app.domains:
|
||||||
print(('Template \'%s\' already installed, skipping...'
|
print(('Template \'%s\' already installed, skipping...'
|
||||||
' (You may want to use the {reinstall,upgrade,downgrade}'
|
' (You may want to use the'
|
||||||
|
' {reinstall,upgrade,downgrade}'
|
||||||
' operations.)') % name, file=sys.stderr)
|
' operations.)') % name, file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -233,6 +243,8 @@ def install(args, app, version_selector=VersionSelector.LATEST,
|
|||||||
tpl.features['template-reponame'] = reponame
|
tpl.features['template-reponame'] = reponame
|
||||||
tpl.features['template-summary'] = \
|
tpl.features['template-summary'] = \
|
||||||
package_hdr[rpm.RPMTAG_SUMMARY]
|
package_hdr[rpm.RPMTAG_SUMMARY]
|
||||||
|
finally:
|
||||||
|
os.remove(LOCK_FILE)
|
||||||
|
|
||||||
def qrexec_popen(args, app, service, stdout=subprocess.PIPE, filter_esc=True):
|
def qrexec_popen(args, app, service, stdout=subprocess.PIPE, filter_esc=True):
|
||||||
if args.updatevm:
|
if args.updatevm:
|
||||||
|
Loading…
Reference in New Issue
Block a user