Prilagodba Debiana za korištenje Rust implementacije coreutilsa

Sylvestre Ledru, poznat po svom radu na izgradnji Debian GNU/Linuxa koristeći Clang kompajler, izvijestio je o uspješnom eksperimentu koristeći alternativni skup uslužnih programa, coreutils, prepisanih na Rust jeziku. Coreutils uključuje pomoćne programe kao što su sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln i ls. Za prvu fazu integracije Rust verzije coreutilsa u Debian postavljeni su sljedeći ciljevi:

  • Spakirajte Rust alternativu coreutilsu za Debian i Ubuntu.
  • Pokretanje Debiana s GNOME radnom površinom pomoću rust-coreutilsa.
  • Instaliranje 1000 najpopularnijih paketa iz repozitorija.
  • Gradite iz Firefox, LLVM/Clang i Linux izvora kernela u okruženju s rust-coreutils.

Nakon izrade više od 100 zakrpa za Rust/coreutils uspjeli smo uspješno postići sve zacrtane ciljeve. Rad koji je u tijeku uključuje implementaciju uslužnih programa i opcija koje nedostaju, poboljšanje kvalitete i ujednačenosti koda, razvoj paketa testova i uklanjanje padova do kojih dolazi prilikom pokretanja paketa testova iz GNU Coreutils (141 test od 613 do sada se uspješno izvodi ).

Prilikom izrade paketa rust-coreutils odlučeno je da se ne zamijeni paket coreutils, već da se omogući njihov paralelni rad. Opcije uslužnog programa u jeziku Rust instalirane su u /usr/lib/cargo/bin/ i aktiviraju se dodavanjem ovog direktorija u varijablu okruženja PATH. Stvaranje paketa rust-coreutils bilo je komplicirano potrebom za preuzimanjem svih ovisnosti o izgradnji u repozitorij, uključujući Rust i razne male pakete sanduka.

Stvaranje slike za pokretanje nije predstavljalo problem, ali prilagodba paketa za okruženje s rust-coreutils zahtijevala je puno posla, budući da mnoge skripte nakon instalacije pozivaju uslužne programe iz skupa coreutils. Najveći broj problema bio je uzrokovan nedostatkom potrebnih opcija, na primjer, uslužni program “cp” nije imao opcije “--archive” i “--no-dereference”, “ln” nije podržavao “- relative”, mktemp nije podržavao “-t”, u sinkronizaciji "-fs", u instalaciji - "--owner" i "-group". Ostali problemi pojavili su se zbog razlika u ponašanju, na primjer, uslužni program za instalaciju nije podržavao navođenje /dev/null kao ulazne datoteke, mkdir je imao opciju “--parents” umjesto “-parent” itd.

Prilikom testiranja montaže velikih kodnih baza nije bilo većih problema. Prilikom izgradnje Firefoxa i LLVM/Clanga koriste se python skripte i cmake, tako da zamjena coreutilsa nije utjecala na njih. Izgradnja Linux kernela prošla je relativno glatko, sa samo dva problema koja su se pojavila: greška prilikom korištenja chown sa simboličkom vezom i nedostatak opcije “-n” u uslužnom programu ln.

Izvor: opennet.ru

Dodajte komentar