proftpd / proftpd

ProFTPD source code
http://www.proftpd.org
GNU General Public License v2.0
530 stars 199 forks source link

cannot build on Termux #1238

Open misogihagi opened 3 years ago

misogihagi commented 3 years ago

What I Did

When I tried below, building process did not finish properly on Termux.

git clone https://github.com/proftpd/proftpd.git
cd proftpd
./configure
make

What I Expected/Wanted

No build error

Problem

$ make
cd lib/ && make lib
make[1]: Entering directory '/data/data/com.termux/files/home/proftpd/lib'
make[1]: Nothing to be done for 'lib'.
make[1]: Leaving directory '/data/data/com.termux/files/home/proftpd/lib'
cd src/ && make src
make[1]: Entering directory '/data/data/com.termux/files/home/proftpd/src'
gcc -DHAVE_CONFIG_H  -DLINUX  -I.. -I../include -I../include  -g2 -O2 -Wall -fno-omit-frame-pointer -fno-strict-aliasing -c netaddr.c
netaddr.c:2132:14: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      return IN6_IS_ADDR_LOOPBACK(
             ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:43:9: note: expanded from macro 'IN6_IS_ADDR_LOOPBACK'
  ((((a)->s6_addr32[0]) == 0) && \
     ~~~^ ~~~~~~~~~
netaddr.c:2132:14: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      return IN6_IS_ADDR_LOOPBACK(
             ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:44:9: note: expanded from macro 'IN6_IS_ADDR_LOOPBACK'
   (((a)->s6_addr32[1]) == 0) && \
     ~~~^ ~~~~~~~~~
netaddr.c:2132:14: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      return IN6_IS_ADDR_LOOPBACK(
             ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:45:9: note: expanded from macro 'IN6_IS_ADDR_LOOPBACK'
   (((a)->s6_addr32[2]) == 0) && \
     ~~~^ ~~~~~~~~~
netaddr.c:2132:14: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      return IN6_IS_ADDR_LOOPBACK(
             ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:46:9: note: expanded from macro 'IN6_IS_ADDR_LOOPBACK'
   (((a)->s6_addr32[3]) == ntohl(1)))
     ~~~^ ~~~~~~~~~
netaddr.c:2333:13: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      res = IN6_IS_ADDR_V4MAPPED(
            ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:55:9: note: expanded from macro 'IN6_IS_ADDR_V4MAPPED'
  ((((a)->s6_addr32[0]) == 0) && \
     ~~~^ ~~~~~~~~~
netaddr.c:2333:13: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      res = IN6_IS_ADDR_V4MAPPED(
            ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:56:9: note: expanded from macro 'IN6_IS_ADDR_V4MAPPED'
   (((a)->s6_addr32[1]) == 0) && \
     ~~~^ ~~~~~~~~~
netaddr.c:2333:13: error: member reference base type '__be32' (aka 'unsigned int') is not a structure or union
      res = IN6_IS_ADDR_V4MAPPED(
            ^~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/netinet/in6.h:57:9: note: expanded from macro 'IN6_IS_ADDR_V4MAPPED'
   (((a)->s6_addr32[2]) == ntohl(0x0000ffff)))
     ~~~^ ~~~~~~~~~
7 errors generated.
make[1]: *** [Makefile:20: netaddr.o] Error 1
make[1]: Leaving directory '/data/data/com.termux/files/home/proftpd/src'
make: *** [Makefile:54: src] Error 2
Castaglia commented 3 years ago

Do you happen to have a Docker image that I can use for locally reproducing this issue?

misogihagi commented 3 years ago

building under termux environment is a kind of special way. I think Docker couldn't simulate. maybe ./configure helps ?

$ ./configure
checking build system type... armv7l-unknown-linux-gnueabi
checking host system type... armv7l-unknown-linux-gnueabi
checking target system type... armv7l-unknown-linux-gnueabi
checking for 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 for a sed that does not truncate output... /data/data/com.termux/files/usr/bin/sed
checking for grep that handles long lines and -e... /data/data/com.termux/files/usr/bin/grep
checking for egrep... /data/data/com.termux/files/usr/bin/grep -E
checking for fgrep... /data/data/com.termux/files/usr/bin/grep -F
checking for ld used by gcc... /data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld
checking if the linker (/data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /data/data/com.termux/files/usr/bin/nm -B
checking the name lister (/data/data/com.termux/files/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 32768
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... no
checking for /data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /data/data/com.termux/files/usr/bin/nm -B output from gcc object... ok
checking how to run the C preprocessor... gcc -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 for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... yes
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... yes
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld
checking if the linker (/data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld) is GNU ld... yes
checking whether the g++ linker (/data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/data/data/com.termux/files/usr/bin/arm-linux-androideabi-ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /data/data/com.termux/files/usr/bin/install -c
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking whether the C compiler accepts -Wall... yes
checking whether the C compiler accepts -fno-omit-frame-pointer... yes
checking whether the C compiler accepts -fno-strict-aliasing... yes
checking for getopt... yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking for getopt_long... yes
checking which extension is used for runtime loadable modules... .so
checking which variable specifies run-time module search path... LD_LIBRARY_PATH
checking for the default library search path... /lib /usr/lib
checking for library containing dlopen... none required
checking for dlerror... yes
checking for shl_load... (cached) no
checking for shl_load in -ldld... (cached) no
checking for dld_link in -ldld... no
checking for _ prefix in compiled symbols... no
checking whether deplibs are loaded by dlopen... yes
checking for argz.h... no
checking for error_t... no
checking for argz_add... no
checking for argz_append... no
checking for argz_count... no
checking for argz_create_sep... no
checking for argz_insert... no
checking for argz_next... no
checking for argz_stringify... no
checking whether libtool supports -dlopen/-dlpreopen... yes
checking for standalone crypt... no
checking for crypt in -lcrypt... yes
checking for standalone gethostbyname... yes
checking for standalone inet_aton... yes
checking for standalone nsl functions... yes
checking for standalone socket functions... yes
checking for _pw_stayopen variable... no
checking krb.h usability... no
checking krb.h presence... no
checking for krb.h... no
checking login.h usability... no
checking login.h presence... no
checking for login.h... no
checking prot.h usability... no
checking prot.h presence... no
checking for prot.h... no
checking usersec.h usability... no
checking usersec.h presence... no
checking for usersec.h... no
checking sys/audit.h usability... no
checking sys/audit.h presence... no
checking for sys/audit.h... no
checking hpsecurity.h usability... no
checking hpsecurity.h presence... no
checking for hpsecurity.h... no
checking for hpsecurity.h workaround... no
checking for AIX authenticate... no
checking for AIX loginfailed... no
checking for AIX loginsuccess... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for ANSI C header files... (cached) yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking linux/prctl.h usability... yes
checking linux/prctl.h presence... yes
checking for linux/prctl.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/prctl.h usability... yes
checking sys/prctl.h presence... yes
checking for sys/prctl.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking junistd.h usability... no
checking junistd.h presence... no
checking for junistd.h... no
checking for memory.h... (cached) yes
checking shadow.h usability... no
checking shadow.h presence... no
checking for shadow.h... no
checking for security/pam_appl.h... no
checking for security/pam_modules.h... no
checking for pam/pam_appl.h... no
checking linux/capability.h usability... yes
checking linux/capability.h presence... yes
checking for linux/capability.h... yes
checking sys/capability.h usability... yes
checking sys/capability.h presence... yes
checking for sys/capability.h... yes
checking for cap_init in -lcap2... no
checking for cap_init in -lcap... yes
checking whether to enable mod_cap... yes
checking bstring.h usability... no
checking bstring.h presence... no
checking for bstring.h... no
checking crypt.h usability... yes
checking crypt.h presence... yes
checking for crypt.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking execinfo.h usability... no
checking execinfo.h presence... no
checking for execinfo.h... no
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking for inttypes.h... (cached) yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking sasl/sasl.h usability... no
checking sasl/sasl.h presence... no
checking for sasl/sasl.h... no
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking stropts.h usability... no
checking stropts.h presence... no
checking for stropts.h... no
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking for sys/types.h... (cached) yes
checking sys/ucred.h usability... no
checking sys/ucred.h presence... no
checking for sys/ucred.h... no
checking sys/uio.h usability... yes
checking sys/uio.h presence... yes
checking for sys/uio.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for net/if.h... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking for sys/param.h... yes
checking for sys/mount.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking whether netdb.h requires _USE_IRS... no
checking for netinet/in_systm.h... yes
checking for netinet/ip.h... yes
checking netinet/tcp.h usability... yes
checking netinet/tcp.h presence... yes
checking for netinet/tcp.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking idna.h usability... no
checking idna.h presence... no
checking for idna.h... no
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking regex.h usability... yes
checking regex.h presence... yes
checking for regex.h... yes
checking for sys/stat.h... (cached) yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking sys/termios.h usability... no
checking sys/termios.h presence... no
checking for sys/termios.h... no
checking sys/termio.h usability... no
checking sys/termio.h presence... no
checking for sys/termio.h... no
checking sys/statfs.h usability... yes
checking sys/statfs.h presence... yes
checking for sys/statfs.h... yes
checking sys/statvfs.h usability... yes
checking sys/statvfs.h presence... yes
checking for sys/statvfs.h... yes
checking sys/un.h usability... yes
checking sys/un.h presence... yes
checking for sys/un.h... yes
checking sys/vfs.h usability... yes
checking sys/vfs.h presence... yes
checking for sys/vfs.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking ndir.h usability... no
checking ndir.h presence... no
checking for ndir.h... no
checking sys/ndir.h usability... no
checking sys/ndir.h presence... no
checking for sys/ndir.h... no
checking sys/dir.h usability... no
checking sys/dir.h presence... no
checking for sys/dir.h... no
checking vmsdir.h usability... no
checking vmsdir.h presence... no
checking for vmsdir.h... no
checking ucred.h usability... no
checking ucred.h presence... no
checking for ucred.h... no
checking ucontext.h usability... yes
checking ucontext.h presence... yes
checking for ucontext.h... yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking utmpx.h usability... no
checking utmpx.h presence... no
checking for utmpx.h... no
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking curses.h usability... yes
checking curses.h presence... yes
checking for curses.h... yes
checking ncurses.h usability... yes
checking ncurses.h presence... yes
checking for ncurses.h... yes
checking for tzname global variable... yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for uid_t in sys/types.h... yes
checking for pid_t... yes
checking for size_t... yes
checking for mode_t... yes
checking for off_t... yes
checking type of array argument to getgroups... gid_t
checking whether the getgrouplist(3) function takes ints... no
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking size of short... 2
checking size of int... 4
checking size of long... 4
checking size of long long... 8
checking size of off_t... 8
checking size of size_t... 4
checking size of time_t... 4
checking size of char *... 4
checking size of void *... 4
checking size of uid_t... 4
checking size of gid_t... 4
checking for mode_t... (cached) yes
checking for ino_t... yes
checking for intptr_t... yes
checking for socklen_t... yes
checking utmp.h usability... yes
checking utmp.h presence... yes
checking for utmp.h... yes
checking whether struct utmp has ut_user... yes
checking whether struct utmp has ut_host... yes
checking whether struct utmp has ut_exit... yes
checking whether syslog.h defines LOG_CRON... yes
checking whether syslog.h defines LOG_FTP... yes
checking for d_fd in DIR structure... no
checking for dd_fd in DIR structure... no
checking for __dd_fd in DIR structure... no
checking for working alloca.h... yes
checking for alloca... yes
checking for alloca in -lucb... no
checking whether gcc needs -traditional... no
checking return type of signal handlers... void
checking for vprintf... yes
checking for _doprnt... no
checking for bcopy... yes
checking for crypt... yes
checking for ctime_r... yes
checking for fdatasync... yes
checking for fgetspent... no
checking for flock... yes
checking for fpathconf... yes
checking for freeaddrinfo... yes
checking for fsync... yes
checking for futimes... no
checking for getifaddrs... yes
checking for getpgid... yes
checking for getpgrp... yes
checking for gmtime_r... yes
checking for localtime_r... yes
checking for mkdtemp... yes
checking for nl_langinfo... no
checking for gai_strerror... yes
checking for iconv... no
checking for idna_to_ascii_8z... yes
checking for dirfd... yes
checking for getaddrinfo... yes
checking for getcwd... yes
checking for getenv... yes
checking for getgrouplist... yes
checking for getgroups... yes
checking for getgrset... no
checking for gethostbyname2... yes
checking for gethostname... yes
checking for getnameinfo... yes
checking for gettimeofday... yes
checking for hstrerror... yes
checking for inet_aton... yes
checking for inet_ntop... yes
checking for inet_pton... yes
checking for initgroups... yes
checking for loginrestrictions... no
checking for explicit_bzero... no
checking for memcpy... yes
checking for mempcpy... yes
checking for memset_s... no
checking for mkdir... yes
checking for mkstemp... yes
checking for mlock... yes
checking for mlockall... yes
checking for munlock... yes
checking for munlockall... yes
checking for pathconf... yes
checking for posix_fadvise... yes
checking for pread... yes
checking for prctl... yes
checking for putenv... yes
checking for pwrite... yes
checking for random... yes
checking for regcomp... yes
checking for rmdir... yes
checking for select... yes
checking for setgroups... yes
checking for socket... yes
checking for srandom... yes
checking for statfs... yes
checking for strchr... yes
checking for strcoll... yes
checking for strerror... yes
checking for timingsafe_bcmp... no
checking for strlcat... yes
checking for strlcpy... yes
checking for strsep... yes
checking for strtod... yes
checking for strtof... yes
checking for strtol... yes
checking for strtoll... yes
checking for strtoull... yes
checking for setprotoent... no
checking for setspent... no
checking for endprotoent... no
checking for vsnprintf... yes
checking for snprintf... yes
checking for setsid... yes
checking for setgroupent... no
checking for seteuid... yes
checking for setegid... yes
checking for setenv... yes
checking for setpgid... yes
checking for siginterrupt... yes
checking for tzset... yes
checking for uname... yes
checking for unsetenv... yes
checking for setpassent... no
checking for struct cmsgcred.cmcred_uid... no
checking for struct sockcred.sc_uid... no
checking for struct sockpeercred.uid... no
checking for struct sockaddr_in.sin_len... no
checking for struct statfs.f_fstypename... no
checking for struct statfs.f_type... yes
checking whether struct addrinfo is defined... yes
checking whether struct sockaddr_storage is defined... yes
checking whether ss_family is defined... yes
checking whether ss_len is defined... no
checking whether __ss_len is defined... no
checking sys/acl.h usability... no
checking sys/acl.h presence... no
checking for sys/acl.h... no
checking acl/libacl.h usability... no
checking acl/libacl.h presence... no
checking for acl/libacl.h... no
checking for perm_copy_fd in -lacl... no
checking which POSIX ACL implementation to use... none
checking which sendfile() implementation to use... Linux
checking sys/sendfile.h usability... yes
checking sys/sendfile.h presence... yes
checking for sys/sendfile.h... yes
checking sys/extattr.h usability... no
checking sys/extattr.h presence... no
checking for sys/extattr.h... no
checking sys/xattr.h usability... yes
checking sys/xattr.h presence... yes
checking for sys/xattr.h... yes
checking attr/xattr.h usability... no
checking attr/xattr.h presence... no
checking for attr/xattr.h... no
checking for setxattr in -lattr... yes
checking for lgetxattr... yes
checking for llistxattr... no
checking for lremovexattr... yes
checking for lsetxattr... no
checking whether setgrent returns void... yes
checking for initscr in -lcurses... yes
checking for halfdelay in -ltinfo... yes
checking for initscr in -lncurses... yes
checking for halfdelay in -ltinfo... (cached) yes
./configure: 23481: test: x: unexpected operator
checking for setproctitle... no
checking libutil.h usability... no
checking libutil.h presence... no
checking for libutil.h... no
checking for setproctitle in -lutil... no
checking sys/pstat.h usability... no
checking sys/pstat.h presence... no
checking for sys/pstat.h... no
checking whether __progname and __progname_full are available... no
checking which argv replacement method to use... writeable
checking for backtrace in -lexecinfo... no
checking for execinfo.h... (cached) no
checking for ucontext.h... (cached) yes
checking for backtrace... no
checking for backtrace_symbols... no
checking whether printf supports %llu format... yes
checking for duplicate module build requests... no
configure: creating ./config.status
config.status: creating contrib/Makefile
config.status: creating include/Makefile
config.status: creating lib/Makefile
config.status: creating locale/Makefile
config.status: creating modules/Makefile
config.status: creating src/Makefile
config.status: creating src/prxs
config.status: creating src/ftpdctl.8
config.status: creating src/proftpd.8
config.status: creating src/proftpd.conf.5
config.status: creating src/xferlog.5
config.status: creating tests/Makefile
config.status: creating utils/Makefile
config.status: creating utils/ftpcount.1
config.status: creating utils/ftpscrub.8
config.status: creating utils/ftpshut.8
config.status: creating utils/ftptop.1
config.status: creating utils/ftpwho.1
config.status: creating Makefile
config.status: creating Make.rules
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing libtool commands
config.status: executing default commands

--------------
Build Summary
--------------
Building the following static modules:
  mod_cap

--------------
$
Castaglia commented 3 years ago

Thanks for the input, but unfortunately, I suspect that there will be multiple build issues on Termux. And to address them, I'll need access to a Termux environment in which I can build and debug these. Not sure how best to get access to such a build environment, though...