bash-minimal fails to build on x86_64-w64-mingw32

  • Open
  • quality assurance status badge
Details
One participant
  • Ekaitz Zarraga
Owner
unassigned
Submitted by
Ekaitz Zarraga
Severity
normal
E
E
Ekaitz Zarraga wrote on 16 Mar 2023 20:50
(name . bug-guix@gnu.org)(address . bug-guix@gnu.org)
w5ToAECm6QVz81owny9pmPnjKuy2Mf0jVTA17w4HNLw653YowDp9SFpV_cecIsdqzKik9N40o1LqviSIQhSkhSizFHn0exzgxO0Z8ZCZkPA=@elenq.tech
Any package that uses `bash-minimal` to build in mingw (all of them?) fails when trying to build `bash-minimal` with the following error:

```
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `build'
rm -f mksyntax.exe
gcc -DPROGRAM='"bash.exe"' -DCONF_HOSTTYPE='"x86_64"' -DCONF_OSTYPE='"mingw32"' -DCONF_MACHTYPE='"x86_64-w64-mingw32"' -DCONF_VENDOR='"w64"' -DLOCALEDIR='"/gnu/store/lb1afqc8mx7jjynpf8qbn6mc13h9p4ji-bash-minimal-5.1.8/share/locale"' -DPACKAGE='"bash"' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib -g -DCROSS_COMPILING -g -DCROSS_COMPILING -o mksyntax.exe ./mksyntax.c
In file included from ./mksyntax.c:23:
./config.h:361:19: error: two or more data types in declaration specifiers
361 | #define socklen_t unsigned int
| ^~~~~~~~
./config.h:361:28: error: two or more data types in declaration specifiers
361 | #define socklen_t unsigned int
| ^~~
make: *** [Makefile:720: mksyntax.exe] Error 1
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "make" arguments: () exit-status: 2 term-signal: #f stop-signal: #f>
phase `build' failed after 0.0 seconds
command "make" failed with status 2
note: keeping build directory `/tmp/guix-build-bash-minimal-5.1.8.drv-2'
builder for `/gnu/store/r3kiyak1js85m8achjf9jcbqq7asmjy3-bash-minimal-5.1.8.drv' failed with exit code 1
build of /gnu/store/r3kiyak1js85m8achjf9jcbqq7asmjy3-bash-minimal-5.1.8.drv failed
View build log at '/var/log/guix/drvs/r3/kiyak1js85m8achjf9jcbqq7asmjy3-bash-minimal-5.1.8.drv.gz'.
```

I'll investigate but I don't think I'll reach far on this one.

I already tried removing the offending lines from the `config.h` but other errors appear (how surprising :) )

Thanks all,
Ekaitz
E
E
Ekaitz Zarraga wrote on 1 Apr 2023 13:14
(name . 62226@debbugs.gnu.org)(address . 62226@debbugs.gnu.org)
w6O3eWqBMn7g1oZS1-4SFahGohlakG_MOkBE-B6MmDutk1DmjEww6mTAeZRRjDSBpnRJbAVv3a1HT1X52cfgB-f0O04WpMyAiVVvloerRMo=@elenq.tech
Hi,

Adding:

```
"ac_cv_header_sys_socket_h=no"
```

To configure flags in the case the target is mingw solves the first issue, but more issues appear.

I have no enough knowledge about autotools to dig into this much further but it looks like we are finding wrong stuff in the configure step:

```
In file included from shell.c:28:
config.h:340:18: error: ‘long long long’ is too long for GCC
340 | #define intmax_t long long
| ^~~~
config.h:340:23: error: ‘long long long’ is too long for GCC
340 | #define intmax_t long long
| ^~~~
config.h:343:19: error: duplicate ‘unsigned’
343 | #define uintmax_t unsigned long long
| ^~~~~~~~
config.h:343:28: error: ‘long long long’ is too long for GCC
343 | #define uintmax_t unsigned long long
| ^~~~
config.h:343:33: error: ‘long long long’ is too long for GCC
343 | #define uintmax_t unsigned long long
| ^~~~
In file included from bashjmp.h:24,
from shell.h:25,
from shell.c:53:
./include/posixjmp.h:29:21: error: unknown type name ‘sigjmp_buf’
29 | # define procenv_t sigjmp_buf
| ^~~~~~~~~~
bashjmp.h:26:8: note: in expansion of macro ‘procenv_t’
26 | extern procenv_t top_level;
| ^~~~~~~~~
./include/posixjmp.h:29:21: error: unknown type name ‘sigjmp_buf’
29 | # define procenv_t sigjmp_buf
| ^~~~~~~~~~
bashjmp.h:27:8: note: in expansion of macro ‘procenv_t’
27 | extern procenv_t subshell_top_level;
| ^~~~~~~~~
./include/posixjmp.h:29:21: error: unknown type name ‘sigjmp_buf’
29 | # define procenv_t sigjmp_buf
| ^~~~~~~~~~
bashjmp.h:28:8: note: in expansion of macro ‘procenv_t’
28 | extern procenv_t return_catch; /* used by `return' builtin */
| ^~~~~~~~~
./include/posixjmp.h:29:21: error: unknown type name ‘sigjmp_buf’
29 | # define procenv_t sigjmp_buf
| ^~~~~~~~~~
bashjmp.h:29:8: note: in expansion of macro ‘procenv_t’
29 | extern procenv_t wait_intr_buf;
| ^~~~~~~~~
In file included from shell.h:28,
from shell.c:53:
/gnu/store/7b119byi86gb3ab5x87ld9fz5xg5bwyd-mingw-w64-x86_64-10.0.0/include/ctype.h:144:13: error: expected identifier or ‘(’ before ‘int’
144 | int __cdecl isblank(int _C);
| ^~~~~~~
syntax.h:103:27: error: expected ‘)’ before ‘==’ token
103 | # define isblank(x) ((x) == ' ' || (x) == '\t')
| ^~
In file included from shell.h:29,
from shell.c:53:
general.h:33:12: fatal error: sys/resource.h: No such file or directory
33 | # include <sys/resource.h>
| ^~~~~~~~~~~~~~~~
compilation terminated.
```


ElenQ Technology
Ethical Innovation
?