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