--- /home/jail/usr/lib/portage/bin/emerge 2004-01-23 07:26:01.000000000 +0900 +++ /usr/lib/portage/bin/emerge 2004-01-23 16:29:09.561265448 +0900 @@ -894,16 +894,31 @@ print "ebuild:",myeb print "binpkg:",myeb_pkg - if myeb and myeb_pkg: - myeb_s = portage.catpkgsplit(myeb) - myeb_s = [myeb_s[0]+"/"+myeb_s[1], myeb_s[2], myeb_s[3]] - myeb_pkg_s = portage.catpkgsplit(myeb_pkg) - myeb_pkg_s = [myeb_pkg_s[0]+"/"+myeb_pkg_s[1], myeb_pkg_s[2], myeb_pkg_s[3]] - - if portage.pkgcmp(myeb_s, myeb_pkg_s) > 0: # eb is newer than pkg + if myeb_pkg: + myeb_pkg_s = portage.catpkgsplit(myeb_pkg) + myeb_pkg_s = [myeb_pkg_s[0]+"/"+myeb_pkg_s[1], myeb_pkg_s[2], myeb_pkg_s[3]] + + available_eb = portage.portdb.xmatch("bestmatch-visible",x) + available_eb_s = portage.catpkgsplit(available_eb) + available_eb_s = [available_eb_s[0]+"/"+available_eb_s[1], available_eb_s[2], available_eb_s[3]] + + if portage.pkgcmp(available_eb_s, myeb_pkg_s) > 0: # eb is newer than pkg myeb_pkg = None else: - myeb = None + available_pkgs = portage.db[portage.root]["bintree"].dbapi.cp_list(myeb_pkg_s[0]) + if available_eb in available_pkgs: + myeb_pkg = available_eb + myeb = None + elif ("--usepkgonly" in myopts): + for pkg in available_pkgs: + pkg_s = portage.catpkgsplit(pkg) + pkg_s = [pkg_s[0]+"/"+pkg_s[1], pkg_s[2], pkg_s[3]] + if portage.pkgcmp(available_eb_s, pkg_s) >= 0: + myeb_pkg = pkg + myeb = None + break + else: + myeb_pkg = None # "--usepkgonly" not in myopts means myeb exists if "--upgradeonly" in myopts: # Check that there isn't a newer version of this package already installed