We have upgraded the community system as part of the upgrade a password reset is required for all users before login in.

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.



  • 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
    


  • I'm having this same issue on Linux Mint 19 using the docker image.



  • @Lazar-Demin seeing the same thing running Parallels with ubuntu.

    I did find that libwebsockets was unchecked. Checking it got me further, but I still can not build, on MacOS or Ubuntu, same errors as everyone else with mosquitto and SSLlibwebsockets



  • I got the same on ubuntu 18.04 LTS. Deleting the container and rebuilding in a NEW container fixed the issue, when I tried for the 3rd time.



  • Hello @Lazar-Demin,
    I'm experiencing the same issue when running docker build system image on Ubuntu 18.04 LTS.
    Do you have any reasonable solution?
    I need libwebsockets and mosquitto in my project, so disabling it is not an option.



  • I think it useful to understand how the build system works so you can always install any OpenWrt package you may need. If you search for the packages on OpenWrt.org you can download the build configuration file(s) and it lists the dependencies.

    Here is how you would use the build system to build mosquitto which also handles the dependencies. You run the scripts from the directory in which you install the build system:

    ./scripts/feeds update
    ./scripts/feeds install mosquitto
    make menuconfig

    Here's the output:

    Installing package 'mosquitto' from packages
    Installing package 'libwebsockets' from packages
    Installing package 'libuv' from packages
    Installing package 'c-ares' from packages

    I don't use Docker, I think it strangles performance.



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