blob: 02bdf05ca5f4b4f95e7feecdf34617faff726a86 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# Maintainer: Mr.Wizard <process-pylon-62 at icloud.com>
# Upstream: hansij66 <https://github.com/hansij66/securecopy>
#
# Patches GNU coreutils cp/mv to add CRC64 xattr checksum verification.
# Provides crccp, crcmv, crcsum.
pkgname=securecopy
pkgver=9.7.0
pkgrel=4
pkgdesc="GNU coreutils cp/mv with CRC64 xattr checksum verification, plus crcsum"
arch=('x86_64' 'aarch64' 'armv7h')
url="https://github.com/hansij66/securecopy"
license=('GPL-3.0-or-later')
depends=('attr')
makedepends=('gettext' 'texinfo' 'perl' 'gperf' 'libcap')
provides=("${pkgname}")
install=securecopy.install
_coreutils_ver="9.7"
source=(
"securecopy-${pkgver}.tar.gz::https://github.com/hansij66/securecopy/archive/refs/tags/v${pkgver}.tar.gz"
"https://ftp.gnu.org/gnu/coreutils/coreutils-${_coreutils_ver}.tar.xz"
)
sha256sums=(
'8c207742834dc79ad6f2af0e3f62d5543f57d374e06a0ca7ac30621c9c2fa180'
'e8bb26ad0293f9b5a1fc43fb42ba970e312c66ce92c1b0b16713d7500db251bf'
)
prepare() {
local sc="${srcdir}/securecopy-${pkgver}"
local cu="${srcdir}/coreutils-${_coreutils_ver}"
# ── Copy securecopy source files into coreutils tree ─────────────────────
cp "${sc}/src/crc64.c" "${cu}/src/"
cp "${sc}/src/crc64.h" "${cu}/src/"
cp "${sc}/src/crcsum.c" "${cu}/src/"
cp "${sc}/src/crcsum.h" "${cu}/src/"
cp "${sc}/src/crcsum_cli.c" "${cu}/src/"
cp "${sc}/src/crccp.x" "${cu}/man/"
cp "${sc}/src/crcmv.x" "${cu}/man/"
cp "${sc}/src/crcsum.x" "${cu}/man/"
# ── Create crccp.c and crcmv.c from cp.c/mv.c before patching ────────────
cp "${cu}/src/cp.c" "${cu}/src/crccp.c"
cp "${cu}/src/mv.c" "${cu}/src/crcmv.c"
# ── Apply patches — 'patch FILE PATCHFILE' ignores absolute path headers ─
cd "${cu}/src"
patch copy.c "${sc}/src/copy.c.patch"
patch copy.h "${sc}/src/copy.h.patch"
patch crccp.c "${sc}/src/crccp.c.patch"
patch crcmv.c "${sc}/src/crcmv.c.patch"
patch cu-progs.mk "${sc}/src/cu-progs.mk.patch"
patch local.mk "${sc}/src/local.mk.patch"
cd "${cu}/m4"
patch cu-progs.m4 "${sc}/src/cu-progs.m4.patch"
# ── Clean out pre-built Makefile so configure regenerates it fresh ────────
# ACLOCAL/AUTOMAKE exported so the system versions are used, not aclocal-1.16
cd "${cu}"
export ACLOCAL=aclocal
export AUTOMAKE=automake
make distclean || true
# ── Compat header for attr/xattr.h (Arch: sys/xattr.h, Debian: attr/xattr.h) ─
# coreutils compiles with -Isrc, so src/attr/xattr.h is found for #include <attr/xattr.h>
mkdir -p "${cu}/src/attr"
echo '#include <sys/xattr.h>' > "${cu}/src/attr/xattr.h"
# ── Pre-create stub man pages for crccp/crcmv/crcsum ─────────────────────
# help2man/dummy-man tries to run the binary to generate the man page, but
# the binary isn't built yet at that point. dummy-man will copy a pre-existing
# .1 file instead of running the binary if one is present.
for prog in crccp crcmv crcsum; do
printf '.TH "%s" 1 "GNU coreutils" "User Commands"\n' "${prog^^}" > "${cu}/man/${prog}.1"
printf '.SH NAME\n%s \\- a GNU coreutils program with CRC64 checksum verification\n' "${prog}" >> "${cu}/man/${prog}.1"
printf '.SH SYNOPSIS\n.B %s\n[\\fIOPTION\\fR]... \\fISOURCE\\fR... \\fIDEST\\fR\n' "${prog}" >> "${cu}/man/${prog}.1"
printf '.SH DESCRIPTION\nPart of the securecopy package. Run \\fB%s --help\\fR for usage information.\n' "${prog}" >> "${cu}/man/${prog}.1"
printf '.SH SEE ALSO\nFull documentation: <https://github.com/hansij66/securecopy>\n' >> "${cu}/man/${prog}.1"
done
}
build() {
local cu="${srcdir}/coreutils-${_coreutils_ver}"
cd "${cu}"
export ACLOCAL=aclocal
export AUTOMAKE=automake
./configure --prefix=/usr --disable-nls
make
}
package() {
local sc="${srcdir}/securecopy-${pkgver}"
local cu="${srcdir}/coreutils-${_coreutils_ver}"
install -Dm755 "${cu}/src/crccp" "${pkgdir}/usr/bin/crccp"
install -Dm755 "${cu}/src/crcmv" "${pkgdir}/usr/bin/crcmv"
install -Dm755 "${cu}/src/crcsum" "${pkgdir}/usr/bin/crcsum"
install -Dm644 "${sc}/README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
install -Dm644 "${sc}/ChangeLog" "${pkgdir}/usr/share/doc/${pkgname}/ChangeLog"
install -Dm644 "${srcdir}/../crccp.1" "${pkgdir}/usr/share/man/man1/crccp.1"
install -Dm644 "${srcdir}/../crcmv.1" "${pkgdir}/usr/share/man/man1/crcmv.1"
install -Dm644 "${srcdir}/../crcsum.1" "${pkgdir}/usr/share/man/man1/crcsum.1"
}
|