perl-catalyst / FCGI

Fast CGI module (https://metacpan.org/pod/FCGI)
Other
4 stars 6 forks source link

On elderly macOS High Sierra, version 10.13.6 or Darwin 17.7.0, tests fail due to pointer mismatch #13

Open ballapete opened 5 hours ago

ballapete commented 5 hours ago

The module builds and installs fine, but tests fail (performing them inside the MacPorts package manager, port):

time port -vs test p5.34-fcgi p5.38-fcgi ---> Computing dependencies for p5.34-fcgi. ---> Fetching distfiles for p5.34-fcgi ---> Verifying checksums for p5.34-fcgi ---> Checksumming FCGI-0.82.tar.gz ---> Extracting p5.34-fcgi ---> Extracting FCGI-0.82.tar.gz Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work" && /usr/bin/gzip -dc '/opt/local/var/macports/distfiles/perl5/FCGI-0.82.tar.gz' | /usr/bin/tar -xf - ---> Configuring p5.34-fcgi Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82" && /opt/local/bin/perl5.34 Makefile.PL INSTALLDIRS=vendor CC="/usr/bin/clang" LD="/usr/bin/clang" Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for FCGI Writing MYMETA.yml and MYMETA.json Running ./configure for you Please read configure.readme for information on how to run it yourself checking for gcc... /usr/bin/cc 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 the compiler supports GNU C... yes checking whether /usr/bin/cc accepts -g... yes checking for /usr/bin/cc option to enable C11 features... none needed checking how to run the C preprocessor... /usr/bin/cc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for grep that handles long lines and -e... /opt/local/bin/ggrep checking for egrep... /opt/local/bin/ggrep -E checking for ssize_t... yes checking for sun_len in sys/un.h... yes checking for fpos_t in stdio.h... yes checking for sys/socket.h... yes checking for netdb.h... yes checking for netinet/in.h... yes checking for arpa/inet.h... yes checking for sys/time.h... yes checking for limits.h... yes checking for sys/param.h... yes checking for unistd.h... (cached) yes checking for a fileno() prototype in stdio.h... yes checking whether cross-process locking is required by accept()... no checking whether va_arg(arg, long double) crashes the compiler... no checking for an ANSI C-conforming const... yes configure: creating ./config.status config.status: creating fcgi_config.h Fixing flags in Makefile ---> Patching Makefile: /^CCFLAGS =/s|$| -isysroot/| ---> Patching Makefile: /^OTHERLDFLAGS =/s|$| -Wl,-syslibroot,/| ---> Patching Makefile: s|^(CC =).|\1 /usr/bin/clang| ---> Building p5.34-fcgi Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82" && /usr/bin/make -j8 -w all make: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82' "/opt/local/bin/perl5.34" "/opt/local/lib/perl5/5.34/ExtUtils/xsubpp" -typemap '/opt/local/lib/perl5/5.34/ExtUtils/typemap' -typemap '/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82/typemap' FCGI.xs > FCGI.xsc Running Mkbootstrap for FCGI () /usr/bin/clang -c -I. -fno-common -DPERL_DARWIN -pipe -Os -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -isysroot/ -O3 -DVERSION="0.82" -DXS_VERSION="0.82" "-I/opt/local/lib/perl5/5.34/darwin-thread-multi-2level/CORE" fcgiapp.c /usr/bin/clang -c -I. -fno-common -DPERL_DARWIN -pipe -Os -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -isysroot/ -O3 -DVERSION="0.82" -DXS_VERSION="0.82" "-I/opt/local/lib/perl5/5.34/darwin-thread-multi-2level/CORE" os_unix.c chmod 644 "FCGI.bs" "/opt/local/bin/perl5.34" -MExtUtils::Command::MM -e 'cp_nonempty' -- FCGI.bs blib/arch/auto/FCGI/FCGI.bs 644 cp FCGI.pm blib/arch/FCGI.pm os_unix.c:1173:70: warning: passing 'int ' to parameter of type 'socklen_t ' (aka 'unsigned int ') converts between pointers to integer types with different sign [-Wpointer-sign] socket = accept(listen_sock, (struct sockaddr )&sa, &len); ^~~~ /usr/include/sys/socket.h:681:69: note: passing argument to parameter here int accept(int, struct sockaddr __restrict, socklen_t restrict) ^ os_unix.c:1273:51: warning: passing 'int ' to parameter of type 'socklen_t ' (aka 'unsigned int ') converts between pointers to integer types with different sign [-Wpointer-sign] if (getpeername(sock, (struct sockaddr )&sa, &len) != 0 && errno == ENOTCONN) { ^~~~ /usr/include/sys/socket.h:685:74: note: passing argument to parameter here int getpeername(int, struct sockaddr * restrict, socklen_t * __restrict) ^ mv FCGI.xsc FCGI.c /usr/bin/clang -c -I. -fno-common -DPERL_DARWIN -pipe -Os -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -isysroot/ -O3 -DVERSION="0.82" -DXS_VERSION="0.82" "-I/opt/local/lib/perl5/5.34/darwin-thread-multi-2level/CORE" FCGI.c 2 warnings generated. FCGI.xs:187:19: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] if (was_bound = request->bound)


FCGI.xs:187:19: note: place parentheses around the assignment to silence this warning
if (was_bound = request->bound)
^
( )
FCGI.xs:187:19: note: use '==' to turn this assignment into an equality comparison
if (was_bound = request->bound)
^
==
1 warning generated.
rm -f blib/arch/auto/FCGI/FCGI.bundle
/usr/bin/clang -bundle -undefined dynamic_lookup -L/opt/local/lib -Wl,-headerpad_max_install_names -fstack-protector-strong FCGI.o fcgiapp.o os_unix.o -Wl,-syslibroot,/ -o blib/arch/auto/FCGI/FCGI.bundle
\

chmod 755 blib/arch/auto/FCGI/FCGI.bundle
Manifying 1 pod document
make: Leaving directory /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82' --->  Staging p5.34-fcgi into destroot ./usr missing (created) . missing (directory not created: File exists) ./Applications missing (created) ./Developer missing (created) ./Library missing (created) ./bin missing (created) ./etc missing (created) ./include missing (created) ./lib missing (created) ./lib/pkgconfig missing (created) ./libexec missing (created) ./sbin missing (created) ./share missing (created) ./share/doc missing (created) ./share/info missing (created) ./share/man missing (created) ./share/man/cat1 missing (created) ./share/man/cat2 missing (created) ./share/man/cat3 missing (created) ./share/man/cat4 missing (created) ./share/man/cat5 missing (created) ./share/man/cat6 missing (created) ./share/man/cat7 missing (created) ./share/man/cat8 missing (created) ./share/man/cat9 missing (created) ./share/man/catl missing (created) ./share/man/catn missing (created) ./share/man/man1 missing (created) ./share/man/man2 missing (created) ./share/man/man3 missing (created) ./share/man/man4 missing (created) ./share/man/man5 missing (created) ./share/man/man6 missing (created) ./share/man/man7 missing (created) ./share/man/man8 missing (created) ./share/man/man9 missing (created) ./share/man/manl missing (created) ./share/man/mann missing (created) ./share/nls missing (created) ./share/nls/C missing (created) ./share/nls/af_ZA.ISO8859-1 missing (created) ./share/nls/af_ZA.ISO8859-15 missing (created) ./share/nls/bg_BG.CP1251 missing (created) ./share/nls/cs_CZ.ISO8859-2 missing (created) ./share/nls/da_DK.ISO8859-1 missing (created) ./share/nls/da_DK.ISO8859-15 missing (created) ./share/nls/de_AT.ISO8859-1 missing (created) ./share/nls/de_AT.ISO8859-15 missing (created) ./share/nls/de_CH.ISO8859-1 missing (created) ./share/nls/de_CH.ISO8859-15 missing (created) ./share/nls/de_DE.ISO8859-1 missing (created) ./share/nls/de_DE.ISO8859-15 missing (created) ./share/nls/el_GR.ISO8859-7 missing (created) ./share/nls/en_AU.ISO8859-1 missing (created) ./share/nls/en_AU.ISO8859-15 missing (created) ./share/nls/en_AU.US-ASCII missing (created) ./share/nls/en_CA.ISO8859-1 missing (created) ./share/nls/en_CA.ISO8859-15 missing (created) ./share/nls/en_CA.US-ASCII missing (created) ./share/nls/en_GB.ISO8859-1 missing (created) ./share/nls/en_GB.ISO8859-15 missing (created) ./share/nls/en_GB.US-ASCII missing (created) ./share/nls/en_NZ.ISO8859-1 missing (created) ./share/nls/en_NZ.ISO8859-15 missing (created) ./share/nls/en_NZ.US-ASCII missing (created) ./share/nls/en_US.ISO8859-1 missing (created) ./share/nls/en_US.ISO8859-15 missing (created) ./share/nls/es_ES.ISO8859-1 missing (created) ./share/nls/es_ES.ISO8859-15 missing (created) ./share/nls/et_EE.ISO8859-15 missing (created) ./share/nls/fi_FI.ISO8859-1 missing (created) ./share/nls/fi_FI.ISO8859-15 missing (created) ./share/nls/fr_BE.ISO8859-1 missing (created) ./share/nls/fr_BE.ISO8859-15 missing (created) ./share/nls/fr_CA.ISO8859-1 missing (created) ./share/nls/fr_CA.ISO8859-15 missing (created) ./share/nls/fr_CH.ISO8859-1 missing (created) ./share/nls/fr_CH.ISO8859-15 missing (created) ./share/nls/fr_FR.ISO8859-1 missing (created) ./share/nls/fr_FR.ISO8859-15 missing (created) ./share/nls/hi_IN.ISCII-DEV missing (created) ./share/nls/hr_HR.ISO8859-2 missing (created) ./share/nls/hu_HU.ISO8859-2 missing (created) ./share/nls/is_IS.ISO8859-1 missing (created) ./share/nls/is_IS.ISO8859-15 missing (created) ./share/nls/it_CH.ISO8859-1 missing (created) ./share/nls/it_CH.ISO8859-15 missing (created) ./share/nls/it_IT.ISO8859-1 missing (created) ./share/nls/it_IT.ISO8859-15 missing (created) ./share/nls/ja_JP.SJIS missing (created) ./share/nls/ja_JP.eucJP missing (created) ./share/nls/ko_KR.eucKR missing (created) ./share/nls/la_LN.ISO8859-1 missing (created) ./share/nls/la_LN.ISO8859-15 missing (created) ./share/nls/la_LN.ISO8859-2 missing (created) ./share/nls/la_LN.ISO8859-4 missing (created) ./share/nls/la_LN.US-ASCII missing (created) ./share/nls/lt_LT.ISO8859-4 missing (created) ./share/nls/nl_BE.ISO8859-1 missing (created) ./share/nls/nl_BE.ISO8859-15 missing (created) ./share/nls/nl_NL.ISO8859-1 missing (created) ./share/nls/nl_NL.ISO8859-15 missing (created) ./share/nls/no_NO.ISO8859-1 missing (created) ./share/nls/no_NO.ISO8859-15 missing (created) ./share/nls/pl_PL.ISO8859-2 missing (created) ./share/nls/pt_BR.ISO8859-1 missing (created) ./share/nls/pt_PT.ISO8859-1 missing (created) ./share/nls/pt_PT.ISO8859-15 missing (created) ./share/nls/ro_RO.ISO8859-2 missing (created) ./share/nls/ru_RU.CP866 missing (created) ./share/nls/ru_RU.ISO8859-5 missing (created) ./share/nls/ru_RU.KOI8-R missing (created) ./share/nls/sk_SK.ISO8859-2 missing (created) ./share/nls/sl_SI.ISO8859-2 missing (created) ./share/nls/sv_SE.ISO8859-1 missing (created) ./share/nls/sv_SE.ISO8859-15 missing (created) ./share/nls/tr_TR.ISO8859-9 missing (created) ./share/nls/uk_UA.ISO8859-5 missing (created) ./share/nls/uk_UA.KOI8-U missing (created) ./share/nls/zh_CN.eucCN missing (created) ./share/nls/zh_TW.Big5 missing (created) ./share/skel missing (created) ./var missing (created) ./var/cache missing (created) ./var/db missing (created) ./var/log missing (created) ./var/run missing (created) ./var/spool missing (created) ./www missing (created) Executing:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82" && /usr/bin/make -w pure_install DESTDIR=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/destroot make: Entering directory /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82'
"/opt/local/bin/perl5.34" -MExtUtils::Command::MM -e 'cp_nonempty' -- [FCGI.bs](http://fcgi.bs/) blib/arch/auto/FCGI/[FCGI.bs](http://fcgi.bs/) 644
Manifying 1 pod document
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/destroot/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/FCGI.pm
Installing /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/destroot/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/FCGI/FCGI.bundle
Installing /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/destroot/opt/local/share/perl5.34/man/man3/FCGI.3pm
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82'
Fixing paths in darwin-thread-multi-2level/auto/FCGI/.packlist
---> Patching .packlist: s|/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/destroot||p
---> Testing p5.34-fcgi
Warning: p5.34-fcgi is configured to build no architecture-specific files, but installed Mach-O files built for the following archs:
x86_64:
/opt/local/lib/perl5/vendor_perl/5.34/darwin-thread-multi-2level/auto/FCGI/FCGI.bundle

Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82" && /usr/bin/make test
"/opt/local/bin/perl5.34" -MExtUtils::Command::MM -e 'cp_nonempty' -- [FCGI.bs](http://fcgi.bs/) blib/arch/auto/FCGI/[FCGI.bs](http://fcgi.bs/) 644
PERL_DL_NONLAZY=1 "/opt/local/bin/perl5.34" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/.t
t/01-load.t ................ ok
Listening socket's path name is too long. <<<<<<<<<<<<<<<<<<<<<<<< config.log records failure with conftest.c:50:22: error: expected expression –> if (sizeof ((ssize_t)))
t/02-unix_domain_socket.t ..
Dubious, test returned 232 (wstat 59392, 0xe800)
No subtests run

Test Summary Report

t/02-unix_domain_socket.t (Wstat: 59392 (exited 232) Tests: 0 Failed: 0)
Non-zero exit status: 232
Parse errors: No plan found in TAP output
Files=2, Tests=1, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.22 cusr 0.03 csys = 0.27 CPU)
Result: FAIL
Failed 1/2 test programs. 0/1 subtests failed.
make: *** [test_dynamic] Error 232
Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82" && /usr/bin/make test
Exit code: 2
Error: Failed to test p5.34-fcgi: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port p5.34-fcgi failed
5.431u 2.098s 0:07.00 107.4% 0+0k 0+31io 16pf+0w

Compilation exited abnormally with code 1 at Thu Oct 31 22:17:48

One problem is that I am no Perl programmer, but am able to patch files, for example make

    os_unix.c:67:    int len;
become

    os_unix.c:67:    unsigned int len;
One configure test seem to fails as well from, maybe, the same reason:

configure:3568: /usr/bin/cc -c -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -arch x86_64 -I/opt/local/include -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk conftest.c >&5
conftest.c:50:22: error: expected expression
50 | if (sizeof ((ssize_t)))
| ^
1 error generated.
configure:3568: $? = 1
configure: failed program was:
| /* confdefs.h /
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define HAVE_STDIO_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define STDC_HEADERS 1
| / end confdefs.h. */
| #include <stddef.h>
| #ifdef HAVE_STDIO_H
| # include <stdio.h>
| #endif
| #ifdef HAVE_STDLIB_H
| # include <stdlib.h>
| #endif
| #ifdef HAVE_STRING_H
| # include <string.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| int
| main (void)
| {
| if (sizeof ((ssize_t)))
| return 0;
| ;
| return 0;
| }
configure:3568: result: yes

The same happens on a more recent macOS Sonoma 14.6.1, Darwin 23.6.0.
ballapete commented 3 hours ago

Listening socket's path name is too long.

In MacPorts the test programmes run in the build directory which is quite long from the start:

/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_perl_p5-fcgi/p5.34-fcgi/work/FCGI-0.82

≈150 characters. In C header files I can see a limit:

 * [XSI] Definitions for UNIX IPC domain.
 */
struct  sockaddr_un {
    unsigned char   sun_len;        /* sockaddr len including null */
    sa_family_t     sun_family;     /* [XSI] AF_UNIX */
    char            sun_path[104];  /* [XSI] path name (gag) */
};

If the sockets are created in the same directory where the code or the test files reside then a crash will happen with MacPorts. So it's probably not a problem with C data types as I presumed…