Cross compilation on Windows Subsystem for Linux



  • I have been using the docker container for cross compiling which has worked sufficiently however it is a painfully clumsy workflow for me. Without making extra utilities and tooling to speed things up, getting cross compilation working in Windows is my preferred solution.

    All the prerequisites are easily installed in accordance with the Omega2 documentation, and menuconfig works fine, however compiling appears to get stuck pretty early on. I've been fumbling through Linux development so far without major issue, however I'm not finding the output too constructive in discerning the cause of my woes.

    elliot477569@Helium2:/mnt/d/Onion/source$ make menuconfig
    Checking 'working-make'... ok.
    Checking 'case-sensitive-fs'... ok.
    Checking 'proper-umask'... ok.
    Checking 'gcc'... ok.
    Checking 'working-gcc'... ok.
    Checking 'g++'... ok.
    Checking 'working-g++'... ok.
    Checking 'ncurses'... ok.
    Checking 'zlib'... ok.
    Checking 'perl-thread-queue'... ok.
    Checking 'tar'... ok.
    Checking 'find'... ok.
    Checking 'bash'... ok.
    Checking 'patch'... ok.
    Checking 'diff'... ok.
    Checking 'cp'... ok.
    Checking 'seq'... ok.
    Checking 'awk'... ok.
    Checking 'grep'... ok.
    Checking 'getopt'... ok.
    Checking 'stat'... ok.
    Checking 'unzip'... ok.
    Checking 'bzip2'... ok.
    Checking 'wget'... ok.
    Checking 'perl'... ok.
    Checking 'python'... ok.
    Checking 'git'... ok.
    Checking 'file'... ok.
    Checking 'ldconfig-stub'... ok.
    Collecting package info: done
    Collecting target info: done
    
    
    *** End of the configuration.
    *** Execute 'make' to start the build or try 'make help'.
    
    elliot477569@Helium2:/mnt/d/Onion/source$ make -j12
     make[1] world
     make[2] tools/install
     make[2] package/cleanup
     make[3] -C tools/flock compile
     make[3] -C tools/flock install
     make[3] -C tools/sed compile
    make -r world: build failed. Please re-run make with -j1 V=s to see what's going on
    /mnt/d/Onion/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 1
    
    elliot477569@Helium2:/mnt/d/Onion/source$ make -j1 V=s
    make[1]: Entering directory '/mnt/d/Onion/source'
    make[2]: Entering directory '/mnt/d/Onion/source'
    + mkdir -p /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16
    + cd /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/source/build_dir/target-mipsel_24kc_musl-1.1.16/stamp
    touch /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/.prepared
    + mkdir -p /mnt/d/Onion/source/staging_dir/host
    + cd /mnt/d/Onion/source/staging_dir/host
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/source/build_dir/host/stamp /mnt/d/Onion/source/staging_dir/host/include/sys
    install -m0644 /mnt/d/Onion/source/tools/include/*.h /mnt/d/Onion/source/staging_dir/host/include/
    install -m0644 /mnt/d/Onion/source/tools/include/sys/*.h /mnt/d/Onion/source/staging_dir/host/include/sys/
    ln -sf lib /mnt/d/Onion/source/staging_dir/host/lib64
    touch /mnt/d/Onion/source/staging_dir/host/.prepared
    make[3]: Entering directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/sed'
    make  -C /mnt/d/Onion/source/build_dir/host/sed-4.2.2 SHELL="bash"
    make[4]: Entering directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2'
    CDPATH="${ZSH_VERSION+.}:" && cd . && bash /mnt/d/Onion/source/build_dir/host/sed-4.2.2/build-aux/missing --run autoconf
    autom4te: need GNU m4 1.4 or later: /mnt/d/Onion/source/staging_dir/host/bin/m4
    Makefile:1023: recipe for target 'configure' failed
    make[4]: *** [configure] Error 1
    make[4]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2'
    Makefile:46: recipe for target '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/.built' failed
    make[3]: *** [/mnt/d/Onion/source/build_dir/host/sed-4.2.2/.built] Error 2
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/sed'
    tools/Makefile:147: recipe for target 'tools/sed/compile' failed
    make[2]: *** [tools/sed/compile] Error 2
    make[2]: Leaving directory '/mnt/d/Onion/source'
    tools/Makefile:145: recipe for target '/mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny' failed
    make[1]: *** [/mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny] Error 2
    make[1]: Leaving directory '/mnt/d/Onion/source'
    /mnt/d/Onion/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 2
    

    How do I go about resolving this - or even understanding what the actual problem is?

    autom4te: need GNU m4 1.4 or later: /mnt/d/Onion/source/staging_dir/host/bin/m4 tells me that I need some package called m4 of version 1.4 or later. Great; got it.

    elliot477569@Helium2:/mnt/d/Onion/source$ sudo apt-get install m4
    [sudo] password for elliot477569:
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    m4 is already the newest version (1.4.17-5).
    The following package was automatically installed and is no longer required:
      libfreetype6
    Use 'sudo apt autoremove' to remove it.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    

    What next?

    Any constructive advice would be greatly appreciated.



  • @Elliot-477569
    Maybe unrelated, but I would check if your filesystem under the windows subsystem for linux is case-sensitive.
    The README for the LEDE/OpenWrt sources is quite clear:

    To build your own firmware you need to have access to a Linux, BSD or MacOSX system (case-sensitive filesystem required). Cygwin will not be supported because of the lack of case sensitiveness in the file system.

    Also, is it really GNU m4 that is installed? If you have apt-cache available (this is from my linux env):

    $ apt-cache show m4
    Package: m4
    Priority: optional
    Section: interpreters
    Installed-Size: 338
    Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
    Original-Maintainer: Santiago Vila <sanvila@debian.org>
    Architecture: amd64
    Version: 1.4.17-5
    Depends: libc6 (>= 2.17), libsigsegv2 (>= 2.9)
    Filename: pool/main/m/m4/m4_1.4.17-5_amd64.deb
    Size: 194590
    MD5sum: a1667c5593216139a96746971cbf2bf3
    SHA1: 9a88c590362c07f04a4b69bfa0937b8d1aace010
    SHA256: bb188c16d3f007902fb5b1ceab2f0a44344414b5afba28df7be5071b76cc260e
    Description-en: macro processing language
     GNU `m4' is an implementation of the traditional UNIX macro
     processor.  It is mostly SVR4 compatible, although it has some
     extensions (for example, handling more than 9 positional parameters to
     macros).  `m4' also has builtin functions for including files, running
     shell commands, doing arithmetic, etc.  Autoconf needs GNU `m4' for
     generating `configure' scripts, but not for running them.
    Description-md5: 4d2d2315ae3e9465f92825939c8db872
    Multi-Arch: foreign
    Homepage: http://www.gnu.org/software/m4/
    Bugs: https://bugs.launchpad.net/ubuntu/+filebug
    Origin: Ubuntu
    Supported: 5y
    Task: ubuntu-sdk-libs-tools, ubuntu-sdk
    

    I'm supposing that it would be, but checking won't hurt just in case.



  • @cas That's a fantastic point!

    I just looked into it, and apparently NTFS IS now case sensitive specifically for this reason. For anyone interested, it is described here.

    Appears to be working sufficiently; that's not to say there isn't an edge case that results in some idiosyncratic behavior during the make execution.

    elliot477569@Helium2:~$ cd /mnt/d/Onion/
    elliot477569@Helium2:/mnt/d/Onion$ touch test.md
    elliot477569@Helium2:/mnt/d/Onion$ touch Test.md
    elliot477569@Helium2:/mnt/d/Onion$ ls
    source  test.md  Test.md
    

    With regard to confirming it is actually GNU m4 - I'm not sure, but it looks suspiciously similar to yours:

    elliot477569@Helium2:/mnt/d/Onion$ apt-cache show m4
    Package: m4
    Priority: optional
    Section: interpreters
    Installed-Size: 338
    Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
    Original-Maintainer: Santiago Vila <sanvila@debian.org>
    Architecture: amd64
    Version: 1.4.17-5
    Depends: libc6 (>= 2.17), libsigsegv2 (>= 2.9)
    Filename: pool/main/m/m4/m4_1.4.17-5_amd64.deb
    Size: 194590
    MD5sum: a1667c5593216139a96746971cbf2bf3
    SHA1: 9a88c590362c07f04a4b69bfa0937b8d1aace010
    SHA256: bb188c16d3f007902fb5b1ceab2f0a44344414b5afba28df7be5071b76cc260e
    Description-en: macro processing language
     GNU `m4' is an implementation of the traditional UNIX macro
     processor.  It is mostly SVR4 compatible, although it has some
     extensions (for example, handling more than 9 positional parameters to
     macros).  `m4' also has builtin functions for including files, running
     shell commands, doing arithmetic, etc.  Autoconf needs GNU `m4' for
     generating `configure' scripts, but not for running them.
    Description-md5: 4d2d2315ae3e9465f92825939c8db872
    Multi-Arch: foreign
    Homepage: http://www.gnu.org/software/m4/
    Bugs: https://bugs.launchpad.net/ubuntu/+filebug
    Origin: Ubuntu
    Supported: 5y
    Task: ubuntu-sdk-libs-tools, ubuntu-sdk
    

    Thanks for the advice!



  • @Elliot-477569 said

    I just looked into it, and apparently NTFS IS now case sensitive specifically for this reason. For anyone interested, it is described here.

    Aah, but is it really? ;-) Consider the following test case:
    In linux:

    $ cat t
    cat: t: No such file or directory
    $ echo "t" > t
    $ cat t
    t
    $ cat T
    cat: T: No such file or directory
    $
    

    In my git bash shell on an NTFS volume in windows:

    $ cat t
    cat: t: No such file or directory
    $ echo "t" > t
    $ cat t
    t
    $ cat T
    t
    $
    

    Admittedly, don't know if the environments are equivalent, but it's a good and simple enough test to check. :) After reading the linked page, no they are not, but you're right, there could be some slight behavioural differences that throw it off.



  • @cas Again, great point.

    elliot477569@Helium2:/mnt/d/Onion$ cat t
    cat: t: No such file or directory
    elliot477569@Helium2:/mnt/d/Onion$ echo "t" > t
    elliot477569@Helium2:/mnt/d/Onion$ cat t
    t
    elliot477569@Helium2:/mnt/d/Onion$ cat T
    cat: T: No such file or directory
    

    Seems correct.

    I wonder why your output in Windows is different. Did you run it in a volume root - case sensitivity isn't present the root? Are you using WSL, or an alternative like cygwin?



  • @Elliot-477569 said

    With regard to confirming it is actually GNU m4 - I'm not sure, but it looks suspiciously similar to yours:

    Yup, looks identical. The description indicates GNU 'm4', so good enough for me.

    Well, let's see if anyone else has any ideas.
    Otherwise you might try running make configure manually in the /mnt/d/Onion/source/build_dir/host/sed-4.2.2 dir and see if you can glean any more info?

    Hmm, here's something else to try, is it finding the correct m4?

    ~/OpenWrt-LEDE/openwrt$ which m4
    /usr/bin/m4
    ~/OpenWrt-LEDE/openwrt$ m4 --version
    m4 (GNU M4) 1.4.17
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by Rene' Seindal.
    


  • @cas

    As far as I can tell, m4 is identical to yours.

    elliot477569@Helium2:/mnt/d/Onion/source$ which m4
    /usr/bin/m4
    elliot477569@Helium2:/mnt/d/Onion/source$  m4 --version
    m4 (GNU M4) 1.4.17
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by Rene' Seindal.
    

    Am I doing this correctly?

    elliot477569@Helium2:/mnt/d/Onion/source/build_dir/host/sed-4.2.2$ make configure
    make: 'configure' is up to date.
    

    Running make on the other hand (apparently I can't paste the full output here...):

    Line 870 of the output, onward:

    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT rename.o -MD -MP -MF .deps/rename.Tpo -c -o rename.o rename.c
    mv -f .deps/rename.Tpo .deps/rename.Po
    rm -f libsed.a
    x86_64-linux-gnu-ar cru libsed.a set-mode-acl.o copy-acl.o file-has-acl.o c-ctype.o c-strcasecmp.o c-strncasecmp.o dirname-lgpl.o basename-lgpl.o stripslash.o exitfail.o localcharset.o malloca.o quotearg.o se-context.o se-selinux.o stdio.o tempname.o unistd.o version-etc.o version-etc-fsf.o wctype-h.o xmalloc.o xalloc-die.o rename.o
    x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
    x86_64-linux-gnu-ranlib libsed.a
    rm -f t-charset.alias charset.alias && \
    /usr/bin/env bash ./config.charset 'x86_64-pc-linux-gnu' > t-charset.alias && \
    mv t-charset.alias charset.alias
    rm -f t-ref-add.sed ref-add.sed && \
    sed -e '/^#/d' -e 's/@''PACKAGE''@/sed/g' ref-add.sin > t-ref-add.sed && \
    mv t-ref-add.sed ref-add.sed
    rm -f t-ref-del.sed ref-del.sed && \
    sed -e '/^#/d' -e 's/@''PACKAGE''@/sed/g' ref-del.sin > t-ref-del.sed && \
    mv t-ref-del.sed ref-del.sed
    make[4]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/lib'
    make[3]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/lib'
    make[2]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/lib'
    Making all in po
    make[2]: Entering directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/po'
    make[2]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/po'
    Making all in sed
    make[2]: Entering directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/sed'
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT sed.o -MD -MP -MF .deps/sed.Tpo -c -o sed.o sed.c
    mv -f .deps/sed.Tpo .deps/sed.Po
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT compile.o -MD -MP -MF .deps/compile.Tpo -c -o compile.o compile.c
    mv -f .deps/compile.Tpo .deps/compile.Po
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT execute.o -MD -MP -MF .deps/execute.Tpo -c -o execute.o execute.c
    execute.c: In function ‘closedown’:
    execute.c:695:9: warning: ignoring return value of ‘fchown’, declared with attribute warn_unused_result [-Wunused-result]
             fchown (output_fd, -1, input->st.st_gid);
             ^
    mv -f .deps/execute.Tpo .deps/execute.Po
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT regexp.o -MD -MP -MF .deps/regexp.Tpo -c -o regexp.o regexp.c
    mv -f .deps/regexp.Tpo .deps/regexp.Po
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT fmt.o -MD -MP -MF .deps/fmt.Tpo -c -o fmt.o fmt.c
    mv -f .deps/fmt.Tpo .deps/fmt.Po
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT mbcs.o -MD -MP -MF .deps/mbcs.Tpo -c -o mbcs.o mbcs.c
    mv -f .deps/mbcs.Tpo .deps/mbcs.Po
    gcc -DHAVE_CONFIG_H -I. -I..  -I../lib -I.. -I../lib -DLOCALEDIR=\"/mnt/d/Onion/source/staging_dir/host/share/locale\" -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include  -MT utils.o -MD -MP -MF .deps/utils.Tpo -c -o utils.o utils.c
    mv -f .deps/utils.Tpo .deps/utils.Po
    gcc  -O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include   -L/mnt/d/Onion/source/staging_dir/host/lib -L/mnt/d/Onion/source/staging_dir/host/usr/lib  -o sed sed.o compile.o execute.o regexp.o fmt.o mbcs.o utils.o ../lib/libsed.a
    make[2]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/sed'
    Making all in doc
    make[2]: Entering directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/doc'
    Updating ./version.texi
    restore=: && backupdir=".am$$" && \
    am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd . && \
    rm -rf $backupdir && mkdir $backupdir && \
    if (makeinfo --version) >/dev/null 2>&1; then \
      for f in sed.info sed.info-[0-9] sed.info-[0-9][0-9] sed.i[0-9] sed.i[0-9][0-9]; do \
        if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; \
      done; \
    else :; fi && \
    cd "$am__cwd"; \
    if makeinfo   -I . \
     -o sed.info sed.texi; \
    then \
      rc=0; \
      CDPATH="${ZSH_VERSION+.}:" && cd .; \
    else \
      rc=$?; \
      CDPATH="${ZSH_VERSION+.}:" && cd . && \
      $restore $backupdir/* `echo "./sed.info" | sed 's|[^/]*$||'`; \
    fi; \
    rm -rf $backupdir; exit $rc
    bash: line 9: makeinfo: command not found
    Makefile:1079: recipe for target 'sed.info' failed
    make[2]: *** [sed.info] Error 127
    make[2]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2/doc'
    Makefile:1125: recipe for target 'all-recursive' failed
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2'
    Makefile:1066: recipe for target 'all' failed
    make: *** [all] Error 2
    

    @cas Thanks for your input and conversation; it has been greatly appreciated! ^^



  • @Elliot-477569 said in Cross compilation on Windows Subsystem for Linux:

    bash: line 9: makeinfo: command not found

    After installing texinfo:

    elliot477569@Helium2:/mnt/d/Onion/source$ make -j1 V=s
    make[1]: Entering directory '/mnt/d/Onion/source'
    make[2]: Entering directory '/mnt/d/Onion/source'
    + mkdir -p /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16
    + cd /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/source/build_dir/target-mipsel_24kc_musl-1.1.16/stamp
    touch /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/.prepared
    + mkdir -p /mnt/d/Onion/source/staging_dir/host
    + cd /mnt/d/Onion/source/staging_dir/host
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/source/build_dir/host/stamp /mnt/d/Onion/source/staging_dir/host/include/sys
    install -m0644 /mnt/d/Onion/source/tools/include/*.h /mnt/d/Onion/source/staging_dir/host/include/
    install -m0644 /mnt/d/Onion/source/tools/include/sys/*.h /mnt/d/Onion/source/staging_dir/host/include/sys/
    ln -sf lib /mnt/d/Onion/source/staging_dir/host/lib64
    touch /mnt/d/Onion/source/staging_dir/host/.prepared
    make[3]: Entering directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/patch'
    CFLAGS="-O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include " CPPFLAGS="-I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include " CXXFLAGS="" LDFLAGS="-L/mnt/d/Onion/source/staging_dir/host/lib -L/mnt/d/Onion/source/staging_dir/host/usr/lib " make  -C /mnt/d/Onion/source/build_dir/host/patch-2.7.5
    make[4]: Entering directory '/mnt/d/Onion/source/build_dir/host/patch-2.7.5'
    CDPATH="${ZSH_VERSION+.}:" && cd . && /usr/bin/env bash /mnt/d/Onion/source/build_dir/host/patch-2.7.5/build-aux/missing aclocal-1.14 -I m4
    /mnt/d/Onion/source/build_dir/host/patch-2.7.5/build-aux/missing: line 81: aclocal-1.14: command not found
    WARNING: 'aclocal-1.14' is missing on your system.
             You should only need it if you modified 'acinclude.m4' or
             'configure.ac' or m4 files included by 'configure.ac'.
             The 'aclocal' program is part of the GNU Automake package:
             <http://www.gnu.org/software/automake>
             It also requires GNU Autoconf, GNU m4 and Perl in order to run:
             <http://www.gnu.org/software/autoconf>
             <http://www.gnu.org/software/m4/>
             <http://www.perl.org/>
    Makefile:1181: recipe for target 'aclocal.m4' failed
    make[4]: *** [aclocal.m4] Error 127
    make[4]: Leaving directory '/mnt/d/Onion/source/build_dir/host/patch-2.7.5'
    Makefile:23: recipe for target '/mnt/d/Onion/source/build_dir/host/patch-2.7.5/.built' failed
    make[3]: *** [/mnt/d/Onion/source/build_dir/host/patch-2.7.5/.built] Error 2
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/patch'
    tools/Makefile:147: recipe for target 'tools/patch/compile' failed
    make[2]: *** [tools/patch/compile] Error 2
    make[2]: Leaving directory '/mnt/d/Onion/source'
    tools/Makefile:145: recipe for target '/mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny' failed
    make[1]: *** [/mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny] Error 2
    make[1]: Leaving directory '/mnt/d/Onion/source'
    /mnt/d/Onion/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 2
    

    Apparently I do however have automake 1.15.

    elliot477569@Helium2:/mnt/d/Onion/source$ apt-cache show automake
    Package: automake
    Priority: optional
    Section: devel
    Installed-Size: 1493
    Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
    Original-Maintainer: Eric Dorland <eric@debian.org>
    Architecture: all
    Source: automake-1.15
    Version: 1:1.15-4ubuntu1
    Provides: automake-1.15, automaken
    Depends: autoconf (>= 2.65), autotools-dev (>= 20020320.1)
    Suggests: autoconf-doc, gnu-standards
    Conflicts: automake (<< 1:1.4-p5-1), automake1.10-doc, automake1.5 (<< 1.5-2), automake1.6 (<< 1.6.1-4)
    Filename: pool/main/a/automake-1.15/automake_1.15-4ubuntu1_all.deb
    Size: 509892
    MD5sum: 4f01fc4b752b28ee208b30221097049c
    SHA1: bee0098bcfcc031d3379b2975934eac3f6b333fb
    SHA256: d751ccfc07111b34fdd07795689771625d07f28c2769e6f06d4e473500039641
    Description-en: Tool for generating GNU Standards-compliant Makefiles
     Automake is a tool for automatically generating `Makefile.in's from
     files called `Makefile.am'.
     .
     The goal of Automake is to remove the burden of Makefile maintenance
     from the back of the individual GNU maintainer (and put it on the back
     of the Automake maintainer).
     .
     The `Makefile.am' is basically a series of `make' macro definitions
     (with rules being thrown in occasionally).  The generated
     `Makefile.in's are compliant with the GNU Makefile standards.
     .
     Automake 1.15 fails to work in a number of situations that Automake
     1.4, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11 and 1.14 did, so previous versions are
     available as separate packages.
    Description-md5: 12127f5bccf4c38c80c33e34f12556eb
    Multi-Arch: foreign
    Homepage: https://www.gnu.org/software/automake/
    Bugs: https://bugs.launchpad.net/ubuntu/+filebug
    Origin: Ubuntu
    Supported: 5y
    Task: ubuntu-sdk-libs-tools, ubuntu-sdk
    

    After running aclocal in build_dir/host/patch-2.7.5:

    gpriaulx@Helium2:/mnt/d/Onion/source$ make -j1 V=s
    make[1]: Entering directory '/mnt/d/Onion/source'
    make[2]: Entering directory '/mnt/d/Onion/source'
    + mkdir -p /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16
    + cd /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/source/build_dir/target-mipsel_24kc_musl-1.1.16/stamp
    touch /mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/.prepared
    + mkdir -p /mnt/d/Onion/source/staging_dir/host
    + cd /mnt/d/Onion/source/staging_dir/host
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/source/build_dir/host/stamp /mnt/d/Onion/source/staging_dir/host/include/sys
    install -m0644 /mnt/d/Onion/source/tools/include/*.h /mnt/d/Onion/source/staging_dir/host/include/
    install -m0644 /mnt/d/Onion/source/tools/include/sys/*.h /mnt/d/Onion/source/staging_dir/host/include/sys/
    ln -sf lib /mnt/d/Onion/source/staging_dir/host/lib64
    touch /mnt/d/Onion/source/staging_dir/host/.prepared
    make[3]: Entering directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/sed'
    make[3]: Entering directory '/mnt/d/Onion/source/tools/patch'
    CFLAGS="-O2 -I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include " CPPFLAGS="-I/mnt/d/Onion/source/staging_dir/host/include -I/mnt/d/Onion/source/staging_dir/host/usr/include " CXXFLAGS="" LDFLAGS="-L/mnt/d/Onion/source/staging_dir/host/lib -L/mnt/d/Onion/source/staging_dir/host/usr/lib " make  -C /mnt/d/Onion/source/build_dir/host/patch-2.7.5
    make[4]: Entering directory '/mnt/d/Onion/source/build_dir/host/patch-2.7.5'
     cd . && /usr/bin/env bash /mnt/d/Onion/source/build_dir/host/patch-2.7.5/build-aux/missing automake-1.14 --gnu
    /mnt/d/Onion/source/build_dir/host/patch-2.7.5/build-aux/missing: line 81: automake-1.14: command not found
    WARNING: 'automake-1.14' is missing on your system.
             You should only need it if you modified 'Makefile.am' or
             'configure.ac' or m4 files included by 'configure.ac'.
             The 'automake' program is part of the GNU Automake package:
             <http://www.gnu.org/software/automake>
             It also requires GNU Autoconf, GNU m4 and Perl in order to run:
             <http://www.gnu.org/software/autoconf>
             <http://www.gnu.org/software/m4/>
             <http://www.perl.org/>
    Makefile:1152: recipe for target 'Makefile.in' failed
    make[4]: *** [Makefile.in] Error 1
    make[4]: Leaving directory '/mnt/d/Onion/source/build_dir/host/patch-2.7.5'
    Makefile:23: recipe for target '/mnt/d/Onion/source/build_dir/host/patch-2.7.5/.built' failed
    make[3]: *** [/mnt/d/Onion/source/build_dir/host/patch-2.7.5/.built] Error 2
    make[3]: Leaving directory '/mnt/d/Onion/source/tools/patch'
    tools/Makefile:147: recipe for target 'tools/patch/compile' failed
    make[2]: *** [tools/patch/compile] Error 2
    make[2]: Leaving directory '/mnt/d/Onion/source'
    tools/Makefile:145: recipe for target '/mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny' failed
    make[1]: *** [/mnt/d/Onion/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny] Error 2
    make[1]: Leaving directory '/mnt/d/Onion/source'
    /mnt/d/Onion/source/include/toplevel.mk:198: recipe for target 'world' failed
    make: *** [world] Error 2
    

    The plot thickens...



  • @Elliot-477569 said

    I wonder why your output in Windows is different. Did you run it in a volume root - case sensitivity isn't present the root? Are you using WSL, or an alternative like cygwin?

    It's a git bash shell, so I think it's built on top of cygwin or something like that - but anyway it's definitely not WSL and your test shows you're good to go.

    [edit]
    Also:

    elliot477569@Helium2:/mnt/d/Onion/source$ make menuconfig
    ...
    Checking 'case-sensitive-fs'... ok.
    ...
    

    [/edit]



  • @Elliot-477569 said

    Am I doing this correctly?

    elliot477569@Helium2:/mnt/d/Onion/source/build_dir/host/sed-4.2.2$ make configure
    make: 'configure' is up to date.
    

    Maybe we're missing something.
    My interpretation of this is that configure didn't get built:

    make[4]: Entering directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2'
    CDPATH="${ZSH_VERSION+.}:" && cd . && bash /mnt/d/Onion/source/build_dir/host/sed-4.2.2/build-aux/missing --run autoconf
    autom4te: need GNU m4 1.4 or later: /mnt/d/Onion/source/staging_dir/host/bin/m4
    Makefile:1023: recipe for target 'configure' failed
    make[4]: *** [configure] Error 1
    make[4]: Leaving directory '/mnt/d/Onion/source/build_dir/host/sed-4.2.2'
    

    But your make says it's up to date, which would indicate it was built successfully.

    Perhaps it's time to backup your .config and make distclean and start from scratch?

    [edit]
    Looking back through the thread, the following:
    1.) make died, making sed.
    2.) a later make skipped over sed (indicating it was successful - correlates with your make configure ) and then died making the next file: patch.

    Maybe this is a timing issue within make? Perhaps a later thread is exiting before an earlier thread has completed?
    What if you just run make with no parameters? It'll be slow, but hopefully sequential...
    [/edit]



  • Scanning the WSL issues on Github - Processes disappearing? Maybe you're seeing something related?

    If you repeatedly run make, does it get a little bit further into the build process each time?



  • Last thought on this for now.
    Working on the assumption that something external to the build process might be interfering with it, and since this is windows you are probably running some kind of anti-virus software. If so, have you tried excluding your build path and all sub-folders from your AV software? Or temporarily disabling it and then running a build?



  • @cas @Elliot-477569 I have the identical error on macOS 10.13.1.... (cf here https://forum.openwrt.org/viewtopic.php?pid=369392)



  • $ make -j1 V=s
    make[1]: Entering directory `/Volumes/OpenWrt/source'
    mkdir -p /Volumes/OpenWrt/source/build_dir/target-mipsel_24kc_musl-1.1.16/stamp
    touch /Volumes/OpenWrt/source/staging_dir/target-mipsel_24kc_musl-1.1.16/.prepared
    mkdir -p /Volumes/OpenWrt/source/build_dir/host/stamp /Volumes/OpenWrt/source/staging_dir/host/include/sys
    install -m0644 /Volumes/OpenWrt/source/tools/include/*.h /Volumes/OpenWrt/source/staging_dir/host/include/
    install -m0644 /Volumes/OpenWrt/source/tools/include/sys/*.h /Volumes/OpenWrt/source/staging_dir/host/include/sys/
    ln -sf lib /Volumes/OpenWrt/source/staging_dir/host/lib64
    touch /Volumes/OpenWrt/source/staging_dir/host/.prepared
    export SHELL="bash"; /Library/Developer/CommandLineTools/usr/bin/make -C /Volumes/OpenWrt/source/build_dir/host/autoconf-2.69
    /Library/Developer/CommandLineTools/usr/bin/make  all-recursive
    Making all in bin
    autom4te_perllibdir='..'/lib AUTOM4TE_CFG='../lib/autom4te.cfg'         ../bin/autom4te -B '..'/lib -B '..'/lib         --language M4sh --cache '' --melt ./autoconf.as -o autoconf.in
    autom4te: need GNU m4 1.4 or later: /Volumes/OpenWrt/source/staging_dir/host/bin/m4
    make[6]: *** [autoconf.in] Error 1
    make[5]: *** [all-recursive] Error 1
    make[4]: *** [all] Error 2
    make[3]: *** [/Volumes/OpenWrt/source/build_dir/host/autoconf-2.69/.built] Error 2
    make[2]: *** [tools/autoconf/compile] Error 2
    make[1]: *** [/Volumes/OpenWrt/source/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.tools_install_yynyyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynnny] Error 2
    make[1]: Leaving directory `/Volumes/OpenWrt/source'
    make: *** [world] Error 2
    


  • I thought I would take a break from this for a couple of projects and come back to it later. There is a long weekend coming up so later is now ^^.

    Thanks again for your assistance and perseverance @cas; I appreciate your insight!

    @Jonathan-Zwart although I would like to state how glad I am that this isn't just a Windows symptom, I do empathise with your circumstance. Did you overcome this issue?

    I recently came across these:

    I did admittedly get a little excited after all the positive comments and sounds of success, however my success was limited:

     make -j1 V=s toolchain/install
    make[1]: Entering directory '/mnt/d/Onion/lede/source'
    + mkdir -p /mnt/d/Onion/lede/source/staging_dir/target-mipsel_24kc_musl
    + cd /mnt/d/Onion/lede/source/staging_dir/target-mipsel_24kc_musl
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/lede/source/build_dir/target-mipsel_24kc_musl/stamp
    touch /mnt/d/Onion/lede/source/staging_dir/target-mipsel_24kc_musl/.prepared
    make[2]: Entering directory '/mnt/d/Onion/lede/source'
    + mkdir -p /mnt/d/Onion/lede/source/staging_dir/host
    + cd /mnt/d/Onion/lede/source/staging_dir/host
    + mkdir -p bin lib include stamp
    mkdir -p /mnt/d/Onion/lede/source/build_dir/host/stamp /mnt/d/Onion/lede/source/staging_dir/host/include/sys
    install -m0644 /mnt/d/Onion/lede/source/tools/include/*.h /mnt/d/Onion/lede/source/staging_dir/host/include/
    install -m0644 /mnt/d/Onion/lede/source/tools/include/sys/*.h /mnt/d/Onion/lede/source/staging_dir/host/include/sys/
    ln -sf lib /mnt/d/Onion/lede/source/staging_dir/host/lib64
    touch /mnt/d/Onion/lede/source/staging_dir/host/.prepared
    make[3]: Entering directory '/mnt/d/Onion/lede/source/tools/flock'
    make[3]: Leaving directory '/mnt/d/Onion/lede/source/tools/flock'
    make[3]: Entering directory '/mnt/d/Onion/lede/source/tools/sed'
    make  -C /mnt/d/Onion/lede/source/build_dir/host/sed-4.4 SHELL="bash"
    make[4]: Entering directory '/mnt/d/Onion/lede/source/build_dir/host/sed-4.4'
     cd . && bash /mnt/d/Onion/lede/source/build_dir/host/sed-4.4/build-aux/missing automake-1.99a --gnu Makefile
    /mnt/d/Onion/lede/source/build_dir/host/sed-4.4/build-aux/missing: line 81: automake-1.99a: command not found
    WARNING: 'automake-1.99a' is missing on your system.
             You should only need it if you modified 'Makefile.am' or
             'configure.ac' or m4 files included by 'configure.ac'.
             The 'automake' program is part of the GNU Automake package:
             <http://www.gnu.org/software/automake>
             It also requires GNU Autoconf, GNU m4 and Perl in order to run:
             <http://www.gnu.org/software/autoconf>
             <http://www.gnu.org/software/m4/>
             <http://www.perl.org/>
    Makefile:2167: recipe for target 'Makefile.in' failed
    make[4]: *** [Makefile.in] Error 127
    make[4]: Leaving directory '/mnt/d/Onion/lede/source/build_dir/host/sed-4.4'
    Makefile:45: recipe for target '/mnt/d/Onion/lede/source/build_dir/host/sed-4.4/.built' failed
    make[3]: *** [/mnt/d/Onion/lede/source/build_dir/host/sed-4.4/.built] Error 2
    make[3]: Leaving directory '/mnt/d/Onion/lede/source/tools/sed'
    tools/Makefile:148: recipe for target 'tools/sed/compile' failed
    make[2]: *** [tools/sed/compile] Error 2
    make[2]: Leaving directory '/mnt/d/Onion/lede/source'
    tools/Makefile:146: recipe for target '/mnt/d/Onion/lede/source/staging_dir/target-mipsel_24kc_musl/stamp/.tools_compile_yyyyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynny' failed
    make[1]: *** [/mnt/d/Onion/lede/source/staging_dir/target-mipsel_24kc_musl/stamp/.tools_compile_yyyyyyyynyyyyynyynnyyyynyyyyyyyyyyyyyyynyynynnyyynny] Error 2
    make[1]: Leaving directory '/mnt/d/Onion/lede/source'
    /mnt/d/Onion/lede/source/include/toplevel.mk:207: recipe for target 'toolchain/install' failed
    make: *** [toolchain/install] Error 2
    

    I'm going to try this on my work PC tomorrow.



  • Success!

    Everything appeared to work as expected once I set this up on the default WSL partition. I haven't looked into why, or what this issue represents, but simply following the Onion guide was sufficient. For the record, I still feel dirty about this.

    ¯_(ツ)_/¯



  • @Jonathan-Zwart I have a solution to the 10.13.1 problem with m4 you've encountered (see my answer to your post in the openwrt forum and/or the question/solution in the lede forum from late 2017)

    But it does not seem to be related to the OP's problem on WSL to me. From @Elliot-477569 's last post I rather conclude his original problem was a file system issue.

    I still have a unresolved strange issue with make leaving out parts of the build of the mt76 wifi driver when building LEDE master on macOS 10.13.1, resulting in an image with everything working, except that the entire mac80211 infrastructure is missing. The reason behind must be a similar subtlety like in @Elliot-477569 's case on WSL, that's why I subscribed to this thread in the first place... Any ideas are welcome ;-)


Log in to reply
 

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