| @@ -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 | |
32 | CHECK_FILES?= yes | | 32 | CHECK_FILES?= yes |
33 | CHECK_FILES_STRICT?= no | | 33 | CHECK_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) |
37 | CHECK_FILES_SKIP+= ${PREFIX}/.*/dir | | 37 | CHECK_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 | # |
43 | CHECK_FILES_SKIP+= ${PERL5_INSTALLARCHLIB}/perllocal.pod | | 43 | CHECK_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 | # |
48 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/packages.html | | 48 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/packages.html |
49 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/search/index.txt | | 49 | CHECK_FILES_SKIP+= ${PREFIX}/lib/R/doc/html/search/index.txt |
50 | | | 50 | |
51 | CHECK_FILES_SKIP+= ${PKG_DBDIR}/.* | | 51 | CHECK_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 | # |
56 | CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc.* | | 56 | CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc.* |
57 | CHECK_FILES_SKIP+= ${PREFIX}/emul/linux32/proc.* | | 57 | CHECK_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. |
60 | CHECK_FILES_SKIP+= ${PKG_DBDIR}.refcount.* | | 60 | CHECK_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}. |
63 | CHECK_FILES_SKIP+= ${PACKAGES}/.* | | 63 | CHECK_FILES_SKIP+= ${PACKAGES}/.* |
64 | CHECK_FILES_SKIP+= ${DISTDIR}/.* | | 64 | CHECK_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]) |
68 | CHECK_FILES_SKIP+= ${VARBASE}/.* | | 68 | CHECK_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} |
75 | CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.* | | 75 | CHECK_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_}} |
80 | CHECK_FILES_SKIP+= ${d:C/^([^\/])/${PREFIX}\/\1/}.* | | 80 | CHECK_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*)) |
87 | CHECK_FILES_SKIP+= ${PREFIX}/.*/encodings.dir | | 87 | CHECK_FILES_SKIP+= ${PREFIX}/.*/encodings.dir |
88 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.dir | | 88 | CHECK_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*)) |
92 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.scale | | 92 | CHECK_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*)) |
97 | CHECK_FILES_SKIP+= ${PREFIX}/.*/fonts.cache-1 | | 97 | CHECK_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]) |
102 | CHECK_FILES_SKIP+= ${PREFIX}/share/icons/.*/icon-theme.cache | | 102 | CHECK_FILES_SKIP+= ${PREFIX}/share/icons/.*/icon-theme.cache |
103 | .endif | | 103 | .endif |
104 | | | 104 | |
105 | # Mutable charset.alias file | | 105 | # Mutable charset.alias file |
106 | CHECK_FILES_SKIP+= ${PREFIX}/lib/charset.alias | | 106 | CHECK_FILES_SKIP+= ${PREFIX}/lib/charset.alias |
107 | | | 107 | |
108 | # Mutable locale.alias file | | 108 | # Mutable locale.alias file |
109 | CHECK_FILES_SKIP+= ${PREFIX}/share/locale/locale.alias | | 109 | CHECK_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]) |
173 | privileged-install-hook: check-files | | 173 | privileged-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 |
180 | check-files-pre: check-files-pre-message ${_CHECK_FILES_PRE} | | 180 | check-files-pre: check-files-pre-message ${_CHECK_FILES_PRE} |
181 | check-files-post: check-files-post-message ${_CHECK_FILES_POST} | | 181 | check-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 |
184 | check-files-pre-message: | | 184 | check-files-pre-message: |
185 | @${STEP_MSG} "Generating pre-install file lists" | | 185 | @${STEP_MSG} "Generating pre-install file lists" |
186 | | | 186 | |
187 | check-files-post-message: | | 187 | check-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 |
218 | check-files-prefix: ${_CHECK_FILES_ERRMSG.prefix} | | 218 | check-files-prefix: ${_CHECK_FILES_ERRMSG.prefix} |
219 | check-files-sysconfdir: ${_CHECK_FILES_ERRMSG.sysconfdir} | | 219 | check-files-sysconfdir: ${_CHECK_FILES_ERRMSG.sysconfdir} |
220 | check-files-varbase: ${_CHECK_FILES_ERRMSG.varbase} | | 220 | check-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]) |
229 | check-files: | | 229 | check-files: |
230 | @${DO_NADA} | | 230 | @${DO_NADA} |
231 | .else | | 231 | .else |
232 | check-files: check-files-message ${_CHECK_FILES_ERRMSGS} error-check | | 232 | check-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 |
236 | check-files-message: | | 236 | check-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 |
379 | check-clean: check-files-clean | | 379 | check-clean: check-files-clean |
380 | check-files-clean: | | 380 | check-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} |