Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Serie kompilacji bez instalacji dla “emerge” w Gentoo  (Przeczytany 469 razy)

Offline overcq

  • Nowy na forum
  • *
  • Wiadomości: 28
    • Zobacz profil
    • Strona domowa
Od którejś aktualizacji ‟portage” zauważyłem, że przy większej ilości paczek instalowanych naraz jednym poleceniem (np. “emerge --emptytree @world”) są one kompilowane w seriach, ale nie instalowane (i kompilacje nie usuwane) do czasu zakończenia serii. Powoduje to konieczność posiadania przestrzeni dyskowej (w “/var/tmp/portage”) na wszystkie kompilacje paczek z danej serii. Tutaj przykład.
Dodam, że w “/etc/portage/make.conf” mam ustawione:
MAKEOPTS=-j2
EMERGE_DEFAULT_OPTS='--ask-enter-invalid --jobs=2 --quiet-build'
Czyli maksymalnie dwa zadania kompilacji, w których będą maksymalnie dwa równoległe “make”.
Czy za ilość kompilacji w serii przed instalacją paczek odpowiada jakaś opcja?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Serie kompilacji bez instalacji dla “emerge” w Gentoo
« Odpowiedź #1 dnia: 2024-04-08, 10:09:51 »
Hm... Ja mam EMERGE_DEFAULT_OPTS="--quiet-build=y --with-bdeps=y --load-average=5.0 --jobs=8" i u mnie też jest etap 15 sztuk w fazie "Emerging", ale w stopce mam na ogól 1 albo 2 "running".

Mam wrażenie, że te limit to jest na liczbę buildów w stanie "compiling", nie buildów aktywnych w ogóle - i zgadzam się, to może całkiem zapchać dysk.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline overcq

  • Nowy na forum
  • *
  • Wiadomości: 28
    • Zobacz profil
    • Strona domowa
Odp: Serie kompilacji bez instalacji dla “emerge” w Gentoo
« Odpowiedź #2 dnia: 2024-04-08, 18:40:04 »
Już to znalazłem czytając źródła “emerge”.
“emerge” ma ‘scheduler’ w “/usr/lib/python3.11/site-packages/_emerge/Scheduler.py”, który zawiera od linii 1524:
             # By default, merge-wait only allows merge when no builds are executing.
             # As a special exception, dependencies on system packages are frequently
             # unspecified and will therefore force merge-wait.
             is_system_pkg = build.pkg in self._deep_system_deps
             if not build.build_opts.buildpkgonly and (
                 "merge-wait" in build.settings.features or is_system_pkg
             ):
                 self._merge_wait_queue.append(merge)
                 if is_system_pkg:
                     merge.addStartListener(self._system_merge_started)
             else:
                 self._task_queues.merge.add(merge)
                 merge.addExitListener(self._merge_exit)
                 self._status_display.merges = len(self._task_queues.merge)
Za wyłączenie tego mechanizmu odpowiada “-merge-wait” w zmiennej FEATURES.

Jednak według mnie powinno być to trochę inaczej rozwiązane.
Jeśli ‘scheduler’ gwarantowałby zatrzymywanie kompilacji przebiegającej w osobnych wątkach i wtedy wykonywał “merge”, to wtedy ten mechanizm mógłby pozostać włączony. Ale do tego najlepiej potrzebna by była wiedza o zależnościach kompilacji pakietów od tych, które są właśnie skompilowane.
« Ostatnia zmiana: 2024-04-09, 16:16:11 wysłana przez overcq »