| @@ -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) |
33 | CHECK_FILES?= yes | | 33 | CHECK_FILES?= yes |
34 | .endif | | 34 | .endif |
35 | CHECK_FILES?= no | | 35 | CHECK_FILES?= no |
36 | CHECK_FILES_STRICT?= no | | 36 | CHECK_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) |
40 | CHECK_FILES_SKIP+= ${PREFIX}/.*/dir | | 40 | CHECK_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 | # |
46 | CHECK_FILES_SKIP+= ${PERL5_INSTALLARCHLIB}/perllocal.pod | | 46 | CHECK_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 | # |
51 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/packages.html | | 51 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/packages.html |
52 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/search/index.txt | | 52 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/search/index.txt |
53 | | | 53 | |
54 | CHECK_FILES_SKIP+= ${PKG_DBDIR}/.* | | 54 | CHECK_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 | # |
59 | CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc.* | | 59 | CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc.* |
60 | CHECK_FILES_SKIP+= ${PREFIX}/emul/linux32/proc.* | | 60 | CHECK_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. |
63 | CHECK_FILES_SKIP+= ${PKG_DBDIR}.refcount.* | | 63 | CHECK_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}. |
66 | CHECK_FILES_SKIP+= ${PACKAGES}/.* | | 66 | CHECK_FILES_SKIP+= ${PACKAGES}/.* |
67 | CHECK_FILES_SKIP+= ${DISTDIR}/.* | | 67 | CHECK_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]) |
71 | CHECK_FILES_SKIP+= ${VARBASE}/.* | | 71 | CHECK_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} |
78 | CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.* | | 78 | CHECK_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} |
81 | CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.* | | 81 | CHECK_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*)) |
86 | CHECK_FILES_SKIP+= ${PREFIX}/.*/encodings.dir | | 86 | CHECK_FILES_SKIP+= ${PREFIX}/.*/encodings.dir |
87 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.dir | | 87 | CHECK_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*)) |
91 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.scale | | 91 | CHECK_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*)) |
96 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.cache-1 | | 96 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.cache-1 |
97 | .endif | | 97 | .endif |
98 | | | 98 | |
| | | 99 | # Mutable charset.alias file |
| | | 100 | CHECK_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]) |
161 | privileged-install-hook: check-files | | 164 | privileged-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 |
168 | check-files-pre: ${_CHECK_FILES_PRE} | | 171 | check-files-pre: ${_CHECK_FILES_PRE} |
169 | check-files-post: ${_CHECK_FILES_POST} | | 172 | check-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 |
172 | check-files-pre-message: | | 175 | check-files-pre-message: |
173 | @${STEP_MSG} "Generating pre-install file lists" | | 176 | @${STEP_MSG} "Generating pre-install file lists" |
174 | | | 177 | |
175 | check-files-post-message: | | 178 | check-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 |
206 | check-files-prefix: ${_CHECK_FILES_ERRMSG.prefix} | | 209 | check-files-prefix: ${_CHECK_FILES_ERRMSG.prefix} |
207 | check-files-sysconfdir: ${_CHECK_FILES_ERRMSG.sysconfdir} | | 210 | check-files-sysconfdir: ${_CHECK_FILES_ERRMSG.sysconfdir} |
208 | check-files-varbase: ${_CHECK_FILES_ERRMSG.varbase} | | 211 | check-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]) |
217 | check-files: | | 220 | check-files: |
218 | @${DO_NADA} | | 221 | @${DO_NADA} |
219 | .else | | 222 | .else |
220 | check-files: check-files-message ${_CHECK_FILES_ERRMSGS} error-check | | 223 | check-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 |
224 | check-files-message: | | 227 | check-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 |
370 | check-clean: check-files-clean | | 373 | check-clean: check-files-clean |
371 | check-files-clean: | | 374 | check-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} |