findRandomTcpPort() in post-install revised to check $port against netstat
bitcoin user / group already created in the pre-install script
daemon runs in /var/lib/bitcoin as bitcoin:bitcoin
APKBUILD changed slightly to move test_bitcoin-qt into bitcoin-qt pkg.
Modified the bitcoin-cli description to show it is a CLI for bitcoin-qt.
Revised locale patch including the fix for qt proposed upstream.
---
testing/bitcoin/APKBUILD | 23 +++++++++++++++++-----
testing/bitcoin/bitcoin.conf | 13 ++++++++++++
testing/bitcoin/bitcoin.initd | 38 ++++++++++++++++++++++++++++++++++++
testing/bitcoin/bitcoin.post-install | 35 +++++++++++++++++++++++++++++++++
testing/bitcoin/bitcoin.pre-install | 5 +++++
5 files changed, 109 insertions(+), 5 deletions(-)
create mode 100644 testing/bitcoin/bitcoin.conf
create mode 100644 testing/bitcoin/bitcoin.initd
create mode 100644 testing/bitcoin/bitcoin.post-install
create mode 100644 testing/bitcoin/bitcoin.pre-install
diff --git a/testing/bitcoin/APKBUILD b/testing/bitcoin/APKBUILD
index 57a2752..9d90f83 100644
--- a/testing/bitcoin/APKBUILD
+++ b/testing/bitcoin/APKBUILD
@@ -11,11 +11,13 @@ depends_dev=""
makedepends="$depends_dev boost-dev openssl-dev db-dev miniupnpc-dev
qt5-qtbase-dev qt5-qttools-dev protobuf-dev libqrencode-dev
autoconf automake libtool"
-install=""
+install="$pkgname.post-install $pkgname.pre-install"
subpackages="$pkgname-qt $pkgname-cli"
source="$pkgname-$pkgver.tar.gz::https://github.com/bitcoin/bitcoin/archive/v$pkgver.tar.gz
ssize_t.patch
20-set-default-env.patch
+ $pkgname.initd
+ $pkgname.conf
"
_builddir="$srcdir"/bitcoin-$pkgver
@@ -47,26 +49,37 @@ build() {
package() {
cd "$_builddir"
make install DESTDIR="$pkgdir" || return 1
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname || return 1
+ install -m600 -D "$srcdir"/$pkgname.conf "$pkgdir"/etc/$pkgname.conf || return 1
}
qt() {
pkgdesc="Bitcoin with a Qt frontend & QR Code support"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/bitcoin-qt "$subpkgdir"/usr/bin/ || return 1
+ mv "$pkgdir"/usr/bin/test_bitcoin-qt "$subpkgdir"/usr/bin/ || return 1
}
cli() {
- pkgdesc="Bitcoin CLI"
+ pkgdesc="Bitcoin CLI for bitcoin-qt"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/bitcoin-cli "$subpkgdir"/usr/bin/ || return 1
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname || return 1
+ install -m600 -D "$srcdir"/$pkgname.conf "$pkgdir"/etc/$pkgname.conf || return 1
}
md5sums="7a9c14c09b04e3e37d703fbfe5c3b1e2 bitcoin-0.9.1.tar.gz
716a88e668729e89d3eb929da86f7f04 ssize_t.patch
-de733598adec12a7c0e8f2665a086f6d 20-set-default-env.patch"
+de733598adec12a7c0e8f2665a086f6d 20-set-default-env.patch
+56edf10681b0cd7cc33de1fd24155108 bitcoin.initd
+3e9b4a37bb46e6cd83b6824870c58484 bitcoin.conf"
sha256sums="bf5021a426b5e38a741a5294a0ceb22daa74cda11c6dc0478c4aa48c55fdccb3 bitcoin-0.9.1.tar.gz
f0a094c7b374338ad153ee06b7dd2369dad6b97b1f1bb0252da12c9aaace5321 ssize_t.patch
-d0763e09784cb09900be7e702e4bbadfc3230715d1f6afa6d70417ab64dde5ef 20-set-default-env.patch"
+d0763e09784cb09900be7e702e4bbadfc3230715d1f6afa6d70417ab64dde5ef 20-set-default-env.patch
+df060fcee7227a2c7c4a435e24dea25b6388a6d6a98f01975c466a2c770e976a bitcoin.initd
+b7a31bf251f1011ab6584b610acac8494612c2012e9771985228c36c08a315ac bitcoin.conf"
sha512sums="75be422fc263f209783fc66d9fd99027d67c7460c599a23badafcf5546ce7cb21206fce04c516a1c101aeff13542b332249b3b70a70c483aa82a5048dbdc9d92 bitcoin-0.9.1.tar.gz
98aa5ad81bdb4ae961b791bc978c39117cdf2d83c2181f92bebbb0db107d9b6e86eda265fb3f93ff8a5ca8a7754d7148818b98095d57201dff9363d60b97e7dd ssize_t.patch
-288934bea005cd6fdcf87525ce82fc0c031e0b86bba02c217c1e32536d3c51981ff187ee630f64787c6d7978d89802f8107b91fa8b2a86fbbb45cb79738e291b 20-set-default-env.patch"
+288934bea005cd6fdcf87525ce82fc0c031e0b86bba02c217c1e32536d3c51981ff187ee630f64787c6d7978d89802f8107b91fa8b2a86fbbb45cb79738e291b 20-set-default-env.patch
+9bab044e3ddc229f8e2b2eb170361f92d234c78e21c6f1c24a5fe1d0b480db5b6728dda990752eb0820085ecdc41538e735d631ff5886c270475a5b634e3729f bitcoin.initd
+48abce0f0a5b088c957aa5cb2bcf9bb520593caa7a20019bdf785e43f7d2459968240d4529dfa30be2fca92891bf50c1253a513530511e99d8ee471d9ff6bd95 bitcoin.conf"
diff --git a/testing/bitcoin/bitcoin.conf b/testing/bitcoin/bitcoin.conf
new file mode 100644
index 0000000..4f070b1
--- /dev/null
+++ b/testing/bitcoin/bitcoin.conf
@@ -0,0 +1,13 @@
+### Bitcoin configuration for Alpine Linux ####
+# #
+##### data directory is /var/lib/bitcoin ######
+##### & set in /etc/init.d/bitcoin not here ###
+#
+#proxy=127.0.0.1:9050 #use TOR Socks Proxy
+rpcallowip=127.0.0.1
+rpcuser=changeme
+rpcpassword=changeme
+rpcport=changeme
+daemon=1
+#gen=1 #generate bitcoins
+
diff --git a/testing/bitcoin/bitcoin.initd b/testing/bitcoin/bitcoin.initd
new file mode 100644
index 0000000..5f0ef76
--- /dev/null
+++ b/testing/bitcoin/bitcoin.initd
@@ -0,0 +1,38 @@
+#!/sbin/runscript
+
+# Bitcoin init.d file for Alpine Linux.
+
+name=bitcoind
+daemon=/usr/bin/$name
+config=/etc/bitcoin.conf
+user=bitcoin
+group=bitcoin
+## supercedes datadir set in $config ##
+datadir=/var/lib/bitcoin
+pidfile=/var/run/bitcoin/$name.pid
+
+depend() {
+ need net
+ after logger firewall
+}
+
+start() {
+ ebegin "Starting ${name}"
+ # enforce permissions
+ checkpath -q -d ${pidfile%/*} -o ${user}:${group}
+ checkpath -q -d ${datadir} -m 0700 -o ${user}:${group}
+ checkpath -q -f ${config} -m 0600 -o ${user}:${group}
+ start-stop-daemon --start --quiet \
+ --pidfile ${pidfile} \
+ --user ${user}:${group} \
+ --exec ${daemon} -- -conf=${config} -datadir=${datadir} -pid=${pidfile}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${name}"
+ start-stop-daemon --stop --quiet \
+ --pidfile ${pidfile} \
+ --exec ${daemon}
+ eend $?
+}
diff --git a/testing/bitcoin/bitcoin.post-install b/testing/bitcoin/bitcoin.post-install
new file mode 100644
index 0000000..cc9c4ef
--- /dev/null
+++ b/testing/bitcoin/bitcoin.post-install
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+NORMAL="\033[1;0m"
+STRONG="\033[1;1m"
+GREEN="\033[1;32m"
+
+config=$(grep -F 'config=' /etc/init.d/bitcoin |sed 's/config=//')
+
+randgen() {
+ output=$(cat /dev/urandom | tr -dc '0-9a-zA-Z!@#$%^&*_+-' | head -c${1:-$1}) 2>/dev/null
+ echo $output
+}
+
+findRandomTcpPort(){
+ port=$(( 1024 + $(( $RANDOM % $(( 65534 - 1024 )) )) ))
+ while netstat -atn | grep -q :$port; do port=$(expr $port + 1); done; echo $port
+}
+
+GenPasswd(){
+ sed -i "/rpcuser=/ c \rpcuser=USER-"$(randgen 32)"" $config
+ sed -i "/rpcpassword=/ c \rpcpassword=PW-"$(randgen 64)"" $config
+ sed -i "/rpcport=/ c \rpcport="$(findRandomTcpPort)"" $config
+ print_green "Generated random user / password / port in:" " $config\n"
+}
+
+print_green() {
+ local prompt="${STRONG}$1${GREEN}$2${NORMAL}"
+ printf "${prompt}%s"
+}
+
+if grep -Fq "changeme" $config; then
+ GenPasswd
+fi
+
+exit 0
diff --git a/testing/bitcoin/bitcoin.pre-install b/testing/bitcoin/bitcoin.pre-install
new file mode 100644
index 0000000..f020a8b
--- /dev/null
+++ b/testing/bitcoin/bitcoin.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+addgroup -S bitcoin 2>/dev/null
+adduser -S -H -h /var/lib/bitcoin -g bitcoin -G bitcoin -D -s /sbin/nologin bitcoin 2>/dev/null
+exit 0
+
--
1.9.1
---
Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org
Help: alpine-devel+help@lists.alpinelinux.org
---