On my FreeBSD 12-current amd64 poudriere system, the java/openjdk8 build is failing: ===> Configuring for openjdk8-8.102.14_1 Warning: You are using legacy autoconf cross-compilation flags. It is recommended that you use --openjdk-target instead. Running generated-configure.sh ../../common/autoconf/generated-configure.sh: redirection error: cannot duplicate fd: Bad file descriptor ../../common/autoconf/generated-configure.sh: line 560: 0: Bad file descriptor configure exiting with result code 1 ===> Script "../../configure" failed unexpectedly. Please report the problem to java@FreeBSD.org [maintainer] and attach the "/wrkdirs/usr/ports/java/openjdk8/work/openjdk/common/autoconf/config.log" including the output of the failure of your make command. Also, it might be a good idea to provide an overview of all packages installed on your system (e.g. a /usr/local/sbin/pkg-static info -g -Ea). *** Error code 1 Some details about my system: $ uname -a FreeBSD buildbox 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r305311M: Sat Sep 3 12:29:01 AWST 2016 woodsb02@buildbox:/usr/obj/usr/src/sys/GENERIC-NODEBUG-VIMAGE amd64 $ dmesg | grep cpu CPU: Intel(R) Atom(TM) CPU C2750 @ 2.40GHz (2400.14-MHz K8-class CPU) FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs $ mount | grep /dev/fd fdescfs on /dev/fd (fdescfs) $ mount | grep /proc procfs on /proc (procfs, local)
I have recently started seeing the same failure on my 11-STABLE amd64 system. The root cause of the error is not in openjdk8. Numerous ports that use bash during build now fail with "redirection error: cannot duplicate fd: Bad file descriptor". For several ports I was able to simply drop the bash requirement and let /bin/sh be used, but for those that rely on bash syntax, i.e. devel/autogen, I worked around the problem by using zsh instead. zsh is my regular shell and exhibits no problems like bash. I am not aware of any recent change to bash itself. There was a change I made one week ago that may possibly be related. I removed options COMPAT_LINUX32, LINPROCFS, and LINSYSFS from my kernel config and began loading linux_common.ko, linux.ko, linux64.ko, linprocfs.ko, and linsysfs.ko during boot. So, I now have 64bit Linux emulation and there is a change to the way the 32bit Linux emulation works. I will try reverting the next time I do a kernel build to see if there is any relation. Unfortunately, it is not possible to load linux64.ko when the kernel is built with options COMPAT_LINUX32, and there is no COMPAT_LINUX on amd64, so its either all Linux emu in modules (can't buld LINPROCFS or LINSSYSFS into kernel without LINUX_COMPAT(32)) or 32bit Linux emu only. Fortunately, I don't really need 64bit Linux emulation, I only made the change because Poudriere began refusing to start amd64 jails without loading linux64.ko, but that requirement has been relaxed.
Dupe of https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217846
*** This bug has been marked as a duplicate of bug 217846 ***