aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MgaRepo/log.py23
-rw-r--r--MgaRepo/rpmutil.py10
-rw-r--r--MgaRepo/util.py23
-rwxr-xr-xbash-completion/mgarepo6
4 files changed, 38 insertions, 24 deletions
diff --git a/MgaRepo/log.py b/MgaRepo/log.py
index 692e3d2..e02547f 100644
--- a/MgaRepo/log.py
+++ b/MgaRepo/log.py
@@ -2,6 +2,7 @@
from MgaRepo import Error, config, layout
from MgaRepo.svn import SVN
from MgaRepo.util import execcmd
+from MgaRepo.util import get_output_exec
from io import StringIO
@@ -14,7 +15,6 @@ import glob
import tempfile
import shutil
import subprocess
-import select
locale.setlocale(locale.LC_ALL, "C")
@@ -44,26 +44,7 @@ def getrelease(pkgdirurl, rev=None, macros=[], exported=None):
command = (("rpm -q --qf '%%{EPOCH}:%%{VERSION}-%%{RELEASE}\n' "
"--specfile %s %s") %
(specpath, options))
- output = StringIO()
- err = StringIO()
- p = subprocess.Popen(command, shell=True,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- of = p.stdout.fileno()
- ef = p.stderr.fileno()
- while True:
- r,w,x = select.select((of,ef), (), ())
- odata = None
- if of in r:
- odata = (os.read(of, 8192)).decode('utf8')
- output.write(odata)
- edata = None
- if ef in r:
- edata = (os.read(ef, 8192)).decode('utf8')
- err.write(edata)
- status = p.poll()
- if status is not None and odata == '' and edata == '':
- break
- output = output.getvalue()
+ output = get_output_exec(command)
releases = output.split()
try:
epoch, vr = releases[0].split(":", 1)
diff --git a/MgaRepo/rpmutil.py b/MgaRepo/rpmutil.py
index 8c00da9..01de502 100644
--- a/MgaRepo/rpmutil.py
+++ b/MgaRepo/rpmutil.py
@@ -5,6 +5,8 @@ from MgaRepo.svn import SVN
from MgaRepo.simplerpm import SRPM
from MgaRepo.util import execcmd
from MgaRepo.command import default_parent
+from MgaRepo.util import get_output_exec
+
import rpm
import urllib.parse
import tempfile
@@ -682,7 +684,13 @@ def obsolete(pkgdirurl, branch=None, distro=None, backports=None, commit=False,
svn.mv(pkgdirurl, pkgdest, message=log)
if commit:
svn.commit(path, log=log)
-
+ #command = "rpm -q --specfile %s --qf 'Obsoletes: %{name} <= %{evr}\n'" % specpath
+ #output = get_output_exec(command)
+ #print(output)
+ #command = "rpm -q --specfile %s --qf 'Provides: %{name}\n'" % specpath
+ #output = get_output_exec(command)
+ #print(output)
+
def switch(mirrorurl=None):
svn = SVN()
topdir = getpkgtopdir()
diff --git a/MgaRepo/util.py b/MgaRepo/util.py
index 2ffd1b4..4b1308a 100644
--- a/MgaRepo/util.py
+++ b/MgaRepo/util.py
@@ -74,9 +74,32 @@ def execcmd(*cmd, **kwargs):
else:
raise Error("command failed: %s\n%s\n" % (cmdstr, output))
if verbose:
+ print(output)
sys.stdout.write(output)
return status, output
+def get_output_exec(cmdstr):
+ output = StringIO()
+ err = StringIO()
+ p = subprocess.Popen(cmdstr, shell=True,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ of = p.stdout.fileno()
+ ef = p.stderr.fileno()
+ while True:
+ r,w,x = select.select((of,ef), (), ())
+ odata = None
+ if of in r:
+ odata = (os.read(of, 8192)).decode('utf8')
+ output.write(odata)
+ edata = None
+ if ef in r:
+ edata = (os.read(ef, 8192)).decode('utf8')
+ err.write(edata)
+ status = p.poll()
+ if status is not None and odata == '' and edata == '':
+ break
+ return output.getvalue()
+
def get_auth(username=None, password=None):
set_username = 1
set_password = 1
diff --git a/bash-completion/mgarepo b/bash-completion/mgarepo
index e27f12f..c094956 100755
--- a/bash-completion/mgarepo
+++ b/bash-completion/mgarepo
@@ -11,7 +11,7 @@ _mgarepo_actions()
{
COMPREPLY=( $( compgen -W 'co ci sync \
submit putsrpm getspec rpmlog getsrpm maintdb create changed \
- authoremail switch upload del up' -- $cur ) )
+ authoremail switch upload del up obsolete' -- $cur ) )
}
_mgarepo()
@@ -64,6 +64,8 @@ _mgarepo()
;;
changed)
options="-a -s -M"
+ obsolete)
+ options="-m"
;;
esac
options="$options --help"
@@ -78,7 +80,7 @@ _mgarepo()
_filedir
return 0
;;
- @(co|getspec|rpmlog|getsrpm|changed))
+ @(co|getspec|rpmlog|getsrpm|changed|obsolete))
_cauldron_packages
return 0
;;