Calculate Forum

Ошибка cl-builder-restore

Утилиты 3,9,10
cl-builder-restore выдает ошибку
cl-builder-restore --id lb-deepin

  • Восстановление lb-deepin сборки /Traceback (most recent call last):
    File “/usr/lib64/python2.7/site-packages/calculate/core/server/func.py”, line 721, in run
    res = method(*args)
    File “/usr/lib64/python2.7/site-packages/calculate/builder/builder.py”, line 154, in restore_build
    build.restore()
    File “/usr/lib64/python2.7/site-packages/calculate/builder/build_storage.py”, line 141, in restore
    self.save()
    File “/usr/lib64/python2.7/site-packages/calculate/builder/build_storage.py”, line 113, in save
    self.parent.save_build(self)
    File “/usr/lib64/python2.7/site-packages/calculate/builder/build_storage.py”, line 204, in save_build
    d = {Build.Parameter.Directory: build.distributive.getDirectory(),
    File “/usr/lib64/python2.7/site-packages/calculate/install/distr.py”, line 296, in getDirectory
    return self.convertToDirectory().directory
    File “/usr/lib64/python2.7/site-packages/calculate/install/distr.py”, line 2045, in convertToDirectory
    self._mountLiveImage()
    File “/usr/lib64/python2.7/site-packages/calculate/install/distr.py”, line 2030, in _mountLiveImage
    self.image_distro.convertToDirectory().getDirectory())
    File “/usr/lib64/python2.7/site-packages/calculate/install/distr.py”, line 1725, in convertToDirectory
    return self.convertToSquash().convertToDirectory()
    File “/usr/lib64/python2.7/site-packages/calculate/install/distr.py”, line 1702, in convertToSquash
    self._mountIso(self.file, mdirectory)
    File “/usr/lib64/python2.7/site-packages/calculate/install/distr.py”, line 1683, in _mountIso
    if “block special” in ftype:
    TypeError: argument of type ‘NoneType’ is not iterable
  • TypeError:argument of type ‘NoneType’ is not iterable(calculate.install.distr:1683)
  • Восстановление сборки не удалось

И опять снова

Версия утилит calculate-utils-3.7.2.12-r2

cl-build-restore выдает ошибку

cl-builder-restore --id lb-w10
 * Восстановление lb-w10 сборки /Traceback (most recent call last):
   File "/usr/lib/python3.9/site-packages/calculate/core/server/func.py", line 754, in run
    res = method(*args)
   File "/usr/lib/python3.9/site-packages/calculate/builder/builder.py", line 156, in restore_build
    build.restore()
   File "/usr/lib/python3.9/site-packages/calculate/builder/build_storage.py", line 141, in restore
    self.save()
   File "/usr/lib/python3.9/site-packages/calculate/builder/build_storage.py", line 113, in save
    self.parent.save_build(self)
   File "/usr/lib/python3.9/site-packages/calculate/builder/build_storage.py", line 204, in save_build
    d = {Build.Parameter.Directory: build.distributive.getDirectory(),
   File "/usr/lib/python3.9/site-packages/calculate/install/distr.py", line 297, in getDirectory
    return self.convertToDirectory().directory
   File "/usr/lib/python3.9/site-packages/calculate/install/distr.py", line 2044, in convertToDirectory
    self._mountLiveImage()
   File "/usr/lib/python3.9/site-packages/calculate/install/distr.py", line 2029, in _mountLiveImage
    self.image_distro.convertToDirectory().getDirectory())
   File "/usr/lib/python3.9/site-packages/calculate/install/distr.py", line 1724, in convertToDirectory
    return self.convertToSquash().convertToDirectory()
   File "/usr/lib/python3.9/site-packages/calculate/install/distr.py", line 1701, in convertToSquash
    self._mountIso(self.file, mdirectory)
   File "/usr/lib/python3.9/site-packages/calculate/install/distr.py", line 1682, in _mountIso
    if "block special" in ftype:
 TypeError: argument of type 'NoneType' is not iterable
 ...
 * TypeError:argument of type 'NoneType' is not iterable(calculate.install.distr:1682)
 * Восстановление сборки не удалось

Утилиты по какой то причине не нашли/не имеют доступ к дистрибутиву. Ошибка воспроизводится?

Да - на свежих утилитах.
Если перезагрузить комп где велась сборка.
Естественно говорит что сборка “нарушенная”
Причем если брать стандартный дистрибутив например CLDX - то все нормально отрабатывает.
Если свою сборку - то приведенная ошибка.
приходится делать cl-builder-break <своя сборка> и заново разворачивать свою сборку через cl-builder-prepare
Что странно - когда делаешь cl-builder-break <своя сборка> вылазит очень странная вешь, типа система i686

Прервать сборку
 * Система:   i686
 * Идентификатор сборки: lb-base-desktop (нарушенный)
 * Очистить после отключения: да
 * Очистить бинарные пакеты после отключения: нет
 * Прерывание lb-base-desktop сборки ...                                                                                                                        [ ok ]
 * Сборка прервана успешно
Подготовить новую сборку
 * Исходный образ: Calculate Linux Scratch 22 x86_64 20211212
 * Профиль системы: distros:CLS/amd64/20

Хотя она x86_64

С архитектурой тут забавный момент - утилиты в данном случае просто смотрят, есть ли на сборке /lib64
Это просто для тултипа, не должно больше ни на что влиять.

Есть подозрение что в моих сборках присутствуют строение оверлеи отличные от кальковских. Может тут проблема?

Это очень даже возможно, можно подебажить и отсечь проблемы с доступом таким образом:
(с рутовыми правами)

sed -i '/def _mountIso(self, file, directory):/a \ \ \ \ \ \ \ \ print("FILE PATH: " + file)' /usr/lib/python3.9/site-packages/calculate/install/distr.py

Это тупо добавляет принт пути к файлу на который он ругается. Если после этого воспроизвести баг и в выводе он напишет “FILE PATH: <путь к файлу>” (я так понимаю к iso образу), то проблемы с файлом, нужно проверить что он существует и к нему есть доступ. Стоит затем еще попробовать сделать file -bLzk <путь к файлу>, утилиты пытаются парсить вывод этой штуки, может проблема в этом.
Если же после “FILE PATH:” пусто, то проблема где то глубже, по какой то причине путь к оригинальному iso не сохранился в сборке.
Чтобы убрать дебажное сообщение:

sed -i '/print("FILE PATH: " + file)/d' /usr/lib/python3.9/site-packages/calculate/install/distr.py
© 2007-2020 Calculate Ltd.
Mastodon Mastodon