Same init / pre / post install scripts as with bitcoin.
Daemon runs as the namecoin user / group in /var/lib/namecoin with
a random user / pass / port.
Namecoin & bitcoin also both build with a qt front end subpackage.
---
testing/namecoin/10-use-latest-UPnP-lib.patch | 11 +++
.../namecoin/20-boost-multithread-dynamic.patch | 37 ++++++++++
testing/namecoin/30-set-default-env.patch | 19 +++++
testing/namecoin/APKBUILD | 82 ++++++++++++++++++++++
testing/namecoin/namecoin.conf | 13 ++++
testing/namecoin/namecoin.initd | 38 ++++++++++
testing/namecoin/namecoin.post-install | 49 +++++++++++++
testing/namecoin/namecoin.pre-install | 5 ++
8 files changed, 254 insertions(+)
create mode 100644 testing/namecoin/10-use-latest-UPnP-lib.patch
create mode 100644 testing/namecoin/20-boost-multithread-dynamic.patch
create mode 100644 testing/namecoin/30-set-default-env.patch
create mode 100644 testing/namecoin/APKBUILD
create mode 100644 testing/namecoin/namecoin.conf
create mode 100644 testing/namecoin/namecoin.initd
create mode 100644 testing/namecoin/namecoin.post-install
create mode 100644 testing/namecoin/namecoin.pre-install
diff --git a/testing/namecoin/10-use-latest-UPnP-lib.patch b/testing/namecoin/10-use-latest-UPnP-lib.patch
new file mode 100644
index 0000000..9a2815d
--- /dev/null
+++ b/testing/namecoin/10-use-latest-UPnP-lib.patch
@@ -0,0 +1,11 @@
+--- src/net.cpp
++++ src/net.cpp.new
+@@ -1087,7 +1087,7 @@
+
+ #ifndef __WXMSW__
+ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
+- port, port, lanaddr, 0, "TCP", 0);
++ port, port, lanaddr, 0, "TCP", 0, "0");
+ #else
+ r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
+ port, port, lanaddr, 0, "TCP", 0, "0");
diff --git a/testing/namecoin/20-boost-multithread-dynamic.patch b/testing/namecoin/20-boost-multithread-dynamic.patch
new file mode 100644
index 0000000..768957e
--- /dev/null
+++ b/testing/namecoin/20-boost-multithread-dynamic.patch
@@ -0,0 +1,37 @@
+--- src/Makefile
++++ src/Makefile.new
+@@ -9,27 +9,23 @@
+ DEFS += -DBOOST_THREAD_USE_LIB
+
+ INCLUDEPATHS= \
+- -I../libs/openssl-1.0.1e/include \
+- -I../libs/db-4.7.25.NC/build_unix \
+- -I../libs/boost_1_50_0
++ -I/usr/include
+
+ LIBPATHS= \
+- -L../libs/openssl-1.0.1e \
+- -L../libs/db-4.7.25.NC/build_unix \
+- -L../libs/boost_1_50_0/stage/lib
++ -L/usr/lib
+
+ LIBBOOST_SUFFIX=
+
+ LIBS= \
+- -Wl,-Bstatic \
++ -Wl,-Bdynamic \
+ -l boost_system$(LIBBOOST_SUFFIX) \
+ -l boost_filesystem$(LIBBOOST_SUFFIX) \
+- -l boost_program_options$(LIBBOOST_SUFFIX) \
+- -l boost_thread$(LIBBOOST_SUFFIX) \
+- -l boost_chrono$(LIBBOOST_SUFFIX) \
++ -l boost_program_options-mt$(LIBBOOST_SUFFIX) \
++ -l boost_thread-mt$(LIBBOOST_SUFFIX) \
++ -l boost_chrono-mt$(LIBBOOST_SUFFIX) \
+ -l db_cxx \
+ -l ssl \
+- -l crypto
++ -l crypto
+
+ namecoin: USE_UPNP:=1
+ ifdef USE_UPNP
diff --git a/testing/namecoin/30-set-default-env.patch b/testing/namecoin/30-set-default-env.patch
new file mode 100644
index 0000000..560db2b
--- /dev/null
+++ b/testing/namecoin/30-set-default-env.patch
@@ -0,0 +1,19 @@
+--- src/init.cpp
++++ src/init.cpp.new
+@@ -98,6 +99,16 @@
+ #ifndef GUI
+ int main(int argc, char* argv[])
+ {
++ #ifndef WIN32
++ try
++ {
++ boost::filesystem::path::codecvt(); // Raises runtime error if current locale is invalid
++ } catch(std::runtime_error &e)
++ {
++ setenv("LC_ALL", "C", 1); // Force C locale
++ }
++ #endif
++
+ bool fRet = false;
+ fRet = AppInit(argc, argv);
+
diff --git a/testing/namecoin/APKBUILD b/testing/namecoin/APKBUILD
new file mode 100644
index 0000000..8dd815e
--- /dev/null
+++ b/testing/namecoin/APKBUILD
@@ -0,0 +1,82 @@
+# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
+# Maintainer: Stuart Cardall <developer@it-offshore.co.uk>
+pkgname=namecoin
+pkgver=3.72
+pkgrel=0
+pkgdesc="Namecoin is a peer to peer DNS based on bitcoin"
+url="https://github.com/namecoin/namecoin"
+arch="all"
+license="GPL"
+depends=""
+depends_dev="openssl-dev db-dev boost-dev miniupnpc-dev glib-dev qt-dev"
+makedepends="$depends_dev"
+install="$pkgname.post-install $pkgname.pre-install"
+subpackages="$pkgname-qt"
+source="https://github.com/namecoin/namecoin/archive/vQ.$pkgver.tar.gz
+ 10-use-latest-UPnP-lib.patch
+ 20-boost-multithread-dynamic.patch
+ 30-set-default-env.patch
+ $pkgname.initd
+ $pkgname.conf
+ "
+
+_builddir="$srcdir"/namecoin-vQ.$pkgver/src
+prepare() {
+ local i
+ cd "$_builddir"
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
+}
+
+build() {
+ cd "$_builddir"
+ # build namecoind
+ make USE_UPNP=1 USE_SSL=1 || return 1
+ cd ..
+ # build namecoin-qt
+ qmake
+ # Fix boost_multi thread linking in the GUI too
+ sed -i 's/-lboost_thread/-lboost_thread-mt/g' ./Makefile
+ sed -i 's/-lboost_program_options/-lboost_program_options-mt/g' ./Makefile
+ sed -i 's/-lboost_chrono/-lboost_chrono-mt/g' ./Makefile
+ make || return 1
+}
+
+qt() {
+ pkgdesc="Namecoin with a Qt frontend"
+ #depends="namecoin=$pkgver-r$pkgrel"
+ cd "$srcdir"/namecoin-vQ.$pkgver
+ install -Dm755 namecoin-qt "$pkgdir"/usr/bin/namecoin-qt || return 1
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/namecoin-qt \
+ "$subpkgdir"/usr/bin/
+}
+
+package() {
+ cd "$_builddir"
+ 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
+ install -Dm755 namecoind "$pkgdir"/usr/bin/namecoind || return 1
+}
+
+md5sums="dc1cc80bcf0833f0bf7239e7ae6c1399 vQ.3.72.tar.gz
+33443ac3befcb1718fec7cae55b6c708 10-use-latest-UPnP-lib.patch
+9d8b68656d4925c30264662f41a4fb6c 20-boost-multithread-dynamic.patch
+d5f05723a48808aaff4cfdc7239ed3e1 30-set-default-env.patch
+9ecdbd9e17240075d064498a80fd50bd namecoin.initd
+59b2e0e765738ba48f632051fb6917ae namecoin.conf"
+sha256sums="8c30214186bf0baf4f779235e82715a99686c8c358524ffa352b88e2a3d98725 vQ.3.72.tar.gz
+6961c9c6893cb68c49bab02fe14f34386beae9e3dbd04bb698fb10d0fd04c863 10-use-latest-UPnP-lib.patch
+4c55bc5dd13380163bad7ea5701651c9621762992e730079897e5f4e2c52bf88 20-boost-multithread-dynamic.patch
+6a0f225e6c99976ee4fbd32e6dbc372d2f0047a8cb9bb640cbe525bc03417d31 30-set-default-env.patch
+04ae66115343aa8ed7343139a2370b1e570c8ab4397d09457f5f157dd906a204 namecoin.initd
+4b413833527929ea863351469a5a4fc1e0ac365fe9df5e8a8304d8667acf8cea namecoin.conf"
+sha512sums="fac3b0cb3d02ccb438869752581ab57df6dd8e47201e613e73c64459009d9d20358f6595400938e61bf795f679466a098bbc77f1b2940591ec93d04cc387ea32 vQ.3.72.tar.gz
+f30cb5e5f18baf6f5aa2bbd2420bf3b0f780be67dd7d0f7947dd457f57fe73584a20508da659406ff6e93d68601ff2f00acfa261cee4d25f84d939098245e1f9 10-use-latest-UPnP-lib.patch
+000e77db91f788ba0bf52abd289d416838b17fec600dc8009b6799a9e1443a3a997090820eefc3c98b3a53afe4e49962545dba81b0ddda0f0192595817fd3d62 20-boost-multithread-dynamic.patch
+c8ca85f60e470753cb2d955ef6266f6cf557039b4a5f1528252da2adad2f1a8347a6058db4997d332adc05aab78cd5e236e894a056d8ad7cf22533930c454ae0 30-set-default-env.patch
+3048248b3da7300b0b3cb5667283badc17b41e6c90573604fd9ea9eb9933e93f9b1d6288846793b4e7a001a4cae5e52d2ce42e4bdc83e48f72aca6ee0e8ddd43 namecoin.initd
+3f92cb9a5f66d0e9e3792691b2e62b929c092030273bb87ebd9564e0c02196a5a9f69c458162f1b35099ac28e9b79b1c4035144b9d2dae4ad3e87d05a40d7ed4 namecoin.conf"
diff --git a/testing/namecoin/namecoin.conf b/testing/namecoin/namecoin.conf
new file mode 100644
index 0000000..dd48332
--- /dev/null
+++ b/testing/namecoin/namecoin.conf
@@ -0,0 +1,13 @@
+### Namecoin configuration for Alpine Linux ###
+# #
+##### data directory is /var/lib/namecoin #####
+##### & set in /etc/init.d/namecoin 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 namecoins
+
diff --git a/testing/namecoin/namecoin.initd b/testing/namecoin/namecoin.initd
new file mode 100644
index 0000000..9bdeea0
--- /dev/null
+++ b/testing/namecoin/namecoin.initd
@@ -0,0 +1,38 @@
+#!/sbin/runscript
+
+# Namecoin init.d file for Alpine Linux.
+
+name=namecoind
+daemon=/usr/bin/$name
+config=/etc/namecoin.conf
+user=namecoin
+group=namecoin
+## supercedes datadir set in $config ##
+datadir=/var/lib/namecoin
+pidfile=/var/run/namecoin/$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/namecoin/namecoin.post-install b/testing/namecoin/namecoin.post-install
new file mode 100644
index 0000000..bdd1f69
--- /dev/null
+++ b/testing/namecoin/namecoin.post-install
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+NORMAL="\033[1;0m"
+STRONG="\033[1;1m"
+GREEN="\033[1;32m"
+
+config=$(grep -F 'config=' /etc/init.d/namecoin |sed 's/config=//')
+
+randgen() {
+ output=$(< /dev/urandom tr -dc '0-9a-zA-Z!@#$%^&*_+-' | head -c${1:-$1}) 2>/dev/null
+ echo $output
+}
+
+# Generate random port
+randport() {
+ n=$RANDOM
+ while [ $n -gt 65536 ] && [ $n -lt 1024 ]; do
+ n=$RANDOM
+ done
+ echo $n
+}
+
+# Find unused TCP port
+findRandomTcpPort(){
+ port=$(randport)
+ while :
+ do
+ (echo >/dev/tcp/localhost/$port) &>/dev/null && port=$(randport) || break
+ 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 -F "changeme" $config 1>/dev/null; then
+ GenPasswd
+fi
+
+exit 0
diff --git a/testing/namecoin/namecoin.pre-install b/testing/namecoin/namecoin.pre-install
new file mode 100644
index 0000000..33c72d1
--- /dev/null
+++ b/testing/namecoin/namecoin.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+addgroup -S namecoin 2>/dev/null
+adduser -S -h /var/lib/namecoin -g namecoin -G namecoin -D -s /sbin/nologin namecoin 2>/dev/null
+exit 0
+
--
1.9.1
---
Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org
Help: alpine-devel+help@lists.alpinelinux.org
---