13.2 amd64, both in poudriere and live system building last major dependency to finish upgrading some ports, but i cannot get it built. It has this same set of failures in poudriere and from ports. not sure what is causing the issue, seems to be a header problem, but the f2c.h header exists and is defining the missing types. cc -c -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC -Donexit=on_exit -DSkip_f2c_Undefs main.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC s_rnge.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC abort_.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC exit_.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC getarg_.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC iargc_.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC getenv_.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC signal_.c cc -c -DSkip_f2c_Undefs -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC s_stop.c getarg_.c:17:14: error: unknown type name 'ftnint' void getarg_(ftnint *n, char *s, ftnlen ls) ^ getarg_.c:17:34: error: unknown type name 'ftnlen' void getarg_(ftnint *n, char *s, ftnlen ls) ^ 2 errors generated. s_rnge.c:13:8: error: unknown type name 'VOID' extern VOID sig_die(const char*,int); ^ gmake[1]: *** [Makefile:22: getarg_.o] Error 1 gmake[1]: *** Waiting for unfinished jobs.... s_rnge.c:14:1: error: unknown type name 'integer' integer s_rnge(char *varn, ftnint offset, char *procn, ftnint line) ^ iargc_.c:9:1: error: unknown type name 'ftnint' ftnint iargc_(void) ^ s_rnge.c:14:28: error: unknown type name 'ftnint' integer s_rnge(char *varn, ftnint offset, char *procn, ftnint line) ^ 1 error generated. s_rnge.c:14:56: error: unknown type name 'ftnint' integer s_rnge(char *varn, ftnint offset, char *procn, ftnint line) ^ 4 errors generated. exit_.c:30:7: error: unknown type name 'integer' exit_(integer *rc) ^ gmake[1]: *** [Makefile:22: iargc_.o] Error 1 1 error generated. gmake[1]: *** [Makefile:22: s_rnge.o] Error 1 gmake[1]: *** [Makefile:22: exit_.o] Error 1 ld -r -x -o abort_.xxx abort_.o getenv_.c:11:31: error: expected identifier extern char *F77_aloc(ftnlen, const char*); ^ getenv_.c:31:35: error: unknown type name 'ftnlen' getenv_(char *fname, char *value, ftnlen flen, ftnlen vlen) ^ signal_.c:7:2: error: getenv_.c:unknown type name 'ftnint'31: 48: error: unknown type name 'ftnlen' ftnint ^ getenv_(char *fname, char *value, ftnlen flen, ftnlen vlen) ^ getenv_.c:35:2: error: use of undeclared identifier 'integer' integer i; ^ signal_.c:11:9: error: unknown type name 'integer' signal_(integer *sigp, sig_pf proc) ^ getenv_.c:39:6: error: use of undeclared identifier 'i' for(i = 0; i < sizeof(buf); i++) { ^ s_stop.c:20:21: error: unknown type name 'ftnlen' int s_stop(char *s, ftnlen n) ^ getenv_.c:39:13: error: use of undeclared identifier 'i' for(i = 0; i < sizeof(buf); i++) { ^ getenv_.c:39:30: error: use of undeclared identifier 'i' for(i = 0; i < sizeof(buf); i++) { ^ signal_.c:17:10: error: use of undeclared identifier 'ftnint' return (ftnint)signal(sig, proc); ^ getenv_.c:40:7: error: use of undeclared identifier 'i' if (i == flen || (buf[i] = fname[i]) == ' ') { ^ 3 errors generated. getenv_.c:40:25: error: use of undeclared identifier 'i' 1gmake[1]: *** [Makefile:23: signal_.o] Error 1 error generated. if (i == flen || (buf[i] = fname[i]) == ' ') { ^ getenv_.c:40:36: error: use of undeclared identifier 'i' if (i == flen || (buf[i] = fname[i]) == ' ') { ^ getenv_.c:41:8: error: use of undeclared identifier 'i' buf[i] = 0; ^ getenv_.c:46:8: error: use of undeclared identifier 'i' while(i < flen && fname[i] != ' ') ^ getenv_.c:46:26: error: use of undeclared identifier 'i' while(i < flen && fname[i] != ' ') ^ mv abort_.xxx abort_.o getenv_.c:47:3: error: use of undeclared identifier 'i' i++; ^ getenv_.c:48:53: error: use of undeclared identifier 'i' strncpy(fp = F77_aloc(i+1, "getenv_"), fname, (int)i); ^ getenv_.c:48:24: error: use of undeclared identifier 'i' strncpy(fp = F77_aloc(i+1, "getenv_"), fname, (int)i); ^ getenv_.c:49:5: error: use of undeclared identifier 'i' fp[i] = 0; ^ 17 errors generated. gmake[1]: *** [Makefile:22: s_stop.o] Error 1 gmake[1]: *** [Makefile:22: getenv_.o] Error 1 gmake[1]: Leaving directory '/usr/ports/lang/f2c/work/f2c-20200916/libf2c' *** Error code 2
Created attachment 241551 [details] poudriere build log
Could you please try without "-march=westmere"?
(In reply to Thierry Thomas from comment #2) no difference, same errors. I don't set march explicitly either, nor do I even set cflags, i only set cputype, which I disabled in their respective make.conf files to try in both live and poudriere as requested. CPUTYPE?=westmere COPTFLAGS+= -O -pipe
(In reply to alt2600 from comment #3) Sorry, I cannot reproduce this error, neither as a port nor in poudriere, on 13.2 or on -CURRENT. This is an old port, and it emits a lot of warnings, but it builds fine even on -CURRENT and on recent hardware, and the packages are built in the compilation farm… Surely something wrong on your machine, but I cannot see what.
(In reply to Thierry Thomas from comment #4) good times, well if something is wrong, 2100 ports built with no issues from my 2300 original, and some of those I just didn't try as they they are likely leaves, and wanted to clean house this upgrade. always nice to see extra gcc's and llvm's, etc drop off when they can for instance. at least I figured out how to turn f2c off for gdal, so self-inflicted wound, who needs NASA data anyway... I'll try poking around my system, prolly try a bhyve of clean 13.2 install, but cannot think of anything that would be upsetting it that I've done on my end. Its never given me issue in the past with my 13.1 machine, possibly older ones too. Its just odd that it seems to not be able to open f2c.h, where the typedef's live. frustrating, but clean bhyve should say if its my machine or something in my filesystem/profile ticking things off.
I just upgraded to 13.2 and have a poudriere build running, see the same error. Here the build: https://pkg.fechner.net/build.html?mastername=132amd64-default&build=2023-04-28_14h41m32s And here the specific log: https://pkg.fechner.net/data/132amd64-default/2023-04-28_14h41m32s/logs/errors/f2c-20200916.log It will take some time till it run through and I will restart it again.
I tested it now with a FreeBSD 13.2 install CD in a virtual machine. Just went into /usr/ports/lang/f2c and did a make. It succeeded. I will try now to fetch a fresh ports dir based on main branch via: git clone https://git.FreeBSD.org/ports.git /usr/ports I let you know the results, but I think the clone will take some hours.
I tried it now with the upgrade path from 13.1 to 13.2 using a virtual machine: ```shell pkg install git git clone https://git.FreeBSD.org/ports.git /usr/ports reboot # snapshot freebsd-update fetch freebsd-update install halt # snapshot freebsd-update upgrade -r 13.2-RELEASE freebsd-update install reboot freebsd-update install reboot # snapshot cd /usr/ports git pull # version 8295d pkg delete -y git pkg autoremove -y # (only pkg is installed) cd /usr/ports/lang/f2c make # accept all options with default selection ``` But this works as well. Maybe it is related to poudriere-devel version, I will test it next with poudriere.
I found now the reason, it is the option in poudriere: ALLOW_MAKE_JOBS=yes Set it to no fixes the problem. Maybe something in the Makefile of the port can be defined to force it to run only with one process?
(In reply to Matthias Fechner from comment #9) We could set MAKE_JOBS_UNSAFE for this port. But I'm surprised: AFAIK, ALLOW_MAKE_JOBS=yes in poudriere is only applied when building dependencies, not for the requested port itself. Same thing for ALLOW_MAKE_JOBS_PACKAGES: by default the dependencies are built with JOBS=1, excepted those listed in ALLOW_MAKE_JOBS_PACKAGES.
(In reply to Thierry Thomas from comment #10) I can confirm adding MAKE_JOBS_UNSAFE=YES to Makefile and this port stages fine. Its weird I was playing last night and if after seeing the failure if I went in the libf2c directory and manually did make -j10 all libf2c would build fine, would build with gmake as well. maybe the header isn't completely copied and ready when the compile starts as the first Makefile target would create the f2c.h by cp f2c.h0 f2c.h ??? and in poudriere ALLOW_MAKE_JOBS allows you to set the jobs number in your poudriere make.conf, be it the default or the jail specific one. It doesn't matter if its the named port or its dependencies. Without that set MAKE_JOBS_NUMER is ignored in your poudriere make.conf. I also have that one set in my pourdriere as gcc12 and llvm15 are constantly bumped and I mainly am using poudriere to keep my i386 wine libraries going. single job compilers are not fun to wait on... diff --git a/lang/f2c/Makefile b/lang/f2c/Makefile index b335825f4530..fa96d6704644 100644 --- a/lang/f2c/Makefile +++ b/lang/f2c/Makefile @@ -16,6 +16,7 @@ LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept BROKEN_mips= fails to compile: /usr/include/sigfpe.h: No such file or directory BROKEN_mips64= fails to compile: /usr/include/sigfpe.h: No such file or directory +MAKE_JOBS_UNSAFE=yes USES= gmake USE_LDCONFIG= yes
Committed, thanks for the report!
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=85da5b1a64b77a2d2204f7a7d3231a09f6a53da9 commit 85da5b1a64b77a2d2204f7a7d3231a09f6a53da9 Author: Thierry Thomas <thierry@FreeBSD.org> AuthorDate: 2023-05-01 12:57:48 +0000 Commit: Thierry Thomas <thierry@FreeBSD.org> CommitDate: 2023-05-01 13:00:40 +0000 lang/f2c: set MAKE_JOBS_UNSAFE This port fails in some cases, and setting MAKE_JOBS_UNSAFE=yes fixes it. PR: 270890 Reported by: alt2600 (at) icloud.com lang/f2c/Makefile | 2 ++ 1 file changed, 2 insertions(+)