Tilpasning af Debian til at bruge Rust-implementeringen af ​​coreutils

Sylvestre Ledru, kendt for sit arbejde med at bygge Debian GNU/Linux ved hjælp af Clang-kompileren, rapporterede et vellykket eksperiment med et alternativt sæt hjælpeprogrammer, coreutils, omskrevet til Rust-sproget. Coreutils inkluderer hjælpeprogrammer såsom sort, cat, chmod, chown, chroot, cp, date, dd, echo, værtsnavn, id, ln og ls. For den første fase af integration i Debian af Rust-versionen af ​​coreutils blev følgende mål sat:

  • Pak et Rust-alternativ til coreutils til Debian og Ubuntu.
  • Opstart af Debian med GNOME-skrivebord ved hjælp af rust-coreutils.
  • Installation af de 1000 mest populære pakker fra lageret.
  • Byg fra Firefox, LLVM/Clang og Linux-kernekilder i et miljø med rust-coreutils.

Efter at have oprettet mere end 100 patches til Rust/coreutils, var vi i stand til at nå alle de tilsigtede mål. Det igangværende arbejde omfatter implementering af manglende hjælpeprogrammer og muligheder, forbedring af kodens kvalitet og ensartethed, udvikling af testpakken og eliminering af nedbrud, der opstår ved kørsel af testpakken fra GNU Coreutils (141 test ud af 613 kører indtil videre med succes ).

Ved oprettelsen af ​​rust-coreutils-pakken blev det besluttet ikke at erstatte coreutils-pakken, men at give mulighed for, at de kan arbejde parallelt. Hjælpefunktioner i Rust-sproget er installeret i /usr/lib/cargo/bin/ og aktiveres ved at tilføje denne mappe til PATH-miljøvariablen. Oprettelse af rust-coreutils-pakken blev kompliceret af behovet for at downloade alle build-afhængigheder til depotet, inklusive Rust og forskellige små kassepakker.

Det var ikke et problem at oprette et boot-image, men at tilpasse pakkerne til et miljø med rust-coreutils krævede en masse arbejde, da mange post-install scripts kalder hjælpeprogrammer fra coreutils-sættet. Det største antal problemer var forårsaget af manglen på nødvendige muligheder, for eksempel havde "cp"-værktøjet ikke "--archive" og "--no-dereference", "ln" understøttede ikke "- relative" mulighed, mktemp understøttede ikke "-t" , i sync "-fs", i install - "--owner" og "-group". Andre problemer opstod på grund af forskelle i adfærd, for eksempel understøttede installationsværktøjet ikke at angive /dev/null som en inputfil, mkdir havde "--parents"-indstillingen i stedet for "-parent" osv.

Ved test af samling af store kodebaser opstod der ingen større problemer. Når man bygger Firefox og LLVM/Clang, bruges python-scripts og cmake, så udskiftning af coreutils påvirkede dem ikke. Opbygningen af ​​Linux-kernen gik forholdsvis glat, med kun to problemer, der dukkede op: fejloutput ved brug af chown med et symbolsk link og manglen på en "-n"-indstilling i ln-værktøjet.

Kilde: opennet.ru

Tilføj en kommentar