@@ -64,15 +64,35 @@ func (u *UpgradeService) upGraph(ctx context.Context, graph *topo.Graph[string,
6464 filter Filter ,
6565) (err error ) {
6666 var (
67- develUp UpSlice
68- errs []error
69- aurdata = make (map [string ]* aur.Pkg )
70- aurUp UpSlice
67+ develUp UpSlice
68+ errs []error
69+ aurdata = make (map [string ]* aur.Pkg )
70+ aurUp UpSlice
71+ syncUpgrades map [string ]db.SyncUpgrade
7172 )
7273
7374 remote := u .dbExecutor .InstalledRemotePackages ()
7475 remoteNames := u .dbExecutor .InstalledRemotePackageNames ()
7576
77+ if u .cfg .Mode .AtLeastRepo () {
78+ syncUpgrades , err = u .dbExecutor .SyncUpgrades (enableDowngrade )
79+ errs = append (errs , err )
80+
81+ replaced := u .syncReplacedPackageNames (syncUpgrades )
82+ if replaced .Cardinality () > 0 {
83+ filteredRemote := make (map [string ]db.IPackage , len (remote ))
84+ for name , pkg := range remote {
85+ if ! replaced .Contains (name ) {
86+ filteredRemote [name ] = pkg
87+ }
88+ }
89+ remote = filteredRemote
90+ remoteNames = slices .DeleteFunc (slices .Clone (remoteNames ), func (name string ) bool {
91+ return replaced .Contains (name )
92+ })
93+ }
94+ }
95+
7696 if u .cfg .Mode .AtLeastAUR () {
7797 u .log .OperationInfoln (gotext .Get ("Searching AUR for updates..." ))
7898
@@ -168,7 +188,6 @@ func (u *UpgradeService) upGraph(ctx context.Context, graph *topo.Graph[string,
168188 if u .cfg .Mode .AtLeastRepo () {
169189 u .log .OperationInfoln (gotext .Get ("Searching databases for updates..." ))
170190
171- syncUpgrades , err := u .dbExecutor .SyncUpgrades (enableDowngrade )
172191 for _ , up := range syncUpgrades {
173192 if filter != nil && ! filter (& db.Upgrade {
174193 Name : up .Package .Name (),
@@ -184,13 +203,22 @@ func (u *UpgradeService) upGraph(ctx context.Context, graph *topo.Graph[string,
184203 upgradeInfo := up
185204 graph = u .grapher .GraphSyncPkg (ctx , graph , up .Package , & upgradeInfo )
186205 }
187-
188- errs = append (errs , err )
189206 }
190207
191208 return errors .Join (errs ... )
192209}
193210
211+ func (u * UpgradeService ) syncReplacedPackageNames (syncUpgrades map [string ]db.SyncUpgrade ) mapset.Set [string ] {
212+ replaced := mapset .NewThreadUnsafeSet [string ]()
213+ for _ , up := range syncUpgrades {
214+ for _ , replacement := range u .dbExecutor .PackageReplaces (up .Package ) {
215+ replaced .Add (replacement .Name )
216+ }
217+ }
218+
219+ return replaced
220+ }
221+
194222func (u * UpgradeService ) graphToUpSlice (graph * topo.Graph [string , * dep.InstallInfo ]) (aurUp , repoUp UpSlice ) {
195223 aurUp = UpSlice {Up : make ([]Upgrade , 0 , graph .Len ())}
196224 repoUp = UpSlice {Up : make ([]Upgrade , 0 , graph .Len ()), Repos : u .dbExecutor .Repos ()}
0 commit comments