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 |
-r |
--prod |
| optimoitu? | ei | kyllä | kyllä, enemmän kuin release |
| suurin RUST_LOG-taso | trace |
info |
info |
| debug-väitteet? | kyllä | kyllä(!) | ei |
| debug-tiedot? | kyllä | ei | ei |
| symbolit? | kyllä | ei | kyllä |
| 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ä vartenprofiling-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? | ei | ei | kyllä |
| symbolit? | kyllä | ei | kyllä |
| etsii resursseja nykyisestä työhakemistosta? |
ei | ei | kyllä(!) |
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-mozjstai[build] debug-mozjs = trueservobuild-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