1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Kleine Verständnisfrage buildworld

Dieses Thema im Forum "FreeBSD - Allgemein" wurde erstellt von mr44er, 13 Juni 2017.

  1. mr44er

    mr44er Trödel-Troll

    Registriert seit:
    22 September 2013
    Beiträge:
    195
    Ort:
    Reichelsheim
    Nach meinem gusto und weil es der traditionelle Weg ist, habe ich mir angewöhnt, alles zu bauen und auf binaries zu verzichten.

    Bin nun über

    Code:
    make buildworld NO_CLEAN=yes
    
    gestolpert und freue mich, dass das sehr flott stiefelt.

    Ab welchen Änderungen im Source-Tree sollte man darauf verzichten und komplett alles neu bauen? Kann es da Probleme geben, wenn man mittendrin mal nicht komplett baut?
    Ist ein Intervall von 6 Monaten komplett bauen ratsam oder overdosed?

    Hoffe, die Frage wird richtig verstanden. :)
     
  2. Yamagi

    Yamagi Possessed With Psi Powers Mitarbeiter

    Registriert seit:
    14 April 2004
    Beiträge:
    8.649
    Ort:
    Schleswig-Holstein
    -DNO_CLEAN alleine ist gefährlich, weil make(1) im klassischen Modus nicht in der Lage ist Abhängigkeiten zwischen einzelnen, für sich genommen eigenständigen Komponenten zu erkennen. Ein simples Beispiel ist, dass eine Bibliothek geändert wurde, ein sie statisch linkendes Tool aber nicht neu gebaut wird. Anschließend funktioniert das Tool nicht. Im schlimmsten, zugegeben etwas akademischen Fall kann dadurch das "make installworld" abbrechen oder das System nicht mehr starten. Außerdem neigt -DNO_CLEAN dazu, dass sich beim parallelen Bauen einzelne Zweige überholen und dadurch Abhängigkeiten nicht erfüllt werden können. Das führt dann meist zum Abbruch. Kurz um, -DNO_CLEAN sollte man nutzen, wenn man weiß was man tut oder etwas Mut zum Risiko hat.

    Ab FreeBSD 11.0 gibt es nun auch noch den "Metamode" als Ergänzung zum klassischen make(1)-Modus. Er berechnet einen vollständigen Satz Abhängigkeiten, trackt anschließend per filemon(4) was jeder einzelne make-Branch neu gebaut hat und nutzt die Informationen um zu berechnen, was weiter unten im Abhägigkeitsbaum ebenfalls neu gebaut werden muss. Das ist sehr effizient, da eben exakt das neu gebaut wird, was auch neu gebaut werden muss und zugleich 100% sicher. Also besser den hier:

    Code:
    % kldload filemon
    % make -j $(sysctl hw.ncpu) -DWITH_META_MODE buildworld buildkernel
    
    Hier gibt's noch etwas mehr Informationen zum Metamode, aber ich finde sie schwer verständlich: http://crufty.net/help/sjg/bmake-meta-mode.htm
     
    das.chaos und foxit gefällt das.
  3. mr44er

    mr44er Trödel-Troll

    Registriert seit:
    22 September 2013
    Beiträge:
    195
    Ort:
    Reichelsheim
    Danke dir, übernehme ich doch glatt so. :D

    Mut zum Risiko eigentlich immer, aber zwischen Fullbuild und meinem Test liegt ein Tag. Das System bootet und ich denke nicht, dass ich mir was zerkrumpelt habe. :)
     
  4. goblin

    goblin Dämonenbeschwörer

    Registriert seit:
    3 März 2010
    Beiträge:
    378
    Ort:
    Karlsruhe
    Ich habe den meta-mode automatisch aktiviert, indem ich ihn in die ``/etc/src-env.conf`` eingetragen habe. Mit dem filemon(4) in der ``/boot/loader.conf`` sieht mein make(1)-Aufruf aus wie immer.