Clean up perl 5.17.4

This commit is contained in:
Samuel Tyler 2025-08-28 13:57:26 +10:00
parent 15537188e6
commit 629f4a764c
13 changed files with 116 additions and 992 deletions

View file

@ -1,3 +1,7 @@
# SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
#
# SPDX-License-Identifier: MIT
BUILD_ZLIB = False
INCLUDE = /usr/include
LIB = /usr/lib/i386-unknown-linux-musl

View file

@ -7,8 +7,13 @@ src_prepare() {
mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in
# Socket versions greater than 2.000 have many difficult problems building
# in 5.17.x versions; replace them with 2.000
rm -r cpan/Socket
mv ../Socket-2.000 cpan/Socket
# Remove miscellaneous pregenerated files
rm -f Porting/Glossary \
rm Porting/Glossary \
cpan/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \
x2p/a2p.c cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \
utils/Makefile
@ -23,7 +28,7 @@ src_prepare() {
# Regenerate other prebuilt header files
# Taken from headers of regen scripts
rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c \
rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c \
overload.h overload.c opcode.h opnames.h pp_proto.h \
keywords.h embed.h embedvar.h perlapi.c perlapi.h \
proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \

View file

@ -1,9 +1,18 @@
SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
SPDX-FileCopyrightText: 2012 Karl Williamson <public@khwilliamson.com>
SPDX-License-Identifier: Artistic-1.0
From 914c32b1b85e310c832192ef133d2eb8b7108bfa Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Fri, 22 Aug 2025 23:38:59 +1000
Subject: [PATCH] Revert "regen/regcharclass.pl: Generate macros for \X
processing"
The _X_* family of symbols were added in the previous commit, so we cannot
use them this build. The next two patches in the series removes the use of the
macros generated by regcharclass.pl.
This reverts commit 612ead590b8b5f05e4060738540192ece946c340.
---
regen/regcharclass.pl | 28 ----------------------------

View file

@ -1,12 +1,22 @@
SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
SPDX-FileCopyrightText: 2012 Karl Williamson <public@khwilliamson.com>
SPDX-License-Identifier: Artistic-1.0
From 1bfcdd572f51f5db59c6c3b91f28c5b3141215bb Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Fri, 22 Aug 2025 17:24:24 +1000
Subject: [PATCH] Revert "regexec.c: Use new macros instead of swashes"
The original commit introduced the use of the \X macros that were generated
in the commit before it by regcharclass.h. We can't use those macros in this
build, so remove the use of them.
Only non-generated parts are reverted.
This reverts commit 45fdf108c5f4d5c719b8d2f7389c81e54795bad7.
---
embed.fnc | 9 ++
embedvar.h | 7 ++
intrpvar.h | 7 ++
regen/unicode_constants.pl | 3 +
regexec.c | 78 ++++++++++------
@ -35,27 +45,6 @@ index 0db9300b3b..e45e6889c9 100644
: Used in perly.y
p |OP* |jmaybe |NN OP *o
: Used in pp.c
diff --git perl-5.17.4/embedvar.h perl-5.17.4/embedvar.h
index b9fabab437..f306f2f2f7 100644
--- perl-5.17.4/embedvar.h
+++ perl-5.17.4/embedvar.h
@@ -353,9 +353,16 @@
#define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
#define PL_unlockhook (vTHX->Iunlockhook)
#define PL_unsafe (vTHX->Iunsafe)
+#define PL_utf8_X_L (vTHX->Iutf8_X_L)
#define PL_utf8_X_LVT (vTHX->Iutf8_X_LVT)
+#define PL_utf8_X_LV_LVT_V (vTHX->Iutf8_X_LV_LVT_V)
+#define PL_utf8_X_RI (vTHX->Iutf8_X_RI)
+#define PL_utf8_X_T (vTHX->Iutf8_X_T)
+#define PL_utf8_X_V (vTHX->Iutf8_X_V)
#define PL_utf8_X_extend (vTHX->Iutf8_X_extend)
+#define PL_utf8_X_prepend (vTHX->Iutf8_X_prepend)
#define PL_utf8_X_regular_begin (vTHX->Iutf8_X_regular_begin)
+#define PL_utf8_X_special_begin (vTHX->Iutf8_X_special_begin)
#define PL_utf8_alnum (vTHX->Iutf8_alnum)
#define PL_utf8_alpha (vTHX->Iutf8_alpha)
#define PL_utf8_blank (vTHX->Iutf8_blank)
diff --git perl-5.17.4/intrpvar.h perl-5.17.4/intrpvar.h
index 40a6aa1e9d..e306ebbb31 100644
--- perl-5.17.4/intrpvar.h

View file

@ -1,12 +1,22 @@
SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
SPDX-FileCopyrightText: 2012 Karl Williamson <public@khwilliamson.com>
SPDX-License-Identifier: Artistic-1.0
From 070b9010ff7a44dbdce15dfea579089bfbdff821 Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Fri, 22 Aug 2025 23:48:33 +1000
Subject: [PATCH] Revert "Use macro not swash for utf8 quotemeta"
The original commit introduced the use of the \X macros that were generated
in the commit before it by regcharclass.h. We can't use those macros in this
build, so remove the use of them.
Only non-generated parts are reverted.
This reverts commit 685289b5657b776e8a3871de68a57785e6ccd797.
---
embed.fnc | 1 +
embed.h | 3 +++
intrpvar.h | 1 +
pp.c | 3 +--
regen/regcharclass.pl | 4 ----
@ -26,20 +36,6 @@ index 0db9300b3b..466025950e 100644
#endif
Ap |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp
Amp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp
diff --git perl-5.17.4/embed.h perl-5.17.4/embed.h
index e0afb124b0..3ffe84f220 100644
--- perl-5.17.4/embed.h
+++ perl-5.17.4/embed.h
@@ -789,6 +789,9 @@
#define warn_nocontext Perl_warn_nocontext
#define warner_nocontext Perl_warner_nocontext
#endif
+#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
+#define _is_utf8_quotemeta(a) Perl__is_utf8_quotemeta(aTHX_ a)
+#endif
#if defined(PERL_MAD)
#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c)
#endif
diff --git perl-5.17.4/intrpvar.h perl-5.17.4/intrpvar.h
index 40a6aa1e9d..641cac6268 100644
--- perl-5.17.4/intrpvar.h

View file

@ -0,0 +1,53 @@
SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
SPDX-FileCopyrightText: 2012 Karl Williamson <public@khwilliamson.com>
SPDX-License-Identifier: Artistic-1.0
This symbol goes unused in this commit, but the next version of perl
that we build changed the name of the symbol, so rename it here by
backporting this patch.
Only the part of the patch changing the name is used. The other two
modifications in the original patch change the use of the symbol
which obviously does not apply to this build.
From b79624bd711790796036524d5fc46521233cf85f Mon Sep 17 00:00:00 2001
From: Karl Williamson <public@khwilliamson.com>
Date: Sun, 16 Dec 2012 11:50:34 -0700
Subject: [PATCH] Rename property involved in \X matching, for clarity
I was re-reading some code and got confused. This table matches just
the first character of a sequence that may or may not contain others.
---
lib/unicore/mktables | 8 ++++----
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git perl-5.17.4/lib/unicore/mktables perl-5.17.4/lib/unicore/mktables
index e779b08e8e..b9dc1df.17 100644
--- perl-5.17.4/lib/unicore/mktables
+++ perl-5.17.4/lib/unicore/mktables
@@ -13551,7 +13551,7 @@ sub compile_perl() {
push @tables_that_may_be_empty, $ri->full_name;
}
- my $specials_begin = $perl->add_match_table('_X_Special_Begin',
+ my $specials_begin = $perl->add_match_table('_X_Special_Begin_Start',
Perl_Extension => 1,
Fate => $INTERNAL_ONLY,
Initialize => $lv_lvt_v
@@ -13560,9 +13560,9 @@ sub compile_perl() {
+ $ri
);
$specials_begin->add_comment(join_lines( <<END
-For use in \\X; matches first character of potential multi-character
-sequences that can begin an extended grapheme cluster. They need special
-handling because of their complicated nature.
+For use in \\X; matches first (perhaps only) character of potential
+multi-character sequences that can begin an extended grapheme cluster. They
+need special handling because of their complicated nature.
END
));
my $regular_begin = $perl->add_match_table('_X_Regular_Begin',
--
2.49.1

View file

@ -1,270 +0,0 @@
From f1fabc56fb9cd2417f5423fdc73ab73574ea8c8e Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Fri, 22 Aug 2025 23:58:47 +1000
Subject: [PATCH 1/4] Revert "Upgrade Socket from 2.004 to 2.006"
This reverts commit aff163d96ea1505927d05ead3078b1d7bb3bfa93.
---
Porting/Maintainers.pl | 2 +-
cpan/Socket/Makefile.PL | 8 +-----
cpan/Socket/Socket.pm | 6 +---
cpan/Socket/Socket.xs | 59 ++++++++++++----------------------------
cpan/Socket/t/sockaddr.t | 10 ++-----
pod/perldelta.pod | 5 +---
6 files changed, 25 insertions(+), 65 deletions(-)
diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl
index e107f710e0..54ab2c1352 100755
--- perl-5.17.4/Porting/Maintainers.pl
+++ perl-5.17.4/Porting/Maintainers.pl
@@ -1636,7 +1636,7 @@ use File::Glob qw(:case);
'Socket' => {
'MAINTAINER' => 'pevans',
- 'DISTRIBUTION' => 'PEVANS/Socket-2.006.tar.gz',
+ 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz',
'FILES' => q[cpan/Socket],
'UPSTREAM' => 'cpan',
},
diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL
index 639a57c4d6..9e76dcea96 100644
--- perl-5.17.4/cpan/Socket/Makefile.PL
+++ perl-5.17.4/cpan/Socket/Makefile.PL
@@ -108,19 +108,13 @@ check_for(
main => "struct sockaddr_in6 sin6; sin6.sin6_scope_id = 0;"
);
+# TODO: Needs adding to perl5 core before importing dual-life again
check_for(
confkey => "d_ip_mreq",
define => "HAS_IP_MREQ",
main => "struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
);
-# TODO: Needs adding to perl5 core before importing dual-life again
-check_for(
- confkey => "d_ip_mreq_source",
- define => "HAS_IP_MREQ_SOURCE",
- main => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
-);
-
check_for(
confkey => "d_ipv6_mreq",
define => "HAS_IPV6_MREQ",
diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm
index c0dc4aa7dd..83729b290d 100644
--- perl-5.17.4/cpan/Socket/Socket.pm
+++ perl-5.17.4/cpan/Socket/Socket.pm
@@ -3,7 +3,7 @@ package Socket;
use strict;
{ use 5.006001; }
-our $VERSION = '2.006';
+our $VERSION = '2.004';
=head1 NAME
@@ -184,8 +184,6 @@ opaque string representing the IP address (you can use inet_ntoa() to convert
the address to the four-dotted numeric format). Will croak if the structure
does not represent an C<AF_INET> address.
-In scalar context will return just the IP address.
-
=head2 $sockaddr = sockaddr_in $port, $ip_address
=head2 ($port, $ip_address) = sockaddr_in $sockaddr
@@ -213,8 +211,6 @@ flow label. (You can use inet_ntop() to convert the address to the usual
string format). Will croak if the structure does not represent an C<AF_INET6>
address.
-In scalar context will return just the IP address.
-
=head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
=head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr
diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs
index e99eac12ef..0bdebf5ca4 100644
--- perl-5.17.4/cpan/Socket/Socket.xs
+++ perl-5.17.4/cpan/Socket/Socket.xs
@@ -179,9 +179,6 @@ static void *my_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl,
#ifndef mPUSHp
# define mPUSHp(p,l) sv_setpvn_mg(PUSHs(sv_newmortal()), (p), (l))
#endif /* !mPUSHp */
-#ifndef mPUSHs
-# define mPUSHs(s) PUSHs(sv_2mortal(s))
-#endif /* !mPUSHs */
#ifndef CvCONST_on
# undef newCONSTSUB
@@ -789,7 +786,8 @@ unpack_sockaddr_in(sin_sv)
{
STRLEN sockaddrlen;
struct sockaddr_in addr;
- SV *ip_address_sv;
+ unsigned short port;
+ struct in_addr ip_address;
char * sin = SvPVbyte(sin_sv,sockaddrlen);
if (sockaddrlen != sizeof(addr)) {
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
@@ -800,16 +798,12 @@ unpack_sockaddr_in(sin_sv)
croak("Bad address family for %s, got %d, should be %d",
"Socket::unpack_sockaddr_in", addr.sin_family, AF_INET);
}
- ip_address_sv = newSVpvn((char *)&addr.sin_addr, sizeof(addr.sin_addr));
+ port = ntohs(addr.sin_port);
+ ip_address = addr.sin_addr;
- if(GIMME_V == G_ARRAY) {
- EXTEND(SP, 2);
- mPUSHi(ntohs(addr.sin_port));
- mPUSHs(ip_address_sv);
- }
- else {
- mPUSHs(ip_address_sv);
- }
+ EXTEND(SP, 2);
+ PUSHs(sv_2mortal(newSViv((IV) port)));
+ PUSHs(sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address))));
}
void
@@ -860,7 +854,6 @@ unpack_sockaddr_in6(sin6_sv)
STRLEN addrlen;
struct sockaddr_in6 sin6;
char * addrbytes = SvPVbyte(sin6_sv, addrlen);
- SV *ip_address_sv;
if (addrlen != sizeof(sin6))
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
"Socket::unpack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6));
@@ -868,22 +861,15 @@ unpack_sockaddr_in6(sin6_sv)
if (sin6.sin6_family != AF_INET6)
croak("Bad address family for %s, got %d, should be %d",
"Socket::unpack_sockaddr_in6", sin6.sin6_family, AF_INET6);
- ip_address_sv = newSVpvn((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
-
- if(GIMME_V == G_ARRAY) {
- EXTEND(SP, 4);
- mPUSHi(ntohs(sin6.sin6_port));
- mPUSHs(ip_address_sv);
+ EXTEND(SP, 4);
+ mPUSHi(ntohs(sin6.sin6_port));
+ mPUSHp((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
# ifdef HAS_SIN6_SCOPE_ID
- mPUSHi(sin6.sin6_scope_id);
+ mPUSHi(sin6.sin6_scope_id);
# else
- mPUSHi(0);
+ mPUSHi(0);
# endif
- mPUSHi(ntohl(sin6.sin6_flowinfo));
- }
- else {
- mPUSHs(ip_address_sv);
- }
+ mPUSHi(ntohl(sin6.sin6_flowinfo));
#else
ST(0) = (SV*)not_here("pack_sockaddr_in6");
#endif
@@ -912,20 +898,11 @@ inet_ntop(af, ip_address_sv)
struct_size = sizeof(addr);
- switch(af) {
- case AF_INET:
- if(addrlen != 4)
- croak("Bad address length for Socket::inet_ntop on AF_INET;"
- " got %d, should be 4");
- break;
+ if (af != AF_INET
#ifdef AF_INET6
- case AF_INET6:
- if(addrlen != 16)
- croak("Bad address length for Socket::inet_ntop on AF_INET6;"
- " got %d, should be 16");
- break;
+ && af != AF_INET6
#endif
- default:
+ ) {
croak("Bad address family for %s, got %d, should be"
#ifdef AF_INET6
" either AF_INET or AF_INET6",
@@ -1049,7 +1026,7 @@ pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef)
SV * interface
CODE:
{
-#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
struct ip_mreq_source mreq;
char * multiaddrbytes;
char * sourcebytes;
@@ -1092,7 +1069,7 @@ unpack_ip_mreq_source(mreq_sv)
SV * mreq_sv
PPCODE:
{
-#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
struct ip_mreq_source mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
diff --git perl-5.17.4/cpan/Socket/t/sockaddr.t perl-5.17.4/cpan/Socket/t/sockaddr.t
index 1ae24a0bba..63cce24309 100644
--- perl-5.17.4/cpan/Socket/t/sockaddr.t
+++ perl-5.17.4/cpan/Socket/t/sockaddr.t
@@ -10,7 +10,7 @@ use Socket qw(
sockaddr_family
sockaddr_un
);
-use Test::More tests => 33;
+use Test::More tests => 31;
# inet_aton, inet_ntoa
{
@@ -73,8 +73,6 @@ SKIP: {
is( (unpack_sockaddr_in($sin))[0] , 100, 'pack_sockaddr_in->unpack_sockaddr_in port');
is(inet_ntoa((unpack_sockaddr_in($sin))[1]), "10.20.30.40", 'pack_sockaddr_in->unpack_sockaddr_in addr');
- is(inet_ntoa(scalar unpack_sockaddr_in($sin)), "10.20.30.40", 'unpack_sockaddr_in in scalar context yields addr');
-
is_deeply( [ sockaddr_in($sin) ], [ unpack_sockaddr_in($sin) ],
'sockaddr_in in list context unpacks' );
@@ -85,8 +83,8 @@ SKIP: {
# pack_sockaddr_in6, unpack_sockaddr_in6
# sockaddr_in6
SKIP: {
- skip "No AF_INET6", 9 unless my $AF_INET6 = eval { Socket::AF_INET6() };
- skip "Cannot pack_sockaddr_in6()", 9 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
+ skip "No AF_INET6", 8 unless my $AF_INET6 = eval { Socket::AF_INET6() };
+ skip "Cannot pack_sockaddr_in6()", 8 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
ok(defined $sin6, 'pack_sockaddr_in6 defined');
@@ -97,8 +95,6 @@ SKIP: {
is((Socket::unpack_sockaddr_in6($sin6))[2], 0, 'pack_sockaddr_in6->unpack_sockaddr_in6 scope_id');
is((Socket::unpack_sockaddr_in6($sin6))[3], 89, 'pack_sockaddr_in6->unpack_sockaddr_in6 flowinfo');
- is(scalar Socket::unpack_sockaddr_in6($sin6), "0123456789abcdef", 'unpack_sockaddr_in6 in scalar context yields addr');
-
is_deeply( [ Socket::sockaddr_in6($sin6) ], [ Socket::unpack_sockaddr_in6($sin6) ],
'sockaddr_in6 in list context unpacks' );
diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod
index 52eaf8f1f5..78f169f953 100644
--- perl-5.17.4/pod/perldelta.pod
+++ perl-5.17.4/pod/perldelta.pod
@@ -308,10 +308,7 @@ opcodes.
=item *
-L<Socket> has been upgraded from version 2.004 to 2.006.
-C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
-address in scalar context, and C<inet_ntop()> now guards against incorrect
-length scalars being passed in.
+L<XXX> has been upgraded from version A.xx to B.yy.
=item *
--
2.49.1

View file

@ -1,69 +0,0 @@
From de7b91dbf552295709c29dec46ab735b141b3881 Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Fri, 22 Aug 2025 23:59:12 +1000
Subject: [PATCH 2/4] Revert "Upgrade Socket to 2.004"
This reverts commit b43fc6a1c1224963b2a2430029a638a4294147d0.
---
Porting/Maintainers.pl | 2 +-
cpan/Socket/Socket.pm | 2 +-
cpan/Socket/t/ip_mreq.t | 2 +-
pod/perldelta.pod | 3 +++
4 files changed, 6 insertions(+), 3 deletions(-)
diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl
index 54ab2c1352..3b3004f6c3 100755
--- perl-5.17.4/Porting/Maintainers.pl
+++ perl-5.17.4/Porting/Maintainers.pl
@@ -1636,7 +1636,7 @@ use File::Glob qw(:case);
'Socket' => {
'MAINTAINER' => 'pevans',
- 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz',
+ 'DISTRIBUTION' => 'PEVANS/Socket-2.003.tar.gz',
'FILES' => q[cpan/Socket],
'UPSTREAM' => 'cpan',
},
diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm
index 83729b290d..d9bbfae258 100644
--- perl-5.17.4/cpan/Socket/Socket.pm
+++ perl-5.17.4/cpan/Socket/Socket.pm
@@ -3,7 +3,7 @@ package Socket;
use strict;
{ use 5.006001; }
-our $VERSION = '2.004';
+our $VERSION = '2.003';
=head1 NAME
diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t
index 2ed76062c1..2a99509904 100644
--- perl-5.17.4/cpan/Socket/t/ip_mreq.t
+++ perl-5.17.4/cpan/Socket/t/ip_mreq.t
@@ -31,7 +31,7 @@ is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq int
SKIP: {
my $mreq;
- skip "No pack_ip_mreq_source", 3 unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY };
+ skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY };
@unpacked = unpack_ip_mreq_source $mreq;
diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod
index 78f169f953..a64c1a9143 100644
--- perl-5.17.4/pod/perldelta.pod
+++ perl-5.17.4/pod/perldelta.pod
@@ -316,6 +316,9 @@ L<Storable> has been upgraded from version 2.38 to 2.39. This contains various
bugfixes, including compatibility fixes for older versions of Perl and vstring
handling.
+L<Socket> has been upgraded from version 2.002 to 2.003. Constants and
+functions required for IP multicast source group membership have been added.
+
=item *
L<Sys::Syslog> has been upgraded from version 0.31 to 0.32. This includes
--
2.49.1

View file

@ -1,270 +0,0 @@
From a70ed0b00a2650fa5a9cc238460e9602a3df9df1 Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Fri, 22 Aug 2025 23:59:39 +1000
Subject: [PATCH 3/4] Revert "Upgrade Socket from 2.002 to 2.003"
This reverts commit d4ada64ad845b1ffe124cf230a345b847e43d755.
---
Porting/Maintainers.pl | 2 +-
cpan/Socket/Makefile.PL | 22 ++++++--------
cpan/Socket/Socket.pm | 36 +++++++---------------
cpan/Socket/Socket.xs | 67 -----------------------------------------
cpan/Socket/t/ip_mreq.t | 14 +--------
pod/perldelta.pod | 4 +++
6 files changed, 27 insertions(+), 118 deletions(-)
diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl
index 3b3004f6c3..e38daab394 100755
--- perl-5.17.4/Porting/Maintainers.pl
+++ perl-5.17.4/Porting/Maintainers.pl
@@ -1636,7 +1636,7 @@ use File::Glob qw(:case);
'Socket' => {
'MAINTAINER' => 'pevans',
- 'DISTRIBUTION' => 'PEVANS/Socket-2.003.tar.gz',
+ 'DISTRIBUTION' => 'PEVANS/Socket-2.002.tar.gz',
'FILES' => q[cpan/Socket],
'UPSTREAM' => 'cpan',
},
diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL
index 9e76dcea96..3be198e024 100644
--- perl-5.17.4/cpan/Socket/Makefile.PL
+++ perl-5.17.4/cpan/Socket/Makefile.PL
@@ -161,14 +161,13 @@ my @names = (
IOV_MAX
- IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP
- IP_DROP_SOURCE_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF IP_MULTICAST_LOOP
- IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS IP_RECVRETOPTS IP_RETOPTS IP_TOS
- IP_TTL
+ IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF
+ IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS
+ IP_RECVRETOPTS IP_RETOPTS IP_TOS IP_TTL
- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
- IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
- IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY
+ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER
+ IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP
+ IPV6_UNICAST_HOPS IPV6_V6ONLY
MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_DONTWAIT MSG_EOF
MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN MSG_MAXIOVLEN MSG_MCAST
@@ -201,11 +200,10 @@ my @names = (
SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO
SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
- TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
- TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
- TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT
- TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT
- TCP_WINDOW_CLAMP
+ TCP_KEEPALIVE TCP_MAXRT TCP_MAXSEG TCP_NODELAY TCP_STDURG TCP_CORK
+ TCP_KEEPIDLE TCP_KEEPINTVL TCP_KEEPCNT TCP_SYNCNT TCP_LINGER2
+ TCP_DEFER_ACCEPT TCP_WINDOW_CLAMP TCP_INFO TCP_QUICKACK TCP_CONGESTION
+ TCP_MD5SIG
UIO_MAXIOV
),
diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm
index d9bbfae258..41f214d8fe 100644
--- perl-5.17.4/cpan/Socket/Socket.pm
+++ perl-5.17.4/cpan/Socket/Socket.pm
@@ -3,7 +3,7 @@ package Socket;
use strict;
{ use 5.006001; }
-our $VERSION = '2.003';
+our $VERSION = '2.002';
=head1 NAME
@@ -260,18 +260,6 @@ sockopts.
Takes an C<ip_mreq> structure. Returns a list of two elements; the IPv4
multicast address and interface address.
-=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface
-
-Takes an IPv4 multicast address, source address, and optionally an interface
-address (or C<INADDR_ANY>). Returns the C<ip_mreq_source> structure with those
-arguments packed in. Suitable for use with the C<IP_ADD_SOURCE_MEMBERSHIP>
-and C<IP_DROP_SOURCE_MEMBERSHIP> sockopts.
-
-=head2 ($multiaddr, $source, $interface) = unpack_ip_mreq_source $ip_mreq
-
-Takes an C<ip_mreq_source> structure. Returns a list of three elements; the
-IPv4 multicast address, source address and interface address.
-
=head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex
Takes an IPv6 multicast address and an interface number. Returns the
@@ -748,26 +736,24 @@ our @EXPORT_OK = qw(
SOCK_NONBLOCK SOCK_CLOEXEC
- IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP
- IP_DROP_SOURCE_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP
- IP_MULTICAST_TTL
+ IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_IF
+ IP_MULTICAST_LOOP IP_MULTICAST_TTL
IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_TCP
IPPROTO_UDP
- TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
- TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
- TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT
- TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT
- TCP_WINDOW_CLAMP
+ TCP_CONGESTION TCP_CORK TCP_DEFER_ACCEPT TCP_INFO TCP_KEEPALIVE
+ TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 TCP_MAXRT TCP_MAXSEG
+ TCP_MD5SIG TCP_NODELAY TCP_QUICKACK TCP_STDURG TCP_SYNCNT
+ TCP_WINDOW_CLAMP
IN6ADDR_ANY IN6ADDR_LOOPBACK
- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
- IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
- IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY
+ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER
+ IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP
+ IPV6_UNICAST_HOPS IPV6_V6ONLY
- pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source
+ pack_ip_mreq unpack_ip_mreq
pack_ipv6_mreq unpack_ipv6_mreq
diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs
index 0bdebf5ca4..f22c1f3001 100644
--- perl-5.17.4/cpan/Socket/Socket.xs
+++ perl-5.17.4/cpan/Socket/Socket.xs
@@ -1019,73 +1019,6 @@ unpack_ip_mreq(mreq_sv)
#endif
}
-void
-pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef)
- SV * multiaddr
- SV * source
- SV * interface
- CODE:
- {
-#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
- struct ip_mreq_source mreq;
- char * multiaddrbytes;
- char * sourcebytes;
- char * interfacebytes;
- STRLEN len;
- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq_source");
- multiaddrbytes = SvPVbyte(multiaddr, len);
- if (len != sizeof(mreq.imr_multiaddr))
- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
- if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq_source");
- if (len != sizeof(mreq.imr_sourceaddr))
- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr));
- sourcebytes = SvPVbyte(source, len);
- Zero(&mreq, sizeof(mreq), char);
- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
- Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), char);
- if(SvOK(interface)) {
- if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq");
- interfacebytes = SvPVbyte(interface, len);
- if (len != sizeof(mreq.imr_interface))
- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
- Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
- }
- else
- mreq.imr_interface.s_addr = INADDR_ANY;
- ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
-#else
- not_here("pack_ip_mreq_source");
-#endif
- }
-
-void
-unpack_ip_mreq_source(mreq_sv)
- SV * mreq_sv
- PPCODE:
- {
-#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
- struct ip_mreq_source mreq;
- STRLEN mreqlen;
- char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
- if (mreqlen != sizeof(mreq))
- croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
- "Socket::unpack_ip_mreq_source", (UV)mreqlen, (UV)sizeof(mreq));
- Copy(mreqbytes, &mreq, sizeof(mreq), char);
- EXTEND(SP, 3);
- mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr));
- mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr));
- mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
-#else
- not_here("unpack_ip_mreq_source");
-#endif
- }
-
void
pack_ipv6_mreq(multiaddr, interface)
SV * multiaddr
diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t
index 2a99509904..f08920c437 100644
--- perl-5.17.4/cpan/Socket/t/ip_mreq.t
+++ perl-5.17.4/cpan/Socket/t/ip_mreq.t
@@ -5,7 +5,6 @@ use Test::More;
use Socket qw(
INADDR_ANY
pack_ip_mreq unpack_ip_mreq
- pack_ip_mreq_source unpack_ip_mreq_source
);
# Check that pack/unpack_ip_mreq either croak with "Not implemented", or
@@ -20,7 +19,7 @@ if( !defined $packed ) {
die $@;
}
-plan tests => 6;
+plan tests => 3;
my @unpacked = unpack_ip_mreq $packed;
@@ -28,14 +27,3 @@ is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' );
is( $unpacked[1], INADDR_ANY, 'unpack_ip_mreq interface' );
is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' );
-
-SKIP: {
- my $mreq;
- skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY };
-
- @unpacked = unpack_ip_mreq_source $mreq;
-
- is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' );
- is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' );
- is( $unpacked[2], INADDR_ANY, 'unpack_ip_mreq_source interface' );
-}
diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod
index a64c1a9143..65a9378242 100644
--- perl-5.17.4/pod/perldelta.pod
+++ perl-5.17.4/pod/perldelta.pod
@@ -324,6 +324,10 @@ functions required for IP multicast source group membership have been added.
L<Sys::Syslog> has been upgraded from version 0.31 to 0.32. This includes
several documentation and bug fixes.
+L<Storable> has been upgraded from version 2.37 to 2.38. It can now freeze
+and thaw vstrings correctly. This causes a slight incompatible change in
+the storage format, so the format version has increased to 2.9.
+
=item *
L<threads::shared> has been upgraded from version 1.40 to 1.41. This adds the
--
2.49.1

View file

@ -1,344 +0,0 @@
From abdda3c270bcbe62f91b979b0b15b34fa3d164fe Mon Sep 17 00:00:00 2001
From: Samuel Tyler <fosslinux@aussies.space>
Date: Sat, 23 Aug 2025 00:00:00 +1000
Subject: [PATCH 4/4] Revert "Upgrade Socket to 2.002"
This reverts commit 3be135d8cfe01725ff3bdfcc1b4a30206a1e0ed2.
---
MANIFEST | 1 -
Porting/Maintainers.pl | 2 +-
cpan/Socket/Makefile.PL | 26 +++----------
cpan/Socket/Socket.pm | 38 +++----------------
cpan/Socket/Socket.xs | 81 +++++------------------------------------
cpan/Socket/t/ip_mreq.t | 29 ---------------
pod/perldelta.pod | 6 +++
7 files changed, 29 insertions(+), 154 deletions(-)
delete mode 100644 cpan/Socket/t/ip_mreq.t
diff --git perl-5.17.4/MANIFEST perl-5.17.4/MANIFEST
index 6883a5f76f..3397344adf 100644
--- perl-5.17.4/MANIFEST
+++ perl-5.17.4/MANIFEST
@@ -2229,7 +2229,6 @@ cpan/Socket/Socket.pm Socket extension Perl module
cpan/Socket/Socket.xs Socket extension external subroutines
cpan/Socket/t/getaddrinfo.t See if Socket::getaddrinfo works
cpan/Socket/t/getnameinfo.t See if Socket::getnameinfo works
-cpan/Socket/t/ip_mreq.t See if (un)pack_ip_mreq work
cpan/Socket/t/ipv6_mreq.t See if (un)pack_ipv6_mreq work
cpan/Socket/t/sockaddr.t
cpan/Socket/t/socketpair.t See if socketpair works
diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl
index e38daab394..131493c9c9 100755
--- perl-5.17.4/Porting/Maintainers.pl
+++ perl-5.17.4/Porting/Maintainers.pl
@@ -1636,7 +1636,7 @@ use File::Glob qw(:case);
'Socket' => {
'MAINTAINER' => 'pevans',
- 'DISTRIBUTION' => 'PEVANS/Socket-2.002.tar.gz',
+ 'DISTRIBUTION' => 'PEVANS/Socket-2.001.tar.gz',
'FILES' => q[cpan/Socket],
'UPSTREAM' => 'cpan',
},
diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL
index 3be198e024..9a8f65d274 100644
--- perl-5.17.4/cpan/Socket/Makefile.PL
+++ perl-5.17.4/cpan/Socket/Makefile.PL
@@ -30,15 +30,10 @@ sub check_for
open( my $file_source_fh, ">", $file_source ) or die "Cannot write $file_source - $!";
print $file_source_fh <<"EOF";
#include <sys/types.h>
-#ifdef WIN32
-# include <ws2tcpip.h>
-# include <winsock.h>
-#else
-# include <sys/socket.h>
-# include <netdb.h>
-# include <netinet/in.h>
-# include <arpa/inet.h>
-#endif
+#include <sys/socket.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
int main(int argc, char *argv[])
{
(void)argc;
@@ -108,13 +103,6 @@ check_for(
main => "struct sockaddr_in6 sin6; sin6.sin6_scope_id = 0;"
);
-# TODO: Needs adding to perl5 core before importing dual-life again
-check_for(
- confkey => "d_ip_mreq",
- define => "HAS_IP_MREQ",
- main => "struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
-);
-
check_for(
confkey => "d_ipv6_mreq",
define => "HAS_IPV6_MREQ",
@@ -161,9 +149,8 @@ my @names = (
IOV_MAX
- IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF
- IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS
- IP_RECVRETOPTS IP_RETOPTS IP_TOS IP_TTL
+ IP_OPTIONS IP_HDRINCL IP_TOS IP_TTL IP_RECVOPTS IP_RECVRETOPTS
+ IP_RETOPTS
IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER
IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP
@@ -185,7 +172,6 @@ my @names = (
SCM_CONNECT SCM_CREDENTIALS SCM_CREDS SCM_TIMESTAMP
SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM
- SOCK_NONBLOCK SOCK_CLOEXEC
SOL_SOCKET
diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm
index 41f214d8fe..e12d8517de 100644
--- perl-5.17.4/cpan/Socket/Socket.pm
+++ perl-5.17.4/cpan/Socket/Socket.pm
@@ -3,7 +3,7 @@ package Socket;
use strict;
{ use 5.006001; }
-our $VERSION = '2.002';
+our $VERSION = '2.001';
=head1 NAME
@@ -87,13 +87,6 @@ functions as sockaddr_family().
Socket type constants to use as the second argument to socket(), or the value
of the C<SO_TYPE> socket option.
-=head2 SOCK_NONBLOCK. SOCK_CLOEXEC
-
-Linux-specific shortcuts to specify the C<O_NONBLOCK> and C<FD_CLOEXEC> flags
-during a C<socket(2)> call.
-
- socket( my $sockh, PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, 0 )
-
=head2 SOL_SOCKET
Socket option level constant for setsockopt() and getsockopt().
@@ -248,25 +241,13 @@ pack_sockaddr_un() or unpack_sockaddr_un() explicitly.
These are only supported if your system has E<lt>F<sys/un.h>E<gt>.
-=head2 $ip_mreq = pack_ip_mreq $multiaddr, $interface
-
-Takes an IPv4 multicast address and optionally an interface address (or
-C<INADDR_ANY>). Returns the C<ip_mreq> structure with those arguments packed
-in. Suitable for use with the C<IP_ADD_MEMBERSHIP> and C<IP_DROP_MEMBERSHIP>
-sockopts.
-
-=head2 ($multiaddr, $interface) = unpack_ip_mreq $ip_mreq
+=head2 $ipv6_mreq = pack_ipv6_mreq $ip6_address, $ifindex
-Takes an C<ip_mreq> structure. Returns a list of two elements; the IPv4
-multicast address and interface address.
+Takes an IPv6 address and an interface number. Returns the C<ipv6_mreq>
+structure with those arguments packed in. Suitable for use with the
+C<IPV6_ADD_MEMBERSHIP> and C<IPV6_DROP_MEMBERSHIP> sockopts.
-=head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex
-
-Takes an IPv6 multicast address and an interface number. Returns the
-C<ipv6_mreq> structure with those arguments packed in. Suitable for use with
-the C<IPV6_ADD_MEMBERSHIP> and C<IPV6_DROP_MEMBERSHIP> sockopts.
-
-=head2 ($multiaddr6, $ifindex) = unpack_ipv6_mreq $ipv6_mreq
+=head2 ($ip6_address, $ifindex) = unpack_ipv6_mreq $ipv6_mreq
Takes an C<ipv6_mreq> structure. Returns a list of two elements; the IPv6
address and an interface number.
@@ -734,11 +715,6 @@ our @EXPORT = qw(
our @EXPORT_OK = qw(
CR LF CRLF $CR $LF $CRLF
- SOCK_NONBLOCK SOCK_CLOEXEC
-
- IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_IF
- IP_MULTICAST_LOOP IP_MULTICAST_TTL
-
IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_TCP
IPPROTO_UDP
@@ -753,8 +729,6 @@ our @EXPORT_OK = qw(
IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP
IPV6_UNICAST_HOPS IPV6_V6ONLY
- pack_ip_mreq unpack_ip_mreq
-
pack_ipv6_mreq unpack_ipv6_mreq
inet_pton inet_ntop
diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs
index f22c1f3001..5ddd0e9d8e 100644
--- perl-5.17.4/cpan/Socket/Socket.xs
+++ perl-5.17.4/cpan/Socket/Socket.xs
@@ -44,10 +44,6 @@
# include <netinet/tcp.h>
#endif
-#ifdef WIN32
-# include <ws2tcpip.h>
-#endif
-
#ifdef NETWARE
NETDB_DEFINE_CONTEXT
NETINET_DEFINE_CONTEXT
@@ -963,84 +959,27 @@ inet_pton(af, host)
#endif
void
-pack_ip_mreq(multiaddr, interface=&PL_sv_undef)
- SV * multiaddr
- SV * interface
- CODE:
- {
-#ifdef HAS_IP_MREQ
- struct ip_mreq mreq;
- char * multiaddrbytes;
- char * interfacebytes;
- STRLEN len;
- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq");
- multiaddrbytes = SvPVbyte(multiaddr, len);
- if (len != sizeof(mreq.imr_multiaddr))
- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
- Zero(&mreq, sizeof(mreq), char);
- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
- if(SvOK(interface)) {
- if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
- croak("Wide character in %s", "Socket::pack_ip_mreq");
- interfacebytes = SvPVbyte(interface, len);
- if (len != sizeof(mreq.imr_interface))
- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
- Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
- }
- else
- mreq.imr_interface.s_addr = INADDR_ANY;
- ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
-#else
- not_here("pack_ip_mreq");
-#endif
- }
-
-void
-unpack_ip_mreq(mreq_sv)
- SV * mreq_sv
- PPCODE:
- {
-#ifdef HAS_IP_MREQ
- struct ip_mreq mreq;
- STRLEN mreqlen;
- char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
- if (mreqlen != sizeof(mreq))
- croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
- "Socket::unpack_ip_mreq", (UV)mreqlen, (UV)sizeof(mreq));
- Copy(mreqbytes, &mreq, sizeof(mreq), char);
- EXTEND(SP, 2);
- mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr));
- mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
-#else
- not_here("unpack_ip_mreq");
-#endif
- }
-
-void
-pack_ipv6_mreq(multiaddr, interface)
- SV * multiaddr
+pack_ipv6_mreq(addr, interface)
+ SV * addr
unsigned int interface
CODE:
{
#ifdef HAS_IPV6_MREQ
struct ipv6_mreq mreq;
- char * multiaddrbytes;
- STRLEN len;
- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
+ char * addrbytes;
+ STRLEN addrlen;
+ if (DO_UTF8(addr) && !sv_utf8_downgrade(addr, 1))
croak("Wide character in %s", "Socket::pack_ipv6_mreq");
- multiaddrbytes = SvPVbyte(multiaddr, len);
- if (len != sizeof(mreq.ipv6mr_multiaddr))
+ addrbytes = SvPVbyte(addr, addrlen);
+ if (addrlen != sizeof(mreq.ipv6mr_multiaddr))
croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
- "Socket::pack_ipv6_mreq", (UV)len, (UV)sizeof(mreq.ipv6mr_multiaddr));
+ "Socket::pack_ipv6_mreq", (UV)addrlen, (UV)sizeof(mreq.ipv6mr_multiaddr));
Zero(&mreq, sizeof(mreq), char);
- Copy(multiaddrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char);
+ Copy(addrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char);
mreq.ipv6mr_interface = interface;
ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
#else
- not_here("pack_ipv6_mreq");
+ ST(0) = (SV*)not_here("pack_ipv6_mreq");
#endif
}
diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t
deleted file mode 100644
index f08920c437..0000000000
--- perl-5.17.4/cpan/Socket/t/ip_mreq.t
+++ /dev/null
@@ -1,29 +0,0 @@
-use strict;
-use warnings;
-use Test::More;
-
-use Socket qw(
- INADDR_ANY
- pack_ip_mreq unpack_ip_mreq
-);
-
-# Check that pack/unpack_ip_mreq either croak with "Not implemented", or
-# roundtrip as identity
-
-my $packed;
-eval {
- $packed = pack_ip_mreq "\xe0\0\0\1", INADDR_ANY;
-};
-if( !defined $packed ) {
- plan skip_all => "No pack_ip_mreq" if $@ =~ m/ not implemented /;
- die $@;
-}
-
-plan tests => 3;
-
-my @unpacked = unpack_ip_mreq $packed;
-
-is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' );
-is( $unpacked[1], INADDR_ANY, 'unpack_ip_mreq interface' );
-
-is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' );
diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod
index 65a9378242..957169ec2f 100644
--- perl-5.17.4/pod/perldelta.pod
+++ perl-5.17.4/pod/perldelta.pod
@@ -250,6 +250,12 @@ trailing semicolons in formats.
L<CPANPLUS> has been upgraded from version 0.9130 to 0.9131. This resolves
issues with the SQLite source engine.
+=back
+
+=head2 Removed Modules and Pragmata
+
+=over 4
+
=item *
L<DB_File> has been upgraded from version 1.826 to 1.827. The main Perl module
--
2.49.1

View file

@ -1,3 +1,10 @@
SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
SPDX-License-Identifier: Artistic-1.0
Older versions of Bison produced 4 spaces before `goto yyerrlab`,
but ours produces more.
--- perl-5.17.4/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000
+++ perl-5.17.4/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000
@@ -123,7 +123,7 @@

View file

@ -1,3 +1,16 @@
SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
SPDX-License-Identifier: Artistic-1.0
The problem this patch solves is a duplicate definition of
NonL1_Perl_Non_Final_Folds_invlist in the final binary.
Why this problem does not occur when this code was written is not clear.
Most likely cause is changed GCC behaviour.
To solve this, rather than including charclass_invlists.h, have a opaque
definition of the array.
--- perl-5.17.4/ext/re/Makefile.PL 2025-08-22 23:08:38.443022450 +1000
+++ perl-5.17.4/ext/re/Makefile.PL 2025-08-23 11:26:37.737298348 +1000
@@ -31,6 +31,7 @@

View file

@ -1,2 +1,3 @@
https://www.cpan.org/src/5.0/perl-5.17.4.tar.bz2 42e7eb0d726a6344bc54140be8a0e3636330e1be7be8793e0fb74f415666b95b
git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573
https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b