Forum Turris
Fórum Turris Nápověda

Milí majitelé routerů Turris,

toto fórum bylo 9. 12. 2016 zmrazeno a nahrazeno naším novým Turris fórem. Ještě chvíli bude dostupné k prohlížení, ale již zde není možné přispívat. Více informací naleznete v oznámení o uzavření fóra.


Dear Turris routers users,

this forum has been frozen on Dec 9th, 2016 and replaced by our new Turris forum. It will be read-only accessible for some time after. For more information, read the announcement about closing the forum.

Nahoru Téma Majitelé routerů / Technická podpora / Jak zkompilovat Turris firmware?
- - Od Ondřej Caletka (>>>) Dne 2014-07-23 13:57
Snažím se zkompilovat vlastní firmware pro Turris. Naklonoval jsem repozitář https://gitlab.labs.nic.cz/turris/openwrt.git a spustil skript ./compile_turris_fw. Kompilace chcípne ve fázi package/install z důvodu neexistence nástroje opkg-cl. Domnívám se, že jde o problém se závislostí nástroje opkg na balíku cznic-cacert-bundle, který ovšem není součástí základního systému. Co přesně je potřeba udělat, aby kompilace prošla?
Nadřazený - - Od JFila (>>) Dne 2014-07-24 10:40
Kompilujete poslední verzi nebo tu, kterou jsme řešili na jiném vlákně? Okolo 2014-06-17 jsem ji zkompiloval normálně.
Nadřazený - Od Ondřej Caletka (>>>) Dne 2014-07-24 10:59
Snažil jsem se o to včera na větvi master. Zkouším přidat feed z openwrt-packages, aby byly splněny všechny závislosti nutné pro opkg, to se zkompiluje, avšak chyba přetrvává. Zřejmě je tam ještě nějaký fígl, na který jsem zatím nepřišel.
Nadřazený - - Od Michal Vaner (>>) Dne 2014-07-25 09:28
Dobrý den

Inicializoval jste submoduly v gitu? Ta obludnost se skládá z více repozitářů…

git clone …
git submodule init
git submodule update
./compile_turris_fw
Nadřazený - - Od Ondřej Caletka (>>>) Dne 2014-07-25 11:21
Díky, to by mohlo být ono. O submodulech v gitu jsem vůbec netušil, že něco takového existuje :)

Ovšem výsledek stále negativní. Nejprve spadne kompilace Forisu (package/packages/cznic/foris/compile) na toto:

make[3]: Entering directory `/home/oskar/openwrt/build/openwrt-turris/build_dir/target-powerpc_8540_uClibc-0.9.33.2/foris'
-- Running compass
/bin/sh: line 2: compass: command not found
make[3]: *** [compile-sass] Error 127


Compass zřejmě není součástí toolchainu a čeká se, že bude na hostitelském systému. Ale to mě nijak extrémě netrápí, bez forisu se obejdu. Vypnul jsem ho tedy a pokračoval dál.

Horší je, že to stejně spadne ve fázi package/install:

$ make V=s package/install
Collecting package info: doneing...ckages/cznic/rainbow
make[1]: Entering directory `/home/oskar/openwrt/build/openwrt-turris'
find /home/oskar/openwrt/build/openwrt-turris/staging_dir/target-powerpc_8540_uClibc-0.9.33.2/root-mpc85xx -type d | xargs -r chmod 0755
rm -rf /home/oskar/openwrt/build/openwrt-turris/build_dir/target-powerpc_8540_uClibc-0.9.33.2/root-mpc85xx
[ -d /home/oskar/openwrt/build/openwrt-turris/build_dir/target-powerpc_8540_uClibc-0.9.33.2/root-mpc85xx/tmp ] || mkdir -p /home/oskar/openwrt/build/openwrt-turris/build_dir/target-powerpc_8540_uClibc-0.9.33.2/root-mpc85xx/tmp
/home/oskar/openwrt/build/openwrt-turris/staging_dir/host/bin/opkg: error: `/home/oskar/openwrt/build/openwrt-turris/staging_dir/host/bin/.libs/opkg-cl' does not exist
This script is just a wrapper for opkg-cl.
See the libtool documentation for more information.
make[1]: *** [package/install] Error 123
make[1]: Leaving directory `/home/oskar/openwrt/build/openwrt-turris'
make: *** [package/install] Error 2
Nadřazený - - Od Ondřej Caletka (>>>) Dne 2014-07-26 12:26
Je to záhada, teď jsem zkoušel vedle sebe dva repozitáře − vanilkový OpenWRT a Turris, včetně submodulů.

U obou jsem zadal:
make dirclean
make tools/install toolchain/install
make package/opkg/host/install


Ve vanilkovém OpenWRT vznikla na cestě staging_dir/host/bin/opkg ELF binárka pro AMD64, kterou lze bez problému spustit. V Turrisu je na stejném místě shell skript, který začíná komentářem:
# opkg-cl - temporary wrapper script for .libs/opkg-cl
# Generated by libtool (GNU libtool) 2.4
#
# The opkg-cl program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.


Po spuštění ohlásí chybu:
staging_dir/host/bin/opkg: error: `/home/oskar/openwrt/build/openwrt-turris/staging_dir/host/bin/.libs/opkg-cl' does not exist
This script is just a wrapper for opkg-cl.
See the libtool documentation for more information.


A skutečně, na původní cestě build_dir/host/opkg-746/src/opkg-cl wrapper spustit jde...

Záhada.
Nadřazený - - Od Ondřej Caletka (>>>) Dne 2014-07-26 21:12
Tak zdá se, že jsem problém vyřešil touto editací:

diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile
index 1d68876..43ab0db 100644
--- a/package/system/opkg/Makefile
+++ b/package/system/opkg/Makefile
@@ -129,7 +129,9 @@ HOST_CONFIGURE_ARGS+= \
        --disable-curl \
        --disable-gpg \
        --with-opkgetcdir=/etc \
-       --with-opkglockfile=/tmp/opkg.lock
+       --with-opkglockfile=/tmp/opkg.lock \
+       --enable-static \
+       --disable-shared

define Host/Compile
        +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) CC="$(HOSTCC)" all


Ale nechápu, jak je možné, že ostatní tento problém nemají :)
Nadřazený - Od Michal Vaner (>>) Dne 2014-08-04 08:54
Dobré ráno

> Ale nechápu, jak je možné, že ostatní tento problém nemají :)


No, k tomu je důvodů vždycky dost O:-). Linkování je černá magie, dynamické linkování ještě víc a když se tam přidá ještě nějaká cross-compilace… Nevím, jestli existuje člověk, který by s klidným svědomím mohl tvrdit, že těm věcem opravdu rozumí.

Můj tip je, že se tam možná přilinkovala knihovna pro špatnou architekturu, či nějaká taková nepříjemnost. Což bude záviset na nastavení dynamického linkeru, cest, toho, co je kde nainstalované a tak.
Nahoru Téma Majitelé routerů / Technická podpora / Jak zkompilovat Turris firmware?

Powered by mwForum 2.29.3 © 1999-2013 Markus Wichitill