home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume3 / pathalias2 / part1 / make.v8 < prev    next >
Encoding:
Text File  |  1986-11-30  |  3.5 KB  |  146 lines

  1. #!/bin/make -f
  2. # pathalias -- by steve bellovin, as told to peter honeyman
  3.  
  4. # if you can't or don't intend to use dbm files, don't bother with makedb
  5. DBM = -ldbm
  6. # or if you roll your own ...
  7. # DBM = dbm.o
  8.  
  9. CC = cc -g -p
  10. CFLAGS = 
  11. LDFLAGS =
  12. YFLAGS = -d
  13.  
  14. OBJ = addlink.o addnode.o extern.o local.o main.o mapit.o mapaux.o mem.o parse.o printit.o
  15. HDRS = def.h config.h
  16. CSRC = addlink.c addnode.c extern.c local.c main.c mapit.c mapaux.c mem.c printit.c
  17. SRC = $(CSRC) parse.y
  18. LSRC = $(CSRC) parse.c
  19.  
  20. pathalias: & $(OBJ)
  21.     $(CC) $(LDFLAGS) $(OBJ) -o pathalias
  22.  
  23. all: pathalias makedb
  24.  
  25. $(OBJ):    def.h
  26.  
  27. # if touch had a proper exit status, this would work...
  28. def.h: config.h
  29.     -touch -c def.h
  30.     get -s sccs/s.def.h
  31.  
  32. parse.c: parse.y def.h
  33.     $(YACC) $(YFLAGS) parse.y
  34.     mv y.tab.c parse.c
  35.  
  36. makedb: makedb.o
  37.     $(CC) makedb.o $(DBM) -o makedb
  38.  
  39. makedb.o: config.h
  40.  
  41. clean:
  42.     rm -f *.o y.tab.? parse.c
  43.  
  44. tags: $(SRC) $(HDRS) makedb.c
  45.     ctags -w $^
  46.  
  47. bundle: README CHANGES pathalias.1 Makefile ${HDRS} ${SRC} makedb.c make.v8
  48.     @bundle $^
  49.  
  50. bundle1: README CHANGES pathalias.1 Makefile def.h config.h addlink.c
  51.     @bundle $^
  52.  
  53. bundle2: addnode.c extern.c local.c main.c mapit.c
  54.     @bundle $^
  55.  
  56. bundle3: mapaux.c mem.c printit.c parse.y makedb.c make.v8
  57.     @bundle $^
  58.  
  59. make.v8: makefile
  60.     @cp makefile make.v8
  61.  
  62. lint:    $(LSRC)
  63.     lint $(CFLAGS) $(LSRC)
  64.     lint makedb.c
  65.  
  66. # v8 make rules for sccs
  67. %: & sccs/s.%
  68.     get -s sccs/s.$%
  69.  
  70. # the remainder is site specific and can be deleted.  it doesn't have
  71. # to be this complicated, but a makefile tends to swell after three or
  72. # four years.
  73.  
  74. # hosts running delivermail
  75. DELIVERMAIL = tilt
  76.  
  77. # hosts running sendmail
  78. SENDMAIL = quirky flakey yoyo panic
  79.  
  80. # all neighbors
  81. NEIGHBORS = princeton ${DELIVERMAIL} ${SENDMAIL}
  82.  
  83. # including me
  84. SITES = down ${NEIGHBORS}
  85.  
  86. PATHFILES = paths/[^.]* paths.bell/[^.]* paths.internet/[^.]* path.map/[^.]*
  87.  
  88. # from observation and rumor.  avoid like the plague
  89. DEADHOSTS = -d tucc -d netword -d harvard -d whuxlb -d conejo
  90.  
  91. DEADLINKS = -d siemens!uiucdcs -d allegra!rcalabs -d amdcad!chi -d allegra!shasta -d allegra!olympus -d shasta!imagen
  92.  
  93. DEADNETS = -d internet
  94.  
  95. DEAD = ${DEADHOSTS} ${DEADLINKS} ${DEADNETS}
  96.  
  97. # map output (input, really) to lower case.  dead links.
  98. ARGS = -i
  99.  
  100. paths:    ${SITES}
  101.  
  102. down:    paths/princeton
  103.     time -v pathalias -v ${ARGS} $(DEAD) $(PATHFILES) 2>ERRORS > down.new
  104.     sort -o down down.new
  105.  
  106. # DELIVERMAIL and SENDMAIL have exactly the same links as down, so turn
  107. #    down    %s
  108. #    up    up!%s
  109. # into
  110. #    up    %s
  111. #    down    down!%s
  112.  
  113. ${DELIVERMAIL}:    down
  114.     sed -e 's/^down    %s$$/$@    %s/' \
  115.         -e 's/^$@    $@!%s$$/down    down!%s/'\
  116.         -e 's/^/0    /' down | sort > $@
  117.     
  118. # reorder the output and generate phoney costs for sendmail neighbors
  119. ${SENDMAIL}: down
  120.     sed -e 's/^down    %s$$/$@    %s/' \
  121.          -e 's/$@    $@!%s$$/down    down!%s/'\
  122.          -e 's/    /    0    /' down |sort > $@
  123.  
  124. # install everywhere
  125. shipit: ${NEIGHBORS}
  126.     for i in ${SENDMAIL} princeton; do cp $$i /n/$$i/usr/local/lib/pathaliases; done
  127.     for i in ${DELIVERMAIL}; do cp $$i /n/$$i/usr/local/lib/pathaliases; $$i newaliases done
  128.     touch shipit
  129.  
  130. # reorder the output for princeton/sendmail/uubang and generate phoney costs.
  131. princeton: down
  132.     pathalias ${ARGS} $(DEAD) -l princeton $(PATHFILES) 2>ERRORS | sort | sed 's/\(.*\)    \(.*\)/\1    0    \2/' > princeton
  133.  
  134. # desperation debugging -- examine the costs.
  135. costs:
  136.     pathalias -vci ${DEAD} -l down $(PATHFILES) > down.costs 2>ERRORS
  137.  
  138. # make one BIG file.  a BIG bad idea.
  139. cat:
  140.     cat $(PATHFILES) > CAT
  141.  
  142. # make a pathparse database.  -g flag is undocumented.
  143. edges: down
  144.     pathalias -i -g edges $(PATHFILES) >/dev/null
  145.     makedb edges down
  146.