|
|
|
@ -638,9 +638,15 @@ class Builder(Update):
|
|
|
|
|
|
|
|
|
|
return decor
|
|
|
|
|
|
|
|
|
|
def rebuild_changed_packages(self, builder_path, repository_data):
|
|
|
|
|
def get_rebuild_changed_packages(self, builder_path, repository_data):
|
|
|
|
|
"""
|
|
|
|
|
Пересобрать изменённые пакеты
|
|
|
|
|
Получить пакеты ebuild которых изменились
|
|
|
|
|
|
|
|
|
|
Перебираем все пакеты из var/db/pkg (а именно получаем поля из
|
|
|
|
|
environment.bz2)
|
|
|
|
|
и сравниваем эти поля с полями из metadata/md5-cache для пакетов.
|
|
|
|
|
Таким образом в список не попадут те пакеты, у которых RDEPEND и DEPEND
|
|
|
|
|
были изменены динамически например при исправлении "автомагии"
|
|
|
|
|
"""
|
|
|
|
|
var_db_path = path.join(builder_path, 'var/db/pkg')
|
|
|
|
|
map_rep = {k: pathJoin(builder_path, v)
|
|
|
|
@ -657,7 +663,13 @@ class Builder(Update):
|
|
|
|
|
except EbuildInfoError:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
rebuild_list = map(lambda x: "=%s" % x, rebuild_generator())
|
|
|
|
|
return ["=%s" % x for x in rebuild_generator()]
|
|
|
|
|
|
|
|
|
|
def rebuild_changed_packages(self, builder_path, repository_data):
|
|
|
|
|
"""
|
|
|
|
|
Пересобрать изменённые пакеты
|
|
|
|
|
"""
|
|
|
|
|
rebuild_list = self.get_rebuild_changed_packages(builder_path, repository_data)
|
|
|
|
|
if rebuild_list:
|
|
|
|
|
return self.emerge_ask(False, "-1", *rebuild_list)
|
|
|
|
|
return True
|
|
|
|
|