1# $OpenBSD: Makefile,v 1.89 2023/10/23 08:38:58 espie Exp $ 2 3REGRESS_TARGETS=pkgnames pkgpaths signatures depends-check longnames pkgcfl \ 4 collision-check1 collision-check2 collision-check3 \ 5 collision-check4 collision-check5 collision-check6 \ 6 collision-check7 \ 7 update-check1 partial-update-test conflict-update \ 8 merge-update split-update big-merge family-circus missing \ 9 lib-report1 lib-report2 lib-report3 loop1 \ 10 lib-report4 lib-report5 lib-report6 lib-report7 \ 11 qttest gstest exotest inter1 manual1 oldlib1 \ 12 usertest-1 usertest-2 usertest-3 cups-bug nettle-bug \ 13 tying-1 tying-2 tag-delete setsprint temp-error1 \ 14 temp-error2 temp-error2-as-root temp-error3 temp-error4 \ 15 cksum-error system-version XXX-warning symlink no-symlink \ 16 oldlib2 17 18REGRESS_ROOT_TARGETS = temp-error2-as-root 19 20# lots of tests that really require a vstat overhaul 21REGRESS_EXPECTED_FAILURES = collision-check1 collision-check2 \ 22 collision-check5 collision-check6 collision-check7 \ 23 exotest tying-2 24 25PERLSCRIPT = perl -I ${.CURDIR} ${.CURDIR} 26 27WAVE_PLIST=-DREGRESSION_TESTING+=plist_checks 28STUB=-DREGRESSION_TESTING+=stub 29 30ADD_PKG = ${PERLSCRIPT}/my add -Dchecksum 31DELETE_PKG = ${PERLSCRIPT}/my delete -Dchecksum 32INFO_PKG = ${PERLSCRIPT}/my info 33CREATE_PKG = ${PERLSCRIPT}/mycreate 34MKPLIST = ${PERLSCRIPT}/mkplist 35POPULATE = ${PERLSCRIPT}/populate 36EMPTY = -f /dev/null 37 38# a lot of packages are populate/create_pkg with the same parameters. 39WITH = set -A args -- 40CPKG = ; ${POPULATE} $${args[@]}; ${CREATE_PKG} $${args[@]} 41 42LONG1 = iamareallongfilenamethatcantberepresentedcorrectlyinatararchivebutwewantittohappenanywaysohmygodaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa42 43LONG2 = iamanotherreallygfilenamethatcantberepresentedcorrectlyinatararchivebutwewantittohappenanywaysohmygodaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa42 44LONG3 = iamanotherreallylonglinkthatcantberepresentedcorrectlyinatararchivebutwewantittohappenanywaysohmygodaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa42 45LONG4 = iamanotherreallylonghardlinkthatcantberepresentedcorrectlyinatararchivebutwewantittohappenanywaysohmygodaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa42 46 47NUMBERS != jot 50 48.for i in ${NUMBERS} 49S$i ?= ${.OBJDIR}/src$i 50SRC$i ?= ${S$i}/usr/local 51D$i ?= ${.OBJDIR}/dest$i 52DEST$i ?= ${D$i}/usr/local 53.endfor 54 55# current maxes (used): D49, SRC30, plist27, rep7 56pkgnames: 57 ${PERLSCRIPT}/check-name 58 59pkgcfl: 60 ${PERLSCRIPT}/check-cfl 61 62setsprint: 63 ${PERLSCRIPT}/check-beautify 64 65pkgpaths: 66 ${PERLSCRIPT}/check-path 67 68signatures: 69 -rm -f signatures.out 70 ${PERLSCRIPT}/check-sig 2>signatures.out 71 diff -u signatures.out ${.CURDIR}/signatures.ref 72 73depends-check: rep0/a-0.tgz rep0/b-0.tgz rep1/a-1.tgz rep1/b-1.tgz 74 @-rm -rf ${D1} 75 @ROOT=${D1} ${ADD_PKG} rep0/a-0.tgz rep0/b-0.tgz 76 @ROOT=${D1} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u a b 77 @ROOT=${D1} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} -D downgrade -u a b 78 79longnames: rep1/c-0.tgz 80 @-rm -rf ${D2} 81 @ROOT=${D2} ${ADD_PKG} rep1/c-0.tgz 82 @test -f ${DEST2}/${LONG1} 83 @test -f ${DEST2}/${LONG2} 84 @cd ${DEST2} && test -h ${LONG3} && test `readlink ${LONG3}` = ${LONG2} 85 @cd ${DEST2} && test `stat -f '%i' ${LONG1}` = `stat -f '%i' ${LONG4}` 86 87collision-check1: rep1/d-0.tgz rep1/e-0.tgz 88 @-rm -rf ${D3} 89 @ROOT=${D3} ${ADD_PKG} rep1/d-0.tgz 90 @ROOT=${D3} ${ADD_PKG} rep1/e-0.tgz 91 92collision-check2: rep1/d-0.tgz rep1/e-0.tgz 93 @-rm -rf ${D4} 94 @ROOT=${D4} ${ADD_PKG} rep1/d-0.tgz 95 @-rm -rf ${D4}/pkgdb/d-0 96 @ROOT=${D4} ${ADD_PKG} -I rep1/e-0.tgz 97 98collision-check3: rep1/d-0.tgz rep1/f-0.tgz 99 @-rm -rf ${D5} 100 @ROOT=${D5} ${ADD_PKG} rep1/d-0.tgz rep1/f-0.tgz 101 @-rm -rf ${D5}/pkgdb/d-0 102 @ROOT=${D5} ${ADD_PKG} -D repair rep1/d-0.tgz 103 PKG_DBDIR=${D5}/pkgdb pkg_info -qR d 104 105collision-check4: rep1/d-0.tgz rep1/e-0.tgz 106 @-rm -rf ${D6} 107 @ROOT=${D6} ${ADD_PKG} rep1/d-0.tgz 108 @-rm -rf ${D6}/pkgdb/d-0 109 @ROOT=${D6} ${ADD_PKG} -D repair rep1/e-0.tgz 110 111collision-check5: rep1/d-0.tgz rep1/e-0.tgz 112 @-rm -rf ${D21} 113 @ROOT=${D21} ${ADD_PKG} -n rep1/d-0.tgz rep1/e-0.tgz 114 115collision-check6: rep1/d-0.tgz rep1/e-0.tgz 116 @-rm -rf ${D7} 117 @ROOT=${D7} ${ADD_PKG} rep1/d-0.tgz 118 @-rm -rf ${D7}/pkgdb/d-0 119 @ROOT=${D7} ${ADD_PKG} -D removecollisions rep1/d-0.tgz 120 121collision-check7: rep0/cola-0.tgz rep1/cola-1.tgz rep1/colb-0.tgz 122 @-rm -rf ${D32} 123 @ROOT=${D32} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} cola-0 124 @ROOT=${D32} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -r cola-1 125 126update-check1: rep0/g-0.tgz rep1/g-0.tgz rep0/ga-0.tgz rep1/ga-0.tgz \ 127 rep0/gb-0.tgz rep1/gb-0p0.tgz rep0/gc-0.tgz rep1/gc-0.tgz \ 128 rep0/gd-0.tgz rep1/gd-1.tgz rep0/ge-0.tgz rep1/ge-1.tgz \ 129 rep0/gf-1.tgz rep1/gf-0.tgz rep0/gg-0.tgz rep1/gg-0.tgz 130 @-rm -rf ${D8} 131 @ROOT=${D8} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} g ga gb gc gd ge gf gg 132 @-ROOT=${D8} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -Iu 133 @PKG_DBDIR=${D8}/pkgdb pkg_info |diff - ${.CURDIR}/list7.out 134 @ROOT=${D8} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u -Dupdate_gd 135 @PKG_DBDIR=${D8}/pkgdb pkg_info |diff - ${.CURDIR}/list8.out 136 137list-check: rep1/a-1.tgz rep1/b-1.tgz rep1/c-0.tgz rep1/d-0.tgz \ 138 rep1/e-0.tgz rep1/f-0.tgz rep1/g-0.tgz 139 @-rm -rf ${D9} 140 @ROOT=${D9} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -l ${.CURDIR}/list 141 @PKG_DBDIR=${D9}/pkgdb pkg_info -q|diff - ${.CURDIR}/list.out 142 143partial-update-test: rep0/h-0.tgz rep0/i-0.tgz rep0/j-0.tgz \ 144 rep1/h-1.tgz rep1/i-1.tgz rep1/j-1.tgz 145 @-rm -rf ${D10} 146 @ROOT=${D10} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} h j 147 @ROOT=${D10} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u h 148 @PKG_DBDIR=${D10}/pkgdb pkg_info -q|diff - ${.CURDIR}/list2.out 149 150conflict-update: rep0/k-0.tgz rep0/l-0.tgz rep1/k-1.tgz rep1/l-1.tgz 151 @-rm -rf ${D11} 152 @ROOT=${D11} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} k l 153 @ROOT=${D11} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u k 154 @PKG_DBDIR=${D11}/pkgdb pkg_info -q|diff - ${.CURDIR}/list3.out 155 156merge-update: rep0/m-0.tgz rep0/n-0.tgz rep1/m-1.tgz rep1/n-1.tgz 157 @-rm -rf ${D12} 158 @ROOT=${D12} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} m n 159 @ROOT=${D12} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u n 160 @PKG_DBDIR=${D12}/pkgdb pkg_info -q|diff - ${.CURDIR}/list4.out 161 162split-update: rep0/o-0.tgz rep1/o-1.tgz rep1/p-0.tgz 163 @-rm -rf ${D13} 164 @ROOT=${D13} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o 165 @ROOT=${D13} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u o 166 @PKG_DBDIR=${D13}/pkgdb pkg_info -q |diff - ${.CURDIR}/list5.out 167 168big-merge: rep0/q1-0.tgz rep0/q2-0.tgz rep0/q3-0.tgz rep0/q4-0.tgz \ 169 rep0/q5-0.tgz rep0/q6-0.tgz rep1/q5-1.tgz rep1/q6-1.tgz \ 170 rep1/q1-1.tgz rep1/q2-1.tgz rep1/q3-1.tgz rep1/q4-1.tgz 171 @-rm -rf ${D14} 172 @ROOT=${D14} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} q1 q2 q3 q4 q5 q6 173 @ROOT=${D14} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -x -D update -u 2>&1 |fgrep XXX|fgrep -v @|diff - ${.CURDIR}/list6.out 174 175family-circus: rep0/glib-0.tgz rep0/fam-0.tgz rep1/fam-1.tgz rep1/glib-1.tgz rep1/gamin-0.tgz 176 @-rm -rf ${D15} 177 @ROOT=${D15} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} glib 178 @ROOT=${D15} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u glib 179 180missing: rep1/missa-0.tgz rep1/missb-0.tgz rep1/missc-0.tgz rep1/missd-0.tgz rep1/missf-0.tgz 181 @-rm -rf ${D16} 182 @ROOT=${D16} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} missc 183 @-ROOT=${D15} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} missa missb missf 184 185lib-report1: rep0/o1-0.tgz rep1/o1-1.tgz rep1/p1-0.tgz 186 @-rm -rf ${D17} 187 @ROOT=${D17} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o1 188 -@ROOT=${D17} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u o1 189 190lib-report2: rep0/o2-0.tgz rep1/o2-1.tgz rep1/p2-0.tgz 191 @-rm -rf ${D18} 192 @ROOT=${D18} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o2 193 -@ROOT=${D18} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u o2 194 195lib-report3: rep0/o3-0.tgz 196 @-rm -rf ${D19} 197 -@ROOT=${D19} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o3 198 199lib-report4: rep0/o4-0.tgz rep0/p4-0.tgz 200 @-rm -rf ${D22} 201 -@ROOT=${D22} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o4 202 203lib-report5: rep0/o5-0.tgz rep0/p4-0.tgz 204 @-rm -rf ${D23} 205 -@ROOT=${D23} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o5 206 207lib-report6: rep0/o6-0.tgz rep0/p4-0.tgz rep0/oo6-0.tgz 208 @-rm -rf ${D24} 209 -@ROOT=${D24} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o6 oo6 210 211lib-report7: rep0/o7-0.tgz rep0/p4-0.tgz 212 @-rm -rf ${D25} 213 -@ROOT=${D25} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} o7 214 215oldlib1: rep0/ol-0.tgz rep1/ol-1.tgz 216 @-rm -rf ${D33} 217 -@ROOT=${D33} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} ol 218 -@ROOT=${D33} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u ol 219 @ROOT=${D33} ${INFO_PKG} -f .libs-ol-0|grep '^lib/subdir/$$' 220 221loop1: rep0/ocaml-3.11.1.tgz rep0/tcl-8.5.7.tgz rep0/tk-8.5.7.tgz 222 @-rm -rf ${D20} 223 -@ROOT=${D20} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} -z ocaml-3.11.1p0 tcl-8.5.8 tk-8.5.8 224 225qttest: rep0/qt-0.tgz rep1/qt-1.tgz 226 @-rm -rf ${D26} 227 @ROOT=${D26} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} qt 228 @ROOT=${D26} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u qt 229 230gstest: rep0/gs-0.tgz rep0/gs-0-no_x11.tgz rep0/purple-0.tgz 231 @-rm -rf ${D27} 232 -@ROOT=${D27} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} purple-0 233 @if ROOT=${D27} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} -rI gs-0-no_x11; then exit 1; fi 234 235exotest: rep0/exo-0.tgz rep1/exo-1.tgz 236 @-rm -rf ${D28} 237 @ROOT=${D28} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} exo 238 @ROOT=${D28} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -Iu exo 239 240thunarvfstest: rep0/thunar-0.tgz rep0/q-0.tgz rep1/thunar-vfs-1.tgz rep1/q-1.tgz rep1/thunar-1.tgz 241 @-rm -rf ${D29} 242 @ROOT=${D29} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} q 243 @ROOT=${D29} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u q 244 245# test for manual install 246manual1: rep0/ma-0.tgz rep0/mb-0.tgz rep0/mc-0.tgz rep0/md-0.tgz \ 247 rep1/ma-1.tgz rep1/mb-1.tgz rep1/me-1.tgz rep1/md-1.tgz 248 @-rm -rf ${D30} 249 @ROOT=${D30} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} md mb 250 @ROOT=${D30} ${INFO_PKG} -mq|diff -u - ${.CURDIR}/list9.out 251 @-ROOT=${D30} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u 252 @ROOT=${D30} ${INFO_PKG} -mq|diff -u - ${.CURDIR}/list10.out 253 @ROOT=${D30} ${DELETE_PKG} -a 254 @ROOT=${D30} ${INFO_PKG} -q|diff -u - ${.CURDIR}/list11.out 255 256inter1: rep0/inta-0.tgz rep0/intb-0.tgz 257 -rm -rf ${D31} 258 @ROOT=${D31} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} inta intb 259 @ROOT=${D31} ${DELETE_PKG} inta intb 260 261system-version: rep0/syst-0.tgz rep1/syst-0.tgz 262 -rm -rf ${D45} 263 @ROOT=${D45} PKG_PATH=${.OBJDIR}/rep0 ${ADD_PKG} syst 264 @ROOT=${D45} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u 265 @ROOT=${D45} ${INFO_PKG} -qS syst |diff -u - ${.CURDIR}/system-version.ref 266 267plist1: 268 @${MKPLIST} ${LONG1} ${LONG2} ${LONG3} ${LONG4} >$@ 269 270plist2: 271 @${MKPLIST} a b c f g >$@ 272 273plist3: 274 @${MKPLIST} a c d f g >$@ 275 276plist4: 277 @${MKPLIST} "@option always-update" >$@ 278 279plist5: 280 @${MKPLIST} "@ask-update gd-<1 Make sure yadada is backed up" >$@ 281 282plist6: 283 @${MKPLIST} "@conflict l-<1" >$@ 284 285plist7: 286 @${MKPLIST} "@conflict m-<1" "@pkgpath t/m" >$@ 287 288plist8: 289 @${MKPLIST} "@conflict o-<1" "@pkgpath t/o" '@lib lib/libcoincoin.so.$${LIBcoincoin_VERSION}' >$@ 290 291plist9: 292 @${MKPLIST} "@conflict gamin-*" >$@ 293 294plist10: 295 @${MKPLIST} "@conflict fam-*" "@pkgpath t/fam" >$@ 296 297plist11: 298 @${MKPLIST} "@conflict missc-*" >$@ 299 300plist12: 301 @${MKPLIST} '@lib lib/liba.so.$${LIBa_VERSION}' >$@ 302 303plist13: 304 @${MKPLIST} phonon/ phonon/a >$@ 305 306plist14: 307 @${MKPLIST} phonon >$@ 308 309plist15: 310 @${MKPLIST} foo/ foo/a bar >$@ 311 312plist16: 313 @${MKPLIST} foo/ foo/a bar/ bar/a >$@ 314 315plist17: 316 @${MKPLIST} '@lib lib/libthunar-vfs.so.$${LIBthunar-vfs_VERSION}' >$@ 317 318plist18: 319 @${MKPLIST} "@conflict thunar-<1" '@lib lib/libthunar-vfs.so.$${LIBthunar-vfs_VERSION}' >$@ 320 321plist19: 322 @${MKPLIST} a >$@ 323 324plist20: 325 @${MKPLIST} "@conflict cola-<1" a >$@ 326 327plist21: 328 @${MKPLIST} '@lib lib/subdir/libol.so.$${LIBol_VERSION}' >$@ 329 330rep0/a-0.tgz: 331 @${CREATE_PKG} -P't/b:b-*:b-0' ${EMPTY} $@ 332 333rep1/a-1.tgz rep0/b-0.tgz rep0/i-0.tgz rep0/j-0.tgz rep1/j-1.tgz \ 334rep1/i-1.tgz rep0/k-0.tgz rep0/l-0.tgz rep1/l-1.tgz rep0/m-0.tgz \ 335rep0/n-0.tgz rep1/m-1.tgz rep0/o-0.tgz rep0/fam-0.tgz \ 336rep0/o1-0.tgz rep0/o2-0.tgz rep0/ga-0.tgz \ 337rep0/gb-0.tgz rep1/gb-0p0.tgz rep0/gd-0.tgz rep0/ge-0.tgz \ 338rep0/gf-1.tgz rep1/gf-0.tgz \ 339rep1/missc-0.tgz rep0/q5-0.tgz rep1/q5-1.tgz \ 340rep0/ma-0.tgz rep1/ma-1.tgz rep0/mc-0.tgz rep1/me-1.tgz \ 341rep0/tcl-8.5.7.tgz: 342 @${CREATE_PKG} ${EMPTY} $@ 343 344rep0/md-0.tgz: 345 @${CREATE_PKG} -P't/ma:ma-*:ma-0' -P't/mb:mb-*:mb-0' -P't/mc:mc-*:mc-0' ${EMPTY} $@ 346rep1/md-1.tgz: 347 @${CREATE_PKG} -P't/ma:ma-*:ma-1' -P't/mb:mb-*:mb-1' -P't/me:me-*:me-1' ${EMPTY} $@ 348rep0/mb-0.tgz: 349 @${CREATE_PKG} -P't/ma:ma-*:ma-0' ${EMPTY} $@ 350rep1/mb-1.tgz: 351 @${CREATE_PKG} -P't/ma:ma-*:ma-1' ${EMPTY} $@ 352 353rep0/inta-0.tgz: 354 @${CREATE_PKG} -P't/intb:intb-*:intb-0' ${EMPTY} $@ 355rep0/intb-0.tgz: 356 @${CREATE_PKG} -P't/inta:inta-*:inta-0' ${EMPTY} $@ 357 358rep1/o-1.tgz: 359 @${CREATE_PKG} ${WAVE_PLIST} -P't/p:p-*:p-0' -W'coincoin.0.0' ${EMPTY} $@ 360 361rep1/o1-1.tgz: 362 @${CREATE_PKG} ${WAVE_PLIST} -P't/p1:p1-*:p1-0' -W'coincoin.0' ${EMPTY} $@ 363 364rep1/o2-1.tgz: 365 @${CREATE_PKG} ${WAVE_PLIST} -P't/p2:p2-*:p2-0' -W'coincoin.0' ${EMPTY} $@ 366 367rep0/o3-0.tgz: 368 @${CREATE_PKG} ${WAVE_PLIST} -W'unlikelylibraryname.0.0' ${EMPTY} $@ 369 370rep1/p-0.tgz rep1/p1-0.tgz: plist8 371 @${WITH} -B src13 -DLIBcoincoin_VERSION=0.0 -f plist8 $@ ${CPKG} 372 373rep1/p2-0.tgz: plist8 374 @${WITH} ${WAVE_PLIST} -B src14 -DLIBcoincoin_VERSION=0 -f plist8 $@ ${CPKG} 375 376rep0/p4-0.tgz: plist12 377 @${WITH} -B src15 -DLIBa_VERSION=0.0 -f plist12 $@ ${CPKG} 378 379rep1/p4-1.tgz: plist12 380 @${WITH} -B src31 -DLIBa_VERSION=1.0 -f plist12 $@ ${CPKG} 381 382rep0/boost-0.tgz: 383 @${CREATE_PKG} ${WAVE_PLIST} -W'a.0.0' -P't/p4:p4-*:p4-0' ${EMPTY} $@ 384 385rep1/boost-0.tgz: 386 @${CREATE_PKG} ${WAVE_PLIST} -W'a.1.0' -P't/p4:p4-*:p4-1' ${EMPTY} $@ 387 388rep0/Imath-0.tgz: 389 @${CREATE_PKG} ${WAVE_PLIST} -P't/boots:boost-*:boost-0' ${EMPTY} $@ 390 391rep1/Imath-0.tgz: 392 @${CREATE_PKG} ${WAVE_PLIST} -P't/boots:boost-*:boost-0' ${EMPTY} $@ 393 394rep0/o4-0.tgz: 395 @${CREATE_PKG} ${WAVE_PLIST} -W'a.1.0' -P't/p4:p4-*:p4-0' ${EMPTY} $@ 396 397rep0/o5-0.tgz: 398 @${CREATE_PKG} ${WAVE_PLIST} -W'a.0.2' -P't/p4:p4-*:p4-0' ${EMPTY} $@ 399 400rep0/o6-0.tgz: 401 @${CREATE_PKG} ${WAVE_PLIST} -W'a.0.0' -P't/p4:p4-*:p4-0' ${EMPTY} $@ 402 403rep0/oo6-0.tgz: 404 @${CREATE_PKG} ${WAVE_PLIST} -W'a.0.0' ${EMPTY} $@ 405 406rep0/o7-0.tgz: 407 @${CREATE_PKG} ${WAVE_PLIST} -W'dir/a.0.0' -P't/p4:p4-*:p4-0' ${EMPTY} $@ 408 409rep1/b-1.tgz: 410 @${CREATE_PKG} -P't/a:a-*:a-1' ${EMPTY} $@ 411 412rep0/qt-0.tgz: plist13 413 @${WITH} -B src17 -f plist13 $@ ${CPKG} 414 415rep1/qt-1.tgz: plist14 416 @${WITH} -B src16 -f plist14 $@ ${CPKG} 417 418rep0/exo-0.tgz: plist15 419 @mkdir -p ${SRC18}/foo 420 touch ${SRC18}/foo/a 421 cd ${SRC18} && ln -s foo bar 422 @${CREATE_PKG} -B src18 -f plist15 $@ 423 424rep1/exo-1.tgz: plist16 425 @${WITH} -B src19 -f plist16 $@ ${CPKG} 426 427rep0/thunar-0.tgz: plist17 428 @${WITH} -B src20 -DLIBthunar-vfs_VERSION=0.0 -f plist17 $@ ${CPKG} 429 430rep1/thunar-vfs-1.tgz: plist18 431 @${WITH} -B src20 -DLIBthunar-vfs_VERSION=0.0 -f plist18 $@ ${CPKG} 432 433rep1/thunar-1.tgz: 434 @${CREATE_PKG} ${EMPTY} $@ 435 436 437rep0/q-0.tgz: 438 @${CREATE_PKG} -P't/thunar:thunar-*:thunar-0' ${EMPTY} $@ 439 440rep1/q-1.tgz: 441 @${CREATE_PKG} -P't/thunar-vfs:thunar-vfs-*:thunar-vfs-1' ${EMPTY} $@ 442 443rep0/gs-0.tgz: 444 @${CREATE_PKG} ${EMPTY} $@ 445rep0/gs-0-no_x11.tgz: 446 @${CREATE_PKG} ${EMPTY} $@ 447 448rep0/purple-0.tgz: 449 @${CREATE_PKG} -P't/gs:gs-*-!no_x11:gs-0' ${EMPTY} $@ 450 451rep1/c-0.tgz: plist1 452 @mkdir -p ${SRC1} 453 @touch ${SRC1}/${LONG1} 454 @touch ${SRC1}/${LONG2} 455 @cd ${SRC1} && ln -sf ${LONG2} ${LONG3} 456 @cd ${SRC1} && ln -f ${LONG1} ${LONG4} 457 @${CREATE_PKG} -B src1 -f plist1 $@ 458 459rep1/k-1.tgz: plist6 460 @${CREATE_PKG} -f plist6 $@ 461 462rep1/n-1.tgz: plist7 463 @${CREATE_PKG} -f plist7 $@ 464 465rep1/d-0.tgz: plist2 466 @mkdir -p ${SRC2} 467 @touch ${SRC2}/a ${SRC2}/b ${SRC2}/c 468 @echo "coucou" >${SRC2}/f 469 @echo "not coucou" >${SRC2}/g 470 @${CREATE_PKG} -B src2 -f plist2 $@ 471 472rep2/d-1.tgz: plist2 473 @mkdir -p ${SRC29} 474 @touch ${SRC29}/a ${SRC29}/b ${SRC29}/c 475 @echo "zoinx" >${SRC29}/f 476 @echo "not zoinx" >${SRC29}/g 477 @${CREATE_PKG} -B src29 -f plist2 $@ 478 479rep1/e-0.tgz: plist3 480 @mkdir -p ${SRC3} 481 @touch ${SRC3}/a ${SRC3}/c ${SRC3}/d 482 @echo "coucou" >${SRC3}/f 483 @echo "coucou" >${SRC3}/g 484 @${CREATE_PKG} -B src3 -f plist3 $@ 485 486rep1/f-0.tgz: 487 @${CREATE_PKG} -P't/d:d-*:d-0' ${EMPTY} $@ 488 489rep0/g-0.tgz: plist4 490 @${CREATE_PKG} -f plist4 $@ 491 492rep1/g-0.tgz: plist4 493 @PACKAGE_COMMENT=updated ${CREATE_PKG} -f plist4 $@ 494 495rep0/gg-0.tgz: plist4 496 @${CREATE_PKG} -P't/g:g-*:g-1' -f plist4 $@ 497 498rep1/gg-0.tgz: plist4 499 @PACKAGE_COMMENT=updated ${CREATE_PKG} -P't/g:g-*:g-0' -f plist4 $@ 500 501rep1/gd-1.tgz rep1/ge-1.tgz: plist5 502 @${CREATE_PKG} -f plist5 $@ 503 504rep1/ga-0.tgz: 505 @PACKAGE_COMMENT=updated ${CREATE_PKG} ${EMPTY} $@ 506 507rep0/gc-0.tgz: 508 @${CREATE_PKG} -P't/ga:gb-*:gb-0' ${EMPTY} $@ 509 510rep1/gc-0.tgz: 511 @PACKAGE_COMMENT=updated ${CREATE_PKG} -P't/ga:gb-*:gb-0p0' ${EMPTY} $@ 512 513rep0/h-0.tgz: 514 @${CREATE_PKG} -P't/i:i-*:i-0' ${EMPTY} $@ 515 516rep1/h-1.tgz: 517 @${CREATE_PKG} -P't/j:j->=1:j-1' ${EMPTY} $@ 518 519rep0/cola-0.tgz: plist19 520 @${WITH} -B src22 -f plist19 $@ ${CPKG} 521 522rep1/cola-1.tgz: plist19 523 @${WITH} -B src22 -P't/colb:colb-*:colb-0' -f plist19 $@ ${CPKG} 524 525rep1/colb-0.tgz: plist20 526 @${WITH} -B src22 -f plist20 $@ ${CPKG} 527 528depend_q1=-P't/q5:q5-*:q5-0' 529depend_q2=${depend_q1} -P't/q1:q1-*:q1-0' 530depend_q3=${depend_q1} -P't/q2:q2-*:q2-0' 531depend_q4=${depend_q1} -P't/q3:q3-*:q3-0' 532 533.for n in q1 q2 q3 q4 534plist-rep0-$n: 535 @echo "@unexec echo 1>&2 'XXXrep0 $n'" >$@ 536 537rep0/$n-0.tgz: plist-rep0-$n 538 @${CREATE_PKG} ${depend_$n} -f plist-rep0-$n $@ 539rep1/$n-1.tgz: plist-rep1-$n 540 @${CREATE_PKG} ${depend_$n} -f plist-rep1-$n $@ 541 542plist-rep1-$n: 543 @${MKPLIST} "@conflict q1-0" "@conflict q2-0" "@conflict q3-0" "@conflict q4-0" "@exec echo 1>&2 'XXXrep1 $n'" >$@ 544 545.endfor 546 547rep0/q6-0.tgz: 548 @${CREATE_PKG} -P't/q3:q3-*:q3-0' ${EMPTY} $@ 549 550rep1/q6-1.tgz: 551 @${CREATE_PKG} -P't/q3:q3-*:q3-0' ${EMPTY} $@ 552 553rep0/glib-0.tgz: 554 @${CREATE_PKG} -P't/fam:fam-*:fam-0' ${EMPTY} $@ 555 556rep1/glib-1.tgz: 557 @${CREATE_PKG} -P't/gamin:gamin-*:gamin-0' ${EMPTY} $@ 558 559rep1/fam-1.tgz: plist9 560 @${CREATE_PKG} -f plist9 $@ 561 562rep1/gamin-0.tgz: plist10 563 @${CREATE_PKG} -f plist10 $@ 564 565rep1/missa-0.tgz: 566 @${CREATE_PKG} -P't/misse:misse-*:misse-0' ${EMPTY} $@ 567 568rep1/missb-0.tgz: 569 @${CREATE_PKG} -P't/missd:missd-*:missd-0' ${EMPTY} $@ 570 571rep1/missd-0.tgz: plist11 572 @${CREATE_PKG} -f plist11 $@ 573 574rep1/missf-0.tgz: 575 @${CREATE_PKG} -P't/misse:misse-*:misse-0' ${EMPTY} $@ 576 577rep0/ocaml-3.11.1.tgz: 578 @${CREATE_PKG} -P'test/tcl:tcl->=8.5,<8.6:tcl-8.5.7' \ 579 -P'test/tk:tk->=8.5,<8.6:tk-8.5.7' ${EMPTY} $@ 580 581rep0/tk-8.5.7.tgz: 582 @${CREATE_PKG} -P'test/tcl:tcl->=8.5.7,<8.5.8:tcl-8.5.7' \ 583 ${EMPTY} $@ 584 585rep0/ol-0.tgz: plist21 586 @${WITH} -B src23 -DLIBol_VERSION=0.0 -f plist21 $@ ${CPKG} 587 588rep1/ol-1.tgz: plist21 589 @${WITH} -B src23 -DLIBol_VERSION=1.0 -f plist21 $@ ${CPKG} 590 591.for o in cups-2.2.7p1 cups-filters-1.20.3 cups-libs-2.2.7 ghostscript-9.07p7 592CUPS_FILES += rep2/$o.tgz 593rep2/$o.tgz: ${.CURDIR}/oldcups/$o/+CONTENTS 594 mkdir -p rep2 595 cd rep2 && pkg_create ${WAVE_PLIST} ${STUB} -f ${.CURDIR}/oldcups/$o/+CONTENTS 596.endfor 597 598.for n in cups-2.2.8 cups-filters-1.20.3 cups-libs-2.2.8 ghostscript-9.07p7 599CUPS_FILES += rep3/$n.tgz 600rep3/$n.tgz: ${.CURDIR}/newcups/$n/+CONTENTS 601 mkdir -p rep3 602 cd rep3 && pkg_create ${WAVE_PLIST} ${STUB} -f ${.CURDIR}/newcups/$n/+CONTENTS 603.endfor 604 605cups-bug: ${CUPS_FILES} 606 rm -rf ${D36} 607 mkdir -p ${D36}/vardbpkg ${D36}/usr/local 608 ROOT=${D36} PKG_PATH=${.OBJDIR}/rep2 INJECT=inject-order ${ADD_PKG} ${STUB} cups 609 ROOT=${D36} PKG_PATH=${.OBJDIR}/rep3 INJECT=inject-order ${ADD_PKG} ${STUB} -u 610 611usertest-1: 612 @if ${CREATE_PKG} -u ${.CURDIR}/baduser1 \ 613 ${EMPTY} truc-0.tgz; then \ 614 exit 1; \ 615 else \ 616 exit 0; \ 617 fi 618 619usertest-2: 620 @if ${CREATE_PKG} -u ${.CURDIR}/baduser2 \ 621 ${EMPTY} truc-0.tgz; then \ 622 exit 1; \ 623 else \ 624 exit 0; \ 625 fi 626 627usertest-3: 628 @if ${CREATE_PKG} -u ${.CURDIR}/baduser3 \ 629 ${EMPTY} truc-0.tgz; then \ 630 exit 1; \ 631 else \ 632 exit 0; \ 633 fi 634keys: 635 mkdir signify 636 signify -G -n -s signify/test-pkg.sec -p signify/test-pkg.pub 637 638plist22: 639 ${MKPLIST} '@lib lib/libnettle.so.$${LIBnettle_VERSION}' >$@ 640 641rep4/libnettle-0.tgz: plist22 642 @${WITH} -B src24 -DLIBnettle_VERSION=0.0 -f plist22 $@ ${CPKG} 643 644rep4/cups-libs-0.tgz: 645 @${CREATE_PKG} -P't/gnutls:gnutls-*:gnutls-0' ${EMPTY} $@ 646 647rep5/cups-libs-0.tgz: 648 @${CREATE_PKG} -P't/gnutls:gnutls-*:gnutls-0' ${EMPTY} $@ 649 650rep4/gnutls-0.tgz: 651 @${CREATE_PKG} -P't/libnettle:libnettle-*:libnettle-0' ${EMPTY} $@ 652 653rep5/gnutls-0.tgz: 654 @${CREATE_PKG} -P't/libnettle:libnettle-*:libnettle-1' ${EMPTY} $@ 655 656rep4/gtk+3-cups-0.tgz: 657 @${CREATE_PKG} ${WAVE_PLIST} -W nettle.0.0 -P't/cups-libs:cups-libs-*:cups-libs-0' ${EMPTY} $@ 658 659rep5/gtk+3-cups-0.tgz: 660 @${CREATE_PKG} ${WAVE_PLIST} -W nettle.1.0 -P't/cups-libs:cups-libs-*:cups-libs-0' ${EMPTY} $@ 661 662rep5/libnettle-1.tgz: plist22 663 @${WITH} -B src24 -DLIBnettle_VERSION=1.0 -f plist22 $@ ${CPKG} 664 665nettle-bug: rep4/cups-libs-0.tgz rep4/gtk+3-cups-0.tgz rep4/gnutls-0.tgz \ 666 rep4/libnettle-0.tgz rep5/cups-libs-0.tgz rep5/gtk+3-cups-0.tgz \ 667 rep5/gnutls-0.tgz rep5/libnettle-1.tgz 668 @-rm -rf ${D37} 669 @ROOT=${D37} ${ADD_PKG} rep4/gtk+3-cups 670 @ROOT=${D37} PKG_PATH=${.OBJDIR}/rep5 ${ADD_PKG} -u gtk+3-cups 671 672plist23: 673 @${MKPLIST} "share/" "share/bg/" "share/bg/portrait" "share/bg/pictures/" "share/bg/pictures/a/" "share/bg/pictures/a/zoinx" >$@ 674 675plist24: 676 ${MKPLIST} "share/" "share/bg/" "share/bg/portrait/" "share/bg/portrait/a/" "share/bg/portrait/a/zoinx" >$@ 677 678rep0/bg-0.tgz: plist23 679 @${WITH} -B src25 -f plist23 $@ ${CPKG} 680 681rep0/bg-1.tgz: plist24 682 @${WITH} -B src26 -f plist24 $@ ${CPKG} 683 684# these exemplify issues with directory moving around 685tying-1: rep0/bg-0.tgz rep0/bg-1.tgz 686 @-rm -rf ${D38} 687 @ROOT=${D38} ${ADD_PKG} rep0/bg-0.tgz 688 @ROOT=${D38} ${ADD_PKG} -r rep0/bg-1.tgz 689 690tying-2: rep0/bg-0.tgz rep0/bg-1.tgz 691 @-rm -rf ${D39} 692 @ROOT=${D39} ${ADD_PKG} rep0/bg-1.tgz 693 @ROOT=${D39} ${ADD_PKG} -r rep0/bg-0.tgz 694 695# this comes from solve_tags 696# pkg_delete finds new dependencies, and so the solver needs to be made 697# "safe" when it can't find them 698tag-delete: rep1/d-0.tgz 699 @-rm -rf ${D40} 700 @ROOT=${D40} ${ADD_PKG} rep1/d-0.tgz 701 # needs a tag to trigger the bug 702 echo "@tag zoinx" >> ${D40}/pkgdb/d-0/+CONTENTS 703 # and an "unsolved" dependency for DeleteSet to look harder 704 echo "@depend graphics/zoinx:zoinx-*:zoinx-2" >> ${D40}/pkgdb/d-0/+CONTENTS 705 @ROOT=${D40} ${DELETE_PKG} d 706 707SED_PIPE = sed -n -e s/`whoami`/USER/ -e 1p -e '$$p' 708SED_PIPE2 = { u=`whoami`; case $$u in root) u=_pkgfetch;; esac; sed -n -e s/$$u/USER/ -e 1p -e '$$p'; } 709 710 711XXXD=${D40} 712XXXBASE=temp2 713 714temp-error1: rep0/a-0.tgz rep0/b-0.tgz temp1.ref 715 @-rm -rf ${D40} 716 @{ INJECT=inject-temp1 ROOT=${D40} SILENT=1 ${ADD_PKG} rep0/a-0.tgz 1>/dev/null|| echo $$? ; } 2>&1|${SED_PIPE} >temp1.out 717 @diff -u temp1.out ${.CURDIR}/temp1.ref 718 719temp-error2: 720 @-rm -rf ${XXXD} 721 @{ INJECT=inject-temp2 ROOT=${XXXD} SILENT=1 PKG_PATH=https://www.google.com/ ${ADD_PKG} rep0/a-0.tgz 1>/dev/null|| echo $$? ; } 2>&1|${SED_PIPE2} >${XXXBASE}.out 722 @diff -u ${XXXBASE}.out ${.CURDIR}/temp2.ref 723 724temp-error2-as-root: 725 @# XXX thx tedu for not allowing env thru 726 @${SUDO} make -C ${.CURDIR} temp-error2 XXXBASE=temp2bis XXXD=${D41} 727 728temp-error3: rep1/d-0.tgz rep2/d-1.tgz temp3.ref 729 @-rm -rf ${D42} 730 @ROOT=${D42} ${ADD_PKG} rep1/d-0.tgz 731 @{ INJECT=inject-temp3 ROOT=${D42} SILENT=1 ${ADD_PKG} -r rep2/d-1.tgz 1>/dev/null|| echo $$?; } 2>&1|${SED_PIPE} >temp3.out 732 @diff -u temp3.out ${.CURDIR}/temp3.ref 733 734temp-error4: rep0/qt-0.tgz rep1/qt-1.tgz 735 @-rm -rf ${D43} 736 @ROOT=${D43} SILENT=1 ${ADD_PKG} rep0/qt-0.tgz 737 @rm -f ${D43}/usr/local/phonon/a 738 @echo zoinx >${D43}/usr/local/phonon/a 739 @{ INJECT=inject-temp4 PKG_PATH=${.OBJDIR}/rep1 SILENT=1 ROOT=${D43} ${ADD_PKG} -Dchecksum -u qt || echo $$?; } 2>&1|${SED_PIPE} >temp4.out 740 741rep5/a-0.tgz: plist19 742 @mkdir -p ${SRC27} 743 @echo "zoinx" > ${SRC27}/a 744 @INJECT=inject-badsum ${CREATE_PKG} -B src27 -f plist19 $@ 745 746rep0/syst-0.tgz: 747 @${CREATE_PKG} -V 1 ${EMPTY} $@ 748 749rep1/syst-0.tgz: 750 @${CREATE_PKG} -V 3 ${EMPTY} $@ 751 752cksum-error: rep5/a-0.tgz 753 @-rm -rf ${D44} 754 @ROOT=${D44} SILENT=1 ${ADD_PKG} rep5/a-0.tgz 755 @ROOT=${D44} SILENT=1 ${DELETE_PKG} a|fgrep 'Not deleting' 756 757# data for XXX-warning test 758 759plist25: 760 ${MKPLIST} '@lib lib/libavahi.so.$${LIBavahi_VERSION}' >$@ 761 762plist26: 763 ${MKPLIST} '@conflict avahi-<1' '@conflict avahi-libs-<1' '@lib lib/libavahi.so.$${LIBavahi_VERSION}' >$@ 764 765plist27: 766 ${MKPLIST} '@conflict avahi-<1' >$@ 767 768rep6/avahi-0.tgz: plist25 769 @${WITH} -B src28 -DLIBavahi_VERSION=0.0 -f plist25 $@ ${CPKG} 770 771rep6/cups-0.tgz: 772 @${CREATE_PKG} ${WAVE_PLIST} -P't/avahi:avahi-*:avahi-0' -W avahi.0.0 ${EMPTY} $@ 773 774rep7/avahi-1.tgz: 775 @${CREATE_PKG} ${WAVE_PLIST} -P't/avahi-libs:avahi-libs-*:avahi-libs-1' ${EMPTY} $@ 776 777rep7/avahi-libs-1.tgz: plist27 778 @${WITH} -B src28 -f plist27 $@ ${CPKG} 779 780rep7/avahi-glib-1.tgz: plist26 781 @${WITH} -B src28 -DLIBavahi_VERSION=0.0 -f plist26 $@ ${CPKG} 782 783rep7/cups-1.tgz: 784 @${CREATE_PKG} ${WAVE_PLIST} -P't/avahi-libs:avahi-libs-*:avahi-libs-0' -P't/avahi-glib:avahi-glib-*:avahi-glib-1' -W avahi.0.0 ${EMPTY} $@ 785 786 787rep0/sym-0.tgz: plist19 788 @mkdir -p ${SRC30} 789 @ln -s /tmp ${SRC30}/a 790 @${CREATE_PKG} -B src30 -f plist19 $@ 791 792 793XXX-warning: rep6/avahi-0.tgz rep6/cups-0.tgz rep7/avahi-1.tgz rep7/avahi-libs-1.tgz rep7/avahi-glib-1.tgz rep7/cups-1.tgz 794 @-rm -rf ${D46} 795 @ROOT=${D46} SILENT=1 ${ADD_PKG} rep6/cups-0.tgz 796 @ROOT=${D46} PKG_PATH=${.OBJDIR}/rep7 ${ADD_PKG} -u 2>warning 797 @if fgrep XXX warning; then exit 1; fi 798 799symlink: rep0/sym-0.tgz 800 @-rm -rf ${D47} 801 @ROOT=${D47} ${ADD_PKG} rep0/sym-0.tgz 802 @rm ${D47}/usr/local/a 803 @ROOT=${D47} ${ADD_PKG} -r -Dinstalled rep0/sym-0.tgz 804 805no-symlink: rep1/d-0.tgz 806 @-rm -rf ${D48} 807 @ROOT=${D48} ${ADD_PKG} rep1/d-0.tgz 808 @rm -f ${D48}/usr/local/f /usr/local/a 809 @ROOT=${D48} ${ADD_PKG} -r -Dinstalled rep1/d-0.tgz 810 @test -f ${D48}/usr/local/f 811 @test -f ${D48}/usr/local/a 812 813# this is a "temporary" test 814# oldlibs currently do a transitive closure because people might have 815# forgotten some wantlib 816# update is supposed to detect that and try to remove any dependency 817# on oldlibs. 818 819# in the following case, Imath does NOT depend on the libs in p4, 820# but pkg_add tries to be thorough. So Imath should get updated to the 821# version in rep1, which is supposed to be "fresh" and not (possibly) 822# depend on the old lib. 823# The name IS significant: the error only happens because Imath is before 824# boost (lexicographically) 825 826oldlib2: rep0/p4-0.tgz rep0/boost-0.tgz rep0/Imath-0.tgz \ 827 rep1/p4-1.tgz rep1/boost-0.tgz rep1/Imath-0.tgz 828 @-rm -rf ${D49} 829 @ROOT=${D49} ${ADD_PKG} rep0/Imath-0.tgz 830 @ROOT=${D49} PKG_PATH=${.OBJDIR}/rep1 ${ADD_PKG} -u 831 @if fgrep -q .libs ${D49}/pkgdb/Imath-0/+REQUIRING; then exit 1; fi 832 833clean: 834 -rm -rf rep* dest* plist* src* signatures.out *.ref *.out 835 -${SUDO} rm -rf rep* dest* plist* src* signatures.out *.ref *.out 836 837.PHONY: ${REGRESS_TARGETS} 838 839.include <bsd.regress.mk> 840