1

Temat: Kompilacja zatrzymuje się

Postanowiłem skompilować sobie system od podstaw - próbuję CC 15.05.1 r48532 z rozpakowanego snapshota.

Używam do tego Debian'a. Początkowo udało mi się to w maszynie wirtualnej ale chyba dopiero za trzecim razem ponieważ czasami maszyna gubi połączenie z siecią - z hostem (przez Wifi) i kompilacja po prostu staje bez żadnego błędu. Z tego powodu postanowiłem przenieść system Debian na prawdziwą maszynę z kartą Ethernet zamiast Wifi aby mieć stabilne połączenie. Odpaliłem kompilację i znowu podobne problemy - tylko tym razem nie następuje utrata połączenia jak w maszynie wirtualnej a zwykły brak odpowiedzi od serwerów, błędy 404 i no more mirrors avilable czy jakoś tak i wtedy wychodzi do shella. Już trzeci raz odpalam kompilację i za każdym razem jest problem ale z innym plikiem.

Czy to normalne?

2

Odp: Kompilacja zatrzymuje się

nienormalne jest kompilowanie przez sieć.

czy jest jakiś powód dla którego nie możesz zrobić tego lokalnie ?

3

Odp: Kompilacja zatrzymuje się

Może podpowiesz jak to zrobić bo widocznie coś źle robię.

4

Odp: Kompilacja zatrzymuje się

Z jakimi plikami jest problem? Na czym 404 wychodzi?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Kompilacja zatrzymuje się

Cezary napisał/a:

Z jakimi plikami jest problem? Na czym 404 wychodzi?

Z różnymi np. przy pobieraniu źródeł busybox, ale przez noc jakoś poszło i skompilowało - kolejne kompilacje już chyba nie będą pobierać nic z netu. Czy o kompilowanie offline chodzi o to iż aby zrobić najpierw tak:

make download
make world

i na końcu samo:

make

?

6

Odp: Kompilacja zatrzymuje się

Dokładnie. Najpierw na dysk pobierane są źródła, jak już tam są i nic się nie zmieniło w pakietach to więcej tego nie pobiera bo już ma.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Kompilacja zatrzymuje się

Dobra, napisz mi jeszcze Cezary jak mam zastosować plik config.diff bo chcę aby zbudowany system był dokładnie taki sam jak ten dostępny na OpenWrt Downloads + to co sam dodam. W tej chwili mam konfigurację w pliku .config i chcę ją rozszerzyć o opcje z tego pliku config.diff. Czytam właśnie to Using diff file ale jakoś nie jestem pewien których poleceń mam użyć aby nie s........ć konfiguracji?

8

Odp: Kompilacja zatrzymuje się

A masz go zrobionego przez ./scripts/diffconfig.sh? Jeżeli tak to po prostu dodaj jego zawartość do domyślnego .config i już.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9 (edytowany przez jzef 2017-01-03 10:39:36)

Odp: Kompilacja zatrzymuje się

Cezary napisał/a:

A masz go zrobionego przez ./scripts/diffconfig.sh? Jeżeli tak to po prostu dodaj jego zawartość do domyślnego .config i już.

Nie, plik pobrałem ten dokładnie: config.diff. Próbowałem tak:

cp .config .config.bak  - kopia aktualnej konfiguracji
mv config.diff .config  - zmiana nazwy pliku config.diff na .config
make menuconfig

i jest źle bo mam zaznaczone chyba wszystkie pakiety jako <M>

10

Odp: Kompilacja zatrzymuje się

To jest różnica w kofniguracji a nie pełna konfiguracja.

Przecież openwrt/lede domyślnie kompiluje wszystkie pakiety, więc jak chcesz uzyskać na początku wierną kopię to będziesz miał wszystkie zaznaczone. Zresztą w samym konfigu masz że wszystko ma zbudować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: Kompilacja zatrzymuje się

Cezary napisał/a:

To jest różnica w kofniguracji a nie pełna konfiguracja.

Przecież openwrt/lede domyślnie kompiluje wszystkie pakiety, więc jak chcesz uzyskać na początku wierną kopię to będziesz miał wszystkie zaznaczone. Zresztą w samym konfigu masz że wszystko ma zbudować.

Rozumiem iż plik config.diff jest tylko różnicą w stosunku do domyślnej konfiguracji. Nie rozumiem natomiast co jest domyślną konfiguracją, który plik .config
Jak pobiorę źródła na dysk np. snapshot, rozpakuję i wykonam po raz pierwszy polecenie make menuconfig to nie są zaznaczone wszystkie pakiety! Robię teraz SAVE i zapisuje mi konfigurację w pliku .config - czy to jest domyślna konfiguracja?

12

Odp: Kompilacja zatrzymuje się

To jest domyślna konfiguracja, tak.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: Kompilacja zatrzymuje się

Czyli plik config.diff stosuję do pliku .config gdy nie są zaznaczone wszystkie pakiety - odpalone było make menuconfig bez wprowadzania żadnych zmian i wybrane polecenie SAVE. Chyba wiem jak zastosować te zmiany w obecnym pliku konfiguracji:
- pobieramy plik config.diff do folderu openwrt
- dodajemy zmiany z pliku .diff do pliku konfiguracji:

cat config.diff >> .config

i to chyba tyle.

14

Odp: Kompilacja zatrzymuje się

I później make defconfig/make oldconfig żeby się uzupełniły dodatkowe zależności itd.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez jzef 2017-01-03 12:48:20)

Odp: Kompilacja zatrzymuje się

Ja już nic nie rozumiem jak to w końcu kompilować. Teraz co bym nie zrobił - czy po dodaniu różnic czy bez mam błąd:
CMake Error at lua/CMakeLists.txt:35 (MESSSAGE):
Lua was not found on your system

i jeszcze jakieś błędy.

16

Odp: Kompilacja zatrzymuje się

Nic nie trzeba czyścić.

Nie modyfikuj w żaden sposób źródeł. Ściągnij, zrób make menuconfig, zapisz, zrób make i czekaj.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: Kompilacja zatrzymuje się

Jedyne co zrobiłem to kopie konfiguracji aby nie popsuć w razie czego. Teraz przywróciłem konfigurację z kopii:

cp .config.bak .config

i mam właśnie takie jaja, wpierw było dobrze a teraz coś mu nie pasuje z tym samym plikiem .config którego kopię zrobiłem tuż po udanej, nocnej kompilacji.

Jak mam teraz powrócić do stanu z przed pierwszej kompilacji? Nie chce mi się robić wszystkiego od nowa i zostawiać komputer na całą noc mad

18

Odp: Kompilacja zatrzymuje się

Skasuj .config i zrób make menuconfig po prostu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: Kompilacja zatrzymuje się

Cezary napisał/a:

Skasuj .config i zrób make menuconfig po prostu.

Niestety to nie pomogło i nadal mam błąd Lua sad

20 (edytowany przez jzef 2017-01-03 14:12:00)

Odp: Kompilacja zatrzymuje się

Chyba wiem co może być powodem takich jaj - używam zamiennie konsoli SSH do Debiana i konsoli lokalnej np. przez SSH robię konfigurację a lokalnie próbuję kompilować. Błąd Lua mam jak odpalam kompilacje lokalnie, natomiast jak odpalam przez SSH to mam zupełnie inny błąd.

Teraz lokalnie mam jakiś błąd:

-- The C compiler identification is unknown
-- Check for working C compiler: /openwrt/staging_dir/host/bin/ccache
-- Check for working C compiler: /openwrt/staging_dir/host/bin/ccache -- broken

21

Odp: Kompilacja zatrzymuje się

A robisz wszystko na tym samym użytkowniku w systemie, którym sklonowałeś źródła?
I mam nadzieję, że nie kompilujesz jako root?

22

Odp: Kompilacja zatrzymuje się

pepe2k napisał/a:

A robisz wszystko na tym samym użytkowniku w systemie, którym sklonowałeś źródła?
I mam nadzieję, że nie kompilujesz jako root?

Tak na tym samym użytkowniku root lokalnie lub przez SSH ale:
na maszynie wirtualnej używałem Debiana standard bez GUI - wersja konsolowa instalowana z pliku ISO - debian-live-6.0.5-i386-standard.iso.
Teraz na laptopie zainstalowałem wersję też bez GUI ale za pomocą instalatora sieciowego.

Ale przecież na obu maszynach na koncie root udało mi się zbudować już kilka razy OpenWrt i nie wyświetla się nigdy żadne ostrzeżenie jak wynika z tego:

OpenWrt NIE kompiluje się jako użytkownik root! Trzeba zrobić to jako normalny użytkownik, przy próbie kompilacji jako root zostanie wyświetlone odpowiednie ostrzeżenie i przerwana kompilacja, a później może być problem z uprawnieniami do plików.

Kiedyś jak zaczynałem zabawę w kompilację innego projektu - iPXE czy coreboot to zainstalowałem Debian GUI i tam miałem właśnie masę problemów i od tamtej pory przeszedłem na Debiana bez GUI i problemy skończyły się raz na zawsze.

A te ostrzeżenia aby nie kompilować OpenWrt na koncie root to są raczej tylko do wersji GUI systemu bo tam jakoś uprawnienia są zorganizowane inaczej niż na wersji konsolowej.

23

Odp: Kompilacja zatrzymuje się

To że inne projekty można kompilować jako root nie znaczy że wszystkie tak sie robi. I nie ma znaczenia że kompilujesz "wesję z GUI" czy nie. GUI to tylko pakiet, jak kompilujesz jako root wyskakują różne rzeczy z którymi jest problem.

Nie musisz mi wierzyć. Zapytaj na forum openwrt.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24 (edytowany przez pepe2k 2017-01-03 15:27:22)

Odp: Kompilacja zatrzymuje się

jzef napisał/a:
pepe2k napisał/a:

A robisz wszystko na tym samym użytkowniku w systemie, którym sklonowałeś źródła?
I mam nadzieję, że nie kompilujesz jako root?

Tak na tym samym użytkowniku root lokalnie lub przez SSH [...]

Łoooooo Panie... jak Cezary wyżej (i w swoim poradniku) napisał, nie kompilujemy OpenWrt/LEDE jako root.
A jak nie wierzysz nam, to poczytaj tu: https://wiki.openwrt.org/doc/howto/build#procedure

jzef napisał/a:

A te ostrzeżenia aby nie kompilować OpenWrt na koncie root to są raczej tylko do wersji GUI systemu bo tam jakoś uprawnienia są zorganizowane inaczej niż na wersji konsolowej.

Za mało czytasz i za dużo sobie dopowiadasz smile

25

Odp: Kompilacja zatrzymuje się

Cezary napisał/a:

I nie ma znaczenia że kompilujesz "wesję z GUI" czy nie. GUI to tylko pakiet, jak kompilujesz jako root wyskakują różne rzeczy z którymi jest problem.

Trochę źle mnie zrozumiałeś z tym GUI - chodzi o system operacyjny w jakim kompilujemy projekt np. jest Debian GUI czyli np. KDE, Gnome czy XFCE i Debian konsolowy bez GUI - tylko linia poleceń.

Jeśli na koncie root nie udałoby mi się zbudować ani razu OpenWrt to przyznałbym Wam rację i po temacie - nie wolno kompilować na koncie root i kropka ale przetestowałem budowę osobiście i na koncie root buduje bez problemu.

Dlaczego jak robię make to nie wyświetla mi się żadne ostrzeżenie iż jestem na koncie root?