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