Opened 6 months ago

Last modified 3 months ago

#60347 new defect

p5.28-socket6 @0.290.0: error: use of undeclared identifier 'sv_undef'

Reported by: SerpentChris (Chris Calderon) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.6.2
Keywords: Cc:
Port: p5.28-socket6

Description

I noticed this while running port upgrade outdated. I'm running macOS Catalina 10.15.4. This is a dependency of p5.28-io-socket-ssl. Here is the error that is being reported by clang:

/usr/bin/clang -c   -fno-common -DPERL_DARWIN -mmacosx-version-min=10.15 -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -arch x86_64 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -O3   -DVERSION=\"0.29\" -DXS_VERSION=\"0.29\"  "-I/opt/local/lib/perl5/5.28/darwin-thread-multi-2level/CORE"   Socket6.c
Socket6.xs:110:9: warning: 'PL_sv_undef' macro redefined [-Wmacro-redefined]
#define PL_sv_undef             sv_undef
        ^
/opt/local/lib/perl5/5.28/darwin-thread-multi-2level/CORE/embedvar.h:319:9: note: previous definition is here
#define PL_sv_undef             (vTHX->Isv_undef)
        ^
Socket6.xs:545:9: warning: format specifies type 'int' but the argument has type 'STRLEN' (aka 'unsigned long') [-Wformat]
                      addrlen, alen);
                      ^~~~~~~
Socket6.xs:545:18: warning: format specifies type 'int' but the argument has type 'STRLEN' (aka 'unsigned long') [-Wformat]
                      addrlen, alen);
                               ^~~~
Socket6.xs:624:9: warning: format specifies type 'int' but the argument has type 'STRLEN' (aka 'unsigned long') [-Wformat]
                      sockaddrlen, sizeof(addr));
                      ^~~~~~~~~~~
Socket6.xs:624:22: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
                      sockaddrlen, sizeof(addr));
                                   ^~~~~~~~~~~~
Socket6.xs:660:9: warning: format specifies type 'int' but the argument has type 'STRLEN' (aka 'unsigned long') [-Wformat]
                      sockaddrlen, sizeof(addr));
                      ^~~~~~~~~~~
Socket6.xs:660:22: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
                      sockaddrlen, sizeof(addr));
                                   ^~~~~~~~~~~~
Socket6.xs:753:12: error: use of undeclared identifier 'sv_undef'
                                PUSHs(&PL_sv_undef);
                                       ^
Socket6.xs:110:22: note: expanded from macro 'PL_sv_undef'
#define PL_sv_undef             sv_undef
                                ^
Socket6.xs:911:35: warning: format specifies type 'int' but the argument has type 'STRLEN' (aka 'unsigned long') [-Wformat]
                    "Socket6::getipnodebyaddr", addrlen, alen);
                                                ^~~~~~~
8 warnings and 1 error generated.
make: *** [Socket6.o] Error 1

The full log is attached.

Attachments (1)

main.log (28.7 KB) - added by SerpentChris (Chris Calderon) 6 months ago.

Download all attachments as: .zip

Change History (4)

Changed 6 months ago by SerpentChris (Chris Calderon)

Attachment: main.log added

comment:1 Changed 6 months ago by ryandesign (Ryan Schmidt)

Keywords: perl removed
Summary: p5.28-socket6 @0.290.0 : Build failure in Catalinap5.28-socket6 @0.290.0: error: use of undeclared identifier 'sv_undef'

We've seen this use of undeclared identifier 'sv_undef' error before with other perl software; see for example #43112. However the cause may be different here.

We have binaries of this port built for all versions of macOS, including Catalina. So at least we know there was not a general problem building this port back when those binaries were built. Do you know why your computer is trying to build this port from source rather than downloading our binary?

comment:2 in reply to:  1 Changed 6 months ago by SerpentChris (Chris Calderon)

Replying to ryandesign:

We've seen this use of undeclared identifier 'sv_undef' error before with other perl software; see for example #43112. However the cause may be different here.

We have binaries of this port built for all versions of macOS, including Catalina. So at least we know there was not a general problem building this port back when those binaries were built. Do you know why your computer is trying to build this port from source rather than downloading our binary?

It's building from source because I told it to in macports.conf. I have 8 cores on my 16 inch MBP, so I wanna use them! :)

I will try uninstalling everything and starting the build with a clean slate.

comment:3 Changed 3 months ago by saagarjha (Saagar Jha)

I ran into this issue recently because some of the Xcode updates doing some funny things with how their organized their SDKs, which was causing the configure step to think there was no PL_sv_undef (check config.log) because it was passing the wrong arguments there. Those came from stale flags when building perl5.28 with an old Xcode that I was no longer using, so in my case I uninstalled and reinstalled that (to get what I'm guessing is some sort of makefile template to use the right paths) and then the p5.28-socket6 installed cleanly. Just my 2¢; YMMV.

Note: See TracTickets for help on using tickets.