Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Servon kääntäminen

Tällä sivulla on tarkempaa tietoa Servon kääntämisestä. Voit hypätä suoraan ohjeisiin omalle järjestelmällesi:

mach

Servon kääntämiseen tarvitset mach-työkalun. mach on Python-ohjelma, joka helpottaa Servon parissa työskentelyä monin tavoin: kääntäminen ja ajaminen, testien ajo ja riippuvuuksien päivitys.

Windows-käyttäjät: sinun täytyy korvata ./mach komennoissa merkkijonolla .\mach, jos käytät cmd:tä.

Käytä --help listataksesi alikomennot tai saadaksesi apua tiettyyn alikomentoon:

$ ./mach --help
$ ./mach build --help

Kun käytät machia ajamaan toista ohjelmaa, kuten servoshelliä, sillä ohjelmalla voi olla omia valintoja samoilla nimillä kuin machilla. Voit käyttää -- (välilyönneillä ympäröitynä) kertoaksesi machille, ettei se koske myöhempiin valintoihin vaan jättää ne toiselle ohjelmalle.

$ ./mach run --help         # Gets help for `mach run`.
$ ./mach run -d --help      # Still gets help for `mach run`.
$ ./mach run -d -- --help   # Gets help for the debug build of servoshell.

Tämä pätee myös Servon yksikkötesteihin, joissa on kolme valintakerrosta: mach-valinnat, cargo test -valinnat ja libtest-valinnat.

$ ./mach test-unit --help           # Gets help for `mach test-unit`.
$ ./mach test-unit -- --help        # Gets help for `cargo test`.
$ ./mach test-unit -- -- --help     # Gets help for the test harness (libtest).

Työtä jatketaan, jotta Servo voidaan kääntää ilman machia. Harkitse aina, voitko käyttää natiivia Cargo-toiminnallisuutta ennen kuin lisäät uutta toiminnallisuutta machiin.

Käännösprofiilit

On kolme pääkäännösprofiilia, joita voit kääntää ja käyttää toisistaan riippumatta:

  • debug-käännökset, joiden avulla voit käyttää debuggeria (lldb) (oletus, jos profiilia ei anneta)
  • release-käännökset, jotka kääntyvät hitaammin mutta ovat suorituskykyisempiä
  • production-käännökset, joita käytetään vain virallisissa julkaisuissa
debug release production
mach-valinta -d
--debug
-r
--release
--prod
--production
optimoitu? ei kyllä kyllä, enemmän kuin release
suurin RUST_LOG-taso trace info info
debug-väitteet? kylläkyllä(!)ei
debug-tiedot? kylläeiei
symbolit? kylläeikyllä
etsii resursseja
nykyisestä työhakemistosta?
kylläkylläei(!)

Lisäksi on kaksi erityistä production-käännöksen varianttia suorituskykyyn liittyviin käyttötarkoituksiin:

  • production-stripped -käännökset sopivat Servon benchmarkkaukseen ajan myötä, kun debug-symbolit on poistettu nopeampaa käynnistystä varten
  • profiling -käännökset sopivat profilointiin ja suorituskykyongelmien vianmääritykseen; ne käyttäytyvät kuin debug- tai release-käännös, mutta niiden suorituskyky on sama kuin production-käännöksellä
production production-stripped profiling
mach --profile production production-stripped profiling
debug-tiedot? eieikyllä
symbolit? kylläeikyllä
etsii resursseja
nykyisestä työhakemistosta?
eieikyllä(!)

Voit muuttaa näitä asetuksia servobuild-tiedostossa (katso servobuild.example) tai juuren Cargo.toml -tiedostossa.

Valinnaiset käännösasetukset

Joitakin käännösasetuksia voi ottaa käyttöön vain manuaalisesti:

  • AddressSanitizer-käännökset otetaan käyttöön komennolla ./mach build --with-asan
  • ThreadSanitizer-käännökset otetaan käyttöön komennolla ./mach build --with-tsan
  • crown-linttaus on suositeltava DOM-koodia muokattaessa, ja se otetaan käyttöön komennolla ./mach build --use-crown
  • SpiderMonkey debug -käännökset otetaan käyttöön komennolla ./mach build --debug-mozjs tai [build] debug-mozjs = true servobuild-tiedostossasi

Täydellisen argumenttilistan näet ajamalla ./mach build --help.

Servoshellin ajaminen

Kun käännät itse, servoshell on polussa target/debug/servo tai target/release/servo. Voit ajaa sen suoraan kuten yllä, mutta suosittelemme käyttämään machia sen sijaan.

Ajaaksesi servoshellin machilla, korvaa ./servo komennoilla ./mach run -d -- tai ./mach run -r -- riippuen käännösprofiilista, jonka haluat ajaa. Esimerkiksi molemmat alla olevat komennot ajavat debug-käännöksen servoshelliä samoilla valinnoilla:

$ target/debug/servo https://demo.servo.org
$ ./mach run -d -- https://demo.servo.org