Hex Artifact Content
Logged in as anonymous

Artifact 26811771686c9a7b1a6dd1a087bc7dc7e2b81a614f460680e583c075cd0d46a1:


0000: 2e 69 6e 63 6c 75 64 65 20 22 64 65 66 61 75 6c  .include "defaul
0010: 74 73 2e 6d 6b 22 0a 2e 69 6e 63 6c 75 64 65 20  ts.mk"..include 
0020: 22 6f 72 64 65 72 2e 6d 6b 22 0a 2e 69 6e 63 6c  "order.mk"..incl
0030: 75 64 65 20 22 2f 65 74 63 2f 6d 72 63 2e 6d 6b  ude "/etc/mrc.mk
0040: 22 0a 2e 65 78 70 6f 72 74 0a 0a 2e 4d 41 4b 45  "..export...MAKE
0050: 2e 4a 4f 42 53 3f 3d 09 24 7b 4e 43 50 55 7d 0a  .JOBS?=.${NCPU}.
0060: 2e 69 66 20 21 65 6d 70 74 79 28 2e 4d 41 4b 45  .if !empty(.MAKE
0070: 2e 4d 4f 44 45 3a 4d 63 6f 6d 70 61 74 29 0a 2e  .MODE:Mcompat)..
0080: 65 72 72 6f 72 20 22 45 52 52 4f 52 3a 20 4d 52  error "ERROR: MR
0090: 43 20 64 6f 65 73 6e 27 74 20 73 75 70 70 6f 72  C doesn't suppor
00a0: 74 20 22 63 6f 6d 70 61 74 22 20 6d 6f 64 65 2e  t "compat" mode.
00b0: 22 0a 2e 65 6e 64 69 66 0a 0a 4f 54 48 45 52 5f  "..endif..OTHER_
00c0: 54 41 52 47 45 54 53 3a 3d 0a 0a 2e 69 6e 63 6c  TARGETS:=...incl
00d0: 75 64 65 20 22 73 74 61 72 74 65 72 2e 6d 6b 22  ude "starter.mk"
00e0: 0a 0a 2e 53 49 4c 45 4e 54 3a 0a 0a 69 6e 73 74  ...SILENT:..inst
00f0: 61 6c 6c 3a 0a 09 69 6e 73 74 61 6c 6c 20 72 63  all:..install rc
0100: 20 2f 65 74 63 2f 72 63 0a 09 69 6e 73 74 61 6c   /etc/rc..instal
0110: 6c 20 72 63 2e 73 68 75 74 64 6f 77 6e 20 2f 65  l rc.shutdown /e
0120: 74 63 2f 72 63 2e 73 68 75 74 64 6f 77 6e 0a 0a  tc/rc.shutdown..
0130: 53 43 52 49 50 54 53 3a 3d 24 7b 3a 21 66 69 6e  SCRIPTS:=${:!fin
0140: 64 20 2f 65 74 63 2f 6d 72 63 20 2d 6e 61 6d 65  d /etc/mrc -name
0150: 20 27 2a 2e 73 65 72 76 69 63 65 2e 6d 6b 27 21   '*.service.mk'!
0160: 3a 53 2f 5e 5c 2f 65 74 63 5c 2f 6d 72 63 5c 2f  :S/^\/etc\/mrc\/
0170: 2f 2f 3a 53 2f 2e 73 65 72 76 69 63 65 2e 6d 6b  //:S/.service.mk
0180: 24 2f 2f 7d 0a 0a 2e 69 66 20 64 65 66 69 6e 65  $//}...if define
0190: 64 28 41 55 54 4f 42 4f 4f 54 29 0a 2e 69 6e 63  d(AUTOBOOT)..inc
01a0: 6c 75 64 65 20 22 69 6e 69 74 2e 6d 6b 22 0a 0a  lude "init.mk"..
01b0: 2e 45 52 52 4f 52 3a 0a 09 3a 20 45 52 52 4f 52  .ERROR:..: ERROR
01c0: 3a 20 41 42 4f 52 54 49 4e 47 20 42 4f 4f 54 20  : ABORTING BOOT 
01d0: 28 73 65 6e 64 69 6e 67 20 53 49 47 54 45 52 4d  (sending SIGTERM
01e0: 20 74 6f 20 70 61 72 65 6e 74 29 21 0a 09 3a 20   to parent)!..: 
01f0: 74 61 72 67 65 74 20 24 7b 2e 45 52 52 4f 52 5f  target ${.ERROR_
0200: 54 41 52 47 45 54 7d 20 66 61 69 6c 65 64 20 74  TARGET} failed t
0210: 6f 20 65 78 65 63 75 74 65 3a 0a 09 3a 20 24 7b  o execute:..: ${
0220: 2e 45 52 52 4f 52 5f 43 4d 44 7d 0a 09 6b 69 6c  .ERROR_CMD}..kil
0230: 6c 20 31 0a 2e 65 6e 64 69 66 0a 0a 74 65 73 74  l 1..endif..test
0240: 3a 0a 09 65 63 68 6f 20 45 6d 70 74 79 20 74 61  :..echo Empty ta
0250: 72 67 65 74 2e 0a 0a 23 20 43 72 65 61 74 65 20  rget...# Create 
0260: 73 65 72 76 69 63 65 20 74 61 72 67 65 74 73 0a  service targets.
0270: 2e 66 6f 72 20 73 65 72 76 69 63 65 20 69 6e 20  .for service in 
0280: 24 7b 53 43 52 49 50 54 53 7d 0a 2e 09 69 6e 63  ${SCRIPTS}...inc
0290: 6c 75 64 65 20 22 24 7b 73 65 72 76 69 63 65 7d  lude "${service}
02a0: 2e 73 65 72 76 69 63 65 2e 6d 6b 22 0a 0a 23 20  .service.mk"..# 
02b0: 53 65 74 20 44 41 45 4d 4f 4e 20 64 65 66 61 75  Set DAEMON defau
02c0: 6c 74 73 0a 44 41 45 4d 4f 4e 5f 24 7b 73 65 72  lts.DAEMON_${ser
02d0: 76 69 63 65 7d 5f 43 57 44 3f 3d 09 2f 0a 44 41  vice}_CWD?=./.DA
02e0: 45 4d 4f 4e 5f 24 7b 73 65 72 76 69 63 65 7d 5f  EMON_${service}_
02f0: 45 4e 41 42 4c 45 3f 3d 09 6e 6f 0a 44 41 45 4d  ENABLE?=.no.DAEM
0300: 4f 4e 5f 24 7b 73 65 72 76 69 63 65 7d 5f 55 53  ON_${service}_US
0310: 45 52 3f 3d 09 72 6f 6f 74 0a 44 41 45 4d 4f 4e  ER?=.root.DAEMON
0320: 5f 24 7b 73 65 72 76 69 63 65 7d 5f 47 52 4f 55  _${service}_GROU
0330: 50 3f 3d 09 77 68 65 65 6c 0a 0a 2e 09 69 66 20  P?=.wheel....if 
0340: 21 64 65 66 69 6e 65 64 28 44 41 45 4d 4f 4e 5f  !defined(DAEMON_
0350: 24 7b 73 65 72 76 69 63 65 7d 5f 43 4f 4d 4d 41  ${service}_COMMA
0360: 4e 44 29 0a 2e 09 09 77 61 72 6e 69 6e 67 20 4d  ND)....warning M
0370: 52 43 3e 20 53 65 72 76 69 63 65 20 5b 24 7b 73  RC> Service [${s
0380: 65 72 76 69 63 65 7d 5d 20 64 65 66 75 6e 63 74  ervice}] defunct
0390: 3a 20 6e 6f 20 43 4f 4d 4d 41 4e 44 20 73 70 65  : no COMMAND spe
03a0: 63 69 66 69 65 64 0a 2e 09 65 6c 73 65 0a 0a 23  cified...else..#
03b0: 20 53 65 72 76 69 63 65 20 63 72 65 61 74 69 6f   Service creatio
03c0: 6e 20 74 61 72 67 65 74 73 0a 2e 09 09 69 66 20  n targets....if 
03d0: 21 74 61 72 67 65 74 28 24 7b 73 65 72 76 69 63  !target(${servic
03e0: 65 7d 29 0a 24 7b 73 65 72 76 69 63 65 7d 3a 20  e}).${service}: 
03f0: 24 7b 53 45 52 56 49 43 45 5f 45 58 49 54 7d 20  ${SERVICE_EXIT} 
0400: 24 7b 5f 53 45 52 56 49 43 45 7d 0a 2e 09 09 65  ${_SERVICE}....e
0410: 6e 64 69 66 0a 0a 23 20 53 65 72 76 69 63 65 20  ndif..# Service 
0420: 73 74 61 74 75 73 20 74 61 72 67 65 74 73 0a 2e  status targets..
0430: 09 09 69 66 20 21 74 61 72 67 65 74 28 24 7b 73  ..if !target(${s
0440: 65 72 76 69 63 65 7d 5f 73 74 61 74 75 73 29 0a  ervice}_status).
0450: 24 7b 73 65 72 76 69 63 65 7d 5f 73 74 61 74 75  ${service}_statu
0460: 73 3a 20 24 7b 5f 53 45 52 56 49 43 45 5f 53 54  s: ${_SERVICE_ST
0470: 41 54 55 53 7d 0a 2e 09 09 65 6e 64 69 66 0a 0a  ATUS}....endif..
0480: 23 20 53 65 72 76 69 63 65 20 65 78 69 74 20 74  # Service exit t
0490: 61 72 67 65 74 73 0a 2e 09 09 69 66 20 21 74 61  argets....if !ta
04a0: 72 67 65 74 28 24 7b 73 65 72 76 69 63 65 7d 5f  rget(${service}_
04b0: 65 78 69 74 29 0a 24 7b 73 65 72 76 69 63 65 7d  exit).${service}
04c0: 5f 65 78 69 74 3a 20 24 7b 5f 53 45 52 56 49 43  _exit: ${_SERVIC
04d0: 45 5f 45 58 49 54 7d 20 24 7b 44 41 45 4d 4f 4e  E_EXIT} ${DAEMON
04e0: 5f 24 7b 73 65 72 76 69 63 65 7d 5f 44 45 50 53  _${service}_DEPS
04f0: 3a 53 2f 24 2f 5f 65 78 69 74 2f 7d 0a 2e 09 09  :S/$/_exit/}....
0500: 65 6e 64 69 66 0a 0a 44 41 45 4d 4f 4e 5f 45 58  endif..DAEMON_EX
0510: 49 54 3a 20 24 7b 73 65 72 76 69 63 65 7d 5f 65  IT: ${service}_e
0520: 78 69 74 0a 2e 09 65 6e 64 69 66 0a 2e 65 6e 64  xit...endif..end
0530: 66 6f 72 0a 0a 2e 4d 41 49 4e 3a 20 24 7b 53 43  for...MAIN: ${SC
0540: 52 49 50 54 53 7d 20 24 7b 54 41 52 47 45 54 53  RIPTS} ${TARGETS
0550: 7d 0a 0a 2e 50 48 4f 4e 59 3a 20 24 7b 53 43 52  }...PHONY: ${SCR
0560: 49 50 54 53 7d 20 24 7b 4f 54 48 45 52 5f 54 41  IPTS} ${OTHER_TA
0570: 52 47 45 54 53 7d 20 24 7b 54 41 52 47 45 54 53  RGETS} ${TARGETS
0580: 7d 0a 2e 75 6e 64 65 66 20 4f 54 48 45 52 5f 54  }..undef OTHER_T
0590: 41 52 47 45 54 53 20 53 43 52 49 50 54 53 20 54  ARGETS SCRIPTS T
05a0: 41 52 47 45 54 53 0a 0a 45 4e 41 42 4c 45 44 3a  ARGETS..ENABLED:
05b0: 3d 24 7b 3a 21 65 6e 76 21 3a 43 2f 3d 2e 2a 2f  =${:!env!:C/=.*/
05c0: 2f 3a 4d 2a 5f 45 4e 41 42 4c 45 7d 0a 0a 2e 66  /:M*_ENABLE}...f
05d0: 6f 72 20 76 61 72 20 69 6e 20 24 7b 45 4e 41 42  or var in ${ENAB
05e0: 4c 45 44 7d 0a 2e 09 69 66 20 21 65 6d 70 74 79  LED}...if !empty
05f0: 28 24 7b 76 61 72 7d 3a 74 6c 3a 4d 6e 6f 29 0a  (${var}:tl:Mno).
0600: 23 2e 69 6e 66 6f 20 24 7b 76 61 72 7d 0a 2e 09  #.info ${var}...
0610: 09 75 6e 64 65 66 20 24 7b 76 61 72 7d 0a 2e 09  .undef ${var}...
0620: 65 6e 64 69 66 0a 2e 65 6e 64 66 6f 72 0a 0a 2e  endif..endfor...
0630: 75 6e 64 65 66 20 45 4e 41 42 4c 45 44 0a 2e 75  undef ENABLED..u
0640: 6e 65 78 70 6f 72 74 2d 65 6e 76 0a 2e 65 78 70  nexport-env..exp
0650: 6f 72 74 0a 23 2e 69 6e 66 6f 20 24 7b 3a 21 65  ort.#.info ${:!e
0660: 6e 76 21 7d 0a                                   nv!}.