Makefile.yp revision 1.9
1# $NetBSD: Makefile.yp,v 1.9 1999/11/19 16:55:25 abs Exp $ 2# 3# This is the YP Makefile, used to create and push YP maps. 4# 5 6# Invoke with NOPUSH != "" to prevent the maps from being yppushed upon rebuild 7# 8NOPUSH?= "" 9 10# Password maps in standard YP are insecure, because the pw_passwd 11# field is accessable by any user. FreeBSD, NetBSD and OpenBSD have 12# a common solution: a secure map (generated with makedbm -s) can 13# only be accessed by a client bound to a privileged port. 14# 15# Uncomment out the following if you need compatibility with 16# sites that don't support this feature. 17# 18#INSECURE?= yes 19 20 21YPDBDIR= /var/yp 22DIR= /etc 23AMDDIR= /etc/amd 24DOMAIN= "`/usr/bin/basename ${.CURDIR}`" 25 26AWK= /usr/bin/awk 27CAT= /bin/cat 28CP= /bin/cp 29CUT= /usr/bin/cut 30ECHO= /bin/echo 31MAKEDBM= /usr/sbin/makedbm 32MAKEDBM_S= ${MAKEDBM} -s 33MKALIAS= /usr/sbin/mkalias 34MKNETID= /usr/sbin/mknetid 35REVNETGROUP= /usr/sbin/revnetgroup 36RM= /bin/rm 37SED= /usr/bin/sed 38SENDMAIL= /usr/sbin/sendmail 39SORT= /usr/bin/sort 40STDETHERS= /usr/sbin/stdethers 41STDHOSTS= /usr/sbin/stdhosts 42TOUCH= /usr/bin/touch 43YPPUSH= /usr/sbin/yppush 44 45 46# We have a rule for ypservers, but we don't build it by default, since 47# it seldom changes (only when slaves are added/deleted). 48 49all: passwd aliases amd.home ethers group hosts netgroup networks rpc services protocols netid 50 51 52passwd.time: ${DIR}/master.passwd 53 -@if [ -f ${.ALLSRC} ]; then \ 54 umask 077 ; \ 55 if [ "${INSECURE}" != "yes" ]; then \ 56 ${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 | \ 57 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 58 { print $$1, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\ 59 ${SORT} | ${MAKEDBM} - passwd.byname; \ 60 ${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 |\ 61 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 62 { print $$3, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\ 63 ${SORT} | ${MAKEDBM} - passwd.byuid; \ 64 else \ 65 ${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 | \ 66 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 67 { print $$1, $$0 }' - | ${SORT} | \ 68 ${MAKEDBM} - passwd.byname; \ 69 ${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 |\ 70 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 71 { print $$3, $$0 }' - | ${SORT} | \ 72 ${MAKEDBM} - passwd.byuid; \ 73 fi; \ 74 ${CAT} ${.ALLSRC} | \ 75 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 76 { print $$1, $$0 }' - | ${SORT} | \ 77 ${MAKEDBM_S} - master.passwd.byname; \ 78 ${CAT} ${.ALLSRC} | \ 79 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 80 { print $$3, $$0 }' - | ${SORT} | \ 81 ${MAKEDBM_S} - master.passwd.byuid; \ 82 ${TOUCH} ${.TARGET}; \ 83 ${ECHO} "updated passwd"; \ 84 if [ ! ${NOPUSH} ]; then \ 85 ${YPPUSH} -d ${DOMAIN} passwd.byname; \ 86 ${YPPUSH} -d ${DOMAIN} passwd.byuid; \ 87 ${YPPUSH} -d ${DOMAIN} master.passwd.byname; \ 88 ${YPPUSH} -d ${DOMAIN} master.passwd.byuid; \ 89 ${ECHO} "pushed passwd"; \ 90 else \ 91 : ; \ 92 fi \ 93 else \ 94 ${ECHO} "couldn't find ${.ALLSRC}"; \ 95 fi 96 97 98aliases.time: ${DIR}/aliases 99 -@if [ -f ${.ALLSRC} ]; then \ 100 ${CP} -p ${.ALLSRC} ${DOMAIN}-aliases; \ 101 ${SENDMAIL} -bi -oA${PWD}/${DOMAIN}-aliases; \ 102 ${MAKEDBM} -u ${DOMAIN}-aliases | ${SORT} | \ 103 ${MAKEDBM} - mail.aliases; \ 104 ${MKALIAS} mail.aliases mail.byaddr; \ 105 ${TOUCH} ${.TARGET}; \ 106 ${RM} ${DOMAIN}-aliases.db ${DOMAIN}-aliases; \ 107 ${ECHO} "updated aliases"; \ 108 if [ ! ${NOPUSH} ]; then \ 109 ${YPPUSH} -d ${DOMAIN} mail.aliases; \ 110 ${YPPUSH} -d ${DOMAIN} mail.byaddr; \ 111 ${ECHO} "pushed aliases"; \ 112 else \ 113 : ; \ 114 fi \ 115 else \ 116 ${ECHO} "couldn't find ${.ALLSRC}"; \ 117 fi 118 119 120amd.home.time: ${AMDDIR}/amd.home 121 -@if [ -f ${.ALLSRC} ]; then \ 122 ${SED} -e "s/#.*$$//" -e "/^$$/d" ${.ALLSRC} | \ 123 ${AWK} '{ \ 124 for (i = 1; i <= NF; i++) \ 125 if (i == NF) { \ 126 if (substr($$i, length($$i), 1) == "\\") { \ 127 printf("%s", \ 128 substr($$i, 1, length($$i) - 1)); \ 129 } \ 130 else \ 131 printf("%s\n", $$i); \ 132 } \ 133 else \ 134 printf("%s ", $$i); \ 135 }' | \ 136 ${SORT} | ${MAKEDBM} - amd.home; \ 137 ${TOUCH} ${.TARGET}; \ 138 ${ECHO} "updated amd.home"; \ 139 if [ ! ${NOPUSH} ]; then \ 140 ${YPPUSH} -d ${DOMAIN} amd.home; \ 141 ${ECHO} "pushed amd.home"; \ 142 else \ 143 : ; \ 144 fi \ 145 else \ 146 ${ECHO} "couldn't find ${.ALLSRC}"; \ 147 fi 148 149 150ethers.time: ${DIR}/ethers 151 -@if [ -f ${.ALLSRC} ]; then \ 152 ${STDETHERS} ${.ALLSRC} | ${SED} -e s/#.*$$// | \ 153 ${AWK} 'BEGIN { FS="\t"; OFS="\t"; } { print $$1, $$0 }' | \ 154 ${SORT} | ${MAKEDBM} - ethers.byaddr; \ 155 ${STDETHERS} ${.ALLSRC} | \ 156 ${AWK} 'BEGIN { FS="\t"; OFS="\t"; } { print $$2, $$0 }' | \ 157 ${SORT} | ${MAKEDBM} - ethers.byname; \ 158 ${TOUCH} ${.TARGET}; \ 159 ${ECHO} "updated ethers"; \ 160 if [ ! ${NOPUSH} ]; then \ 161 ${YPPUSH} -d ${DOMAIN} ethers.byaddr; \ 162 ${YPPUSH} -d ${DOMAIN} ethers.byname; \ 163 ${ECHO} "pushed ethers"; \ 164 else \ 165 : ; \ 166 fi \ 167 else \ 168 ${ECHO} "couldn't find ${.ALLSRC}"; \ 169 fi 170 171 172group.time: ${DIR}/group 173 -@if [ -f ${.ALLSRC} ]; then \ 174 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 175 { print $$1, $$0 }' ${.ALLSRC} | \ 176 ${SORT} | ${MAKEDBM} - group.byname; \ 177 ${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \ 178 { print $$3, $$0 }' ${.ALLSRC} | \ 179 ${SORT} | ${MAKEDBM} - group.bygid; \ 180 ${TOUCH} ${.TARGET}; \ 181 ${ECHO} "updated group"; \ 182 if [ ! ${NOPUSH} ]; then \ 183 ${YPPUSH} -d ${DOMAIN} group.byname; \ 184 ${YPPUSH} -d ${DOMAIN} group.bygid; \ 185 ${ECHO} "pushed group"; \ 186 else \ 187 : ; \ 188 fi \ 189 else \ 190 ${ECHO} "couldn't find ${.ALLSRC}"; \ 191 fi 192 193 194hosts.time: ${DIR}/hosts 195 -@if [ -f ${.ALLSRC} ]; then \ 196 ${STDHOSTS} ${.ALLSRC} | ${SED} -e s/#.*$$// | \ 197 ${AWK} '{for (i = 2; i <= NF; i++) print $$i, $$0 }' | \ 198 ${SORT} | ${MAKEDBM} - hosts.byname; \ 199 ${STDHOSTS} ${.ALLSRC} | \ 200 ${AWK} 'BEGIN { OFS="\t"; } { print $$1, $$0 }' | \ 201 ${SORT} | ${MAKEDBM} - hosts.byaddr; \ 202 ${TOUCH} ${.TARGET}; \ 203 ${ECHO} "updated hosts"; \ 204 if [ ! ${NOPUSH} ]; then \ 205 ${YPPUSH} -d ${DOMAIN} hosts.byname; \ 206 ${YPPUSH} -d ${DOMAIN} hosts.byaddr; \ 207 ${ECHO} "pushed hosts"; \ 208 else \ 209 : ; \ 210 fi \ 211 else \ 212 ${ECHO} "couldn't find ${.ALLSRC}"; \ 213 fi 214 215 216netgroup.time: ${DIR}/netgroup 217 -@if [ -f ${.ALLSRC} ]; then \ 218 ${CAT} ${.ALLSRC} | ${SORT} | ${MAKEDBM} - netgroup; \ 219 ${CAT} ${.ALLSRC} | ${REVNETGROUP} -u -f - | \ 220 ${SORT} | ${MAKEDBM} - netgroup.byuser; \ 221 ${CAT} ${.ALLSRC} | ${REVNETGROUP} -h -f - | \ 222 ${SORT} | ${MAKEDBM} - netgroup.byhost; \ 223 ${TOUCH} ${.TARGET}; \ 224 ${ECHO} "updated netgroup"; \ 225 if [ ! ${NOPUSH} ]; then \ 226 ${YPPUSH} -d ${DOMAIN} netgroup; \ 227 ${YPPUSH} -d ${DOMAIN} netgroup.byuser; \ 228 ${YPPUSH} -d ${DOMAIN} netgroup.byhost; \ 229 ${ECHO} "pushed netgroup"; \ 230 else \ 231 : ; \ 232 fi \ 233 else \ 234 ${ECHO} "couldn't find ${.ALLSRC}"; \ 235 fi 236 237 238networks.time: ${DIR}/networks 239 -@if [ -f ${.ALLSRC} ]; then \ 240 ${SED} -e "/^#/d" -e s/#.*$$// ${.ALLSRC} | \ 241 ${AWK} '{print $$1, $$0; \ 242 for (i = 3;i <= NF;i++) print $$i,$$0}' | \ 243 ${SORT} | ${MAKEDBM} - networks.byname; \ 244 ${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \ 245 ${.ALLSRC} | \ 246 ${SORT} | ${MAKEDBM} - networks.byaddr; \ 247 ${TOUCH} ${.TARGET}; \ 248 ${ECHO} "updated networks"; \ 249 if [ ! ${NOPUSH} ]; then \ 250 ${YPPUSH} -d ${DOMAIN} networks.byname; \ 251 ${YPPUSH} -d ${DOMAIN} networks.byaddr; \ 252 ${ECHO} "pushed networks"; \ 253 else \ 254 : ; \ 255 fi \ 256 else \ 257 ${ECHO} "couldn't find ${.ALLSRC}"; \ 258 fi 259 260 261protocols.time: ${DIR}/protocols 262 -@if [ -f ${.ALLSRC} ]; then \ 263 ${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \ 264 ${.ALLSRC} | \ 265 ${SORT} | ${MAKEDBM} - protocols.bynumber; \ 266 ${SED} -e "/^#/d" -e s/#.*$$// ${.ALLSRC} | \ 267 ${AWK} '{print $$1, $$0; \ 268 for (i = 3;i <= NF;i++) print $$i,$$0}' | \ 269 ${SORT} | ${MAKEDBM} - protocols.byname; \ 270 ${TOUCH} ${.TARGET}; \ 271 ${ECHO} "updated protocols"; \ 272 if [ ! ${NOPUSH} ]; then \ 273 ${YPPUSH} -d ${DOMAIN} protocols.bynumber; \ 274 ${YPPUSH} -d ${DOMAIN} protocols.byname; \ 275 ${ECHO} "pushed protocols"; \ 276 else \ 277 : ; \ 278 fi \ 279 else \ 280 ${ECHO} "couldn't find ${.ALLSRC}"; \ 281 fi 282 283 284rpc.time: ${DIR}/rpc 285 -@if [ -f ${.ALLSRC} ]; then \ 286 ${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \ 287 ${.ALLSRC} | \ 288 ${SORT} | ${MAKEDBM} - rpc.bynumber; \ 289 ${TOUCH} ${.TARGET}; \ 290 ${ECHO} "updated rpc"; \ 291 if [ ! ${NOPUSH} ]; then \ 292 ${YPPUSH} -d ${DOMAIN} rpc.bynumber; \ 293 ${ECHO} "pushed rpc"; \ 294 else \ 295 : ; \ 296 fi \ 297 else \ 298 ${ECHO} "couldn't find ${.ALLSRC}"; \ 299 fi 300 301 302services.time: ${DIR}/services 303 -@if [ -f ${.ALLSRC} ]; then \ 304 ${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \ 305 ${.ALLSRC} | \ 306 ${SORT} | ${MAKEDBM} - services.byname; \ 307 ${TOUCH} ${.TARGET}; \ 308 ${ECHO} "updated services"; \ 309 if [ ! ${NOPUSH} ]; then \ 310 ${YPPUSH} -d ${DOMAIN} services.byname; \ 311 ${ECHO} "pushed services"; \ 312 else \ 313 : ; \ 314 fi \ 315 else \ 316 ${ECHO} "couldn't find ${.ALLSRC}"; \ 317 fi 318 319 320netid.time: ${DIR}/passwd ${DIR}/group ${DIR}/hosts ${DIR}/netid 321 -@${MKNETID} -q -d ${DOMAIN} -p ${DIR}/passwd -g ${DIR}/group -h \ 322 ${DIR}/hosts -m ${DIR}/netid | \ 323 ${SORT} | ${MAKEDBM} - netid.byname; \ 324 ${TOUCH} ${.TARGET}; \ 325 ${ECHO} "updated netid"; \ 326 if [ ! ${NOPUSH} ]; then \ 327 ${YPPUSH} -d ${DOMAIN} netid.byname; \ 328 ${ECHO} "pushed netid"; \ 329 else \ 330 : ; \ 331 fi 332 333 334ypservers.time: ${.CURDIR}/ypservers 335 -@${MAKEDBM} ypservers ypservers; \ 336 ${TOUCH} ${.TARGET}; \ 337 ${ECHO} "updated ypservers"; \ 338 if [ ! ${NOPUSH} ]; then \ 339 ${YPPUSH} -d ${DOMAIN} ypservers; \ 340 ${ECHO} "pushed ypservers"; \ 341 else \ 342 : ; \ 343 fi 344 345 346passwd: passwd.time 347group: group.time 348hosts: hosts.time 349aliases: aliases.time 350amd.home: amd.home.time 351ethers: ethers.time 352netgroup: netgroup.time 353networks: networks.time 354rpc: rpc.time 355services: services.time 356protocols: protocols.time 357netid: netid.time 358ypservers: ypservers.time 359 360${DIR}/passwd: 361${DIR}/group: 362${DIR}/hosts: 363${DIR}/aliases: 364${AMDDIR}/amd.home: 365${DIR}/ethers: 366${DIR}/master.passwd: 367${DIR}/netgroup: 368${DIR}/networks: 369${DIR}/rpc: 370${DIR}/services: 371${DIR}/protocols: 372${DIR}/netid: 373