@@ -55,6 +55,7 @@ def _prepare_apt_venv(self):
5555 )
5656 # set apt core packages as installed, required for it to properly resolve dependencies
5757 apt_core_packages = self .apt_venv .search_packages (listings .apt_core )
58+ apt_core_packages = self ._remove_old_packages (apt_core_packages )
5859 self .apt_venv .set_installed_packages (apt_core_packages )
5960
6061 def _resolve_packages_to_deploy (self , exclude_patterns , package_names ):
@@ -80,7 +81,7 @@ def _extract_packages(self, appdir_root, packages):
8081 libc_root = appdir_root / "opt" / "libc"
8182 appdir_root .mkdir (exist_ok = True , parents = True )
8283 libc_root .mkdir (exist_ok = True , parents = True )
83- libc_packages = self .list_lib_related_packages ()
84+ libc_packages = self .list_glibc_related_packages ()
8485
8586 for package in packages :
8687 final_target = appdir_root
@@ -94,10 +95,22 @@ def _extract_packages(self, appdir_root, packages):
9495
9596 return packages
9697
97- def list_lib_related_packages (self ):
98+ def list_glibc_related_packages (self ):
9899 initial_libc_packages = []
99100 for pkg_name in listings .glibc :
100101 for arch in self .apt_venv .architectures :
101102 initial_libc_packages .append ("%s:%s" % (pkg_name , arch ))
102103 libc_packages = self .apt_venv .install_simulate (initial_libc_packages )
103104 return libc_packages
105+
106+ def _remove_old_packages (self , apt_core_packages ):
107+ latest_packages = {}
108+ for package in apt_core_packages :
109+ pkg_tuple = (package .name , package .arch )
110+ if pkg_tuple not in latest_packages :
111+ latest_packages [pkg_tuple ] = package
112+ else :
113+ if package > latest_packages [pkg_tuple ]:
114+ latest_packages [pkg_tuple ] = package
115+
116+ return latest_packages .values ()
0 commit comments