leejo / cgi-fast

The new home for CGI::Fast, removing it from the original CGI.pm distribution
4 stars 5 forks source link

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

Open ballapete opened 2 hours ago

ballapete commented 2 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 2 hours ago

On High Sierra we have:

/usr/include/sys/_types/_ssize_t.h:31:typedef __darwin_ssize_t        ssize_t; 
/usr/include/i386/_types.h:119:typedef long         __darwin_ssize_t;   /* byte count or error */

and on Sonoma we have:

/usr/include/sys/_types/_ssize_t.h:31:typedef __darwin_ssize_t        ssize_t;
/usr/include/i386/_types.h:142:typedef long                    __darwin_ssize_t;       /* byte count or error */
leejo commented 1 hour ago

Hey, thanks for the report - I'm not sure I'm going to be able to dig here as I don't have access to older versions of OS X / macOS. I can probably build this on a VM but that's going to take a while.

If you have any insights on the fix I'm happy to accept a PR.

Cheers! Lee.

ballapete commented 1 hour ago

Sonoma is quite recent. Since a few weeks only macOS Sequoia 15.1 is out. Patches to these supported versions will also work on High Sierra. And on my even ancient Macs I'll see what can I do when having received (or found) a modern patch…

ballapete commented 1 hour ago

I possibly see the cause…

The MacPorts systems uses its own names for Perl modules, all lower case with hyphen. So what I have installed are

p5.34-fcgi @0.820.0_0 (active) Karen Etheridge's FCGI p5.34-fcgi-client @0.90.0_0 (active) MATSUNO★Tokuhiro's FCGI::Client (needed for FCGI tests)

And you, Lee, are the author of CGI::Fast. So I presume that I am not using the appropriate module, which is p5.34-cgi-fast, depending on p5.34-cgi. Would tests work better when I install your module too? Or is it recommended to use CGI::Fast instead?

leejo commented 1 hour ago

Ooooooh you're looking at https://metacpan.org/pod/FCGI not https://metacpan.org/dist/CGI-Fast ? They're two entirely different distributions. Sorry, the wall of debug made me miss that 😅

You'll need to report this to the FCGI maintainer(s) as I believe there is no dependency on this distribution in that one.