Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Nov 2016 06:11:01 +0000 (UTC)
From:      Marcelo Araujo <araujo@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r427077 - in head: . net-p2p/bitcoin net-p2p/bitcoin/files
Message-ID:  <201611250611.uAP6B1sv056007@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: araujo
Date: Fri Nov 25 06:11:01 2016
New Revision: 427077
URL: https://svnweb.freebsd.org/changeset/ports/427077

Log:
  - Add a UID/GID for bitcoin.
  - Rewrite the rc script with new options that allows users to:
  	- set config file.
  	- set datadir.
  	- set bitcoin limits.
  
  PR:		ports/213235
  Submitted by:	Christopher Hall <hsw@bitmark.com>
  Approved by:	maintainer timeout (1 month)

Modified:
  head/GIDs
  head/UIDs
  head/net-p2p/bitcoin/Makefile
  head/net-p2p/bitcoin/files/bitcoind.in

Modified: head/GIDs
==============================================================================
--- head/GIDs	Fri Nov 25 03:42:40 2016	(r427076)
+++ head/GIDs	Fri Nov 25 06:11:01 2016	(r427077)
@@ -720,7 +720,7 @@ postgres:*:770:
 # free: 776
 openxpki:*:777:
 # free: 778
-# free: 779
+bitcoin:*:779:
 zetacoin:*:780:
 # free: 781
 # free: 782

Modified: head/UIDs
==============================================================================
--- head/UIDs	Fri Nov 25 03:42:40 2016	(r427076)
+++ head/UIDs	Fri Nov 25 06:11:01 2016	(r427077)
@@ -725,7 +725,7 @@ postgres:*:770:770::0:0:PostgreSQL Daemo
 # free: 776
 openxpki:*:777:777::0:0:OpenXPKI Owner:/nonexistent:/usr/sbin/nologin
 # free: 778
-# free: 779
+bitcoin:*:779:779::0:0:bitcoin Daemon:/var/db/bitcoin:/usr/sbin/nologin
 zetacoin:*:780:780::0:0:ZetaCoin Daemon:/nonexistent:/usr/sbin/nologin
 # free: 781
 # free: 782

Modified: head/net-p2p/bitcoin/Makefile
==============================================================================
--- head/net-p2p/bitcoin/Makefile	Fri Nov 25 03:42:40 2016	(r427076)
+++ head/net-p2p/bitcoin/Makefile	Fri Nov 25 06:11:01 2016	(r427077)
@@ -4,7 +4,7 @@
 PORTNAME=	bitcoin
 PORTVERSION=	0.12.1
 DISTVERSIONPREFIX=	v
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	net-p2p finance
 
 MAINTAINER=	robbak@robbak.com

Modified: head/net-p2p/bitcoin/files/bitcoind.in
==============================================================================
--- head/net-p2p/bitcoin/files/bitcoind.in	Fri Nov 25 03:42:40 2016	(r427076)
+++ head/net-p2p/bitcoin/files/bitcoind.in	Fri Nov 25 06:11:01 2016	(r427077)
@@ -1,15 +1,173 @@
 #!/bin/sh
-#
 # $FreeBSD$
-#
+
 # PROVIDE: bitcoind
-# REQUIRE: LOGIN
+# REQUIRE: LOGIN cleanvar
+# KEYWORD: shutdown
+
+#
+# Add the following lines to /etc/rc.conf to enable :
+# bitcoind_enable (bool):	Set to "NO" by default.
+#				Set it to "YES" to enable bitcoind
+# bitcoind_user (str)		Set to "bitcoin" by default.
+# bitcoind_group (str)		Set to "bitcoin" by default.
+# bitcoind_conf (str)		Set to "%%PREFIX%%/etc/bitcoind.conf" by default.
+# bitcoind_data (str)		Set to "/var/lib/bitcoind" by default.
+# bitcoindlimits_enable (bool)	Set to "NO" by default.
+#				Set it to "YES" to enable bitcoindlimits
+# bitcoindlimits_args		Set to "-e -U ${bitcoind_user}" by default
+
 
 . /etc/rc.subr
 
 name="bitcoind"
 rcvar=bitcoind_enable
+
+start_precmd="bitcoind_precmd"
+start_cmd="bitcoind_start"
+restart_precmd="bitcoind_checkconfig"
+reload_precmd="bitcoind_checkconfig"
+configtest_cmd="bitcoind_checkconfig"
+status_cmd="bitcoind_status"
+stop_cmd="bitcoind_stop"
+stop_postcmd="bitcoind_wait"
 command="%%PREFIX%%/bin/bitcoind"
+cli_command="%%PREFIX%%/bin/bitcoin-cli"
+daemon_command="/usr/sbin/daemon"
+#pidfile="/var/run/${name}.pid"
+extra_commands="configtest"
+
+
+: ${bitcoind_enable:="NO"}
+: ${bitcoindlimits_enable:="NO"}
+
+load_rc_config ${name}
+
+: ${bitcoind_user:="bitcoin"}
+: ${bitcoind_group:="bitcoin"}
+: ${bitcoind_data_dir:="/var/db/bitcoind"}
+: ${bitcoind_config_file:="%%PREFIX%%/etc/bitcoin.conf"}
+: ${bitcoindlimits_args:="-e -U ${bitcoind_user}"}
+
+# set up dependant variables
+procname="${command}"
+pidfile="${bitcoind_data_dir}/bitcoind.pid"
+required_files="${bitcoind_config_file}"
+
+
+bitcoind_checkconfig()
+{
+  echo "Performing sanity check on bitcoind configuration:"
+  if [ ! -d "${bitcoind_data_dir}" ]
+  then
+    echo "Missing data directory: ${bitcoind_data_dir}"
+    exit 1
+  fi
+  chown -R "${bitcoind_user}:${bitcoind_group}" "${bitcoind_data_dir}"
+
+  if [ ! -f "${bitcoind_config_file}" ]
+  then
+    echo "Missing configuration file: ${bitcoind_config_file}"
+    exit 1
+  fi
+  if [ ! -x "${command}" ]
+  then
+    echo "Missing executable: ${command}"
+    exit 1
+  fi
+  return 0
+}
+
+bitcoind_cleanup()
+{
+  rm -f "${pidfile}"
+}
+
+bitcoind_precmd()
+{
+  bitcoind_checkconfig
+
+  pid=$(check_pidfile "${pidfile}" "${procname}")
+  if [ -z "${pid}" ]
+  then
+    echo "Bitcoind is not running"
+    rm -f "${pidfile}"
+  fi
+
+  if checkyesno bitcoindlimits_enable
+  then
+    eval $(/usr/bin/limits ${bitcoindlimits_args}) 2>/dev/null
+  else
+    return 0
+  fi
+}
+
+bitcoind_status()
+{
+  local pid
+  pid=$(check_pidfile "${pidfile}" "${procname}")
+  if [ -z "${pid}" ]
+  then
+    echo "Bitcoind is not running"
+    return 1
+  else
+    echo "Bitcoind running, pid: ${pid}"
+  fi
+}
+
+bitcoind_start()
+{
+  echo "Starting bitcoind:"
+  cd "${bitcoind_data_dir}" || return 1
+  ${daemon_command} -u "${bitcoind_user}" -p "${pidfile}" \
+    ${command} \
+    -conf="${bitcoind_config_file}" \
+    -datadir="${bitcoind_data_dir}" 2> /tmp/bitcoind.stderr > /tmp/bitcoind.stdout
+}
+
+bitcoind_stop()
+{
+  echo "Stopping bitcoind:"
+  pid=$(check_pidfile "${pidfile}" "${procname}")
+  if [ -z "${pid}" ]
+  then
+    echo "Bitcoind is not running"
+    return 1
+  else
+    ${cli_command} -conf="${bitcoind_config_file}" -datadir="${bitcoind_data_dir}" stop
+  fi
+}
+
+bitcoind_wait()
+{
+  local n=60
+  echo "Waiting for bitcoind shutdown:"
+  while :
+  do
+    printf '.'
+    pid=$(check_pidfile "${pidfile}" "${procname}")
+    if [ -z "${pid}" ]
+    then
+      printf '\n'
+      break
+    fi
+    sleep 1
+    n=$((${n} - 1))
+    if [ ${n} -eq 0 -a -f "${pidfile}" ]
+    then
+      printf "\nForce shutdown"
+      kill -9 $(cat "${pidfile}")
+      for n in 1 2 3
+      do
+        printf '.'
+        sleep 1
+      done
+      printf '\n'
+      break
+    fi
+  done
+  rm -f "${pidfile}"
+  echo "Shutdown complete"
+}
 
-load_rc_config $name
 run_rc_command "$1"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611250611.uAP6B1sv056007>