nats-streaming-server.spec 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. ##
  2. ## nats-streaming-server.spec -- OpenPKG RPM Package Specification
  3. ## Copyright (c) 2000-2018 OpenPKG Project <http://openpkg.org/>
  4. ##
  5. ## Permission to use, copy, modify, and distribute this software for
  6. ## any purpose with or without fee is hereby granted, provided that
  7. ## the above copyright notice and this permission notice appear in all
  8. ## copies.
  9. ##
  10. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  11. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  12. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  13. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  14. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  15. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  16. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  17. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  18. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  19. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  20. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  21. ## SUCH DAMAGE.
  22. ##
  23. # package information
  24. %define V_nats_streaming_server_base 0.10.2
  25. %define V_nats_streaming_server_snap 20180808
  26. # package information
  27. Name: nats-streaming-server
  28. Summary: NATS Streaming Server
  29. URL: http://nats.io/
  30. Vendor: Apcera Inc.
  31. Packager: OpenPKG Project
  32. Distribution: OpenPKG Community
  33. Class: EVAL
  34. Group: Networking
  35. License: Apache
  36. Version: %{V_nats_streaming_server_base}.%{V_nats_streaming_server_snap}
  37. Release: 20180808
  38. # package options
  39. %option with_pgsql no
  40. # list of sources
  41. Source0: http://download.openpkg.org/components/versioned/nats/nats-streaming-server-%{V_nats_streaming_server_snap}.tar.xz
  42. Source1: rc.nats-streaming-server
  43. Source2: nats-streaming-server.conf
  44. Source3: nats-streaming-server-setup.sh
  45. # build information
  46. BuildPreReq: OpenPKG, openpkg >= 20160101, go
  47. PreReq: OpenPKG, openpkg >= 20160101, nats-server
  48. %if "%{with_pgsql}" == "yes"
  49. PreReq: postgresql
  50. %endif
  51. %description
  52. NATS is an open source, lightweight, high-performance cloud native
  53. infrastructure messaging system. It implements a highly scalable and
  54. elegant publish-subscribe (pub/sub) model. The performant nature of
  55. NATS make it an ideal base for building modern, reliable, scalable
  56. cloud native distributed systems. This is the high performance
  57. streaming server for NATS.
  58. %track
  59. prog nats-streaming-server:base = {
  60. version = %{V_nats_streaming_server_base}
  61. url = https://github.com/nats-io/nats-streaming-server/releases
  62. regex = v(\d+\.\d+\.\d+)
  63. }
  64. prog nats-streaming-server:snap = {
  65. version = %{V_nats_streaming_server_snap}
  66. url = http://download.openpkg.org/components/versioned/nats/
  67. regex = nats-streaming-server-(__VER__)\.tar\.xz
  68. }
  69. %prep
  70. %setup -q -n nats-streaming-server
  71. %build
  72. # build program
  73. ( export GOPATH=`pwd`
  74. cd $GOPATH/src/github.com/nats-io/nats-streaming-server
  75. go build -x
  76. ) || exit $?
  77. %install
  78. # create directory hierarchy
  79. %{l_shtool} mkdir -f -p -m 755 \
  80. $RPM_BUILD_ROOT%{l_prefix}/bin \
  81. $RPM_BUILD_ROOT%{l_prefix}/sbin \
  82. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
  83. $RPM_BUILD_ROOT%{l_prefix}/etc/nats-streaming-server \
  84. %if "%{with_pgsql}" == "yes"
  85. $RPM_BUILD_ROOT%{l_prefix}/share/nats-streaming-server \
  86. $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/data/db \
  87. %endif
  88. $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/data/store \
  89. $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/data/raft \
  90. $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/run \
  91. $RPM_BUILD_ROOT%{l_prefix}/var/nats-streaming-server/log
  92. # install program
  93. %{l_shtool} install -c -s -m 755 \
  94. src/github.com/nats-io/nats-streaming-server/nats-streaming-server \
  95. $RPM_BUILD_ROOT%{l_prefix}/sbin/nats-streaming-server
  96. # install run-command script
  97. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  98. %{SOURCE rc.nats-streaming-server} \
  99. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  100. # install default configuration
  101. %if "%{with_pgsql}" == "yes"
  102. store="sql"
  103. %else
  104. store="file"
  105. %endif
  106. %{l_shtool} install -c -m 644 %{l_value -s -a} \
  107. -e "s;@store@;$store;g" \
  108. %{SOURCE nats-streaming-server.conf} \
  109. $RPM_BUILD_ROOT%{l_prefix}/etc/nats-streaming-server/
  110. %if "%{with_pgsql}" == "yes"
  111. # install PostgreSQL schema definition and setup script
  112. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  113. %{SOURCE nats-streaming-server-setup.sh} \
  114. $RPM_BUILD_ROOT%{l_prefix}/sbin/nats-streaming-server-setup
  115. %{l_shtool} install -c -m 644 %{l_value -s -a} \
  116. src/github.com/nats-io/nats-streaming-server/postgres.db.sql \
  117. $RPM_BUILD_ROOT%{l_prefix}/share/nats-streaming-server/postgresql.sql
  118. %endif
  119. # determine installation files
  120. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  121. %{l_files_std} \
  122. '%config %{l_prefix}/etc/nats-streaming-server/*' \
  123. '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/nats-streaming-server/*' \
  124. '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/nats-streaming-server/*/*'
  125. %files -f files
  126. %clean
  127. %post
  128. %if "%{with_pgsql}" == "yes"
  129. if [ $1 -eq 1 ]; then
  130. # display final hints on initial installation
  131. ( echo "To complete this installation of NATS Streaming Server with"
  132. echo "PostgreSQL support, initialize the database like this:"
  133. echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc postgresql start"
  134. echo " \$ $RPM_INSTALL_PREFIX/sbin/nats-streaming-server-setup install"
  135. ) | %{l_rpmtool} msg -b -t notice
  136. fi
  137. %endif
  138. if [ $1 -eq 2 ]; then
  139. # after upgrade, restart service
  140. eval `%{l_rc} nats-streaming-server status 2>/dev/null`
  141. [ ".$nats_streaming_server_active" = .yes ] && %{l_rc} nats-streaming-server restart
  142. fi
  143. exit 0
  144. %preun
  145. if [ $1 -eq 0 ]; then
  146. # before erase, stop service and remove log files
  147. %{l_rc} nats-streaming-server stop 2>/dev/null
  148. rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/data/store/* >/dev/null 2>&1 || true
  149. rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/data/raft/* >/dev/null 2>&1 || true
  150. rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/log/* >/dev/null 2>&1 || true
  151. rm -rf $RPM_INSTALL_PREFIX/var/nats-streaming-server/run/* >/dev/null 2>&1 || true
  152. fi
  153. exit 0