Ticket #13: yum-3.2.24-update.patch
| File yum-3.2.24-update.patch, 4.6 kB (added by bergolth, 2 years ago) |
|---|
-
yum/__init__.py
old new 2848 2848 self.tsInfo.addObsoleted(obsoletee, po) 2849 2849 tx_return.append(txmbr) 2850 2850 else: 2851 # naive handling of packages that are already in the transaction set 2852 if not self.allowedMultipleInstalls(po): 2853 for tsmember in self.tsInfo.matchNaevr(name = po.name): 2854 self.tsInfo.remove(tsmember.pkgtup) 2855 2851 2856 txmbr = self.tsInfo.addInstall(po) 2852 2857 tx_return.append(txmbr) 2853 2858 … … 2918 2923 obsoletes = [] 2919 2924 2920 2925 for (obsoleting, installed) in obsoletes: 2921 obsoleting_pkg = self.getPackageObject(obsoleting) 2922 topkg = self._test_loop(obsoleting_pkg, self._pkg2obspkg) 2923 if topkg is not None: 2924 obsoleting_pkg = topkg 2925 installed_pkg = self.getInstalledPackageObject(installed) 2926 txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg) 2927 self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg) 2928 if requiringPo: 2929 txmbr.setAsDep(requiringPo) 2930 tx_return.append(txmbr) 2926 if not self.tsInfo.getMembersWithState(installed, TS_REMOVE_STATES): 2927 obsoleting_pkg = self.getPackageObject(obsoleting) 2928 topkg = self._test_loop(obsoleting_pkg, self._pkg2obspkg) 2929 if topkg is not None: 2930 obsoleting_pkg = topkg 2931 installed_pkg = self.getInstalledPackageObject(installed) 2932 txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg) 2933 self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg) 2934 if requiringPo: 2935 txmbr.setAsDep(requiringPo) 2936 tx_return.append(txmbr) 2931 2937 2932 2938 for (new, old) in updates: 2933 2939 if self.tsInfo.isObsoleted(pkgtup=old): 2934 2940 self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'), 2935 2941 old) 2936 2942 else: 2937 tx_return.extend(self.update(po=self.getPackageObject(new))) 2943 if not self.tsInfo.getMembersWithState(old, TS_REMOVE_STATES): 2944 tx_return.extend(self.update(po=self.getPackageObject(new))) 2938 2945 2939 2946 return tx_return 2940 2947 … … 3018 3025 # TODO: we should search the updates and obsoletes list and 3019 3026 # mark the package being updated or obsoleted away appropriately 3020 3027 # and the package relationship in the tsInfo 3021 3028 3029 # check if the packages to upgrade are already in the transaction set 3030 for installed_pkg in instpkgs: 3031 toerase = self.tsInfo.getMembersWithState(installed_pkg.pkgtup, TS_REMOVE_STATES) 3032 if toerase: 3033 self.tsInfo.remove(toerase[0]) 3022 3034 3023 3035 # check for obsoletes first 3024 3036 if self.conf.obsoletes: … … 3127 3139 3128 3140 tx_return = [] 3129 3141 pkgs = [] 3130 3142 tspkgs = [] 3131 3143 3132 3144 if po: 3133 3145 pkgs = [po] 3146 tspkgs = self.tsInfo.getMembers(po.pkgtup) 3134 3147 else: 3135 3148 if kwargs.has_key('pattern'): 3136 3149 if kwargs['pattern'][0] == '@': … … 3151 3164 self.logger.critical(_('No Match for argument: %s') % arg) 3152 3165 else: 3153 3166 pkgs.extend(depmatches) 3154 3167 3168 (e,m,u) = self.tsInfo.matchPackageNames([kwargs['pattern']]) 3169 tspkgs.extend(e) 3170 tspkgs.extend(m) 3155 3171 else: 3156 3172 nevra_dict = self._nevra_kwarg_parse(kwargs) 3157 3173 … … 3163 3179 if not kwargs.get('silence_warnings', False): 3164 3180 self.logger.warning(_("No package matched to remove")) 3165 3181 3182 tspkgs = self.tsInfo.matchNaevr(name=nevra_dict['name'], 3183 arch=nevra_dict['arch'], epoch=nevra_dict['epoch'], 3184 ver=nevra_dict['version'], rel=nevra_dict['release']) 3185 3186 # naive handling of packages that are already in the transaction set 3187 for txmbr in tspkgs: 3188 self.tsInfo.remove(txmbr.pkgtup) 3189 3166 3190 for po in pkgs: 3167 3191 txmbr = self.tsInfo.addErase(po) 3168 3192 tx_return.append(txmbr)

