Strona główna Artykuły News (R)ewolucja w bleeding-edge-toolchain?
(R)ewolucja w bleeding-edge-toolchain?
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Freddie Chopin   
Środa, 12 Październik 2016 12:07

Jako że znudziło mnie już rozwiązywanie problemów stworzonych przez dziwaczny workflow pracowników firmy ARM, a do tego rozwiązywanie problemów kompatybilności pomiędzy dystrybucjami Linuxa jest chyba rzeczą wręcz niemożliwą, postanowiłem pójść krok dalej. Przedstawiam więc "preview" nowego skryptu "all-in-one" do kompilacji toolchaina, którego ideą jest lekka zmiana aktualnej formy bleeding-edge-toolchain.

Skrypt testowałem na razie tylko na Linuxie (u siebie, na innym komputerze oraz w systemie Travis-CI - Ubuntu 12.04.5 LTS "precise"), wkrótce testy generacji wersji na Windowsa. Nie da się wykluczyć, że nawet teraz ten skrypt powinien zadziałać w środowisku MSYS2 na Windowsie, ale jeszcze tego nie sprawdzałem. Idea jest taka, że toolchainów dla Linuxa nie będę udostępniać w formie "binarnej" - skrypt pozwoli każdemu skompilować toolchaina, który na pewno będzie działał na danej dystrybucji. Wiem że taka kompilacja nie trwa 30 sekund, ale pół dnia też nie - u mnie wszystko (włącznie z pobraniem wszystkich źródeł) trwa 22 minuty. Na wyjątkowo powolnym wirtualnym systemie Travis-CI trwa to 80 minut. Myślę że są to czasy które można raz na pare miesięcy poświęcić, zwłaszcza że w trakcie takiej kompilacji można przecież robić coś innego [; Zresztą jakby ktoś chciał znacząco skrócić czas kompilacji całości, to można znaleźć w skrypcie linijkę z "--with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r" i po prostu wyłączyć to czego się nie używa (UWAGA - linijka ta występuje tam 2x, obie wersje powinny być identyczne!). Wersje dla Windows zapewne nadal będą udostępniane w formie "binarnej", bo akurat na tej platformie nie ma problemów z kompatybilnością bibliotek.

W każdym razie skrypt zasadniczo robi wszystko co jest potrzebne - pobiera źródła toolchaina i wymaganych bibliotek w odpowiedniej wersji, rozpakowuje je, a następnie konfiguruje i kompiluje w odpowiedniej kolejności. Idea oczywiście nie jest nowa i takich skryptów jest wiele, choć te które znam są już albo nierozwijane, albo nie do końca takie jak należy. Generalnie do działania tego skryptu nie powinny być wymagane żadne dziwne narzędzia poza tym co jest w "standardzie" w każdej dystrybucji Linuxa - jedynym wyjątkiem mogą być programy do generacji dokumentacji ("makeinfo", wchodzący zwykle w skład paczki typu "texinfo"). Zachęcam do testów, jeśli coś nie działa to piszcie w komentarzach, albo od razu zgłaszajcie problem na GitHubie. Jeśli działa to oczywiście też chętnie usłyszę takie info (;

Aktualne wersje narzędzi w toolchainie są - zgodnie z ideą - najnowsze (; Nowsze niż w toolchainie od ARM <:

  • gcc-6.2.0 + multilib patch
  • newlib-2.4.0.20160923
  • binutils-2.27
  • gdb-7.12
  • expat-2.2.0
  • gmp-6.1.1
  • isl-0.16
  • libelf-0.8.13
  • mpc-1.0.3
  • mpfr-3.1.5
  • zlib-1.2.8
Zmieniony: Piątek, 14 Październik 2016 10:33