bab9bb6b69
Create new directories: ceph config config-files filesystem kernel kernel/kernel-modules ldap logging strorage-drivers tools utilities virt Retire directories: connectivity core devtools support extended Delete two packages: tgt irqbalance Relocated packages: base/ dhcp initscripts libevent lighttpd linuxptp memcached net-snmp novnc ntp openssh pam procps sanlock shadow sudo systemd util-linux vim watchdog ceph/ python-cephclient config/ facter puppet-4.8.2 puppet-modules filesystem/ e2fsprogs nfs-utils nfscheck kernel/ kernel-std kernel-rt kernel/kernel-modules/ mlnx-ofa_kernel ldap/ nss-pam-ldapd openldap logging/ syslog-ng logrotate networking/ lldpd iproute mellanox python-ryu mlx4-config python/ python-2.7.5 python-django python-gunicorn python-setuptools python-smartpm python-voluptuous security/ shim-signed shim-unsigned tboot strorage-drivers/ python-3parclient python-lefthandclient virt/ cloud-init libvirt libvirt-python qemu tools/ storage-topology vm-topology utilities/ tis-extensions namespace-utils nova-utils update-motd Change-Id: I37ade764d873c701b35eac5881eb40412ba64a86 Story: 2002801 Task: 22687 Signed-off-by: Scott Little <scott.little@windriver.com>
81 lines
3.1 KiB
Diff
81 lines
3.1 KiB
Diff
Fix smart RPM backend to handle rpm-dbpath/rpm-root properly
|
|
|
|
Don't assume that if the dbpath starts with / that it is an absolute
|
|
path. This matches the behaviour of rpm itself. (If the root path is
|
|
specified and does not start with /, rpm will prepend the root path
|
|
twice and fail).
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
|
|
|
|
diff --git a/smart/backends/rpm/base.py b/smart/backends/rpm/base.py
|
|
index 7092332..0489e11 100644
|
|
--- a/smart/backends/rpm/base.py
|
|
+++ b/smart/backends/rpm/base.py
|
|
@@ -46,6 +46,12 @@ __all__ = ["RPMPackage", "RPMProvides", "RPMNameProvides", "RPMPreRequires",
|
|
"rpm", "getTS", "getArchScore", "getArchColor", "system_provides",
|
|
"collapse_libc_requires"]
|
|
|
|
+def rpm_join_dbpath(root, dbpath):
|
|
+ if dbpath.startswith('/') and root:
|
|
+ return os.path.join(root, dbpath[1:])
|
|
+ else:
|
|
+ return os.path.join(root, dbpath)
|
|
+
|
|
def getTS(new=False):
|
|
rpm_root = os.path.abspath(sysconf.get("rpm-root", "/"))
|
|
if not hasattr(getTS, "ts") or getTS.root != rpm_root:
|
|
@@ -56,7 +62,7 @@ def getTS(new=False):
|
|
if not sysconf.get("rpm-check-signatures", False):
|
|
getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
|
|
rpm_dbpath = sysconf.get("rpm-dbpath", "var/lib/rpm")
|
|
- dbdir = os.path.join(getTS.root, rpm_dbpath)
|
|
+ dbdir = rpm_join_dbpath(getTS.root, rpm_dbpath)
|
|
if not os.path.isdir(dbdir):
|
|
try:
|
|
os.makedirs(dbdir)
|
|
diff --git a/smart/channels/rpm_sys.py b/smart/channels/rpm_sys.py
|
|
index efcb10e..b9fda27 100644
|
|
--- a/smart/channels/rpm_sys.py
|
|
+++ b/smart/channels/rpm_sys.py
|
|
@@ -20,7 +20,7 @@
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
from smart.backends.rpm.header import RPMDBLoader
|
|
-from smart.backends.rpm.base import getTS
|
|
+from smart.backends.rpm.base import getTS, rpm_join_dbpath
|
|
from smart.channel import PackageChannel
|
|
from smart import *
|
|
import os
|
|
@@ -32,9 +32,9 @@ class RPMSysChannel(PackageChannel):
|
|
|
|
def fetch(self, fetcher, progress):
|
|
getTS() # Make sure the db exists.
|
|
- path = os.path.join(sysconf.get("rpm-root", "/"),
|
|
- sysconf.get("rpm-dbpath", "var/lib/rpm"),
|
|
- "Packages")
|
|
+ dbdir = rpm_join_dbpath(sysconf.get("rpm-root", "/"),
|
|
+ sysconf.get("rpm-dbpath", "var/lib/rpm"))
|
|
+ path = os.path.join(dbdir, "Packages")
|
|
digest = os.path.getmtime(path)
|
|
if digest == self._digest:
|
|
return True
|
|
diff --git a/smart/plugins/detectsys.py b/smart/plugins/detectsys.py
|
|
index 2cd49ad..3959d07 100644
|
|
--- a/smart/plugins/detectsys.py
|
|
+++ b/smart/plugins/detectsys.py
|
|
@@ -20,10 +20,11 @@
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
from smart import *
|
|
+from smart.backends.rpm.base import rpm_join_dbpath
|
|
import os
|
|
|
|
def detectRPMSystem():
|
|
- dir = os.path.join(sysconf.get("rpm-root", "/"),
|
|
+ dir = rpm_join_dbpath(sysconf.get("rpm-root", "/"),
|
|
sysconf.get("rpm-dbpath", "var/lib/rpm"))
|
|
file = os.path.join(dir, "Packages")
|
|
if os.path.exists(file):
|