Cross Compile docker libwebsockets.h not found mosquitto



  • Hi,

    new to this, i followed the 20171003 Blog entry about docker cross compile.
    docker install ok.
    docker run ok.
    but make stops after a while with this error:
    ...
    make[3] -C feeds/packages/net/mosquitto compile
    make -r world: build failed. Please re-run make with -j1 V=s to see what's going on
    /root/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 1
    and make -j1 -V=s delivers:
    ...
    make[5]: Entering directory '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/src'
    mipsel-openwrt-linux-musl-gcc -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16 -iremap /root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14:mosquitto-1.4.14 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/root/source/staging_dir/target-mipsel_24kc_musl-1.1.16/usr/include -I/root/source/staging_dir/target-mipsel_24kc_musl-1.1.16/include -I/root/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/usr/include -I/root/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/include/fortify -I/root/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/include -I. -I.. -I../lib -DVERSION=""1.4.14"" -DTIMESTAMP=""2017-10-04 15:25:51+0000"" -DWITH_BROKER -DWITH_TLS -DWITH_TLS_PSK -DWITH_UUID -DWITH_BRIDGE -DWITH_PERSISTENCE -DWITH_MEMORY_TRACKING -DWITH_SYS_TREE -DWITH_WEBSOCKETS -DWITH_EC -c mosquitto.c -o mosquitto.o
    mosquitto.c:47:29: fatal error: libwebsockets.h: No such file or directory
    compilation terminated.
    Makefile:15: recipe for target 'mosquitto.o' failed
    make[5]: *** [mosquitto.o] Error 1
    make[5]: Leaving directory '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/src'
    Makefile:21: recipe for target 'mosquitto' failed
    make[4]: *** [mosquitto] Error 2
    make[4]: Leaving directory '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14'
    Makefile:223: recipe for target '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/.built' failed
    make[3]: *** [/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/.built] Error 2
    make[3]: Leaving directory '/root/source/feeds/packages/net/mosquitto'
    package/Makefile:105: recipe for target 'package/feeds/packages/mosquitto/compile' failed
    make[2]: *** [package/feeds/packages/mosquitto/compile] Error 2
    make[2]: Leaving directory '/root/source'
    package/Makefile:101: recipe for target '/root/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.package_compile' failed
    make[1]: *** [/root/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.package_compile] Error 2
    make[1]: Leaving directory '/root/source'
    /root/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 2
    Seems like the dependency of mosquitto to libwebsockets is not (yet) fulfilled.
    What could be done here?



  • @thor42 I'm having the same error, on Ubuntu 16.04.



  • @thor42 said in Cross Compile docker libwebsockets.h not found mosquitto:

    libwebsockets.h

    So far what i undestand the docker image lack the software libwebsockets available from https://github.com/warmcat/libwebsockets

    So i can download it to the docker, but unable to get it to compile it yet.



  • after running "make menu config" i went down to "libraries" then selected "libwebsockets"
    It went further this time but stopped at another error:


    loop.c: In function 'loop_handle_reads_writes':
    loop.c:492:22: error: storage size of 'wspoll' isn't known
    struct lws_pollfd wspoll;
    ^
    loop.c:496:4: warning: implicit declaration of function 'lws_service_fd' [-Wimplicit-function-declaration]
    lws_service_fd(lws_get_context(context->wsi), &wspoll);
    ^
    loop.c:496:19: warning: implicit declaration of function 'lws_get_context' [-Wimplicit-function-declaration]
    lws_service_fd(lws_get_context(context->wsi), &wspoll);
    ^
    Makefile:33: recipe for target 'loop.o' failed
    make[5]: *** [loop.o] Error 1
    make[5]: Leaving directory '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/src'
    Makefile:21: recipe for target 'mosquitto' failed
    make[4]: *** [mosquitto] Error 2
    make[4]: Leaving directory '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14'
    Makefile:223: recipe for target '/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/.built' failed
    make[3]: *** [/root/source/build_dir/target-mipsel_24kc_musl-1.1.16/mosquitto-ssl/mosquitto-1.4.14/.built] Error 2
    make[3]: Leaving directory '/root/source/feeds/packages/net/mosquitto'
    package/Makefile:105: recipe for target 'package/feeds/packages/mosquitto/compile' failed
    make[2]: *** [package/feeds/packages/mosquitto/compile] Error 2
    make[2]: Leaving directory '/root/source'
    package/Makefile:101: recipe for target '/root/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.package_compile' failed
    make[1]: *** [/root/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.package_compile] Error 2
    make[1]: Leaving directory '/root/source'
    /root/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 2
    root@7cac80aeef0e:~/source#




  • I compiled LEDE in docker on a MacBook Pro according to this tutorial: https://onion.io/2bt-cross-compiling-c-programs-part-1/

    I had the same problem but got around it by disabling the libwebsocket support for mosquitto-ssl (under the topic 'Network')



  • Finally got rid of the error
    i ran "make defconfig",
    the "make menuconfig" to reselect the options i wanted and all is good now.



  • Has anyone actually gotten libwebsockets and mosquitto to compile (cross compiled) onto the omega2+ successfully?

    Im trying for days and no luck. Any help would be appreciated.


  • administrators

    For now, the only way to compile the Build system is to un-select mosquitto and libwebsockets packages from the menuconfig. 0_1519767258955_mqtt_menuconfig.PNG

    0_1519767264765_mqtt_menuconfig_libraries.PNG

    0_1519767269226_Libwebsockets.PNG
    This is what it looks in the menu. You can search the package using / and enter the desired package to be removed (e.g. mosquitto). You will also be able to see the location where you can locate it.



  • there is no possibility to uncheck mosquito. It's either [M] or [*]. Pressing space and <N> doesn't work. libwebsockets is unchecked by default:

    short video example



  • I used vi to comment out all references to mosquitto in .config. Just search for mosquitto, there are a number of lines.
    ~/source# vi .config


  • administrators

    An update on this topic:
    Many users have reported this issue with libwebsockets and mosquitto when running our Docker build system image on Windows and Mac OS.
    We recommend running the Docker build system image on a Linux system. That's how we build firmware at Onion and it don't see these issues.

    Happy hacking!



  • Hi @Lazar-Demin,

    It's probably worth mentioning the linux distro as well. I have came at this from a lot of different angles:

    Onion's Docker on Windows
    Ubuntu 16 VM Windows Host machine
    Onion's Docker on Ubuntu 16 VM Windows Host machine

    Onion's Docker on Centos 7 (Eventually worked!)

    From what I saw in my debugging there was a 502 timeout when trying to download the libwebsockets dependency, therefor failing the build.

    My fix was no different than the aforementioned, but my question to you is that worth a PR to GH repo? I can submit mine.

    Thank you kindly,
    -- Kade



  • Here is my fork: https://github.com/luckybroman5/source

    Clone, startup docker, then:

    # cd /root/source/c-cross-compile-example // https://github.com/OnionIoT/c-cross-compile-example
    # sh xCompile.sh --buildroot /root/source/ --lib ugpio
    


Looks like your connection to Community was lost, please wait while we try to reconnect.