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