Netgear R6260 firmware build help

Hello, I'm new to the forum and I use OpenWRT on my main router, a Netgear R6260. I was wondering if someone could help me figure out how to get the build system set up, as I have no luck getting it to successfully build past make[3] tools/tar compile. It fails at that step, and I can't figure out why. I've tried using Ubuntu Server 20.04 LTS, and Linux Mint 20.1 which is based on Ubuntu 20.04 LTS, both inside a VM with 12GB RAM and 4 vCPUs, and 128GB storage, with well over 3/4 of it available. Any help and feedback is appreciated!

$ make V=s and share your actual error output.

I have the output of make V=s here:

root@owner:~/openwrt# make V=s
make[1]: Entering directory '/root/openwrt'
make[2]: Entering directory '/root/openwrt'
+ mkdir -p /root/openwrt/staging_dir/target-mipsel_24kc_musl
+ cd /root/openwrt/staging_dir/target-mipsel_24kc_musl
+ mkdir -p bin lib stamp usr/include usr/lib
mkdir -p /root/openwrt/build_dir/target-mipsel_24kc_musl/stamp
touch /root/openwrt/staging_dir/target-mipsel_24kc_musl/.prepared
+ mkdir -p /root/openwrt/staging_dir/host
+ cd /root/openwrt/staging_dir/host
+ mkdir -p bin lib stamp usr/include usr/lib
mkdir -p /root/openwrt/build_dir/host/stamp /root/openwrt/staging_dir/host/include/sys
install -m0644 /root/openwrt/tools/include/*.h /root/openwrt/staging_dir/host/include/
install -m0644 /root/openwrt/tools/include/sys/*.h /root/openwrt/staging_dir/host/include/sys/
ln -snf lib /root/openwrt/staging_dir/host/lib64
touch /root/openwrt/staging_dir/host/.prepared
make[3]: Entering directory '/root/openwrt/tools/flock'
make[3]: Leaving directory '/root/openwrt/tools/flock'
time: tools/flock/compile#0.05#0.04#0.08
make[3]: Entering directory '/root/openwrt/tools/xz'
make[3]: Leaving directory '/root/openwrt/tools/xz'
time: tools/xz/compile#0.07#0.04#0.09
make[3]: Entering directory '/root/openwrt/tools/sed'
make[3]: Leaving directory '/root/openwrt/tools/sed'
time: tools/sed/compile#0.06#0.06#0.10
make[3]: Entering directory '/root/openwrt/tools/patch'
make[3]: Leaving directory '/root/openwrt/tools/patch'
time: tools/patch/compile#0.06#0.04#0.09
make[3]: Entering directory '/root/openwrt/tools/tar'
(cd /root/openwrt/build_dir/host/tar-1.32/; if [ -x configure ]; then cp -fpR /root/openwrt/scripts/config.{guess,sub} /root/openwrt/build_dir/host/tar-1.32// && CC="gcc" CFLAGS="-O2 -I/root/openwrt/staging_dir/host/include " CXX="g++" CPPFLAGS="-I/root/openwrt/staging_dir/host/include " LDFLAGS="-L/root/openwrt/staging_dir/host/lib " CONFIG_SHELL="/usr/bin/env bash"  bash ./configure --target=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --program-prefix="" --program-suffix="" --prefix=/root/openwrt/staging_dir/host --exec-prefix=/root/openwrt/staging_dir/host --sysconfdir=/root/openwrt/staging_dir/host/etc --localstatedir=/root/openwrt/staging_dir/host/var --sbindir=/root/openwrt/staging_dir/host/bin --without-posix-acls --without-selinux --without-xattrs --disable-acl --disable-nls ; fi )
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '0' is supported by ustar format... yes
checking whether GID '0' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for style of include used by make... GNU
checking for x86_64-pc-linux-gnu-gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for gcc option to accept ISO C99... none needed
checking for gcc option to accept ISO Standard C... (cached) none needed
checking for x86_64-pc-linux-gnu-ranlib... no
checking for ranlib... ranlib
checking for bison... bison -y
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /root/openwrt/staging_dir/host/bin/grep
checking for egrep... /root/openwrt/staging_dir/host/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether _XOPEN_SOURCE should be defined... no
checking for Minix Amsterdam compiler... no
checking for x86_64-pc-linux-gnu-ar... no
checking for ar... ar
checking for _LARGEFILE_SOURCE value needed for large files... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for x86_64-pc-linux-gnu-ar... ar
checking for special C compiler options needed for large files... (cached) no
checking for _FILE_OFFSET_BITS value needed for large files... (cached) no
checking for inline... inline
checking for fcntl.h... yes
checking for linux/fd.h... yes
checking for memory.h... (cached) yes
checking for net/errno.h... no
checking for sgtty.h... yes
checking for string.h... (cached) yes
checking for sys/param.h... yes
checking for sys/device.h... no
checking for sys/gentape.h... no
checking for sys/inet.h... no
checking for sys/io/trioctl.h... no
checking for sys/mtio.h... yes
checking for sys/time.h... yes
checking for sys/tprintf.h... no
checking for sys/tape.h... no
checking for unistd.h... (cached) yes
checking for locale.h... yes
checking for sys/types.h... (cached) yes
checking for features.h... yes
checking for linewrap.h... no
checking for sys/socket.h... yes
checking for dirent.h... yes
checking for fnmatch.h... yes
checking for wctype.h... yes
checking for stdio_ext.h... yes
checking for sys/stat.h... (cached) yes
checking for getopt.h... yes
checking for sys/cdefs.h... yes
checking for limits.h... yes
checking for wchar.h... yes
checking for stdint.h... (cached) yes
checking for inttypes.h... (cached) yes
checking for crtdefs.h... no
checking for langinfo.h... yes
checking for xlocale.h... no
checking for sys/mman.h... yes
checking for priv.h... no
checking for malloc.h... yes
checking for selinux/selinux.h... no
checking for strings.h... (cached) yes
checking for sysexits.h... yes
checking for utime.h... yes
checking for netdb.h... yes
checking for sys/wait.h... yes
checking for pwd.h... yes
checking for grp.h... yes
checking for sys/buf.h... no
checking sys/mkdev.h usability... no
checking sys/mkdev.h presence... no
checking for sys/mkdev.h... no
checking sys/sysmacros.h usability... yes
checking sys/sysmacros.h presence... yes
checking for sys/sysmacros.h... yes
checking for st_fstype string in struct stat... no
checking for mode_t... yes
checking for pid_t... yes
checking for off_t... yes
checking for uid_t in sys/types.h... yes
checking for major_t... no
checking for minor_t... no
checking for dev_t... yes
checking for ino_t... yes
checking for ssize_t... yes
checking for fchmod... yes
checking for flockfile... yes
checking for funlockfile... yes
checking for pathconf... yes
checking for btowc... yes
checking for canonicalize_file_name... yes
checking for getcwd... yes
checking for readlink... yes
checking for realpath... yes
checking for readlinkat... yes
checking for chown... yes
checking for fchown... yes
checking for _set_invalid_parameter_handler... no
checking for fchdir... yes
checking for fdopendir... yes
checking for faccessat... yes
checking for fchmodat... yes
checking for lchmod... no
checking for fcntl... yes
checking for symlink... yes
checking for mempcpy... yes
checking for fnmatch... yes
checking for isblank... yes
checking for iswctype... yes
checking for mbsrtowcs... yes
checking for wmemchr... yes
checking for wmemcpy... yes
checking for wmempcpy... yes
checking for fstatat... yes
checking for futimens... yes
checking for getdelim... yes
checking for getdtablesize... yes
checking for getprogname... no
checking for getexecname... no
checking for gettimeofday... yes
checking for iswcntrl... yes
checking for iswblank... yes
checking for link... yes
checking for openat... yes
checking for linkat... yes
checking for lstat... yes
checking for mbsinit... yes
checking for mbrtowc... yes
checking for mprotect... yes
checking for mkdirat... yes
checking for mkfifoat... yes
checking for mknodat... yes
checking for mknod... yes
checking for tzset... yes
checking for nl_langinfo... yes
checking for renameat... yes
checking for renameat2... yes
checking for setenv... yes
checking for sleep... yes
checking for snprintf... yes
checking for strdup... yes
checking for strndup... yes
checking for strtoimax... yes
checking for strtoumax... yes
checking for symlinkat... yes
checking for localtime_r... yes
checking for timegm... yes
checking for pipe... yes
checking for unlinkat... yes
checking for utime... yes
checking for futimes... yes
checking for futimesat... yes
checking for utimensat... yes
checking for lutimes... yes
checking for vasnprintf... no
checking for wcrtomb... yes
checking for wcwidth... yes
checking for mkfifo... yes
checking for setlocale... yes
checking for fsync... yes
checking for size_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for C/C++ restrict keyword... __restrict
checking whether clearerr_unlocked is declared... yes
checking whether feof_unlocked is declared... yes
checking whether ferror_unlocked is declared... yes
checking whether fflush_unlocked is declared... yes
checking whether fgets_unlocked is declared... yes
checking whether fputc_unlocked is declared... yes
checking whether fputs_unlocked is declared... yes
checking whether fread_unlocked is declared... yes
checking whether fwrite_unlocked is declared... yes
checking whether getc_unlocked is declared... yes
checking whether getchar_unlocked is declared... yes
checking whether putc_unlocked is declared... yes
checking whether putchar_unlocked is declared... yes
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for d_ino member in directory struct... yes
checking for long file names... yes
checking whether <wchar.h> uses 'inline' correctly... yes
checking for nl_langinfo and CODESET... yes
checking for a traditional french locale... none
checking whether // is distinct from /... no
checking whether realpath works... yes
checking for unistd.h... (cached) yes
checking for working chown... yes
checking whether chown dereferences symlinks... yes
checking whether chown honors trailing slash... yes
checking whether chown always updates ctime... yes
checking whether the preprocessor supports include_next... yes
checking whether system header files limit the line length... no
checking if environ is properly declared... yes
checking for complete errno.h... yes
checking type of array argument to getgroups... gid_t
checking whether lstat correctly handles trailing slash... yes
checking whether fchdir is declared... yes
checking for working fcntl.h... yes
checking for promoted mode_t type... mode_t
checking for mbstate_t... yes
checking whether stdin defaults to large file offsets... yes
checking whether fseeko is declared... yes
checking for fseeko... yes
checking whether stat file-mode macros are broken... no
checking for nlink_t... yes
checking whether getcwd (NULL, 0) allocates memory for result... yes
checking for getcwd with POSIX signature... yes
checking whether getcwd is declared... yes
checking whether getdelim is declared... yes
checking whether getdtablesize is declared... yes
checking whether getline is declared... yes
checking for getopt.h... (cached) yes
checking for getopt_long_only... yes
checking whether getopt is POSIX compatible... yes
checking for working GNU getopt function... yes
checking for working GNU getopt_long function... yes
checking for struct timeval... yes
checking for wide-enough struct timeval.tv_sec member... yes
checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.... yes
checking for wint_t... yes
checking whether wint_t is too small... no
checking for unsigned long long int... yes
checking for long long int... yes
checking whether stdint.h conforms to C99... yes
checking whether stdint.h predates C++11... no
checking whether stdint.h has UINTMAX_WIDTH etc.... yes
checking for inttypes.h... (cached) yes
checking whether the inttypes.h PRIxNN macros are broken... no
checking whether iswcntrl works... yes
checking for towlower... yes
checking for wctype_t... yes
checking for wctrans_t... yes
checking for O_CLOEXEC... yes
checking for wchar_t... yes
checking for good max_align_t... yes
checking whether NULL can be used in arbitrary expressions... yes
checking whether malloc, realloc, calloc are POSIX compliant... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for a traditional japanese locale... none
checking for a transitional chinese locale... none
checking for a french Unicode locale... none
checking for mmap... yes
checking for MAP_ANONYMOUS... yes
checking whether memchr works... yes
checking whether memrchr is declared... yes
checking whether <limits.h> defines MIN and MAX... no
checking whether <sys/param.h> defines MIN and MAX... yes
checking whether time_t is signed... yes
checking whether alarm is declared... yes
checking for working mktime... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... yes
checking for struct tm.tm_gmtoff... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for compound literals... yes
checking whether we are using the GNU C Library >= 2.1 or uClibc... yes
checking whether setenv is declared... yes
checking search.h usability... yes
checking search.h presence... yes
checking for search.h... yes
checking for tsearch... yes
checking for sigset_t... yes
checking whether snprintf returns a byte count as in C99... yes
checking whether snprintf is declared... yes
checking whether strdup is declared... yes
checking whether strerror(0) succeeds... yes
checking whether strndup is declared... yes
checking whether strnlen is declared... yes
checking whether strtoimax is declared... yes
checking whether strtoumax is declared... yes
checking for struct timespec in <time.h>... yes
checking whether unsetenv is declared... yes
checking whether the utimes function works... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for intmax_t... yes
checking where to find the exponent in a 'double'... word 1 bit 20
checking for snprintf... (cached) yes
checking for strnlen... yes
checking for wcslen... yes
checking for wcsnlen... yes
checking for mbrtowc... (cached) yes
checking for wcrtomb... (cached) yes
checking whether _snprintf is declared... no
checking whether vsnprintf is declared... yes
checking for alloca as a compiler built-in... yes
checking whether program_invocation_name is declared... yes
checking whether program_invocation_short_name is declared... yes
checking whether program_invocation_name is defined... yes
checking whether program_invocation_short_name is defined... yes
checking whether btowc(0) is correct... yes
checking whether btowc(EOF) is correct... guessing yes
checking for __builtin_expect... yes
checking whether this system has an arbitrary file name length limit... yes
checking for library containing clock_gettime... none required
checking for clock_gettime... yes
checking for clock_settime... yes
checking for closedir... yes
checking for d_ino member in directory struct... (cached) yes
checking for dirfd... yes
checking whether dirfd is declared... yes
checking whether dirfd is a macro... no
checking whether // is distinct from /... (cached) no
checking whether dup works... yes
checking whether dup2 works... yes
checking for error_at_line... yes
checking for euidaccess... yes
checking for fchownat... yes
checking whether fchownat works with AT_SYMLINK_NOFOLLOW... yes
checking whether fchownat works with an empty file name... yes
checking whether fcntl handles F_DUPFD correctly... yes
checking whether fcntl understands F_DUPFD_CLOEXEC... needs runtime check
checking whether fdopendir is declared... yes
checking whether fdopendir works... yes
checking for struct stat.st_blocks... yes
checking for flexible array member... yes
checking whether conversion from 'int' to 'long double' works... yes
checking for working GNU fnmatch... yes
checking for __fpending... yes
checking whether __fpending is declared... yes
checking for fseeko... (cached) yes
checking whether fstatat (..., 0) works... yes
checking whether futimens works... yes
checking whether getcwd handles long file names properly... yes
checking for getpagesize... yes
checking whether getcwd aborts when 4k < cwd_length < 16k... no
checking for working getdelim function... yes
checking whether getdtablesize works... yes
checking for getgroups... yes
checking for working getgroups... yes
checking whether getgroups handles negative values... yes
checking for getline... yes
checking for working getline function... yes
checking for getpagesize... (cached) yes
checking whether getpagesize is declared... yes
checking whether program_invocation_name is declared... (cached) yes
checking whether program_invocation_short_name is declared... (cached) yes
checking whether __argv is declared... no
checking whether gettimeofday clobbers localtime buffer... no
checking for gettimeofday with POSIX signature... yes
checking for group_member... yes
checking whether INT32_MAX < INTMAX_MAX... yes
checking whether INT64_MAX == LONG_MAX... yes
checking whether UINT32_MAX < UINTMAX_MAX... yes
checking whether UINT64_MAX == ULONG_MAX... yes
checking whether iswblank is declared... yes
checking whether langinfo.h defines CODESET... yes
checking whether langinfo.h defines T_FMT_AMPM... yes
checking whether langinfo.h defines ALTMON_1... yes
checking whether langinfo.h defines ERA... yes
checking whether langinfo.h defines YESEXPR... yes
checking for lchown... yes
checking whether the compiler supports the __inline keyword... yes
checking whether link obeys POSIX... yes
checking for __xpg4... no
checking whether link(2) dereferences a symlink... no
checking whether linkat() can link symlinks... yes
checking whether linkat handles trailing slash correctly... yes
checking whether locale.h conforms to POSIX:2001... yes
checking whether struct lconv is properly defined... yes
checking whether lseek detects pipes... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... (cached) yes
checking whether mbrtowc handles incomplete characters... guessing yes
checking whether mbrtowc works as well as mbtowc... guessing yes
checking whether mbrtowc handles a NULL pwc argument... guessing yes
checking whether mbrtowc handles a NULL string argument... guessing yes
checking whether mbrtowc has a correct return value... guessing yes
checking whether mbrtowc returns 0 when parsing a NUL character... guessing yes
checking whether mbrtowc works on empty input... yes
checking whether the C locale is free of encoding errors... no
checking whether mbrtowc handles incomplete characters... (cached) guessing yes
checking whether mbrtowc works as well as mbtowc... (cached) guessing yes
checking whether mbrtowc handles incomplete characters... (cached) guessing yes
checking whether mbrtowc works as well as mbtowc... (cached) guessing yes
checking whether mbsrtowcs works... guessing yes
checking for mempcpy... (cached) yes
checking for memrchr... yes
checking whether mkdir handles trailing slash... yes
checking whether mkdir handles trailing dot... yes
checking for mkdtemp... yes
checking for mkfifo... yes
checking whether mkfifo rejects trailing slashes... yes
checking whether mknod can create fifo without root privileges... configure: error: in `/root/openwrt/build_dir/host/tar-1.32':
configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
See `config.log' for more details
make[3]: *** [Makefile:32: /root/openwrt/build_dir/host/tar-1.32/.configured] Error 1
make[3]: Leaving directory '/root/openwrt/tools/tar'
time: tools/tar/compile#17.89#9.26#29.31
    ERROR: tools/tar failed to build.
make[2]: *** [tools/Makefile:158: tools/tar/compile] Error 1
make[2]: Leaving directory '/root/openwrt'
make[1]: *** [tools/Makefile:154: /root/openwrt/staging_dir/host/stamp/.tools_compile_yyynyynnyyynyyyyyynyynyyyyynyyyyyyyyyyyyyyyynynnyyyyyyy] Error 2
make[1]: Leaving directory '/root/openwrt'
make: *** [/root/openwrt/include/toplevel.mk:234: world] Error 2

Code boxes are good for pasting longer amounts of build logs, not only do you get a fixed-width/ non-proportional font for free, you also avoid having to scroll the whole thread over pages, but have the content boxed in with its own scroll bars and limited to a workable size.

The error message itself is you in your past, do not try to build OpenWrt as root, ever. No part of cloning the git repo, updating the feeds, configuring the build environment or compiling should ever be done with root capabilities (that includes sudo), it's unnecessary and highly dangerous for your host system integrity. Given that the file access permissions in your existing build-tree are now messed up, it's best to start over again and clone a fresh git checkout -as normal user, without every thinking about sudo- and start from there.

1 Like

Alright, I'll give that a shot and see how it goes. I'll update when I test it.

Update: I tried your suggestion of running in the standard user, and so far it seems to be going without a problem. Thanks for your help! I greatly appreciate it.

Update 2: The build process failed much later during the cycle. I'm rerunning it with V=s on this run again to catch any errors, and it may take some time. I figured I'd post this update since it failed merely minutes ago, and I had to run make clean and make dirclean to rebuild everything.

Edit: The reason I had to put errors.txt & output.txt from my last run with owner@owner:~/Documents/openwrt$ make V=s into a 7-zip archive is because I can't post over 8MB of text on here. It would make no sense to do so either, and the output log is over 8MB in size. Inside the archive both files take about 300KB. Here's the link: https://drive.google.com/file/d/1CG3h2C0VxiUfMmipyMg9U1NG1PrykzwM/view?usp=sharing

I'm bumping the thread to try to get some advice on how to proceed. Thank you in advance for any help.

Discussion continues in Netgear R6260 build process fails