summaryrefslogtreecommitdiff
path: root/dev-perl/File-RsyncP
diff options
context:
space:
mode:
Diffstat (limited to 'dev-perl/File-RsyncP')
-rw-r--r--dev-perl/File-RsyncP/File-RsyncP-0.760.0-r3.ebuild38
-rw-r--r--dev-perl/File-RsyncP/File-RsyncP-0.760.0-r4.ebuild39
-rw-r--r--dev-perl/File-RsyncP/Manifest1
-rw-r--r--dev-perl/File-RsyncP/files/File-RsyncP-0.700.0-make.patch19
-rw-r--r--dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c23.patch211
-rw-r--r--dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c99.patch199
-rw-r--r--dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-lto.patch40
-rw-r--r--dev-perl/File-RsyncP/metadata.xml9
8 files changed, 556 insertions, 0 deletions
diff --git a/dev-perl/File-RsyncP/File-RsyncP-0.760.0-r3.ebuild b/dev-perl/File-RsyncP/File-RsyncP-0.760.0-r3.ebuild
new file mode 100644
index 000000000000..e365fbd95c25
--- /dev/null
+++ b/dev-perl/File-RsyncP/File-RsyncP-0.760.0-r3.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DIST_AUTHOR=CBARRATT
+DIST_VERSION=0.76
+inherit perl-module toolchain-funcs
+
+DESCRIPTION="An rsync perl module"
+HOMEPAGE="https://perlrsync.sourceforge.net/ https://metacpan.org/release/File-RsyncP"
+# Bundled files make for some weirdness
+LICENSE="GPL-3+ GPL-2+ RSA"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~sparc x86"
+
+RDEPEND="
+ >=virtual/perl-Getopt-Long-2.240.0
+ net-misc/rsync
+"
+BDEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.700.0-make.patch"
+ "${FILESDIR}/${PN}-0.760.0-lto.patch"
+ "${FILESDIR}/${PN}-0.760.0-c99.patch"
+)
+
+src_prepare() {
+ perl-module_src_prepare
+ tc-export CC
+}
+src_compile() {
+ mymake=(
+ "OPTIMIZE=${CFLAGS}"
+ )
+ perl-module_src_compile
+}
diff --git a/dev-perl/File-RsyncP/File-RsyncP-0.760.0-r4.ebuild b/dev-perl/File-RsyncP/File-RsyncP-0.760.0-r4.ebuild
new file mode 100644
index 000000000000..b1fc61bbe2e4
--- /dev/null
+++ b/dev-perl/File-RsyncP/File-RsyncP-0.760.0-r4.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DIST_AUTHOR=CBARRATT
+DIST_VERSION=0.76
+inherit perl-module toolchain-funcs
+
+DESCRIPTION="An rsync perl module"
+HOMEPAGE="https://perlrsync.sourceforge.net/ https://metacpan.org/release/File-RsyncP"
+
+# Bundled files make for some weirdness
+LICENSE="GPL-3+ GPL-2+ RSA"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~sparc x86"
+
+RDEPEND="
+ net-misc/rsync
+"
+BDEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.700.0-make.patch"
+ "${FILESDIR}/${PN}-0.760.0-lto.patch"
+ "${FILESDIR}/${PN}-0.760.0-c99.patch"
+ "${FILESDIR}/${PN}-0.760.0-c23.patch"
+)
+
+src_prepare() {
+ perl-module_src_prepare
+ tc-export CC
+}
+src_compile() {
+ mymake=(
+ "OPTIMIZE=${CFLAGS}"
+ )
+ perl-module_src_compile
+}
diff --git a/dev-perl/File-RsyncP/Manifest b/dev-perl/File-RsyncP/Manifest
new file mode 100644
index 000000000000..e0c137e6a885
--- /dev/null
+++ b/dev-perl/File-RsyncP/Manifest
@@ -0,0 +1 @@
+DIST File-RsyncP-0.76.tar.gz 167744 BLAKE2B e718a8cd18f3bf7c3d8b9ceb440c19b9544c232f2889532a15023ec1da6947085d4d07efb7edf7b1366830005f784e03b76bb9526d5ecb0072b3c0ab5fb88494 SHA512 b81d9ce63181605939e8aff87c9e56ab276899f019f44eb3f149e7ee0d44a94fcbee771381ebe6ca8281c2de0d57d9cbdbcb972ccb7406a0aefd920040603bb3
diff --git a/dev-perl/File-RsyncP/files/File-RsyncP-0.700.0-make.patch b/dev-perl/File-RsyncP/files/File-RsyncP-0.700.0-make.patch
new file mode 100644
index 000000000000..adbc10294b38
--- /dev/null
+++ b/dev-perl/File-RsyncP/files/File-RsyncP-0.700.0-make.patch
@@ -0,0 +1,19 @@
+diff -ur File-RsyncP-0.68-orig/FileList/Makefile.PL File-RsyncP-0.68/FileList/Makefile.PL
+--- File-RsyncP-0.68-orig/FileList/Makefile.PL 2006-11-19 06:47:34.000000000 +0100
++++ File-RsyncP-0.68/FileList/Makefile.PL 2009-03-15 12:25:52.000000000 +0100
+@@ -16,7 +16,14 @@
+ snprintf$(OBJ_EXT)
+ wildmatch$(OBJ_EXT)
+ ],
+- 'depend' => { 'FileList.o' => 'config.h' },
++ 'depend' => { 'FileList.o' => 'config.h' ,
++ 'exclude.o' => 'config.h' ,
++ 'flist.o' => 'config.h' ,
++ 'hlink.o' => 'config.h' ,
++ 'pool_alloc.o' => 'config.h' ,
++ 'snprintf.o' => 'config.h' ,
++ 'wildmatch.o' => 'config.h'
++ },
+ 'clean' => {FILES => "configure.in config.log config.status config.h conftest* confdefs*"},
+ );
+
diff --git a/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c23.patch b/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c23.patch
new file mode 100644
index 000000000000..71551076e31f
--- /dev/null
+++ b/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c23.patch
@@ -0,0 +1,211 @@
+https://bugs.gentoo.org/943963
+https://bugzilla.redhat.com/show_bug.cgi?id=2341029
+
+--- a/Digest/global.h
++++ b/Digest/global.h
+@@ -3,11 +3,11 @@
+
+ /* PROTOTYPES should be set to one if and only if the compiler supports
+ function argument prototyping.
+-The following makes PROTOTYPES default to 0 if it has not already
++The following makes PROTOTYPES default to 1 if it has not already
+ been defined with C compiler flags.
+ */
+ #ifndef PROTOTYPES
+-#define PROTOTYPES 0
++#define PROTOTYPES 1
+ #endif
+
+ /* POINTER defines a generic pointer type */
+--- a/Digest/md4c.c
++++ b/Digest/md4c.c
+@@ -81,8 +81,7 @@ static unsigned char PADDING[64] = {
+
+ /* MD4 initialization. Begins an MD4 operation, writing a new context.
+ */
+-void RsyncMD4Init (context)
+-RsyncMD4_CTX *context; /* context */
++void RsyncMD4Init (RsyncMD4_CTX *context)
+ {
+ context->count[0] = context->count[1] = 0;
+
+@@ -99,10 +98,7 @@ RsyncMD4_CTX *context;
+ operation, processing another message block, and updating the
+ context.
+ */
+-void RsyncMD4Update (context, input, inputLen)
+-RsyncMD4_CTX *context; /* context */
+-unsigned char *input; /* input block */
+-unsigned int inputLen; /* length of input block */
++void RsyncMD4Update (RsyncMD4_CTX *context, unsigned char *input, unsigned int inputLen)
+ {
+ unsigned int i, index, partLen;
+
+@@ -140,9 +136,7 @@ unsigned int inputLen;
+ /* MD4 finalization. Ends an MD4 message-digest operation, writing the
+ the message digest and zeroizing the context.
+ */
+-void RsyncMD4Final (digest, context)
+-unsigned char digest[16]; /* message digest */
+-RsyncMD4_CTX *context; /* context */
++void RsyncMD4Final (unsigned char digest[16], RsyncMD4_CTX *context)
+ {
+ unsigned char bits[8];
+ unsigned int index, padLen;
+@@ -179,9 +173,7 @@ RsyncMD4_CTX *context;
+ * If context->rsyncMD4Bug is clear we correctly implement md4 (rsync
+ * protocol >= 27).
+ */
+-void RsyncMD4FinalRsync (digest, context)
+-unsigned char digest[16]; /* message digest */
+-RsyncMD4_CTX *context; /* context */
++void RsyncMD4FinalRsync (unsigned char digest[16], RsyncMD4_CTX *context)
+ {
+ unsigned char bits[8];
+ unsigned int index, padLen;
+@@ -212,9 +204,7 @@ RsyncMD4_CTX *context;
+
+ /* MD4 basic transformation. Transforms state based on block.
+ */
+-static void RsyncMD4Transform (state, block)
+-UINT4 state[4];
+-unsigned char block[64];
++static void RsyncMD4Transform (UINT4 state[4], unsigned char block[64])
+ {
+ UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
+
+@@ -287,10 +277,7 @@ unsigned char block[64];
+ /* Encodes input (UINT4) into output (unsigned char). Assumes len is
+ a multiple of 4.
+ */
+-void RsyncMD4Encode (output, input, len)
+-unsigned char *output;
+-UINT4 *input;
+-unsigned int len;
++void RsyncMD4Encode (unsigned char *output, UINT4 *input, unsigned int len)
+ {
+ unsigned int i, j;
+
+@@ -305,11 +292,7 @@ unsigned int len;
+ /* Decodes input (unsigned char) into output (UINT4). Assumes len is
+ a multiple of 4.
+ */
+-void RsyncMD4Decode (output, input, len)
+-
+-UINT4 *output;
+-unsigned char *input;
+-unsigned int len;
++void RsyncMD4Decode (UINT4 *output, unsigned char *input, unsigned int len)
+ {
+ unsigned int i, j;
+
+@@ -320,10 +303,7 @@ unsigned int len;
+
+ /* Note: Replace "for loop" with standard memcpy if possible.
+ */
+-static void RsyncMD4_memcpy (output, input, len)
+-POINTER output;
+-POINTER input;
+-unsigned int len;
++static void RsyncMD4_memcpy (POINTER output, POINTER input, unsigned int len)
+ {
+ unsigned int i;
+
+@@ -333,10 +313,7 @@ unsigned int len;
+
+ /* Note: Replace "for loop" with standard memset if possible.
+ */
+-static void RsyncMD4_memset (output, value, len)
+-POINTER output;
+-int value;
+-unsigned int len;
++static void RsyncMD4_memset (POINTER output, int value, unsigned int len)
+ {
+ unsigned int i;
+
+--- a/FileList/flist.c
++++ b/FileList/flist.c
+@@ -861,7 +861,7 @@ void clean_flist(struct file_list *flist
+ return;
+
+ qsort(flist->files, flist->count,
+- sizeof flist->files[0], (int (*)())file_compare);
++ sizeof flist->files[0], (int (*)(const void*, const void *))file_compare);
+
+ for (i = no_dups? 0 : flist->count; i < flist->count; i++) {
+ if (flist->files[i]->basename) {
+@@ -1166,7 +1166,7 @@ char *sanitize_path(char *dest, const ch
+ return dest;
+ }
+
+-void out_of_memory(char *str)
++void out_of_memory(const char *str)
+ {
+ fprintf(stderr, "ERROR: File::RsyncP out of memory in %s\n", str);
+ exit(1);
+--- a/FileList/hlink.c
++++ b/FileList/hlink.c
+@@ -127,7 +127,7 @@ void init_hard_links(struct file_list *f
+ }
+
+ qsort(hlink_list, hlink_count,
+- sizeof hlink_list[0], (int (*)()) hlink_compare);
++ sizeof hlink_list[0], (int (*)(const void *, const void *)) hlink_compare);
+
+ if (!hlink_count) {
+ free(hlink_list);
+--- a/FileList/pool_alloc.c
++++ b/FileList/pool_alloc.c
+@@ -9,7 +9,7 @@ struct alloc_pool
+ struct pool_extent *live; /* current extent for
+ * allocations */
+ struct pool_extent *free; /* unfreed extent list */
+- void (*bomb)();
++ void (*bomb)(const char *);
+ /* function to call if
+ * malloc fails */
+ int flags;
+@@ -45,7 +45,7 @@ struct align_test {
+
+ alloc_pool_t
+ pool_create(size_t size, size_t quantum,
+- void (*bomb)(char *), int flags)
++ void (*bomb)(const char *), int flags)
+ {
+ struct alloc_pool *pool;
+
+@@ -95,7 +95,7 @@ pool_destroy(alloc_pool_t p)
+ }
+
+ void *
+-pool_alloc(alloc_pool_t p, size_t len, char *bomb)
++pool_alloc(alloc_pool_t p, size_t len, const char *bomb)
+ {
+ struct alloc_pool *pool = (struct alloc_pool *) p;
+ if (!pool)
+--- a/FileList/pool_alloc.h
++++ b/FileList/pool_alloc.h
+@@ -7,9 +7,9 @@
+
+ typedef void *alloc_pool_t;
+
+-alloc_pool_t pool_create(size_t size, size_t quantum, void (*bomb)(char *), int flags);
++alloc_pool_t pool_create(size_t size, size_t quantum, void (*bomb)(const char *), int flags);
+ void pool_destroy(alloc_pool_t pool);
+-void *pool_alloc(alloc_pool_t pool, size_t size, char *bomb);
++void *pool_alloc(alloc_pool_t pool, size_t size, const char *bomb);
+ void pool_free(alloc_pool_t pool, size_t size, void *addr);
+
+ #define pool_talloc(pool, type, count, bomb) \
+--- a/FileList/proto.h
++++ b/FileList/proto.h
+@@ -229,7 +229,7 @@ void set_nonblocking(int fd);
+ void set_blocking(int fd);
+ int fd_pair(int fd[2]);
+ void print_child_argv(char **cmd);
+-void out_of_memory(char *str);
++void out_of_memory(const char *str);
+ void overflow(char *str);
+ int set_modtime(char *fname, time_t modtime);
+ int create_directory_path(char *fname, int base_umask);
+
diff --git a/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c99.patch b/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c99.patch
new file mode 100644
index 000000000000..f57348df3bfe
--- /dev/null
+++ b/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-c99.patch
@@ -0,0 +1,199 @@
+https://src.fedoraproject.org/rpms/perl-File-RsyncP/blob/0faafaa6c4c1ebf930c1c119c57bea85cbd6118b/f/perl-File-RsyncP-configure-c99.patch
+https://rt.cpan.org/Public/Bug/Display.html?id=145943
+
+Various fixes for the configure script. Most of them are specific to
+this package, and not related to autoconf limitations. The
+configure.in/configure.ac autoconf input is not included among
+upstream sources, so they are not patched here.
+
+Submitted upstream: <https://rt.cpan.org/Public/Bug/Display.html?id=145943>
+
+diff --git a/FileList/configure b/FileList/configure
+index 023b6066e0f9d362..cdf2a72b57d73abf 100755
+--- a/FileList/configure
++++ b/FileList/configure
+@@ -2246,7 +2246,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+- '' \
++ '#include <stdlib.h>' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+@@ -2905,6 +2905,8 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <fcntl.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
++#include <stdlib.h>
++#include <string.h>
+
+ int main(void)
+ {
+@@ -4492,8 +4494,8 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+@@ -6841,6 +6843,8 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #define NGID 256
+ #undef MAX
+ #define MAX(x, y) ((x) > (y) ? (x) : (y))
++#include <unistd.h>
++#include <stdlib.h>
+
+ int
+ main ()
+@@ -8828,12 +8832,13 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ $ac_includes_default
++#include <utime.h>
+ int
+ main ()
+ {
+ struct stat s, t;
+ exit (!(stat ("conftest.data", &s) == 0
+- && utime ("conftest.data", (long *)0) == 0
++ && utime ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120));
+@@ -9397,9 +9402,9 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <sys/types.h>
+ #include <sys/socket.h>
+
+-main() {
++int main(void) {
+ int fd[2];
+- exit((socketpair(AF_UNIX, SOCK_STREAM, 0, fd) != -1) ? 0 : 1);
++ return (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) != -1) ? 0 : 1;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+@@ -9451,7 +9456,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <stdio.h>
+-main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }
++int main(void) { long long x = 1000000; x *= x; return ((x/1000000) == 1000000)? 0: 1; }
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -9503,7 +9508,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <stdio.h>
+ #include <sys/stat.h>
+-main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
++int main(void) { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -9556,7 +9561,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-main() { if (sizeof(ino_t) < sizeof(unsigned int)) return 0; return 1; }
++int main(void) { if (sizeof(ino_t) < sizeof(unsigned int)) return 0; return 1; }
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -9607,7 +9612,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <stdio.h>
+-main() { char c; c=250; exit((c > 0)?0:1); }
++int main(void) { char c; c=250; return (c > 0)?0:1; }
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -9659,9 +9664,9 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <sys/types.h>
+ #include <dirent.h>
+-main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
++int main(void) { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
+ if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
+-di->d_name[0] == 0) exit(0); exit(1);}
++di->d_name[0] == 0) return 0; return 1;}
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -9713,7 +9718,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ int
+ main ()
+ {
+-struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));
++struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);
+ ;
+ return 0;
+ }
+@@ -9777,7 +9782,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #include <sys/time.h>
+ #include <unistd.h>
+-main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}
++int main(void) { struct timeval tv; return gettimeofday(&tv, NULL);}
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -9830,6 +9835,9 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #include <sys/types.h>
+ #include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
+ void foo(const char *format, ...) {
+ va_list ap;
+ int len;
+@@ -9844,7 +9852,7 @@ void foo(const char *format, ...) {
+
+ exit(0);
+ }
+-main() { foo("hello"); }
++int main(void) { foo("hello"); }
+
+ _ACEOF
+ rm -f conftest$ac_exeext
+@@ -9900,7 +9908,7 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+-main() {
++int main(void) {
+ struct stat st;
+ char tpl[20]="/tmp/test.XXXXXX";
+ int fd = mkstemp(tpl);
+@@ -9965,10 +9973,11 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+-main() { struct in_addr ip; ip.s_addr = 0x12345678;
++#include <string.h>
++int main(void) { struct in_addr ip; ip.s_addr = 0x12345678;
+ if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
+- strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(1); }
+-exit(0);}
++ strcmp(inet_ntoa(ip),"120.86.52.18")) { return 1; }
++return 0;}
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+@@ -10024,8 +10033,8 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+-main() { struct in_addr ip;
+-if (inet_aton("example", &ip) == 0) exit(0); exit(1);}
++int main(void) { struct in_addr ip;
++if (inet_aton("example", &ip) == 0) return 0; return 1;}
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
diff --git a/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-lto.patch b/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-lto.patch
new file mode 100644
index 000000000000..752d35dfbb02
--- /dev/null
+++ b/dev-perl/File-RsyncP/files/File-RsyncP-0.760.0-lto.patch
@@ -0,0 +1,40 @@
+https://bugs.gentoo.org/867832
+https://rt.cpan.org/Public/Bug/Display.html?id=141822
+
+From 5fb151e46ce03c960ae05405c6f6360ccb7efa6f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Fri, 18 Mar 2022 12:28:26 +0100
+Subject: [PATCH] Fix configure check with optimizing and lto-enabled GCC 12
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+After upgrading GCC to version 12 on Linux (where strlcpy() does not exist)
+tests fail like this if CFLAGS="-O1 -flto=auto":
+
+ make[1]: Entering directory '/home/test/fedora/perl-File-RsyncP/File-RsyncP-0.76/FileList'
+ "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- FileList.bs ../blib/arch/auto/File/RsyncP/FileList/FileList.bs 644
+ PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
+ t/exclude.t ... Can't load '/home/test/fedora/perl-File-RsyncP/File-RsyncP-0.76/FileList/../blib/arch/auto/File/RsyncP/FileList/FileList.so' for module File::RsyncP::FileList: /home/test/fedora/perl-File-RsyncP/File-RsyncP-0.76/FileList/../blib/arch/auto/File/RsyncP/FileList/FileList.so: undefined symbol: strlcpy at /usr/lib64/perl5/DynaLoader.pm line 193.
+
+The new compiler optimizes out a check for strlcpy() perform by
+FileList/configure script. This patch changes the check to actually depend on
+strlcpy() function address. That should prevent a compiler from optimizing it
+out.
+
+CPAN RT#141822
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+--- a/FileList/configure
++++ b/FileList/configure
+@@ -9330,7 +9330,7 @@ char (*f) () = $ac_func;
+ int
+ main ()
+ {
+-return f != $ac_func;
++return (int)f;
+ ;
+ return 0;
+ }
+--
+2.34.1
diff --git a/dev-perl/File-RsyncP/metadata.xml b/dev-perl/File-RsyncP/metadata.xml
new file mode 100644
index 000000000000..89c67f49bdb9
--- /dev/null
+++ b/dev-perl/File-RsyncP/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>perl@gentoo.org</email>
+ <name>Gentoo Perl Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>