Merge pull request #4931 from mscherer/urpmi_fix

Various fix for the urpmi module
pull/4420/head
Michael DeHaan 2013-11-17 08:37:53 -08:00
commit b7971a426c
1 changed files with 18 additions and 1 deletions

View File

@ -76,11 +76,18 @@ import json
import shlex import shlex
import os import os
import sys import sys
try:
import rpm
USE_PYTHON = True
except ImportError:
USE_PYTHON = False
URPMI_PATH = '/usr/sbin/urpmi' URPMI_PATH = '/usr/sbin/urpmi'
URPME_PATH = '/usr/sbin/urpme' URPME_PATH = '/usr/sbin/urpme'
def query_package(module, name): def query_package(module, name):
if USE_PYTHON:
return rpm.TransactionSet().dbMatch(rpm.RPMTAG_NAME, name).count() != 0
# rpm -q returns 0 if the package is installed, # rpm -q returns 0 if the package is installed,
# 1 if it is not installed # 1 if it is not installed
@ -90,6 +97,15 @@ def query_package(module, name):
else: else:
return False return False
def query_package_provides(module, name):
if USE_PYTHON:
return rpm.TransactionSet().dbMatch(rpm.RPMTAG_PROVIDES, name).count() != 0
# rpm -q returns 0 if the package is installed,
# 1 if it is not installed
rc = os.system("rpm -q --provides %s >/dev/null" % (name))
return rc == 0
def update_package_db(module): def update_package_db(module):
rc = os.system("urpmi.update -a -q") rc = os.system("urpmi.update -a -q")
@ -125,6 +141,7 @@ def install_packages(module, pkgspec, force=True, no_suggests=True):
packages = "" packages = ""
for package in pkgspec: for package in pkgspec:
if not query_package_provides(module, package):
packages += "'%s' " % package packages += "'%s' " % package
if len(packages) != 0: if len(packages) != 0: