rpms/smart/F-10 839_854.diff,1.1,1.2 smart.spec,1.37,1.38
Axel Thimm
athimm at fedoraproject.org
Sat Dec 27 13:43:56 UTC 2008
- Previous message (by thread): rpms/asunder/devel .cvsignore, 1.6, 1.7 asunder.spec, 1.5, 1.6 sources, 1.6, 1.7
- Next message (by thread): rpms/isomaster/devel isomaster-1.3.4-optflags.diff, NONE, 1.1 isomaster.spec, 1.14, 1.15
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: athimm
Update of /cvs/extras/rpms/smart/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv9472
Modified Files:
839_854.diff smart.spec
Log Message:
Fix empty patch issue for F10
839_854.diff:
Index: 839_854.diff
===================================================================
RCS file: /cvs/extras/rpms/smart/F-10/839_854.diff,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 839_854.diff 21 Dec 2008 20:55:27 -0000 1.1
+++ 839_854.diff 27 Dec 2008 13:43:25 -0000 1.2
@@ -0,0 +1,942 @@
+=== modified file 'MANIFEST.in'
+--- MANIFEST.in 2006-06-16 18:41:10 +0000
++++ MANIFEST.in 2008-10-08 15:59:14 +0000
+@@ -4,7 +4,7 @@
+
+ recursive-include tests *.py *.txt
+ recursive-include tests/data *
+-include test.py
++include test
+
+ recursive-include contrib/ksmarttray *.png *.cc *.h *.am *.in.in
+ recursive-include contrib/ksmarttray LICENSE eventsrc
+
+=== modified file 'Makefile'
+--- Makefile 2006-12-03 16:42:10 +0000
++++ Makefile 2008-10-06 20:03:37 +0000
+@@ -46,7 +46,7 @@
+
+ test:
+ ./setup.py build_ext -i
+- LANG=C ./test.py $(TEST)
++ LANG=C ./test $(TEST)
+
+ .PHONY: clean smart.pot update-po check-po test
+
+
+=== modified file 'contrib/ksmarttray/src/ksmarttray.cc'
+--- contrib/ksmarttray/src/ksmarttray.cc 2005-03-04 22:21:46 +0000
++++ contrib/ksmarttray/src/ksmarttray.cc 2008-11-16 00:37:11 +0000
+@@ -48,6 +48,7 @@
+ {
+ hasActions = false;
+ checkAction.setText("Check");
++ startSmartAction.setText("Start Smart...");
+ stopAction.setText("Stop");
+ stopAction.setIcon("stop");
+ stopAction.setEnabled(false);
+@@ -58,6 +59,7 @@
+ if (!hasActions) {
+ hasActions = true;
+ checkAction.plug(menu, 1);
++ startSmartAction.plug(menu, 2);
+ //stopAction.plug(menu, 2);
+ }
+ }
+@@ -94,6 +96,8 @@
+
+ connect(&sysTray.checkAction, SIGNAL(activated()),
+ this, SLOT(manualCheckUpgrades()));
++ connect(&sysTray.startSmartAction, SIGNAL(activated()),
++ this, SLOT(startSmart()));
+ connect(&sysTray.stopAction, SIGNAL(activated()),
+ this, SLOT(stopChecking()));
+ connect(&sysTray, SIGNAL(quitSelected()),
+@@ -112,6 +116,7 @@
+ return;
+ if (state == StateWaiting) {
+ sysTray.checkAction.setEnabled(false);
++ sysTray.startSmartAction.setEnabled(false);
+ sysTray.stopAction.setEnabled(true);
+ process.resetAll();
+ if (manual)
+@@ -145,6 +150,7 @@
+ "There is a running process.");
+ } else {
+ sysTray.checkAction.setEnabled(false);
++ sysTray.startSmartAction.setEnabled(false);
+ sysTray.stopAction.setEnabled(false);
+ process.resetAll();
+ process << "kdesu" << "-d" << "-c" << "smart --gui upgrade";
+@@ -159,6 +165,28 @@
+ }
+ }
+
++void KSmartTray::startSmart()
++{
++ if (state != StateWaiting) {
++ KNotifyClient::event(sysTray.winId(), "fatalerror",
++ "There is a running process.");
++ } else {
++ sysTray.checkAction.setEnabled(false);
++ sysTray.startSmartAction.setEnabled(false);
++ sysTray.stopAction.setEnabled(false);
++ process.resetAll();
++ process << "kdesu" << "-d" << "-c" << "smart --gui";
++ if (!process.start()) {
++ KNotifyClient::event(sysTray.winId(), "fatalerror",
++ "Couldn't run 'smart'.");
++ } else {
++ state = StateRunningSmart;
++ QToolTip::remove(&sysTray);
++ QToolTip::add(&sysTray, "Running Smart Package Manager...");
++ }
++ }
++}
++
+ void KSmartTray::stopChecking()
+ {
+ process.kill();
+@@ -223,6 +251,11 @@
+ lastKnownStatus = "";
+ break;
+
++ case StateRunningSmart:
++ state = StateWaiting;
++ lastKnownStatus = "";
++ break;
++
+ default:
+ /* Error! */
+ break;
+@@ -231,6 +264,7 @@
+ if (state == StateWaiting) {
+ updateFailed = false;
+ sysTray.checkAction.setEnabled(true);
++ sysTray.startSmartAction.setEnabled(true);
+ sysTray.stopAction.setEnabled(false);
+ if (!lastKnownStatus.isEmpty())
+ {
+
+=== modified file 'contrib/ksmarttray/src/ksmarttray.h'
+--- contrib/ksmarttray/src/ksmarttray.h 2006-06-13 16:24:24 +0000
++++ contrib/ksmarttray/src/ksmarttray.h 2008-11-16 00:37:11 +0000
+@@ -43,6 +43,7 @@
+
+ KAction checkAction;
+ KAction stopAction;
++ KAction startSmartAction;
+
+ protected:
+
+@@ -69,6 +70,7 @@
+ StateUpdating,
+ StateChecking,
+ StateUpgrading,
++ StateRunningSmart,
+ };
+
+ State state;
+@@ -105,6 +107,7 @@
+ void checkUpgrades();
+ void manualCheckUpgrades();
+ void runUpgrades();
++ void startSmart();
+
+ public:
+
+
+=== modified file 'smart/__init__.py'
+--- smart/__init__.py 2007-08-14 22:44:45 +0000
++++ smart/__init__.py 2008-11-26 17:10:15 +0000
+@@ -180,9 +180,6 @@
+ from smart import plugins
+ from smart import backends
+ pluginsdir = os.path.dirname(plugins.__file__)
+- entries = os.listdir(pluginsdir)
+- if os.path.isdir(PLUGINSDIR):
+- entries.extend(os.listdir(PLUGINSDIR))
+ for entry in os.listdir(pluginsdir):
+ if entry != "__init__.py" and entry.endswith(".py"):
+ __import__("smart.plugins."+entry[:-3])
+@@ -192,6 +189,10 @@
+ initpath = os.path.join(entrypath, "__init__.py")
+ if os.path.isfile(initpath):
+ __import__("smart.plugins."+entry)
++ if os.path.isdir(PLUGINSDIR):
++ for entry in os.listdir(PLUGINSDIR):
++ entrypath = os.path.join(PLUGINSDIR, entry)
++ execfile(entrypath)
+ backendsdir = os.path.dirname(backends.__file__)
+ for entry in os.listdir(backendsdir):
+ entrypath = os.path.join(backendsdir, entry)
+
+=== modified file 'smart/backends/deb/base.py'
+--- smart/backends/deb/base.py 2008-09-04 22:32:15 +0000
++++ smart/backends/deb/base.py 2008-11-16 00:06:42 +0000
+@@ -20,13 +20,16 @@
+ # along with Smart Package Manager; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ #
++import fnmatch
++import string
++import sys
++import os
++import re
++
+ from smart.backends.deb.debver import vercmp, checkdep, splitrelease
+ from smart.backends.deb.pm import DebPackageManager
+ from smart.util.strtools import isGlob
+ from smart.cache import *
+-import fnmatch
+-import string
+-import os, re
+
+ __all__ = ["DebPackage", "DebProvides", "DebNameProvides", "DebPreRequires",
+ "DebRequires", "DebUpgrades", "DebConflicts", "DebBreaks",
+@@ -44,17 +47,20 @@
+ "shel": "sh",
+ "x86_64": "amd64"}.get(arch)
+ if result:
+- return result
++ arch = result
+ elif len(arch) == 4 and arch[0] == "i" and arch.endswith("86"):
+- return "i386"
++ arch = "i386"
+ elif arch.startswith("arm"):
+- return "arm"
++ arch = "arm"
+ elif arch.startswith("hppa"):
+- return "hppa"
++ arch = "hppa"
+ elif arch.startswith("alpha"):
+- return "alpha"
++ arch = "alpha"
++
++ if sys.platform == "linux2":
++ return arch
+ else:
+- return arch
++ return "%s-%s" % (sys.platform, arch)
+
+ DEBARCH = getArchitecture()
+
+
+=== modified file 'smart/backends/deb/pm.py'
+--- smart/backends/deb/pm.py 2008-07-03 22:58:43 +0000
++++ smart/backends/deb/pm.py 2008-10-08 15:35:32 +0000
+@@ -26,7 +26,7 @@
+ import errno
+ import shlex
+
+-from smart.const import INSTALL, REMOVE, OPTIONAL, ENFORCE
++from smart.const import Enum, INSTALL, REMOVE, OPTIONAL, ENFORCE
+ from smart.pm import PackageManager
+ from smart.sorter import *
+ from smart import *
+@@ -34,8 +34,8 @@
+
+ # Part of the logic in this file was based on information found in APT.
+
+-UNPACK = 10
+-CONFIG = 11
++UNPACK = Enum("UNPACK")
++CONFIG = Enum("CONFIG")
+
+ DEBIAN_FRONTEND = "DEBIAN_FRONTEND"
+ APT_LISTCHANGES_FRONTEND = "APT_LISTCHANGES_FRONTEND"
+@@ -71,6 +71,7 @@
+ if changeset.get(prvpkg) is INSTALL:
+ if op is INSTALL:
+ group.addSuccessor((prvpkg, CONFIG), unpack)
++ group.addSuccessor((prvpkg, CONFIG), config)
+ else:
+ group.addSuccessor((prvpkg, CONFIG), remove)
+ elif prvpkg.installed:
+@@ -107,7 +108,7 @@
+ for prvpkg in prv.packages])
+ for upgpkg in upgpkgs:
+ if changeset.get(upgpkg) is REMOVE:
+- self.addSuccessor(config, (upgpkg, REMOVE), OPTIONAL)
++ self.addSuccessor(unpack, (upgpkg, REMOVE), OPTIONAL)
+
+ # Conflicted packages being removed must go in
+ # before this package's installation.
+@@ -202,6 +203,7 @@
+ old_apt_lc_frontend = os.environ.get(APT_LISTCHANGES_FRONTEND)
+ os.environ[DEBIAN_FRONTEND] = "noninteractive"
+ os.environ[APT_LISTCHANGES_FRONTEND] = "none"
++ baseargs.append("--force-confold")
+
+ if sysconf.get("pm-iface-output"):
+ output = tempfile.TemporaryFile()
+
+=== modified file 'smart/backends/rpm/base.py'
+--- smart/backends/rpm/base.py 2007-11-25 22:07:53 +0000
++++ smart/backends/rpm/base.py 2008-12-12 09:02:49 +0000
+@@ -49,7 +49,7 @@
+
+ def getTS(new=False):
+ if not hasattr(getTS, "ts"):
+- getTS.root = sysconf.get("rpm-root", "/")
++ getTS.root = os.path.abspath(sysconf.get("rpm-root", "/"))
+ getTS.ts = rpm.ts(getTS.root)
+ if not sysconf.get("rpm-check-signatures", False):
+ getTS.ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
+@@ -102,8 +102,8 @@
+ len(self.conflicts) != len(other.conflicts) or
+ fk(self.upgrades) != fk(other.upgrades) or
+ fk(self.conflicts) != fk(other.conflicts) or
+- fk([x for x in self.provides if x.name[0] != "/"]) !=
+- fk([x for x in other.provides if x.name[0] != "/"])):
++ fk([x for x in self.provides if x.name and x.name[0] != "/"]) !=
++ fk([x for x in other.provides if x.name and x.name[0] != "/"])):
+ return False
+ sreqs = fk(self.requires)
+ oreqs = fk(other.requires)
+
+=== modified file 'smart/backends/rpm/pm.py'
+--- smart/backends/rpm/pm.py 2007-05-22 16:32:57 +0000
++++ smart/backends/rpm/pm.py 2008-12-12 07:25:46 +0000
+@@ -138,7 +138,10 @@
+ lines.append(" "+" -> ".join(path))
+ lines.append(_("Will ask RPM to order it."))
+ iface.error("\n".join(lines))
+- sys.exit(1)
++ sorted = []
++ for pkg in changeset:
++ op = changeset[pkg]
++ sorted.append((pkg, op))
+ forcerpmorder = True
+ del sorter
+
+
+=== modified file 'smart/cache.py'
+--- smart/cache.py 2007-05-20 22:42:11 +0000
++++ smart/cache.py 2008-12-12 07:18:07 +0000
+@@ -193,8 +193,11 @@
+
+ filemd5 = self.getMD5(url)
+ if filemd5:
+- import md5
+- digest = md5.md5()
++ try:
++ from hashlib import md5
++ except ImportError:
++ from md5 import md5
++ digest = md5()
+ file = open(localpath)
+ data = file.read(BLOCKSIZE)
+ while data:
+@@ -207,8 +210,11 @@
+ else:
+ filesha = self.getSHA(url)
+ if filesha:
+- import sha
+- digest = sha.sha()
++ try:
++ from hashlib import sha1 as sha
++ except ImportError:
++ from sha import sha
++ digest = sha()
+ file = open(localpath)
+ data = file.read(BLOCKSIZE)
+ while data:
+
+=== modified file 'smart/channels/apt_deb.py'
+--- smart/channels/apt_deb.py 2008-09-05 21:59:43 +0000
++++ smart/channels/apt_deb.py 2008-10-08 15:51:01 +0000
+@@ -217,7 +217,7 @@
+ packages_items.append(item)
+ else:
+ iface.warning(_("Component '%s' is not in Release file "
+- "for channel '%s'") % (comp, self))
++ "for channel '%s'") % (component, self))
+
+ fetcher.run(progress=progress)
+
+
+=== modified file 'smart/const.py'
+--- smart/const.py 2008-09-08 20:27:13 +0000
++++ smart/const.py 2008-12-12 07:26:36 +0000
+@@ -21,7 +21,7 @@
+ #
+ import sys
+
+-VERSION = "1.1"
++VERSION = "1.1.1"
+
+ RECURSIONLIMIT = sys.getrecursionlimit()
+
+@@ -36,7 +36,7 @@
+ def __new__(klass, name):
+ instance = klass._registry.get(name)
+ if not instance:
+- instance = klass._registry[name] = object.__new__(klass, name)
++ instance = klass._registry[name] = object.__new__(klass)
+ return instance
+
+ INSTALL = Enum("INSTALL")
+
+=== modified file 'smart/control.py'
+--- smart/control.py 2008-02-19 00:12:08 +0000
++++ smart/control.py 2008-12-12 07:17:44 +0000
+@@ -19,6 +19,11 @@
+ # along with Smart Package Manager; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ #
++import cPickle
++import sys, os
++import copy
++import time
++
+ from smart.transaction import ChangeSet, ChangeSetSplitter, INSTALL, REMOVE
+ from smart.util.filetools import compareFiles, setCloseOnExecAll
+ from smart.util.objdigest import getObjectDigest
+@@ -33,11 +38,11 @@
+ from smart.cache import *
+ from smart.const import *
+ from smart import *
+-import cPickle
+-import sys, os
+-import copy
+-import time
+-import md5
++
++
++if sys.version_info < (2, 4):
++ from sets import Set as set
++
+
+ class Control(object):
+
+
+=== modified file 'smart/fetcher.py'
+--- smart/fetcher.py 2008-09-05 15:10:59 +0000
++++ smart/fetcher.py 2008-12-12 07:18:07 +0000
+@@ -367,8 +367,11 @@
+
+ filemd5 = item.getInfo(uncompprefix+"md5")
+ if filemd5:
+- import md5
+- digest = md5.md5()
++ try:
++ from hashlib import md5
++ except ImportError:
++ from md5 import md5
++ digest = md5()
+ file = open(localpath)
+ data = file.read(BLOCKSIZE)
+ while data:
+@@ -381,8 +384,11 @@
+ else:
+ filesha = item.getInfo(uncompprefix+"sha")
+ if filesha:
+- import sha
+- digest = sha.sha()
++ try:
++ from hashlib import sha1 as sha
++ except ImportError:
++ from sha import sha
++ digest = sha()
+ file = open(localpath)
+ data = file.read(BLOCKSIZE)
+ while data:
+@@ -1109,7 +1115,7 @@
+ return bool(self._queue or self._active)
+
+ def fetch(self):
+- import urllib, rfc822
++ import urllib, rfc822, calendar
+
+ class Opener(urllib.FancyURLopener):
+ user = None
+@@ -1253,12 +1259,15 @@
+ mtimes = info["last-modified"]
+ mtimet = rfc822.parsedate(mtimes)
+ if mtimet:
+- mtime = time.mktime(mtimet)
++ mtime = calendar.timegm(mtimet)
+ os.utime(localpath, (mtime, mtime))
+
+ except urllib.addinfourl, remote:
+ if remote.errcode == 304: # Not modified
+ item.setSucceeded(localpath)
++ elif remote.errcode == 404:
++ # Use a standard translatable error message.
++ item.setFailed(_("File not found"))
+ else:
+ item.setFailed(remote.errmsg)
+
+
+=== modified file 'smart/interface.py'
+--- smart/interface.py 2007-03-29 01:31:11 +0000
++++ smart/interface.py 2008-12-12 07:36:12 +0000
+@@ -148,7 +148,11 @@
+ x = fcntl.ioctl(1, termios.TIOCGWINSZ, s)
+ except IOError:
+ return 80
+- return struct.unpack('HHHH', x)[1]
++ width = struct.unpack('HHHH', x)[1]
++ if width > 0:
++ return width
++ else:
++ return 80
+
+ def createInterface(name, ctrl, command=None, argv=None):
+ try:
+
+=== modified file 'smart/interfaces/gtk/__init__.py'
+--- smart/interfaces/gtk/__init__.py 2008-07-22 21:01:43 +0000
++++ smart/interfaces/gtk/__init__.py 2008-12-12 07:21:09 +0000
+@@ -49,7 +49,10 @@
+ if name not in _pixbuf:
+ filename = getImagePath(name)
+ if os.path.isfile(filename):
+- icon_size = sysconf.get("gtk-icon-size")
++ try:
++ icon_size = sysconf.get("gtk-icon-size")
++ except AttributeError:
++ icon_size = None
+ if icon_size:
+ pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(filename,
+ icon_size,
+
+=== modified file 'smart/interfaces/gtk/progress.py'
+--- smart/interfaces/gtk/progress.py 2006-10-27 16:49:22 +0000
++++ smart/interfaces/gtk/progress.py 2008-12-12 07:20:49 +0000
+@@ -299,11 +299,11 @@
+ def test():
+ import sys, time
+
+- prog = GtkProgress()
++ prog = GtkProgress(True)
+
+ data = {"item-number": 0}
+ total, subtotal = 100, 100
+- prog.start(True)
++ prog.start()
+ prog.setTopic("Installing packages...")
+ for n in range(1,total+1):
+ data["item-number"] = n
+
+=== modified file 'smart/media.py'
+--- smart/media.py 2008-06-11 16:28:24 +0000
++++ smart/media.py 2008-12-12 07:23:24 +0000
+@@ -328,7 +328,7 @@
+ if os.access(filename, os.R_OK):
+ for line in open(filename):
+ line = line.strip()
+- if not line or line[0] == "#":
++ if not line or line[0] == "#" or line[0] == "+":
+ continue
+ tokens = line.split()
+ if len(tokens) < 2:
+
+=== modified file 'smart/plugins/aptchannelsync.py'
+--- smart/plugins/aptchannelsync.py 2008-09-04 21:24:31 +0000
++++ smart/plugins/aptchannelsync.py 2008-12-12 07:17:44 +0000
+@@ -20,7 +20,10 @@
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ #
+ import posixpath
+-import md5
++try:
++ from hashlib import md5
++except ImportError:
++ from md5 import md5
+ import os
+
+ # be compatible with 2.3
+@@ -69,7 +72,7 @@
+ continue # We don't deal with these yet.
+
+ # Build a unique alias.
+- m = md5.new("%s|%s|%s|%s" % (type, uri, distro, comps))
++ m = md5("%s|%s|%s|%s" % (type, uri, distro, comps))
+ alias = "aptsync-%s" % m.hexdigest()
+ seen.add(alias)
+
+
+=== modified file 'smart/util/cdistance.c'
+--- smart/util/cdistance.c 2005-06-08 20:41:27 +0000
++++ smart/util/cdistance.c 2008-11-26 17:30:06 +0000
+@@ -117,6 +117,11 @@
+ *ratio = 1.0;
+ return 0;
+ }
++ if (bl == 0) {
++ if (ratio)
++ *ratio = 0.0;
++ return al;
++ }
+ for (; *a == '*'; a++, al--)
+ wildstart = 1;
+ maxl = al>bl?al:bl;
+
+=== modified file 'smart/util/distance.py'
+--- smart/util/distance.py 2008-07-22 10:37:20 +0000
++++ smart/util/distance.py 2008-11-26 17:30:06 +0000
+@@ -62,6 +62,8 @@
+ a = a.lstrip("*")
+ al = len(a)
+ bl = len(b)
++ if bl == 0:
++ return al, 0.0
+ maxl = al > bl and al or bl
+ if cutoff and type(cutoff) is float:
+ cutoff = int(maxl-cutoff*maxl)
+
+=== modified file 'smart/util/filetools.py'
+--- smart/util/filetools.py 2008-06-29 20:50:22 +0000
++++ smart/util/filetools.py 2008-12-12 07:17:44 +0000
+@@ -22,12 +22,15 @@
+ from smart.const import BLOCKSIZE
+ import resource
+ import fcntl
+-import md5
++try:
++ from hashlib import md5
++except ImportError:
++ from md5 import md5
+ import os
+
+ def getFileDigest(path, digest=None):
+ if not digest:
+- digest = md5.md5()
++ digest = md5()
+ file = open(path)
+ while True:
+ data = file.read(BLOCKSIZE)
+@@ -42,8 +45,8 @@
+ return False
+ if os.path.getsize(path1) != os.path.getsize(path2):
+ return False
+- path1sum = md5.md5()
+- path2sum = md5.md5()
++ path1sum = md5()
++ path2sum = md5()
+ for path, sum in [(path1, path1sum), (path2, path2sum)]:
+ file = open(path)
+ while True:
+
+=== modified file 'smart/util/objdigest.py'
+--- smart/util/objdigest.py 2004-11-04 23:34:52 +0000
++++ smart/util/objdigest.py 2008-12-12 07:17:44 +0000
+@@ -20,7 +20,10 @@
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ #
+ import cPickle
+-import md5
++try:
++ from hashlib import md5
++except ImportError:
++ from md5 import md5
+
+ def getObjectDigest(obj):
+ return ObjectDigest(obj).getDigest()
+@@ -31,7 +34,7 @@
+ class ObjectDigest(object):
+
+ def __init__(self, obj=None):
+- self._digest = md5.md5()
++ self._digest = md5()
+ if obj:
+ self.addObject(obj)
+
+
+=== modified file 'smart/util/strtools.py'
+--- smart/util/strtools.py 2007-11-03 06:35:46 +0000
++++ smart/util/strtools.py 2008-12-12 07:17:44 +0000
+@@ -25,7 +25,6 @@
+
+ import posixpath
+ import string
+-import md5
+ import sys
+
+ class ShortURL(object):
+
+=== renamed file 'test.py' => 'test'
+--- test.py 2008-09-04 22:32:15 +0000
++++ test 2008-10-08 15:59:14 +0000
+@@ -34,7 +34,7 @@
+ import tests
+
+
+-USAGE=_("test.py [options] [<test filename>, ...]")
++USAGE=_("test [options] [<test filename>, ...]")
+
+
+ def find_tests(testpaths=()):
+
+=== modified file 'tests/aptdeb.py'
+--- tests/aptdeb.py 2008-09-05 19:55:23 +0000
++++ tests/aptdeb.py 2008-10-08 15:51:01 +0000
+@@ -8,7 +8,7 @@
+ from smart.fetcher import Fetcher
+ from smart.const import NEVER
+ from smart.cache import Cache
+-from smart import Error, sysconf
++from smart import Error, sysconf, iface
+
+ from tests.mocker import MockerTestCase
+ from tests import TESTDATADIR
+@@ -341,3 +341,17 @@
+ self.assertTrue(str(error).endswith(error_message), str(error))
+ else:
+ self.fail("Fetch worked with a bad signature! :-(")
++
++ def test_fetch_with_component_missing_in_release_file(self):
++ iface_mock = self.mocker.patch(iface.object)
++ iface_mock.warning("Component 'non-existent' is not in Release file "
++ "for channel 'alias'")
++ self.mocker.replay()
++
++ channel = createChannel("alias",
++ {"type": "apt-deb",
++ "baseurl": "file://%s/aptdeb" % TESTDATADIR,
++ "distribution": "./",
++ "components": "non-existent"})
++
++ self.assertEquals(channel.fetch(self.fetcher, self.progress), True)
+
+=== added file 'tests/debbase.py'
+--- tests/debbase.py 1970-01-01 00:00:00 +0000
++++ tests/debbase.py 2008-11-16 00:06:42 +0000
+@@ -0,0 +1,36 @@
++import sys
++
++from tests.mocker import MockerTestCase
++
++from smart.backends.deb.base import getArchitecture
++
++
++class GetArchitectureTest(MockerTestCase):
++
++ def fake_uname(self):
++ return ('Linux', 'burma', '2.6.24-19-generic',
++ '#1 SMP Wed Aug 20 22:56:21 UTC 2008', self.fake_arch)
++
++ def set_arch_and_platform(self, arch, platform):
++ self.fake_arch = arch
++ sys.platform = platform
++
++ def setUp(self):
++ self.fake_architecture = "i686"
++ self.real_platform = sys.platform
++
++ uname_mock = self.mocker.replace("os.uname")
++ uname_mock()
++ self.mocker.call(self.fake_uname)
++ self.mocker.replay()
++
++ def tearDown(self):
++ sys.platform = self.real_platform
++
++ def test_get_architecture_with_i686_linux2(self):
++ self.set_arch_and_platform("i686", "linux2")
++ self.assertEquals(getArchitecture(), "i386")
++
++ def test_get_architecture_with_i686_anything(self):
++ self.set_arch_and_platform("i686", "anything")
++ self.assertEquals(getArchitecture(), "anything-i386")
+
+=== modified file 'tests/debpm.py'
+--- tests/debpm.py 2008-09-04 22:32:15 +0000
++++ tests/debpm.py 2008-10-08 15:35:32 +0000
+@@ -1,16 +1,18 @@
+ import unittest
+-import copy
+ import os
+
+-from smart.backends.deb.pm import DebPackageManager
++from smart.backends.deb.base import (
++ DebPackage, DebProvides, DebNameProvides, DebPreRequires, DebRequires,
++ DebOrRequires, DebUpgrades, DebConflicts, DebBreaks)
++from smart.backends.deb.pm import DebPackageManager, DebSorter, UNPACK, CONFIG
+ from smart.channel import createChannel
+ from smart.sysconfig import SysConfig
+ from smart.interface import Interface
+ from smart.progress import Progress
+ from smart.fetcher import Fetcher
+-from smart.cache import Cache
++from smart.cache import Cache, Loader
+ from smart.const import INSTALL, REMOVE
+-from smart import iface, sysconf
++from smart import iface, sysconf, cache
+
+ from tests import TESTDATADIR, ctrl
+
+@@ -115,13 +117,14 @@
+ self.assertEquals(file_url[:7], "file://")
+ file_path = file_url[7:]
+
+- environ = []
+- def check_environ(argv, output):
+- environ.append(os.environ.get("DEBIAN_FRONTEND"))
+- environ.append(os.environ.get("APT_LISTCHANGES_FRONTEND"))
++ check_results = []
++ def check(argv, output):
++ check_results.append(os.environ.get("DEBIAN_FRONTEND"))
++ check_results.append(os.environ.get("APT_LISTCHANGES_FRONTEND"))
++ check_results.append("--force-confold" in argv)
+ return 0
+
+- self.pm.dpkg = check_environ
++ self.pm.dpkg = check
+
+ sysconf.set("pm-iface-output", True, soft=True)
+ sysconf.set("deb-non-interactive", True, soft=True)
+@@ -129,5 +132,99 @@
+ self.pm.commit({pkg: INSTALL}, {pkg: [file_path]})
+
+ # One time for --unpack, one time for --configure.
+- self.assertEquals(environ,
+- ["noninteractive", "none", "noninteractive", "none"])
++ self.assertEquals(check_results,
++ ["noninteractive", "none", True,
++ "noninteractive", "none", True])
++
++ def test_deb_non_interactive_false(self):
++ pkg = self.cache.getPackages()[0]
++ info = self.loader.getInfo(pkg)
++
++ file_url = info.getURLs()[0]
++ self.assertEquals(file_url[:7], "file://")
++ file_path = file_url[7:]
++
++ check_results = []
++ def check(argv, output):
++ check_results.append(os.environ.get("DEBIAN_FRONTEND"))
++ check_results.append(os.environ.get("APT_LISTCHANGES_FRONTEND"))
++ check_results.append("--force-confold" in argv)
++ return 0
++
++ self.pm.dpkg = check
++
++ sysconf.set("pm-iface-output", False, soft=True)
++ sysconf.set("deb-non-interactive", False, soft=True)
++
++ self.pm.commit({pkg: INSTALL}, {pkg: [file_path]})
++
++ # One time for --unpack, one time for --configure.
++ self.assertEquals(check_results,
++ [None, None, False,
++ None, None, False])
++
++
++class DebSorterTest(unittest.TestCase):
++
++ def setUp(self):
++ self.packages_to_build = []
++ class MyLoader(Loader):
++ def load(loader):
++ for args in self.packages_to_build:
++ loader.buildPackage(*args)
++ self.loader = MyLoader()
++ self.cache = Cache()
++ self.cache.addLoader(self.loader)
++
++ def build(self, *args):
++ map = {cache.Package: [],
++ cache.Provides: [],
++ cache.Requires: [],
++ cache.Upgrades: [],
++ cache.Conflicts: []}
++ for arg in args:
++ for cls, lst in map.iteritems():
++ if issubclass(arg[0], cls):
++ lst.append(arg)
++ break
++ else:
++ raise RuntimeError("%r is unknown" % type(arg[0]))
++ self.packages_to_build.append(
++ (map[cache.Package][0], map[cache.Provides],
++ map[cache.Requires], map[cache.Upgrades],
++ map[cache.Conflicts]))
++
++ def test_conflicts_order_remove_after_unpack_whenever_possible(self):
++ self.build((DebPackage, "a", "1"),
++ (DebNameProvides, "a", "1"))
++ self.build((DebPackage, "a", "2"),
++ (DebNameProvides, "a", "2"),
++ (DebUpgrades, "a", "<", "2"),
++ (DebRequires, "b", "=", "1"))
++ self.build((DebPackage, "b", "1"),
++ (DebNameProvides, "b", "1"),
++ (DebConflicts, "a", "<", "2"))
++ self.cache.load()
++ changeset = {}
++ for pkg in self.cache.getPackages():
++ if pkg.name == "a" and pkg.version == "1":
++ a_1 = pkg
++ elif pkg.name == "a":
++ a_2 = pkg
++ else:
++ b_1 = pkg
++
++ a_1.installed = True
++
++ changeset[a_1] = REMOVE
++ changeset[a_2] = INSTALL
++ changeset[b_1] = INSTALL
++
++ sorter = DebSorter(changeset)
++ sorted = sorter.getSorted()
++
++ # XXX That's not yet stable. The deb-ordering-fix branch
++ # should bring it to stability.
++ #self.assertEquals(sorted,
++ # [(a_2, UNPACK), (a_1, REMOVE), (b_1, UNPACK),
++ # (b_1, CONFIG), (a_2, CONFIG)])
+
+=== added file 'tests/initialization.py'
+--- tests/initialization.py 1970-01-01 00:00:00 +0000
++++ tests/initialization.py 2008-11-26 17:10:15 +0000
+@@ -0,0 +1,26 @@
++import sys
++
++from tests.mocker import MockerTestCase
++
++from smart import initPlugins
++
++
++class InitPluginsTest(MockerTestCase):
++
++ def setUp(self):
++ from smart import const
++ self.old_plugins_dir = const.PLUGINSDIR
++ self.plugins_dir = self.makeDir()
++ const.PLUGINSDIR = self.plugins_dir
++
++ def tearDown(self):
++ from smart import const
++ const.PLUGINSDIR = self.old_plugins_dir
++
++ def test_plugins_dir_is_used(self):
++ self.makeFile("import sys; sys.test_worked = True",
++ basename="plugin.py", dirname=self.plugins_dir)
++ initPlugins()
++ self.assertEquals(getattr(sys, "test_worked", False), True)
++ del sys.test_worked
++
+
+=== added directory 'tests/util'
+=== added file 'tests/util/__init__.py'
+=== added file 'tests/util/distance.py'
+--- tests/util/distance.py 1970-01-01 00:00:00 +0000
++++ tests/util/distance.py 2008-11-26 17:30:06 +0000
+@@ -0,0 +1,11 @@
++from tests.mocker import MockerTestCase
++
++from smart.util.distance import globdistance
++
++
++class DistanceTestBase(MockerTestCase):
++
++ def test_globdistance_with_empty_values(self):
++ self.assertEquals(globdistance("", ""), (0, 1.0))
++ self.assertEquals(globdistance("", "a"), (1, 0.0))
++ self.assertEquals(globdistance("a", ""), (1, 0.0))
+
Index: smart.spec
===================================================================
RCS file: /cvs/extras/rpms/smart/F-10/smart.spec,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- smart.spec 21 Dec 2008 20:55:27 -0000 1.37
+++ smart.spec 27 Dec 2008 13:43:25 -0000 1.38
@@ -7,7 +7,7 @@
Summary: Next generation package handling tool
Name: smart
Version: 1.1
-Release: 58%{?dist}
+Release: 58.0.1%{?dist}
License: GPLv2+
Group: Applications/System
URL: http://labix.org/smart/
@@ -204,6 +204,9 @@
%endif
%changelog
+* Sat Dec 27 2008 Axel Thimm <Axel.Thimm at ATrpms.net> - 1.1-58.0.1
+- Rebuild with proper patch.
+
* Sun Dec 21 2008 Axel Thimm <Axel.Thimm at ATrpms.net> - 1.1-58
- Use bugfix branch, remove already included patches.
- Previous message (by thread): rpms/asunder/devel .cvsignore, 1.6, 1.7 asunder.spec, 1.5, 1.6 sources, 1.6, 1.7
- Next message (by thread): rpms/isomaster/devel isomaster-1.3.4-optflags.diff, NONE, 1.1 isomaster.spec, 1.14, 1.15
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list