Cl-update перестал подбивать итог

Уважаемые, здравствуйте!

Уже несколько дней наблюдаю картину из сабжа.

У других пользователей всё норм? Никого не беспокоит?

Выглядит это так - видим список предлагаемых обновлений, но информации ни о количестве, ни о загружаемом объёме не получаем :pensive:

 ...
 * Graphical boot animation (splash) and logger (U) sys-boot/plymouth-22.02.122-r2 (967 KiB)
 * Утилиты локализации GNU (U) sys-devel/gettext-0.22.5 (2967 KiB)
 * Обновлённые файлы config.sub и config.guess (GNU) (U) sys-devel/gnuconfig-20240728 (52 KiB)
 * Symlinks to use LLVM on binutils-free system (U) sys-devel/llvm-toolchain-symlinks-18-r1 (20 KiB)
 * Userspace utilities for the exFAT filesystem (kernel 5.7+) (U) sys-fs/exfatprogs-1.2.5 (76 KiB)
 * Ещё одна полезная библиотека для консольного отображения (U) sys-libs/readline-8.2_p13 (1203 KiB)

Вы хотите установить эти пакеты? (Yes/No):

В GUI’шной консоли аналогично

1 Like

Здравия желаю. Синоним…, всё тоже самое.

Проблем нет. Стоит CLDX.

Возможно, что давно не обновлялись и “сломанный” пакет в систему ещё не установился.

Например:

$ equery belongs cl-update
 * Searching for cl-update ...
sys-apps/calculate-utils-3.7.6.15-r1 (/usr/bin/cl-update -> ../libexec/calculate/cl-core-wrapper)
$ equery list -op sys-apps/calculate-utils
 * Searching for calculate-utils in sys-apps ...
[--O] [  ] sys-apps/calculate-utils-3.7.6.9:0
[--O] [  ] sys-apps/calculate-utils-3.7.6.11:0
[--O] [  ] sys-apps/calculate-utils-3.7.6.12:0
[--O] [  ] sys-apps/calculate-utils-3.7.6.13-r1:0
[--O] [  ] sys-apps/calculate-utils-3.7.6.15:0
[I-O] [  ] sys-apps/calculate-utils-3.7.6.15-r1:0
[--O] [ -] sys-apps/calculate-utils-9999:0

Подтверждаю, так же. Сегодня поломал систему cl-update и смалодушничал, не стал обновляться, запустил cl-install --iso

[binary  N     ] media-sound/jack-example-tools-4  USE="alsa opus readline -jack-net -jack-netsource -sndfile -zalsa" 
[binary  N     ] media-libs/mlt-7.24.0  USE="ffmpeg frei0r gtk jack opengl python qt6 sdl xml -debug -libsamplerate -opencv -qt5 -rtaudio -rubberband -test (-vdpau) -vidstab -xine" PYTHON_SINGLE_TARGET="python3_11 -python3_10 -python3_12" 
[binary  N     ] kde-apps/kdenlive-24.08.1  USE="handbook semantic-desktop v4l -debug -designer -doc -gles2-only -test" 

Would you like to merge these packages? [Yes/No] Yes
>>> Running pre-merge checks for acct-group/realtime-0-r2

Подтверждаю.
Теперь и у меня информации ни о количестве, ни о загружаемом объёме нет. Итоги не работают.

В чём причина?

Разработчики молчат… (

Ага, на форуме активности мало.

Может, кто общается/ держит связь в других платформах/ чатах, может обратят внимание?

Похоже никто ответа не знает.

Может можно проверить после какого обновления это произошло и выяснить в каком пакете баг?

И не лень вам? Как?
Разработчику это не надо. Пока…

Юзаю emerge и проблем почти не замечаю (ну реально в разы меньше). (а этой проблемы вообще нет)

PS: Ну не работает, в первый раз что-ли? Другой инструмент работает - нет - ёжики плакали кололись но продолжали жрать кактус [без обид - уже месяц с чем-то]

Тот же месяц (где-то) назад в Телеге пролетала мысля про locale-проблемы - типа где-то из-за пробелов (или ещё чего) не пропускается “KiB” - и в итоге вся строка - в нуль. Если интересно ищите в истории в Телеге.

Команду не подскажете? Может и Мне сгодится :thinking:

1 Like

Скорее всего, что вот этот коммит по теме, надо бы его проверить.

В системе, ещё с рабочей cl-update внёс указанные изменения= итоги пропали–> ЧТД.

Далее, надо будет обратно пропатчить emerge_parser.py в системе со сломанным cl-update и, повторно убедиться в этом.

Как итог: виновник найден :upside_down_face:

1 Like
# find / -name emerge_parser.py
/usr/lib/python3.11/site-packages/calculate/update/emerge_parser.py

# sed -i.bak 's|\\d+(\\s?\\d\*)\*\\s\\S+|(\\S+\\s?\\S\*\\s\\S+)|' /usr/lib/python3.11/site-packages/calculate/update/emerge_parser.py

1 Like

Как говорится, прочувствуй разницу…

До:

 * Набор Calculate утилит для установки, сборки и обновления системы (U) sys-apps/calculate-utils-3.7.6.16 (4839 KiB)
 * Утилиты для управления параметрами маршрутизации и контроля сетевого трафика (rR) sys-apps/iproute2-6.9.0 (1101 KiB)
 * Библиотека для сборки EFI-приложений (U) sys-boot/gnu-efi-3.0.18-r5 (758 KiB)
 * Набор компиляторов GCC, разработанный в рамках проекта GNU (U) sys-devel/gcc-13.3.1_p20241025 (81129 KiB)
 * Библиотека libc GNU для языка C (U) sys-libs/glibc-2.40-r5 (16527 KiB)

Вы хотите установить эти пакеты? (Yes/No): 

После:

 * Набор Calculate утилит для установки, сборки и обновления системы (U) sys-apps/calculate-utils-3.7.6.16 (4839 KiB)
 * Утилиты для управления параметрами маршрутизации и контроля сетевого трафика (rR) sys-apps/iproute2-6.9.0 (1101 KiB)
 * Библиотека для сборки EFI-приложений (U) sys-boot/gnu-efi-3.0.18-r5 (758 KiB)
 * Набор компиляторов GCC, разработанный в рамках проекта GNU (U) sys-devel/gcc-13.3.1_p20241025 (81129 KiB)
 * Библиотека libc GNU для языка C (U) sys-libs/glibc-2.40-r5 (16527 KiB)
 * 75 пакетов будет установлено, 355101 KiB будет загружено

Вы хотите установить эти пакеты? (Yes/No):

До:

 * Ускоренный открытый драйвер для видеокарт nVidia (rR) x11-drivers/xf86-video-nouveau-1.0.17 (269 KiB)
 * Драйвер видеокарты VIA/S3G для использования в X.Org (rR) x11-drivers/xf86-video-openchrome-0.6.0 (190 KiB)
 * Видеодрайвер гостевой версии VirtualBox (rR) x11-drivers/xf86-video-vboxvideo-1.0.0 (45 KiB)
 * Базовый видеодрайвер VESA (rR) x11-drivers/xf86-video-vesa-2.6.0 (59 KiB)
 * Видеодрайвер VMware SVGA (rR) x11-drivers/xf86-video-vmware-13.4.0 (136 KiB)

Вы хотите установить эти пакеты? (Yes/No): 

После:

 * Ускоренный открытый драйвер для видеокарт nVidia (rR) x11-drivers/xf86-video-nouveau-1.0.17 (269 KiB)
 * Драйвер видеокарты VIA/S3G для использования в X.Org (rR) x11-drivers/xf86-video-openchrome-0.6.0 (190 KiB)
 * Видеодрайвер гостевой версии VirtualBox (rR) x11-drivers/xf86-video-vboxvideo-1.0.0 (45 KiB)
 * Базовый видеодрайвер VESA (rR) x11-drivers/xf86-video-vesa-2.6.0 (59 KiB)
 * Видеодрайвер VMware SVGA (rR) x11-drivers/xf86-video-vmware-13.4.0 (136 KiB)
 * 106 пакетов будет установлено, 779905 KiB будет загружено

Вы хотите установить эти пакеты? (Yes/No): 

На версии утилит:

$ equery belongs cl-update
 * Searching for cl-update ...
sys-apps/calculate-utils-3.7.7.6 (/usr/bin/cl-update -> ../libexec/calculate/cl-core-wrapper)
$ equery list -op sys-apps/calculate-utils
 * Searching for calculate-utils in sys-apps ...
[--O] [  ] sys-apps/calculate-utils-3.7.7:0
[--O] [  ] sys-apps/calculate-utils-3.7.7.1:0
[--O] [  ] sys-apps/calculate-utils-3.7.7.2-r1:0
[--O] [  ] sys-apps/calculate-utils-3.7.7.3:0
[--O] [ ~] sys-apps/calculate-utils-3.7.7.4:0
[--O] [  ] sys-apps/calculate-utils-3.7.7.5:0
[I-O] [  ] sys-apps/calculate-utils-3.7.7.6:0
[--O] [ -] sys-apps/calculate-utils-9999:0

, отображает так:

 * OpenMP runtime library for LLVM/clang compiler (U) sys-libs/libomp-19.1.4 (929 KiB)
 * Standard informational utilities and process-handling tools (U) sys-process/procps-4.0.4-r2 (962 KiB)
 * Виртуальный пакет для модуля Getopt-Long (U) virtual/perl-Getopt-Long-2.580.0 (11 KiB)
 * Виртуальный пакет IPC-Cmd (N) virtual/perl-IPC-Cmd-1.40.0-r4 (11 KiB)
 * Виртуальный пакет для модуля Test-Harness (U) virtual/perl-Test-Harness-3.500.0 (11 KiB)
 * 44 пакетов будет установлено, 0 kB будет загружено

Вы хотите установить эти пакеты? (Yes/No):

, получается, что починили наполовину. Надо будет глянуть внесённые изменения и подумать, как чинить в этот раз.

Рецепт тот же, ищем злополучный файл:

# find /usr/lib/ -name emerge_parser.py
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py

Правим:

# sed -i.bak 's|\\d+(\\s?\\d\*)\*\\s\\S+|(\\S+\\s?\\S\*\\s\\S+)|' /usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py

Получаем…
Первый запуск сыплет ошибками:

 # cl-update
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:225: SyntaxWarning: invalid escape sequence '\['
  _color_block = "(?:\033\[[^m]+?m)?"
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:477: SyntaxWarning: invalid escape sequence '\['
  re_block = re.compile("(Would you.*)\[{c}Yes{c}/{c}No{c}".format(c=_color_block))
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:596: SyntaxWarning: invalid escape sequence '\('
  "Emerging (binary )?\({c}(\d+){c} " "of {c}(\d+){c}\) {c}([^\s\033]+){c}".format(
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:596: SyntaxWarning: invalid escape sequence '\d'
  "Emerging (binary )?\({c}(\d+){c} " "of {c}(\d+){c}\) {c}([^\s\033]+){c}".format(
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:630: SyntaxWarning: invalid escape sequence '\s'
  re_block = re.compile("Saving to:\s*[‘'](\S+)?['’]")
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:648: SyntaxWarning: invalid escape sequence '\('
  "Installing \({c}(\d+){c} " "of {c}(\d+){c}\) {c}([^\s\033]+){c}".format(c=_color_block)
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:648: SyntaxWarning: invalid escape sequence '\d'
  "Installing \({c}(\d+){c} " "of {c}(\d+){c}\) {c}([^\s\033]+){c}".format(c=_color_block)
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:670: SyntaxWarning: invalid escape sequence '\S'
  "ERROR: (\S*) failed \([^)]+\).*?" "The complete build log is located at '([^']+)",
/usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py:694: SyntaxWarning: invalid escape sequence '\['
  re_block = re.compile("\[\s(\d+)%\s\]")
Синхронизация репозиториев

Последующие норм:

 * OpenMP runtime library for LLVM/clang compiler (U) sys-libs/libomp-19.1.4 (929 KiB)
 * Standard informational utilities and process-handling tools (U) sys-process/procps-4.0.4-r2 (962 KiB)
 * Виртуальный пакет для модуля Getopt-Long (U) virtual/perl-Getopt-Long-2.580.0 (11 KiB)
 * Виртуальный пакет IPC-Cmd (N) virtual/perl-IPC-Cmd-1.40.0-r4 (11 KiB)
 * Виртуальный пакет для модуля Test-Harness (U) virtual/perl-Test-Harness-3.500.0 (11 KiB)
 * 44 пакетов будет установлено, 399635 KiB будет загружено

Вы хотите установить эти пакеты? (Yes/No):

Спасибо :+1: На днях провернул, а теперь вот

после каждого обновления правка будет отменяться, сегодня опять поломался подсчет размера. Нужно как то донести до разработчиков чтобы отменили ту правку с регулярным выражением. Получается под новый шаблон ничего не подходит и всегда выполняется else и показывает результат 0kb.

Угу, верно, но следует уточнить, что не после каждого обновления системы, а после обновления пакета утилит:

Угу, верно, следовало бы, Сам обитаю только на форуме :pensive:

Размер/ объём загружаемых пакетов хотелось бы видеть, т.к. каналы доступа к сети Интернет различной ширины и хотелось бы примерно знать, на какое время расстанется загрузка пакетов и планировать.

Так эта новая правка и будет из версии в версию переноситься. Пока кто то не исправит.
Есть официальная документация для python онлайн, в ней описано, что такое re.compile (это относится к стандартной библиотеке python re) и значения \s \d и т.д. Воспользовавшись ей можно и составить подходящий шаблон.
Как зарегистрироваться на git calculate я не нашёл. Но неплохо бы отправить запрос на изменение в git - там точно увидели бы :grinning:
А так в дополнение, по поводу внесения измененеия в исходный текст программы - таким образом в общем случае лучше не вносить правку - с помощью sed. Да в данном кокретном случае это подходит. Т.к. регулярное выражение длинное - т.е. вероятность его повторения в коде мала.

grep -n '\\d+(\\s?\\d\*)\*\\s\\S+' /usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py
443:    re_block = re.compile(r"Size of downloads:\s\d+(\s?\d*)*\s\S+")

А вообще т.к. в языках программирования есть области видимости - одинаковые строки (фрагменты строк) могут 1 в 1 встречаться в разных местах исходного кода и для внесения правок нужно использовать патчи. Т.е. на такую замену с sed нельзя полагаться, как на надежный способ внесения правок в код.
Пример сколько раз встречается переменная re_block

grep -n 're_block' /usr/lib/python3.12/site-packages/calculate/update/emerge_parser.py
228:    re_block = None
286:            self.get_data(self.re_block.search(token + child.before + match))
312:    re_block = re.compile(r"((?:^\[.*?{nl})+)".format(nl=_new_line), re.MULTILINE)
313:    re_blocks = re.compile(r"\[{c}blocks{c} {c}b".format(c=_color_block))
320:        self.block_packages = any(self.re_blocks.search(x) for x in list_block)
334:    re_block = re.compile(
443:    re_block = re.compile(r"Size of downloads:\s\d+(\s?\d*)*\s\S+")
460:    re_block = re.compile(r"(The following update has.*?)(?=For more information)", re.S)
477:    re_block = re.compile("(Would you.*)\[{c}Yes{c}/{c}No{c}".format(c=_color_block))
595:    re_block = re.compile(
616:    re_block = re.compile(
630:    re_block = re.compile("Saving to:\s*[‘'](\S+)?['’]")
647:    re_block = re.compile(
669:    re_block = re.compile(
694:    re_block = re.compile("\[\s(\d+)%\s\]")
702:        expect_result = [self.re_block] + self.end_token