Prilagođavanje Debiana za korištenje Rust implementacije coreutil-a

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, prepisan na Rust jeziku. Coreutils uključuje uslužne programe kao što su sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln i ls. Za prvu fazu integracije u Debian Rust verzije coreutil-a, postavljeni su sljedeći ciljevi:

  • Spakirajte Rust alternativu za coreutils za Debian i Ubuntu.
  • Dizanje Debiana s GNOME desktopom koristeći rust-coreutils.
  • Instaliranje 1000 najpopularnijih paketa iz spremišta.
  • Napravi iz Firefox, LLVM/Clang i Linux kernel izvora u okruženju sa rust-coreutil-ima.

Nakon kreiranja više od 100 zakrpa za Rust/coreutils, uspjeli smo uspješno ostvariti sve zacrtane ciljeve. Rad koji je u toku uključuje implementaciju nedostajućih pomoćnih programa i opcija, poboljšanje kvaliteta i uniformnosti koda, razvoj testnog paketa i eliminisanje padova do kojih dolazi pri pokretanju testnog paketa iz GNU Coreutils-a (141 od 613 testova se do sada uspješno izvodi ).

Prilikom kreiranja paketa rust-coreutils odlučeno je da se paket coreutils ne zamijeni, već da se omogući paralelni rad. Uslužne opcije u jeziku Rust su instalirane u /usr/lib/cargo/bin/ i aktiviraju se dodavanjem ovog direktorija u varijablu okruženja PATH. Kreiranje paketa rust-coreutils bilo je komplikovano potrebom da se u spremište učitaju sve zavisnosti za izgradnju, uključujući Rust i razne male pakete za sanduke.

Kreiranje boot image-a nije predstavljalo problem, ali prilagođavanje paketa za okruženje sa rust-coreutils-om zahtevalo je mnogo posla, pošto mnoge postinstalacione skripte pozivaju uslužne programe iz skupa coreutil-a. Najveći broj problema uzrokovan je nedostatkom potrebnih opcija, na primjer, uslužni program “cp” nije imao opcije “--archive” i “--no-dereference”, “ln” nije podržavao “- relativna” opcija, mktemp nije podržavao “-t” , u sinhronizaciji "-fs", u instalaciji - "--owner" i "-group". Drugi problemi su nastali zbog razlika u ponašanju, na primjer, uslužni program za instalaciju nije podržavao navođenje /dev/null kao ulaznu datoteku, mkdir je imao opciju “--parents” umjesto “-parent” itd.

Prilikom testiranja sklapanja velikih kodnih baza nije se pojavilo većih problema. Prilikom izrade Firefoxa i LLVM/Clanga koriste se python skripte i cmake, tako da zamjena coreutil-a nije uticala na njih. Izgradnja jezgre Linuxa išla je relativno glatko, sa samo dva problema koja su se pojavila: izlaz greške kada se koristi chown sa simboličkom vezom i nedostatak “-n” opcije u uslužnom programu ln.

izvor: opennet.ru

Dodajte komentar