|
Igor Gnatenko |
c410e81 |
From 594fa2cfa467bbe29634f6fcc308d7d7a4bcfa4d Mon Sep 17 00:00:00 2001
|
|
Igor Gnatenko |
c410e81 |
From: Daniel Mach <dmach@redhat.com>
|
|
Igor Gnatenko |
c410e81 |
Date: Thu, 13 Jul 2017 02:18:59 -0400
|
|
Igor Gnatenko |
c410e81 |
Subject: [PATCH 1/4] fixup! Add classes for processing modules
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
---
|
|
Igor Gnatenko |
c410e81 |
dnf/modules.py | 67 +++++++++++++++++++++++++++++-----------------------------
|
|
Igor Gnatenko |
c410e81 |
1 file changed, 33 insertions(+), 34 deletions(-)
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
diff --git a/dnf/modules.py b/dnf/modules.py
|
|
Igor Gnatenko |
c410e81 |
index 0fe7a497..dabd5441 100644
|
|
Igor Gnatenko |
c410e81 |
--- a/dnf/modules.py
|
|
Igor Gnatenko |
c410e81 |
+++ b/dnf/modules.py
|
|
Igor Gnatenko |
c410e81 |
@@ -20,22 +20,22 @@ from __future__ import print_function
|
|
Igor Gnatenko |
c410e81 |
import errno
|
|
Igor Gnatenko |
c410e81 |
import fnmatch
|
|
Igor Gnatenko |
c410e81 |
import gzip
|
|
Igor Gnatenko |
c410e81 |
-from dnf.pycomp import ConfigParser
|
|
Igor Gnatenko |
c410e81 |
-
|
|
Igor Gnatenko |
c410e81 |
-import smartcols
|
|
Igor Gnatenko |
c410e81 |
import os
|
|
Igor Gnatenko |
c410e81 |
from collections import OrderedDict
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
import hawkey
|
|
Igor Gnatenko |
c410e81 |
import modulemd
|
|
Igor Gnatenko |
c410e81 |
+import smartcols
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
from dnf.callback import TransactionProgress, TRANS_POST, PKG_VERIFY
|
|
Igor Gnatenko |
c410e81 |
from dnf.conf import ModuleConf
|
|
Igor Gnatenko |
c410e81 |
from dnf.conf.read import ModuleReader
|
|
Igor Gnatenko |
c410e81 |
from dnf.exceptions import Error
|
|
Igor Gnatenko |
c410e81 |
from dnf.i18n import _
|
|
Igor Gnatenko |
c410e81 |
+from dnf.pycomp import ConfigParser
|
|
Igor Gnatenko |
c410e81 |
from dnf.util import logger
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
+
|
|
Igor Gnatenko |
c410e81 |
LOAD_CACHE_ERR = 1
|
|
Igor Gnatenko |
c410e81 |
MISSING_YAML_ERR = 2
|
|
Igor Gnatenko |
c410e81 |
NO_METADATA_ERR = 3
|
|
Igor Gnatenko |
c410e81 |
@@ -52,26 +52,26 @@ NOTHING_TO_SHOW = 13
|
|
Igor Gnatenko |
c410e81 |
PARSING_ERR = 14
|
|
Igor Gnatenko |
c410e81 |
HORRIBLE_HACK_WARN = 15
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
-module_errors = {LOAD_CACHE_ERR: "Cannot load from cache dir: {}",
|
|
Igor Gnatenko |
c410e81 |
- MISSING_YAML_ERR: "Missing file *modules.yaml in metadata cache dir: {}",
|
|
Igor Gnatenko |
c410e81 |
- NO_METADATA_ERR: "No available metadata for module: {}",
|
|
Igor Gnatenko |
c410e81 |
- NO_MODULE_OR_STREAM_ERR: "No such module: {} or active stream "
|
|
Igor Gnatenko |
c410e81 |
- "(first enable stream)",
|
|
Igor Gnatenko |
c410e81 |
- NO_MODULE_ERR: "No such module: {}",
|
|
Igor Gnatenko |
c410e81 |
- NO_PROFILE_ERR: "No such profile: {}. Possible profiles: {}",
|
|
Igor Gnatenko |
c410e81 |
- NO_STREAM_ERR: "No such stream {} in {}",
|
|
Igor Gnatenko |
c410e81 |
- NO_ACTIVE_STREAM_ERR: "No active stream for module: {}",
|
|
Igor Gnatenko |
c410e81 |
- STREAM_NOT_ENABLED_ERR: "Stream not enabled. Skipping {}",
|
|
Igor Gnatenko |
c410e81 |
- DIFFERENT_STREAM_INFO: "Enabling different stream for {}",
|
|
Igor Gnatenko |
c410e81 |
- INVALID_MODULE_ERR: "Not a valid module: {}",
|
|
Igor Gnatenko |
c410e81 |
- LOWER_VERSION_INFO: "Using lower version due to missing "
|
|
Igor Gnatenko |
c410e81 |
- "profile in latest version",
|
|
Igor Gnatenko |
c410e81 |
- NOTHING_TO_SHOW: "Nothing to show",
|
|
Igor Gnatenko |
c410e81 |
- PARSING_ERR: "Probable parsing problem of {}, "
|
|
Igor Gnatenko |
c410e81 |
- "try specifying MODULE-STREAM-VERSION",
|
|
Igor Gnatenko |
c410e81 |
- HORRIBLE_HACK_WARN: "DNF has made a horrible hack by guessing "
|
|
Igor Gnatenko |
c410e81 |
- "default stream instead of using (non-existing) "
|
|
Igor Gnatenko |
c410e81 |
- "system-profile"}
|
|
Igor Gnatenko |
c410e81 |
+
|
|
Igor Gnatenko |
c410e81 |
+module_errors = {
|
|
Igor Gnatenko |
c410e81 |
+ LOAD_CACHE_ERR: "Cannot load from cache dir: {}",
|
|
Igor Gnatenko |
c410e81 |
+ MISSING_YAML_ERR: "Missing file *modules.yaml in metadata cache dir: {}",
|
|
Igor Gnatenko |
c410e81 |
+ NO_METADATA_ERR: "No available metadata for module: {}",
|
|
Igor Gnatenko |
c410e81 |
+ NO_MODULE_OR_STREAM_ERR: "No such module: {} or active stream (enable a stream first)",
|
|
Igor Gnatenko |
c410e81 |
+ NO_MODULE_ERR: "No such module: {}",
|
|
Igor Gnatenko |
c410e81 |
+ NO_PROFILE_ERR: "No such profile: {}. Possible profiles: {}",
|
|
Igor Gnatenko |
c410e81 |
+ NO_STREAM_ERR: "No such stream {} in {}",
|
|
Igor Gnatenko |
c410e81 |
+ NO_ACTIVE_STREAM_ERR: "No active stream for module: {}",
|
|
Igor Gnatenko |
c410e81 |
+ STREAM_NOT_ENABLED_ERR: "Stream not enabled. Skipping {}",
|
|
Igor Gnatenko |
c410e81 |
+ DIFFERENT_STREAM_INFO: "Enabling different stream for {}",
|
|
Igor Gnatenko |
c410e81 |
+ INVALID_MODULE_ERR: "Not a valid module: {}",
|
|
Igor Gnatenko |
c410e81 |
+ LOWER_VERSION_INFO: "Using lower version due to missing profile in latest version",
|
|
Igor Gnatenko |
c410e81 |
+ NOTHING_TO_SHOW: "Nothing to show",
|
|
Igor Gnatenko |
c410e81 |
+ PARSING_ERR: "Probable parsing problem of {}, try specifying MODULE-STREAM-VERSION",
|
|
Igor Gnatenko |
c410e81 |
+ HORRIBLE_HACK_WARN: "DNF has made a horrible hack by guessing "
|
|
Igor Gnatenko |
c410e81 |
+ "default stream instead of using (non-existing) "
|
|
Igor Gnatenko |
c410e81 |
+ "system-profile"
|
|
Igor Gnatenko |
c410e81 |
+}
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
default_profile = "default"
|
|
Igor Gnatenko |
c410e81 |
name_profile_delimiter = "/"
|
|
Igor Gnatenko |
c410e81 |
@@ -305,7 +305,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
logger.error(module_errors[NO_MODULE_ERR].format(name))
|
|
Igor Gnatenko |
c410e81 |
continue
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
- any_profile_installed = self[name].conf and len(self[name].conf.profiles) != 0
|
|
Igor Gnatenko |
c410e81 |
+ any_profile_installed = self[name].conf and self[name].conf.profiles
|
|
Igor Gnatenko |
c410e81 |
if not any_profile_installed:
|
|
Igor Gnatenko |
c410e81 |
continue
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
@@ -327,9 +327,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
repo_module.parent = self
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
def get_modules_dir(self):
|
|
Igor Gnatenko |
c410e81 |
- modules_dir = self.base.conf.installroot
|
|
Igor Gnatenko |
c410e81 |
- for dir in self.base.conf.modulesdir.split("/"):
|
|
Igor Gnatenko |
c410e81 |
- modules_dir = os.path.join(modules_dir, dir)
|
|
Igor Gnatenko |
c410e81 |
+ modules_dir = os.path.join(self.base.conf.installroot, self.base.conf.modulesdir.lstrip("/"))
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
if not os.path.exists(modules_dir):
|
|
Igor Gnatenko |
c410e81 |
self.create_dir(modules_dir)
|
|
Igor Gnatenko |
c410e81 |
@@ -349,7 +347,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
def get_modules_by_name_stream_version(self, name, stream=None, version=None):
|
|
Igor Gnatenko |
c410e81 |
filtered_names = fnmatch.filter(self, name)
|
|
Igor Gnatenko |
c410e81 |
- if len(filtered_names) == 0:
|
|
Igor Gnatenko |
c410e81 |
+ if not filtered_names:
|
|
Igor Gnatenko |
c410e81 |
raise Error(module_errors[NO_MODULE_ERR].format(name))
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
filtered_streams = []
|
|
Igor Gnatenko |
c410e81 |
@@ -358,7 +356,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
for filtered_name in filtered_names:
|
|
Igor Gnatenko |
c410e81 |
filtered_streams.extend(fnmatch.filter(self[filtered_name], stream))
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
- if len(filtered_streams) == 0:
|
|
Igor Gnatenko |
c410e81 |
+ if not filtered_streams:
|
|
Igor Gnatenko |
c410e81 |
for filtered_name in filtered_names:
|
|
Igor Gnatenko |
c410e81 |
filtered_streams.extend(list(self[filtered_name].keys()))
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
@@ -370,7 +368,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
elif fnmatch.fnmatch(str(module_version.version), version):
|
|
Igor Gnatenko |
c410e81 |
module_metadata.append(module_version.module_metadata)
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
- if len(module_metadata) == 0:
|
|
Igor Gnatenko |
c410e81 |
+ if not module_metadata:
|
|
Igor Gnatenko |
c410e81 |
raise Error(module_errors[NO_METADATA_ERR].format(name))
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
return module_metadata
|
|
Igor Gnatenko |
c410e81 |
@@ -414,7 +412,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
True)
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
def get_brief_description_by_name(self, module_n, repo_module_streams, only_installed=False):
|
|
Igor Gnatenko |
c410e81 |
- if module_n is None or len(module_n) == 0:
|
|
Igor Gnatenko |
c410e81 |
+ if module_n is None or not module_n:
|
|
Igor Gnatenko |
c410e81 |
return self._get_brief_description(repo_module_streams, only_installed)
|
|
Igor Gnatenko |
c410e81 |
else:
|
|
Igor Gnatenko |
c410e81 |
return self._get_brief_description([stream for stream in repo_module_streams
|
|
Igor Gnatenko |
c410e81 |
@@ -436,7 +434,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
only_installed_versions.append(i)
|
|
Igor Gnatenko |
c410e81 |
repo_module_versions = only_installed_versions
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
- if len(repo_module_versions) == 0:
|
|
Igor Gnatenko |
c410e81 |
+ if not repo_module_versions:
|
|
Igor Gnatenko |
c410e81 |
return module_errors[NOTHING_TO_SHOW]
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
table = smartcols.Table()
|
|
Igor Gnatenko |
c410e81 |
@@ -487,7 +485,7 @@ class RepoModuleDict(OrderedDict):
|
|
Igor Gnatenko |
c410e81 |
line_without_crlf = line[:-1]
|
|
Igor Gnatenko |
c410e81 |
return line_without_crlf.lower().split("=")
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
- values = dict()
|
|
Igor Gnatenko |
c410e81 |
+ values = {}
|
|
Igor Gnatenko |
c410e81 |
with open("/etc/os-release") as f:
|
|
Igor Gnatenko |
c410e81 |
for line in f.readlines():
|
|
Igor Gnatenko |
c410e81 |
option, value = get_split_lower_values(line)
|
|
Igor Gnatenko |
c410e81 |
@@ -546,7 +544,7 @@ class ModuleMetadataLoader(object):
|
|
Igor Gnatenko |
c410e81 |
modules_yaml_gz = list(filter(lambda repodata_file: 'modules' in repodata_file,
|
|
Igor Gnatenko |
c410e81 |
content_of_cachedir))
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
- if len(modules_yaml_gz) == 0:
|
|
Igor Gnatenko |
c410e81 |
+ if not modules_yaml_gz:
|
|
Igor Gnatenko |
c410e81 |
raise Error(module_errors[MISSING_YAML_ERR].format(self.repo._cachedir))
|
|
Igor Gnatenko |
c410e81 |
modules_yaml_gz = "{}/repodata/{}".format(self.repo._cachedir, modules_yaml_gz[0])
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
@@ -558,6 +556,7 @@ class ModuleMetadataLoader(object):
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
class ModuleTransactionProgress(TransactionProgress):
|
|
Igor Gnatenko |
c410e81 |
def __init__(self):
|
|
Igor Gnatenko |
c410e81 |
+ super(ModuleTransactionProgress, self).__init__()
|
|
Igor Gnatenko |
c410e81 |
self.repo_modules = []
|
|
Igor Gnatenko |
c410e81 |
self.saved = False
|
|
Igor Gnatenko |
c410e81 |
|
|
Igor Gnatenko |
c410e81 |
--
|
|
Igor Gnatenko |
c410e81 |
2.13.2
|
|
Igor Gnatenko |
c410e81 |
|