Re: git: 0d316feccaf8 - main - sysutils/cpdup-FreeBSD: Add FreeBSD fork of cpdup

From: Guido Falsi <madpilot_at_FreeBSD.org>
Date: Wed, 26 Feb 2025 07:38:40 UTC
On 26/02/25 05:06, Cy Schubert wrote:
> In message <202502252200.51PM0JNl002582@gitrepo.freebsd.org>, Guido Falsi
> write
> s:
>> The branch main has been updated by madpilot:
>>
>> URL: https://cgit.FreeBSD.org/ports/commit/?id=0d316feccaf89c1bd804d600127442
>> 6a7135c93a
>>
>> commit 0d316feccaf89c1bd804d6001274426a7135c93a
>> Author:     Guido Falsi <madpilot@FreeBSD.org>
>> AuthorDate: 2025-02-25 21:58:58 +0000
>> Commit:     Guido Falsi <madpilot@FreeBSD.org>
>> CommitDate: 2025-02-25 21:58:58 +0000
>>
>>      sysutils/cpdup-FreeBSD: Add FreeBSD fork of cpdup
>>      
>>      Add a fork of cpdup, including patches to support copy_file_range(2)
>>      and allowing to choose checksum algorithm.
>>      
>>      Thanks to mm for providing the required patches to the fork.
>>      
>>      Assign port to cpdup maintainer
>>      
>>      Approved by:    Gianmarco Giovannelli <gmarco@giovannelli.it> (maintainer
>> )
>> ---
>>   sysutils/Makefile                               |  1 +
>>   sysutils/cpdup-FreeBSD/Makefile                 | 22 ++++++++++++++++++++++
>>   sysutils/cpdup-FreeBSD/distinfo                 |  3 +++
>>   sysutils/cpdup-FreeBSD/files/patch-Makefile.bsd | 11 +++++++++++
>>   sysutils/cpdup-FreeBSD/pkg-descr                |  9 +++++++++
>>   sysutils/cpdup/Makefile                         |  2 ++
>>   6 files changed, 48 insertions(+)
>>
>> diff --git a/sysutils/Makefile b/sysutils/Makefile
>> index e9cf3cf53bb3..ea8c5a687551 100644
>> --- a/sysutils/Makefile
>> +++ b/sysutils/Makefile
>> @@ -236,6 +236,7 @@
>>       SUBDIR += coreos-ct
>>       SUBDIR += coreutils
>>       SUBDIR += cpdup
>> +    SUBDIR += cpdup-FreeBSD
>>       SUBDIR += cpu-microcode
>>       SUBDIR += cpu-microcode-amd
>>       SUBDIR += cpu-microcode-intel
>> diff --git a/sysutils/cpdup-FreeBSD/Makefile b/sysutils/cpdup-FreeBSD/Makefil
>> e
>> new file mode 100644
>> index 000000000000..e98c449cd03a
>> --- /dev/null
>> +++ b/sysutils/cpdup-FreeBSD/Makefile
>> @@ -0,0 +1,22 @@
>> +PORTNAME=	cpdup
>> +DISTVERSION=	1.0.0
>> +CATEGORIES=	sysutils
>> +PKGNAMESUFFIX=	-FreeBSD
>> +
>> +MAINTAINER=	gmarco@giovannelli.it
>> +COMMENT=	Comprehensive filesystem mirroring and backup program
>> +WWW=		https://github.com/freebsd/cpdup
>> +
>> +LICENSE=	BSD3CLAUSE
>> +
>> +USES=		ssl tar:xz
>> +USE_GITHUB=	yes
>> +GH_ACCOUNT=	freebsd
>> +MAKEFILE=	Makefile.bsd
>> +
>> +CONFLICTS_INSTALL=	cpdup
>> +
>> +PLIST_FILES=	bin/cpdup \
>> +		share/man/man1/cpdup.1.gz
>> +
>> +.include <bsd.port.mk>
>> diff --git a/sysutils/cpdup-FreeBSD/distinfo b/sysutils/cpdup-FreeBSD/distinf
>> o
>> new file mode 100644
>> index 000000000000..427084c3b7ec
>> --- /dev/null
>> +++ b/sysutils/cpdup-FreeBSD/distinfo
>> @@ -0,0 +1,3 @@
>> +TIMESTAMP = 1739815106
>> +SHA256 (freebsd-cpdup-1.0.0_GH0.tar.gz) = 216d7416f23df392a4218120ee8b4d66dd
>> ab04f7c3677b8bfd7c6fea8383aa26
>> +SIZE (freebsd-cpdup-1.0.0_GH0.tar.gz) = 45939
>> diff --git a/sysutils/cpdup-FreeBSD/files/patch-Makefile.bsd b/sysutils/cpdup
>> -FreeBSD/files/patch-Makefile.bsd
>> new file mode 100644
>> index 000000000000..89789d24a958
>> --- /dev/null
>> +++ b/sysutils/cpdup-FreeBSD/files/patch-Makefile.bsd
>> @@ -0,0 +1,11 @@
>> +--- Makefile.bsd.orig	2023-11-30 11:20:48 UTC
>> ++++ Makefile.bsd
>> +@@ -11,7 +11,7 @@ BINDIR?=	${PREFIX}/bin
>> + CFLAGS+=	-D_ST_FLAGS_PRESENT_
>> + PREFIX?=	/usr/local
>> + BINDIR?=	${PREFIX}/bin
>> +-MANDIR?=	${PREFIX}/man/man
>> ++MANDIR?=	${PREFIX}/share/man/man
>> +
>> + .include <bsd.prog.mk>
>> +
>> diff --git a/sysutils/cpdup-FreeBSD/pkg-descr b/sysutils/cpdup-FreeBSD/pkg-de
>> scr
>> new file mode 100644
>> index 000000000000..f432acb29e51
>> --- /dev/null
>> +++ b/sysutils/cpdup-FreeBSD/pkg-descr
>> @@ -0,0 +1,9 @@
>> +cpdup-FreeBSD is a FreeBSD fork of cpdup, a powerful filesystem mirroring
>> +and backup utility which also has file integrity testing features, supports
>> +incremental backups, and remote mirroring via ssh.
>> +
>> +This fork supports copy_file_range(2) and allows choosing checksum
>> +algorithm.
>> +
>> +Note: This port does not copy (or mirror) any FreeBSD supported ACL
>> +types and Extended Attributes nor MAC labels.
>> diff --git a/sysutils/cpdup/Makefile b/sysutils/cpdup/Makefile
>> index e25e3c69aef2..51e2ad7e8a15 100644
>> --- a/sysutils/cpdup/Makefile
>> +++ b/sysutils/cpdup/Makefile
>> @@ -15,6 +15,8 @@ GH_TUPLE=	DragonFlyBSD:${PORTNAME}:v${PORTVERSION}
>>   MAKEFILE=	GNUmakefile
>>   MAKE_ARGS+=	LIBS="-L${OPENSSLLIB} -lcrypto"
>>   
>> +CONFLICTS_INSTALL=	cpdup-FreeBSD
>> +
>>   PLIST_FILES=	bin/cpdup share/man/man1/cpdup.1.gz
>>   
>>   post-patch:
>>
> 
> This fails to build under poudriere.
> 
> ===>  Staging for cpdup-FreeBSD-1.0.0
> ===>   Generating temporary packing list
> install  -s -o root -g wheel -m 555   cpdup /wrkdirs/usr/ports/sysutils/cpdu
> p-FreeBSD/work/stage/usr/local/bin/cpdup
> install: /wrkdirs/usr/ports/sysutils/cpdup-FreeBSD/work/stage/usr/local/bin/
> cpdup: chown/chgrp: Operation not permitted
> *** Error code 71
> 
> Stop.
> make: stopped making "install" in /wrkdirs/usr/ports/sysutils/cpdup-FreeBSD/
> work/cpdup-1.0.0
> *** Error code 1
> 
> Stop.
> make: stopped making "stage" in /usr/ports/sysutils/cpdup-FreeBSD
> =>> Cleaning up wrkdir
> ===>  Cleaning for cpdup-FreeBSD-1.0.0
> 
> You need to add USES=uidfix to your Makefile.
> 
> 

Thanks for reporting!

Strange it has been working fine in my poudriere, anyway I'm going to 
add the suggested fix shortly.

-- 
Guido Falsi <madpilot@FreeBSD.org>