Mon Nov 28 23:15:34 2022 UTC ()
check-files.mk: fix execution when CHECK_FILES_STRICT=yes

Commit r. 1.2044 "mk: Don't define DO_NADA to true." of bsd.pkg.mk
caused the checks executed when CHECK_FILES_STRICT=yes is set to fail
(e.g., "/bin/sh: -c: line 1: syntax error near unexpected token `;'").

(The pre-existing coding style that uses "true;" rather than a bare ":"
instead has been retained, in case there is an obscure (?) reason for
that approach.)


(gutteridge)
diff -r1.38 -r1.39 pkgsrc/mk/check/check-files.mk

cvs diff -r1.38 -r1.39 pkgsrc/mk/check/check-files.mk (switch to unified diff)

--- pkgsrc/mk/check/check-files.mk 2022/11/23 11:55:43 1.38
+++ pkgsrc/mk/check/check-files.mk 2022/11/28 23:15:34 1.39
@@ -1,387 +1,387 @@ @@ -1,387 +1,387 @@
1# $NetBSD: check-files.mk,v 1.38 2022/11/23 11:55:43 jperkin Exp $ 1# $NetBSD: check-files.mk,v 1.39 2022/11/28 23:15:34 gutteridge Exp $
2# 2#
3# This file checks that the list of installed files matches the PLIST. 3# This file checks that the list of installed files matches the PLIST.
4# For that purpose it records the file list of LOCALBASE before and 4# For that purpose it records the file list of LOCALBASE before and
5# after the installation of the package and compares these lists with 5# after the installation of the package and compares these lists with
6# the PLIST. 6# the PLIST.
7# 7#
8# User-settable variables: 8# User-settable variables:
9# 9#
10# CHECK_FILES 10# CHECK_FILES
11# "yes" to enable the check, "no" to disable it. 11# "yes" to enable the check, "no" to disable it.
12# 12#
13# Default value: "yes" 13# Default value: "yes"
14# 14#
15# CHECK_FILES_STRICT 15# CHECK_FILES_STRICT
16# When set to "yes", VARBASE and PKG_SYSCONFDIR are checked in 16# When set to "yes", VARBASE and PKG_SYSCONFDIR are checked in
17# addition to LOCALBASE. 17# addition to LOCALBASE.
18# 18#
19# Package-settable variables: 19# Package-settable variables:
20# 20#
21# CHECK_FILES_SKIP 21# CHECK_FILES_SKIP
22# A list of regular expressions (FIXME: all other checks use shell 22# A list of regular expressions (FIXME: all other checks use shell
23# patterns) that names files to be skipped. This is useful to 23# patterns) that names files to be skipped. This is useful to
24# avoid getting errors triggered by changes in directories not 24# avoid getting errors triggered by changes in directories not
25# really handled by pkgsrc. 25# really handled by pkgsrc.
26# 26#
27 27
28_VARGROUPS+= check-files 28_VARGROUPS+= check-files
29_USER_VARS.check-files= CHECK_FILES CHECK_FILES_STRICT 29_USER_VARS.check-files= CHECK_FILES CHECK_FILES_STRICT
30_PKG_VARS.check-files= CHECK_FILES_SKIP 30_PKG_VARS.check-files= CHECK_FILES_SKIP
31 31
32CHECK_FILES?= yes 32CHECK_FILES?= yes
33CHECK_FILES_STRICT?= no 33CHECK_FILES_STRICT?= no
34 34
35# Info index files updated when a new info file is added. 35# Info index files updated when a new info file is added.
36.if defined(INFO_FILES) 36.if defined(INFO_FILES)
37CHECK_FILES_SKIP+= ${PREFIX}/.*/dir 37CHECK_FILES_SKIP+= ${PREFIX}/.*/dir
38.endif 38.endif
39 39
40# Perl's perllocal.pod index that is regenerated when a local module 40# Perl's perllocal.pod index that is regenerated when a local module
41# is added. 41# is added.
42# 42#
43CHECK_FILES_SKIP+= ${PERL5_INSTALLARCHLIB}/perllocal.pod 43CHECK_FILES_SKIP+= ${PERL5_INSTALLARCHLIB}/perllocal.pod
44 44
45# R's index files that are regenerated when a local module 45# R's index files that are regenerated when a local module
46# is added. 46# is added.
47# 47#
48CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/packages.html 48CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/packages.html
49CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/search/index.txt 49CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/search/index.txt
50 50
51CHECK_FILES_SKIP+= ${PKG_DBDIR}/.* 51CHECK_FILES_SKIP+= ${PKG_DBDIR}/.*
52 52
53# We don't care about what's under linux/proc and linux32/proc in Linux  53# We don't care about what's under linux/proc and linux32/proc in Linux
54# emulation, which just holds run-time generated data. 54# emulation, which just holds run-time generated data.
55# 55#
56CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc.* 56CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc.*
57CHECK_FILES_SKIP+= ${PREFIX}/emul/linux32/proc.* 57CHECK_FILES_SKIP+= ${PREFIX}/emul/linux32/proc.*
58 58
59# The reference-count meta-data directory used by the {de,}install scripts. 59# The reference-count meta-data directory used by the {de,}install scripts.
60CHECK_FILES_SKIP+= ${PKG_DBDIR}.refcount.* 60CHECK_FILES_SKIP+= ${PKG_DBDIR}.refcount.*
61 61
62# Some people have their distfiles and binary packages below ${LOCALBASE}. 62# Some people have their distfiles and binary packages below ${LOCALBASE}.
63CHECK_FILES_SKIP+= ${PACKAGES}/.* 63CHECK_FILES_SKIP+= ${PACKAGES}/.*
64CHECK_FILES_SKIP+= ${DISTDIR}/.* 64CHECK_FILES_SKIP+= ${DISTDIR}/.*
65 65
66# For unprivileged builds, VARBASE is below LOCALBASE. 66# For unprivileged builds, VARBASE is below LOCALBASE.
67.if !empty(CHECK_FILES_STRICT:M[Nn][Oo]) 67.if !empty(CHECK_FILES_STRICT:M[Nn][Oo])
68CHECK_FILES_SKIP+= ${VARBASE}/.* 68CHECK_FILES_SKIP+= ${VARBASE}/.*
69.endif 69.endif
70 70
71# Files that are outside of ${PREFIX} in directories we already know we'll 71# Files that are outside of ${PREFIX} in directories we already know we'll
72# be using for mutable data. 72# be using for mutable data.
73# 73#
74.for d in ${MAKE_DIRS} ${OWN_DIRS} 74.for d in ${MAKE_DIRS} ${OWN_DIRS}
75CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.* 75CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.*
76.endfor 76.endfor
77.for _var_ in MAKE_DIRS_PERMS OWN_DIRS_PERMS 77.for _var_ in MAKE_DIRS_PERMS OWN_DIRS_PERMS
78. if empty(${_var_}) || empty(${_var_}:C/.*/4/:M*:S/4 4 4 4//gW) 78. if empty(${_var_}) || empty(${_var_}:C/.*/4/:M*:S/4 4 4 4//gW)
79. for d o g m in ${${_var_}} 79. for d o g m in ${${_var_}}
80CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.* 80CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.*
81. endfor 81. endfor
82. endif 82. endif
83.endfor 83.endfor
84 84
85# Mutable X11 font database files 85# Mutable X11 font database files
86.if (defined(FONTS_DIRS.x11) && !empty(FONTS_DIRS.x11:M*)) 86.if (defined(FONTS_DIRS.x11) && !empty(FONTS_DIRS.x11:M*))
87CHECK_FILES_SKIP+= ${PREFIX}/.*/encodings.dir 87CHECK_FILES_SKIP+= ${PREFIX}/.*/encodings.dir
88CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.dir 88CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.dir
89.endif 89.endif
90.if (defined(FONTS_DIRS.ttf) && !empty(FONTS_DIRS.ttf:M*)) || \ 90.if (defined(FONTS_DIRS.ttf) && !empty(FONTS_DIRS.ttf:M*)) || \
91 (defined(FONTS_DIRS.type1) && !empty(FONTS_DIRS.type1:M*)) 91 (defined(FONTS_DIRS.type1) && !empty(FONTS_DIRS.type1:M*))
92CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.scale 92CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.scale
93.endif 93.endif
94.if (defined(FONTS_DIRS.ttf) && !empty(FONTS_DIRS.ttf:M*)) || \ 94.if (defined(FONTS_DIRS.ttf) && !empty(FONTS_DIRS.ttf:M*)) || \
95 (defined(FONTS_DIRS.type1) && !empty(FONTS_DIRS.type1:M*)) || \ 95 (defined(FONTS_DIRS.type1) && !empty(FONTS_DIRS.type1:M*)) || \
96 (defined(FONTS_DIRS.x11) && !empty(FONTS_DIRS.x11:M*)) 96 (defined(FONTS_DIRS.x11) && !empty(FONTS_DIRS.x11:M*))
97CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.cache-1 97CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.cache-1
98.endif 98.endif
99 99
100# Mutable icon theme cache files 100# Mutable icon theme cache files
101.if !empty(ICON_THEMES:M[Yy][Ee][Ss]) 101.if !empty(ICON_THEMES:M[Yy][Ee][Ss])
102CHECK_FILES_SKIP+= ${PREFIX}/share/icons/.*/icon-theme.cache 102CHECK_FILES_SKIP+= ${PREFIX}/share/icons/.*/icon-theme.cache
103.endif 103.endif
104 104
105# Mutable charset.alias file 105# Mutable charset.alias file
106CHECK_FILES_SKIP+= ${PREFIX}/lib/charset.alias 106CHECK_FILES_SKIP+= ${PREFIX}/lib/charset.alias
107 107
108# Mutable locale.alias file 108# Mutable locale.alias file
109CHECK_FILES_SKIP+= ${PREFIX}/share/locale/locale.alias 109CHECK_FILES_SKIP+= ${PREFIX}/share/locale/locale.alias
110 110
111_CHECK_FILES_SKIP_FILTER= ${GREP} -vx ${CHECK_FILES_SKIP:@f@-e ${DESTDIR:Q}${f:Q}@} 111_CHECK_FILES_SKIP_FILTER= ${GREP} -vx ${CHECK_FILES_SKIP:@f@-e ${DESTDIR:Q}${f:Q}@}
112 112
113########################################################################### 113###########################################################################
114# These are the files generated and used by the check-files implementation 114# These are the files generated and used by the check-files implementation
115# used across several check-files targets. 115# used across several check-files targets.
116# 116#
117# _CHECK_FILES_ERRMSG.* are the files that contain the error 117# _CHECK_FILES_ERRMSG.* are the files that contain the error
118# messages discovered during each stage of file-checking. 118# messages discovered during each stage of file-checking.
119# 119#
120# _CHECK_FILES_PRE.* are the file lists generated before any files 120# _CHECK_FILES_PRE.* are the file lists generated before any files
121# from the package are installed. 121# from the package are installed.
122# 122#
123# _CHECK_FILES_POST.* are the file lists generated after all files 123# _CHECK_FILES_POST.* are the file lists generated after all files
124# from the package are installed. 124# from the package are installed.
125# 125#
126# The "pre" and "post" file lists are compared against each other to 126# The "pre" and "post" file lists are compared against each other to
127# determine if the package is installing files where it shouldn't be. 127# determine if the package is installing files where it shouldn't be.
128# 128#
129_CHECK_FILES_ERRMSG.prefix= ${ERROR_DIR}/check-files-prefix 129_CHECK_FILES_ERRMSG.prefix= ${ERROR_DIR}/check-files-prefix
130_CHECK_FILES_PRE.prefix= ${WRKDIR}/.prefix.pre 130_CHECK_FILES_PRE.prefix= ${WRKDIR}/.prefix.pre
131_CHECK_FILES_POST.prefix= ${WRKDIR}/.prefix.post 131_CHECK_FILES_POST.prefix= ${WRKDIR}/.prefix.post
132 132
133_CHECK_FILES_ERRMSG.sysconfdir= ${ERROR_DIR}/.check-files-sysconfdir 133_CHECK_FILES_ERRMSG.sysconfdir= ${ERROR_DIR}/.check-files-sysconfdir
134_CHECK_FILES_PRE.sysconfdir= ${WRKDIR}/.sysconfdir.pre 134_CHECK_FILES_PRE.sysconfdir= ${WRKDIR}/.sysconfdir.pre
135_CHECK_FILES_POST.sysconfdir= ${WRKDIR}/.sysconfdir.post 135_CHECK_FILES_POST.sysconfdir= ${WRKDIR}/.sysconfdir.post
136 136
137_CHECK_FILES_ERRMSG.varbase= ${ERROR_DIR}/.check-files-varbase 137_CHECK_FILES_ERRMSG.varbase= ${ERROR_DIR}/.check-files-varbase
138_CHECK_FILES_PRE.varbase= ${WRKDIR}/.varbase.pre 138_CHECK_FILES_PRE.varbase= ${WRKDIR}/.varbase.pre
139_CHECK_FILES_POST.varbase= ${WRKDIR}/.varbase.post 139_CHECK_FILES_POST.varbase= ${WRKDIR}/.varbase.post
140 140
141_CHECK_FILES_ERRMSGS= # empty 141_CHECK_FILES_ERRMSGS= # empty
142_CHECK_FILES_ERRMSGS+= ${_CHECK_FILES_ERRMSG.prefix} 142_CHECK_FILES_ERRMSGS+= ${_CHECK_FILES_ERRMSG.prefix}
143.if empty(CHECK_FILES_STRICT:M[nN][oO]) 143.if empty(CHECK_FILES_STRICT:M[nN][oO])
144_CHECK_FILES_ERRMSGS+= ${_CHECK_FILES_ERRMSG.sysconfdir} 144_CHECK_FILES_ERRMSGS+= ${_CHECK_FILES_ERRMSG.sysconfdir}
145_CHECK_FILES_ERRMSGS+= ${_CHECK_FILES_ERRMSG.varbase} 145_CHECK_FILES_ERRMSGS+= ${_CHECK_FILES_ERRMSG.varbase}
146.endif 146.endif
147 147
148########################################################################### 148###########################################################################
149# _CHECK_FILES_PRE holds the list of targets that are built as part of 149# _CHECK_FILES_PRE holds the list of targets that are built as part of
150# building the check-files-pre target. These targets should cause the 150# building the check-files-pre target. These targets should cause the
151# "pre" file lists to be generated. 151# "pre" file lists to be generated.
152# 152#
153_CHECK_FILES_PRE= # 153_CHECK_FILES_PRE= #
154_CHECK_FILES_PRE+= ${_CHECK_FILES_PRE.prefix} 154_CHECK_FILES_PRE+= ${_CHECK_FILES_PRE.prefix}
155.if empty(CHECK_FILES_STRICT:M[nN][oO]) 155.if empty(CHECK_FILES_STRICT:M[nN][oO])
156_CHECK_FILES_PRE+= ${_CHECK_FILES_PRE.sysconfdir} 156_CHECK_FILES_PRE+= ${_CHECK_FILES_PRE.sysconfdir}
157_CHECK_FILES_PRE+= ${_CHECK_FILES_PRE.varbase} 157_CHECK_FILES_PRE+= ${_CHECK_FILES_PRE.varbase}
158.endif 158.endif
159 159
160########################################################################### 160###########################################################################
161# _CHECK_FILES_POST holds the list of targets that are built as part of 161# _CHECK_FILES_POST holds the list of targets that are built as part of
162# building the check-files-post target. These targets should cause the 162# building the check-files-post target. These targets should cause the
163# "post" file lists to be generated. 163# "post" file lists to be generated.
164# 164#
165_CHECK_FILES_POST= # 165_CHECK_FILES_POST= #
166_CHECK_FILES_POST+= ${_CHECK_FILES_POST.prefix} 166_CHECK_FILES_POST+= ${_CHECK_FILES_POST.prefix}
167.if empty(CHECK_FILES_STRICT:M[nN][oO]) 167.if empty(CHECK_FILES_STRICT:M[nN][oO])
168_CHECK_FILES_POST+= ${_CHECK_FILES_POST.sysconfdir} 168_CHECK_FILES_POST+= ${_CHECK_FILES_POST.sysconfdir}
169_CHECK_FILES_POST+= ${_CHECK_FILES_POST.varbase} 169_CHECK_FILES_POST+= ${_CHECK_FILES_POST.varbase}
170.endif 170.endif
171 171
172.if empty(CHECK_FILES:M[nN][oO]) 172.if empty(CHECK_FILES:M[nN][oO])
173privileged-install-hook: check-files 173privileged-install-hook: check-files
174.endif 174.endif
175 175
176########################################################################### 176###########################################################################
177# check-files-pre and check-files-post targets and subtargets 177# check-files-pre and check-files-post targets and subtargets
178# 178#
179.PHONY: check-files-pre check-files-post 179.PHONY: check-files-pre check-files-post
180check-files-pre: check-files-pre-message ${_CHECK_FILES_PRE} 180check-files-pre: check-files-pre-message ${_CHECK_FILES_PRE}
181check-files-post: check-files-post-message ${_CHECK_FILES_POST} 181check-files-post: check-files-post-message ${_CHECK_FILES_POST}
182 182
183.PHONY: check-files-pre-message check-files-post-message 183.PHONY: check-files-pre-message check-files-post-message
184check-files-pre-message: 184check-files-pre-message:
185 @${STEP_MSG} "Generating pre-install file lists" 185 @${STEP_MSG} "Generating pre-install file lists"
186 186
187check-files-post-message: 187check-files-post-message:
188 @${STEP_MSG} "Generating post-install file lists" 188 @${STEP_MSG} "Generating post-install file lists"
189 189
190${_CHECK_FILES_PRE.prefix} ${_CHECK_FILES_POST.prefix}: 190${_CHECK_FILES_PRE.prefix} ${_CHECK_FILES_POST.prefix}:
191 ${RUN} \ 191 ${RUN} \
192 ${FIND} ${DESTDIR}${PREFIX}/. \( -type f -o -type l \) -print 2>/dev/null \ 192 ${FIND} ${DESTDIR}${PREFIX}/. \( -type f -o -type l \) -print 2>/dev/null \
193 | ${SED} -e 's,/\./,/,' \ 193 | ${SED} -e 's,/\./,/,' \
194 | ${_CHECK_FILES_SKIP_FILTER} \ 194 | ${_CHECK_FILES_SKIP_FILTER} \
195 | ${SORT} > ${.TARGET} \ 195 | ${SORT} > ${.TARGET} \
196 || ${TRUE} 196 || ${TRUE}
197 197
198${_CHECK_FILES_PRE.sysconfdir} ${_CHECK_FILES_POST.sysconfdir}: 198${_CHECK_FILES_PRE.sysconfdir} ${_CHECK_FILES_POST.sysconfdir}:
199 ${RUN} \ 199 ${RUN} \
200 ${FIND} ${DESTDIR}${PKG_SYSCONFDIR}/. -print 2>/dev/null \ 200 ${FIND} ${DESTDIR}${PKG_SYSCONFDIR}/. -print 2>/dev/null \
201 | ${SED} -e 's,/\./,/,' \ 201 | ${SED} -e 's,/\./,/,' \
202 | ${_CHECK_FILES_SKIP_FILTER} \ 202 | ${_CHECK_FILES_SKIP_FILTER} \
203 | ${SORT} > ${.TARGET} \ 203 | ${SORT} > ${.TARGET} \
204 || ${TRUE} 204 || ${TRUE}
205 205
206${_CHECK_FILES_PRE.varbase} ${_CHECK_FILES_POST.varbase}: 206${_CHECK_FILES_PRE.varbase} ${_CHECK_FILES_POST.varbase}:
207 ${RUN} \ 207 ${RUN} \
208 ${FIND} ${DESTDIR}${VARBASE}/. -print 2>/dev/null \ 208 ${FIND} ${DESTDIR}${VARBASE}/. -print 2>/dev/null \
209 | ${SED} -e 's,/\./,/,' \ 209 | ${SED} -e 's,/\./,/,' \
210 | ${_CHECK_FILES_SKIP_FILTER} \ 210 | ${_CHECK_FILES_SKIP_FILTER} \
211 | ${SORT} > ${.TARGET} \ 211 | ${SORT} > ${.TARGET} \
212 || ${TRUE} 212 || ${TRUE}
213 213
214########################################################################### 214###########################################################################
215# check-files targets and subtargets 215# check-files targets and subtargets
216# 216#
217.PHONY: check-files-prefix check-files-sysconfdir check-files-varbase 217.PHONY: check-files-prefix check-files-sysconfdir check-files-varbase
218check-files-prefix: ${_CHECK_FILES_ERRMSG.prefix} 218check-files-prefix: ${_CHECK_FILES_ERRMSG.prefix}
219check-files-sysconfdir: ${_CHECK_FILES_ERRMSG.sysconfdir} 219check-files-sysconfdir: ${_CHECK_FILES_ERRMSG.sysconfdir}
220check-files-varbase: ${_CHECK_FILES_ERRMSG.varbase} 220check-files-varbase: ${_CHECK_FILES_ERRMSG.varbase}
221 221
222# The check-files target looks at the cookie files generated by the 222# The check-files target looks at the cookie files generated by the
223# check-files-* subtargets, and if they are non-empty, then they 223# check-files-* subtargets, and if they are non-empty, then they
224# contain the error messages collected during the build of each 224# contain the error messages collected during the build of each
225# subtarget. 225# subtarget.
226# 226#
227.PHONY: check-files 227.PHONY: check-files
228.if !empty(CHECK_FILES_SUPPORTED:M[nN][oO]) 228.if !empty(CHECK_FILES_SUPPORTED:M[nN][oO])
229check-files: 229check-files:
230 @${DO_NADA} 230 @${DO_NADA}
231.else 231.else
232check-files: check-files-message ${_CHECK_FILES_ERRMSGS} error-check 232check-files: check-files-message ${_CHECK_FILES_ERRMSGS} error-check
233.endif 233.endif
234 234
235.PHONY: check-files-message 235.PHONY: check-files-message
236check-files-message: 236check-files-message:
237 @${STEP_MSG} "Checking file-check results for ${PKGNAME}" 237 @${STEP_MSG} "Checking file-check results for ${PKGNAME}"
238 238
239# Check ${PREFIX} for files which are not listed in the generated ${PLIST} 239# Check ${PREFIX} for files which are not listed in the generated ${PLIST}
240# and vice-versa. 240# and vice-versa.
241# 241#
242_CHECK_FILES_DIFF= ${WRKDIR}/.check_files_diff 242_CHECK_FILES_DIFF= ${WRKDIR}/.check_files_diff
243_CHECK_FILES_ADDED= ${WRKDIR}/.check_files_added 243_CHECK_FILES_ADDED= ${WRKDIR}/.check_files_added
244_CHECK_FILES_DELETED= ${WRKDIR}/.check_files_deleted 244_CHECK_FILES_DELETED= ${WRKDIR}/.check_files_deleted
245_CHECK_FILES_EXPECTED= ${WRKDIR}/.check_files_expected 245_CHECK_FILES_EXPECTED= ${WRKDIR}/.check_files_expected
246_CHECK_FILES_MISSING= ${WRKDIR}/.check_files_missing 246_CHECK_FILES_MISSING= ${WRKDIR}/.check_files_missing
247_CHECK_FILES_MISSING_SKIP= ${WRKDIR}/.check_files_missing_skip 247_CHECK_FILES_MISSING_SKIP= ${WRKDIR}/.check_files_missing_skip
248_CHECK_FILES_MISSING_REAL= ${WRKDIR}/.check_files_missing_real 248_CHECK_FILES_MISSING_REAL= ${WRKDIR}/.check_files_missing_real
249_CHECK_FILES_EXTRA= ${WRKDIR}/.check_files_extra 249_CHECK_FILES_EXTRA= ${WRKDIR}/.check_files_extra
250 250
251${_CHECK_FILES_DIFF}: ${_CHECK_FILES_PRE.prefix} ${_CHECK_FILES_POST.prefix} 251${_CHECK_FILES_DIFF}: ${_CHECK_FILES_PRE.prefix} ${_CHECK_FILES_POST.prefix}
252 ${RUN} \ 252 ${RUN} \
253 ${DIFF} -u ${_CHECK_FILES_PRE.prefix} \ 253 ${DIFF} -u ${_CHECK_FILES_PRE.prefix} \
254 ${_CHECK_FILES_POST.prefix} \ 254 ${_CHECK_FILES_POST.prefix} \
255 > ${.TARGET} || ${TRUE} 255 > ${.TARGET} || ${TRUE}
256 256
257${_CHECK_FILES_ADDED}: ${_CHECK_FILES_DIFF} 257${_CHECK_FILES_ADDED}: ${_CHECK_FILES_DIFF}
258 ${RUN} \ 258 ${RUN} \
259 ${GREP} '^+/' ${_CHECK_FILES_DIFF} | ${SED} "s|^+||" | ${SORT} \ 259 ${GREP} '^+/' ${_CHECK_FILES_DIFF} | ${SED} "s|^+||" | ${SORT} \
260 > ${.TARGET} 260 > ${.TARGET}
261 261
262${_CHECK_FILES_DELETED}: ${_CHECK_FILES_DIFF} 262${_CHECK_FILES_DELETED}: ${_CHECK_FILES_DIFF}
263 ${RUN} \ 263 ${RUN} \
264 ${GREP} '^-/' ${_CHECK_FILES_DIFF} | ${SED} "s|^-||" | ${SORT} \ 264 ${GREP} '^-/' ${_CHECK_FILES_DIFF} | ${SED} "s|^-||" | ${SORT} \
265 > ${.TARGET} 265 > ${.TARGET}
266 266
267${_CHECK_FILES_EXPECTED}: plist 267${_CHECK_FILES_EXPECTED}: plist
268 ${RUN} \ 268 ${RUN} \
269 ${GREP} '^[^@]' ${PLIST} | ${SED} "s|^|${DESTDIR}${PREFIX}/|" | ${SORT} \ 269 ${GREP} '^[^@]' ${PLIST} | ${SED} "s|^|${DESTDIR}${PREFIX}/|" | ${SORT} \
270 > ${.TARGET} 270 > ${.TARGET}
271 271
272${_CHECK_FILES_MISSING}: ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED} 272${_CHECK_FILES_MISSING}: ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED}
273 ${RUN} \ 273 ${RUN} \
274 ${DIFF} -u ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED} | \ 274 ${DIFF} -u ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED} | \
275 ${GREP} '^-[^-]' | ${SED} "s|^-||" | \ 275 ${GREP} '^-[^-]' | ${SED} "s|^-||" | \
276 while read file; do \ 276 while read file; do \
277 ${TEST} -f "$$file" -o -h "$$file" || ${ECHO} "$$file"; \ 277 ${TEST} -f "$$file" -o -h "$$file" || ${ECHO} "$$file"; \
278 done > ${.TARGET} 278 done > ${.TARGET}
279 279
280${_CHECK_FILES_MISSING_REAL}: ${_CHECK_FILES_MISSING} 280${_CHECK_FILES_MISSING_REAL}: ${_CHECK_FILES_MISSING}
281 ${RUN} \ 281 ${RUN} \
282 ${_CHECK_FILES_SKIP_FILTER} < ${_CHECK_FILES_MISSING} \ 282 ${_CHECK_FILES_SKIP_FILTER} < ${_CHECK_FILES_MISSING} \
283 > ${.TARGET} || ${TRUE} 283 > ${.TARGET} || ${TRUE}
284 284
285${_CHECK_FILES_MISSING_SKIP}: \ 285${_CHECK_FILES_MISSING_SKIP}: \
286 ${_CHECK_FILES_MISSING} \ 286 ${_CHECK_FILES_MISSING} \
287 ${_CHECK_FILES_MISSING_REAL} 287 ${_CHECK_FILES_MISSING_REAL}
288 ${RUN} \ 288 ${RUN} \
289 ${DIFF} -u ${_CHECK_FILES_MISSING} \ 289 ${DIFF} -u ${_CHECK_FILES_MISSING} \
290 ${_CHECK_FILES_MISSING_REAL} | \ 290 ${_CHECK_FILES_MISSING_REAL} | \
291 ${GREP} '^-[^-]' | ${SED} "s|^-||" \ 291 ${GREP} '^-[^-]' | ${SED} "s|^-||" \
292 > ${.TARGET} 292 > ${.TARGET}
293 293
294${_CHECK_FILES_EXTRA}: ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED} 294${_CHECK_FILES_EXTRA}: ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED}
295 ${RUN} \ 295 ${RUN} \
296 ${DIFF} -u ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED} | \ 296 ${DIFF} -u ${_CHECK_FILES_EXPECTED} ${_CHECK_FILES_ADDED} | \
297 ${GREP} '^+[^+]' | ${SED} "s|^+||" | \ 297 ${GREP} '^+[^+]' | ${SED} "s|^+||" | \
298 while read file; do \ 298 while read file; do \
299 ${TEST} ! -f "$$file" -a ! -h "$$file" || ${ECHO} "$$file"; \ 299 ${TEST} ! -f "$$file" -a ! -h "$$file" || ${ECHO} "$$file"; \
300 done > ${.TARGET} 300 done > ${.TARGET}
301 301
302${_CHECK_FILES_ERRMSG.prefix}: \ 302${_CHECK_FILES_ERRMSG.prefix}: \
303 ${_CHECK_FILES_DELETED} \ 303 ${_CHECK_FILES_DELETED} \
304 ${_CHECK_FILES_MISSING} \ 304 ${_CHECK_FILES_MISSING} \
305 ${_CHECK_FILES_MISSING_REAL} \ 305 ${_CHECK_FILES_MISSING_REAL} \
306 ${_CHECK_FILES_MISSING_SKIP} \ 306 ${_CHECK_FILES_MISSING_SKIP} \
307 ${_CHECK_FILES_EXTRA} 307 ${_CHECK_FILES_EXTRA}
308 ${RUN} \ 308 ${RUN} \
309 ${RM} -f ${.TARGET}; \ 309 ${RM} -f ${.TARGET}; \
310 if [ -s ${_CHECK_FILES_DELETED} ]; then \ 310 if [ -s ${_CHECK_FILES_DELETED} ]; then \
311 ${ECHO} "The following files have been deleted" \ 311 ${ECHO} "The following files have been deleted" \
312 "from ${PREFIX}!"; \ 312 "from ${PREFIX}!"; \
313 ${SED} "s|^| |" ${_CHECK_FILES_DELETED}; \ 313 ${SED} "s|^| |" ${_CHECK_FILES_DELETED}; \
314 fi >> ${.TARGET}; \ 314 fi >> ${.TARGET}; \
315 if [ -s ${_CHECK_FILES_MISSING_REAL} ]; then \ 315 if [ -s ${_CHECK_FILES_MISSING_REAL} ]; then \
316 ${ECHO} "************************************************************"; \ 316 ${ECHO} "************************************************************"; \
317 ${ECHO} "The following files are in the" \ 317 ${ECHO} "The following files are in the" \
318 "PLIST but not in ${DESTDIR}${PREFIX}:"; \ 318 "PLIST but not in ${DESTDIR}${PREFIX}:"; \
319 ${SED} "s|^| |" ${_CHECK_FILES_MISSING_REAL}; \ 319 ${SED} "s|^| |" ${_CHECK_FILES_MISSING_REAL}; \
320 fi >> ${.TARGET}; \ 320 fi >> ${.TARGET}; \
321 if [ -s ${_CHECK_FILES_EXTRA} ]; then \ 321 if [ -s ${_CHECK_FILES_EXTRA} ]; then \
322 ${ECHO} "************************************************************"; \ 322 ${ECHO} "************************************************************"; \
323 ${ECHO} "The following files are in" \ 323 ${ECHO} "The following files are in" \
324 "${DESTDIR}${PREFIX} but not in the PLIST:"; \ 324 "${DESTDIR}${PREFIX} but not in the PLIST:"; \
325 ${SED} "s|^| |" ${_CHECK_FILES_EXTRA}; \ 325 ${SED} "s|^| |" ${_CHECK_FILES_EXTRA}; \
326 fi >> ${.TARGET}; \ 326 fi >> ${.TARGET}; \
327 if [ -s ${_CHECK_FILES_MISSING_SKIP} ]; then \ 327 if [ -s ${_CHECK_FILES_MISSING_SKIP} ]; then \
328 ${ECHO} "************************************************************"; \ 328 ${ECHO} "************************************************************"; \
329 ${ECHO} "The following files are in both the" \ 329 ${ECHO} "The following files are in both the" \
330 "PLIST and CHECK_FILES_SKIP:"; \ 330 "PLIST and CHECK_FILES_SKIP:"; \
331 ${SED} "s|^| |" ${_CHECK_FILES_MISSING_SKIP}; \ 331 ${SED} "s|^| |" ${_CHECK_FILES_MISSING_SKIP}; \
332 fi >> ${.TARGET} 332 fi >> ${.TARGET}
333 333
334# Check ${PKG_SYSCONFDIR} for files which are not in the PLIST and are 334# Check ${PKG_SYSCONFDIR} for files which are not in the PLIST and are
335# also not copied into place by the INSTALL scripts.  335# also not copied into place by the INSTALL scripts.
336# 336#
337${_CHECK_FILES_ERRMSG.sysconfdir}: \ 337${_CHECK_FILES_ERRMSG.sysconfdir}: \
338 ${_CHECK_FILES_PRE.sysconfdir} \ 338 ${_CHECK_FILES_PRE.sysconfdir} \
339 ${_CHECK_FILES_POST.sysconfdir} 339 ${_CHECK_FILES_POST.sysconfdir}
340 ${RUN} \ 340 ${RUN} \
341 if ${CMP} -s ${_CHECK_FILES_PRE.sysconfdir} \ 341 if ${CMP} -s ${_CHECK_FILES_PRE.sysconfdir} \
342 ${_CHECK_FILES_POST.sysconfdir}; then \ 342 ${_CHECK_FILES_POST.sysconfdir}; then \
343 ${DO_NADA}; \ 343 ${TRUE}; \
344 else \ 344 else \
345 ${ECHO} "************************************************************"; \ 345 ${ECHO} "************************************************************"; \
346 ${ECHO} "The package has modified ${PKG_SYSCONFDIR}" \ 346 ${ECHO} "The package has modified ${PKG_SYSCONFDIR}" \
347 "contents directly!"; \ 347 "contents directly!"; \
348 ${ECHO} " The offending files/directories are:"; \ 348 ${ECHO} " The offending files/directories are:"; \
349 ${DIFF} -u ${_CHECK_FILES_PRE.sysconfdir} \ 349 ${DIFF} -u ${_CHECK_FILES_PRE.sysconfdir} \
350 ${_CHECK_FILES_POST.sysconfdir} | \ 350 ${_CHECK_FILES_POST.sysconfdir} | \
351 ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \ 351 ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \
352 fi > ${.TARGET} 352 fi > ${.TARGET}
353 353
354# Check ${VARBASE} for files which are not in the PLIST and are also 354# Check ${VARBASE} for files which are not in the PLIST and are also
355# not created by the INSTALL scripts. 355# not created by the INSTALL scripts.
356# 356#
357${_CHECK_FILES_ERRMSG.varbase}: \ 357${_CHECK_FILES_ERRMSG.varbase}: \
358 ${_CHECK_FILES_PRE.varbase} \ 358 ${_CHECK_FILES_PRE.varbase} \
359 ${_CHECK_FILES_POST.varbase} 359 ${_CHECK_FILES_POST.varbase}
360 ${RUN} \ 360 ${RUN} \
361 if ${CMP} -s ${_CHECK_FILES_PRE.varbase} \ 361 if ${CMP} -s ${_CHECK_FILES_PRE.varbase} \
362 ${_CHECK_FILES_POST.varbase}; then \ 362 ${_CHECK_FILES_POST.varbase}; then \
363 ${DO_NADA}; \ 363 ${TRUE}; \
364 else \ 364 else \
365 ${ECHO} "************************************************************"; \ 365 ${ECHO} "************************************************************"; \
366 ${ECHO} "The package has modified ${VARBASE}" \ 366 ${ECHO} "The package has modified ${VARBASE}" \
367 "contents directly!"; \ 367 "contents directly!"; \
368 ${ECHO} " The offending files/directories are:"; \ 368 ${ECHO} " The offending files/directories are:"; \
369 ${DIFF} -u ${_CHECK_FILES_PRE.varbase} \ 369 ${DIFF} -u ${_CHECK_FILES_PRE.varbase} \
370 ${_CHECK_FILES_POST.varbase} | \ 370 ${_CHECK_FILES_POST.varbase} | \
371 ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \ 371 ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \
372 fi > ${.TARGET} 372 fi > ${.TARGET}
373 373
374########################################################################### 374###########################################################################
375# check-files-clean removes the state files related to the "check-files" 375# check-files-clean removes the state files related to the "check-files"
376# target so that the check-files-{pre,post} targets may be re-run. 376# target so that the check-files-{pre,post} targets may be re-run.
377# 377#
378.PHONY: check-files-clean 378.PHONY: check-files-clean
379check-clean: check-files-clean 379check-clean: check-files-clean
380check-files-clean: 380check-files-clean:
381 ${RUN} \ 381 ${RUN} \
382 ${RM} -f ${_CHECK_FILES_ERRMSGS} \ 382 ${RM} -f ${_CHECK_FILES_ERRMSGS} \
383 ${_CHECK_FILES_PRE} ${_CHECK_FILES_POST} \ 383 ${_CHECK_FILES_PRE} ${_CHECK_FILES_POST} \
384 ${_CHECK_FILES_DIFF} ${_CHECK_FILES_ADDED} \ 384 ${_CHECK_FILES_DIFF} ${_CHECK_FILES_ADDED} \
385 ${_CHECK_FILES_DELETED} ${_CHECK_FILES_EXPECTED} \ 385 ${_CHECK_FILES_DELETED} ${_CHECK_FILES_EXPECTED} \
386 ${_CHECK_FILES_MISSING} ${_CHECK_FILES_MISSING_SKIP} \ 386 ${_CHECK_FILES_MISSING} ${_CHECK_FILES_MISSING_SKIP} \
387 ${_CHECK_FILES_MISSING_REAL} ${_CHECK_FILES_EXTRA} 387 ${_CHECK_FILES_MISSING_REAL} ${_CHECK_FILES_EXTRA}