From owner-svn-ports-all@freebsd.org Fri Nov 25 06:11:03 2016 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2B83BC52A00; Fri, 25 Nov 2016 06:11:03 +0000 (UTC) (envelope-from araujo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id ECE60B39; Fri, 25 Nov 2016 06:11:02 +0000 (UTC) (envelope-from araujo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id uAP6B2Qu056011; Fri, 25 Nov 2016 06:11:02 GMT (envelope-from araujo@FreeBSD.org) Received: (from araujo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id uAP6B1sv056007; Fri, 25 Nov 2016 06:11:01 GMT (envelope-from araujo@FreeBSD.org) Message-Id: <201611250611.uAP6B1sv056007@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: araujo set sender to araujo@FreeBSD.org using -f From: Marcelo Araujo Date: Fri, 25 Nov 2016 06:11:01 +0000 (UTC) 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 X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Nov 2016 06:11:03 -0000 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 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"