servers.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/bin/sh
  2. # -*- coding: utf-8 -*-
  3. basedir="$(realpath "$0" | xargs dirname)"
  4. info()
  5. {
  6. echo "--- $*"
  7. }
  8. error()
  9. {
  10. echo "=== ERROR: $*" >&2
  11. }
  12. warning()
  13. {
  14. echo "=== WARNING: $*" >&2
  15. }
  16. die()
  17. {
  18. error "$*"
  19. exit 1
  20. }
  21. cleanup()
  22. {
  23. [ -n "$pid_backd" ] && kill "$pid_backd" 2>/dev/null
  24. [ -n "$pid_postd" ] && kill "$pid_postd" 2>/dev/null
  25. [ -n "$pid_fsd" ] && kill "$pid_fsd" 2>/dev/null
  26. wait
  27. }
  28. cleanup_and_exit()
  29. {
  30. cleanup
  31. exit 1
  32. }
  33. trap cleanup_and_exit INT TERM
  34. trap cleanup EXIT
  35. start_fsd()
  36. {
  37. echo "Starting cms-fsd..."
  38. rm -f "$rundir/cms-fsd.sock"
  39. local binary="$target/cms-fsd"
  40. [ -x "$binary" ] || die "cms-fsd binary $binary not found."
  41. "$binary" \
  42. --rundir "$rundir" \
  43. --no-systemd \
  44. "$dbdir" \
  45. &
  46. pid_fsd=$!
  47. }
  48. start_postd()
  49. {
  50. echo "Starting cms-postd..."
  51. rm -f "$rundir/cms-postd.sock"
  52. local binary="$target/cms-postd"
  53. [ -x "$binary" ] || die "cms-postd binary $binary not found."
  54. "$binary" \
  55. --rundir "$rundir" \
  56. --no-systemd \
  57. "$dbdir" \
  58. &
  59. pid_postd=$!
  60. }
  61. start_backd()
  62. {
  63. if [ $python -eq 0 ]; then
  64. echo "Starting cms-backd..."
  65. rm -f "$rundir/cms-backd.sock"
  66. local binary="$target/cms-backd"
  67. [ -x "$binary" ] || die "cms-backd binary $binary not found."
  68. "$binary" \
  69. --rundir "$rundir" \
  70. --no-systemd \
  71. &
  72. pid_backd=$!
  73. else
  74. echo "Starting cmsbackpy..."
  75. export NOTIFY_SOCKET=
  76. rm -f "$rundir/cms-backd.sock"
  77. local pyscript="$basedir/../cmsbackpy/cms-backd"
  78. [ -r "$pyscript" ] || die "cms-backd script $pyscript not found."
  79. python3 "$pyscript" \
  80. --rundir "$rundir" \
  81. --pythonpath "$basedir/.." \
  82. --no-cython \
  83. &
  84. pid_backd=$!
  85. fi
  86. }
  87. python=1
  88. release="debug"
  89. while [ $# -ge 1 ]; do
  90. case "$1" in
  91. --no-python|-P)
  92. python=0
  93. ;;
  94. --debug|-d)
  95. release="debug"
  96. ;;
  97. --release|-r)
  98. release="release"
  99. ;;
  100. *)
  101. die "Invalid option: $1"
  102. ;;
  103. esac
  104. shift
  105. done
  106. target="$basedir/../target/$release"
  107. rundir="$basedir/run"
  108. dbdir="$basedir/../example/db"
  109. pid_fsd=
  110. pid_postd=
  111. pid_backd=
  112. mkdir -p "$rundir"
  113. start_fsd
  114. start_postd
  115. sleep 1
  116. start_backd
  117. wait
  118. # vim: ts=4 sw=4 expandtab