commit: 9a83c0e8cf7bcefcacd25f279b6e11ffccf8cd5f Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Sun Oct 5 06:29:30 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sun Oct 5 06:30:16 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9a83c0e8
dev-perl/File-RsyncP: fix build w/ c23 Closes: https://bugs.gentoo.org/943963 Signed-off-by: Sam James <sam <AT> gentoo.org> dev-perl/File-RsyncP/File-RsyncP-0.760.0-r4.ebuild | 39 ++++ .../files/File-RsyncP-0.760.0-c23.patch | 211 +++++++++++++++++++++ 2 files changed, 250 insertions(+) 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..aaf0a8eee049 --- /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/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); +
