Wed Oct 21 18:00:00 2009 UTC ()
revert previous - better do a bulk build with this change first to see
if/how much stuff is dependent on it.


(tnn)
diff -r1.25 -r1.26 pkgsrc/mk/check/check-files.mk

cvs diff -r1.25 -r1.26 pkgsrc/mk/check/check-files.mk (switch to unified diff)

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