diff options
author | Andy Weidenbaum | 2015-06-09 11:41:58 -0700 |
---|---|---|
committer | Andy Weidenbaum | 2015-06-09 11:41:58 -0700 |
commit | dbc626bb06c6490e950030b6dc1b5d8f4a8b9dd2 (patch) | |
tree | f49bf00cff7399e925e7fd7d483b5596be67389b | |
download | aur-dbc626bb06c6490e950030b6dc1b5d8f4a8b9dd2.tar.gz |
Initial import
-rw-r--r-- | .SRCINFO | 40 | ||||
-rw-r--r-- | PKGBUILD | 98 | ||||
-rw-r--r-- | bs.install | 99 | ||||
-rw-r--r-- | bs.logrotate | 10 | ||||
-rw-r--r-- | bs.service | 14 | ||||
-rw-r--r-- | bsinit.service | 12 |
6 files changed, 273 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..8478a90fded8 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,40 @@ +pkgbase = libbitcoin-server + pkgdesc = Bitcoin Full Node and Query Server + pkgver = 2.0.0 + pkgrel = 3 + url = https://github.com/libbitcoin/libbitcoin-server + install = bs.install + arch = i686 + arch = x86_64 + groups = libbitcoin + license = AGPL3 + makedepends = autoconf + makedepends = automake + makedepends = gcc + makedepends = git + makedepends = libconfig + makedepends = libtool + makedepends = make + makedepends = pkg-config + depends = boost + depends = boost-libs + depends = czmq-git + depends = czmqpp-git + depends = libbitcoin-node + depends = libsodium + depends = secp256k1-git + depends = zeromq + optdepends = libbitcoin-explorer: CurveZMQ client/server authentication + source = libbitcoin-server-2.0.0.tar.gz::https://codeload.github.com/libbitcoin/libbitcoin-server/tar.gz/v2.0.0 + source = git+https://github.com/libbitcoin/libbitcoin-server.wiki + source = bs.logrotate + source = bs.service + source = bsinit.service + sha256sums = 41098d07f3a2bb710e1fea336e1c1b740f6f22186522126576a36a90f599ef07 + sha256sums = SKIP + sha256sums = 09ea3d2bf7cb87a0760c2a73893d62d1868d232c9e925cabf6140b1b031efee3 + sha256sums = 564112d0860f1523049bd89779e1b1bfc189a3d143d2cc808441981ed793658a + sha256sums = 2bcf3615cd8e5ba6d4c78429b018b9bf756d5fad6ab879963a13f19e47315c7d + +pkgname = libbitcoin-server + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..a3143cda439d --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,98 @@ +# Maintainer: Andy Weidenbaum <archbaum@gmail.com> + +pkgname=libbitcoin-server +pkgver=2.0.0 +pkgrel=3 +pkgdesc="Bitcoin Full Node and Query Server" +arch=('i686' 'x86_64') +depends=('boost' + 'boost-libs' + 'czmq-git' + 'czmqpp-git' + 'libbitcoin-node' + 'libsodium' + 'secp256k1-git' + 'zeromq') +makedepends=('autoconf' + 'automake' + 'gcc' + 'git' + 'libconfig' + 'libtool' + 'make' + 'pkg-config') +optdepends=('libbitcoin-explorer: CurveZMQ client/server authentication') +groups=('libbitcoin') +url="https://github.com/libbitcoin/libbitcoin-server" +license=('AGPL3') +source=($pkgname-$pkgver.tar.gz::https://codeload.github.com/libbitcoin/$pkgname/tar.gz/v$pkgver + git+https://github.com/libbitcoin/libbitcoin-server.wiki + bs.logrotate + bs.service + bsinit.service) +sha256sums=('41098d07f3a2bb710e1fea336e1c1b740f6f22186522126576a36a90f599ef07' + 'SKIP' + '09ea3d2bf7cb87a0760c2a73893d62d1868d232c9e925cabf6140b1b031efee3' + '564112d0860f1523049bd89779e1b1bfc189a3d143d2cc808441981ed793658a' + '2bcf3615cd8e5ba6d4c78429b018b9bf756d5fad6ab879963a13f19e47315c7d') +install=bs.install + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + + msg2 'Configuring...' + cp -dpr --no-preserve=ownership data/bs.cfg data/bs.cfg.in + sed -i 's@^blockchain_path.*@blockchain_path = /srv/bs/blockchain@' data/bs.cfg.in + sed -i 's@^debug_file.*@debug_file = /var/log/bs/debug.log@' data/bs.cfg.in + sed -i 's@^error_file.*@error_file = /var/log/bs/error.log@' data/bs.cfg.in + sed -i 's@^hosts_file.*@hosts_file = /etc/bs/hosts@' data/bs.cfg.in +} + +build() { + cd "$srcdir/$pkgname-$pkgver" + + msg2 'Building...' + ./autogen.sh + ./configure \ + --prefix=/usr \ + --sbindir=/usr/bin \ + --libexecdir=/usr/lib/libbitcoin-server \ + --sysconfdir=/etc \ + --sharedstatedir=/usr/share/libbitcoin-server \ + --localstatedir=/var/lib/libbitcoin-server \ + --with-bash-completiondir=/usr/share/bash-completion/completions \ + --with-gnu-ld + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + msg2 'Installing license...' + install -Dm 644 COPYING "$pkgdir/usr/share/licenses/libbitcoin-server/COPYING" + + msg2 'Installing...' + install -dm 700 "$pkgdir/etc/bs" + install -dm 700 "$pkgdir/srv/bs" + make DESTDIR="$pkgdir" install + + msg2 'Installing documentation...' + cp -dpr --no-preserve=ownership "$srcdir/libbitcoin-server.wiki" \ + "$pkgdir/usr/share/doc/libbitcoin-server/wiki" + + msg2 'Installing conf...' + install -Dm 600 data/bs.cfg.in "$pkgdir/etc/bs/bs.cfg" + + msg2 'Installing systemd service files...' + install -Dm 644 "$srcdir/bs.service" \ + "$pkgdir/usr/lib/systemd/system/bs.service" + install -Dm 644 "$srcdir/bsinit.service" \ + "$pkgdir/usr/lib/systemd/system/bsinit.service" + + msg2 'Installing logrotate conf...' + install -dm 700 "$pkgdir/var/log/bs" + install -Dm 644 "$srcdir/bs.logrotate" "$pkgdir/etc/logrotate.d/bs" + + msg2 'Cleaning up pkgdir...' + find "$pkgdir" -type d -name .git -exec rm -r '{}' + +} diff --git a/bs.install b/bs.install new file mode 100644 index 000000000000..8ba8f146cce9 --- /dev/null +++ b/bs.install @@ -0,0 +1,99 @@ +_bs_user=bs +_bs_group=bs + +post_install() { + _mkuser + _disable_cow + chown -R $_bs_user:$_bs_group /etc/bs /srv/bs /var/log/bs + printf "%b\n" "$xx" +} + +post_remove() { + _rmuser + rm -rf /etc/bs /srv/bs /var/log/bs +} + + +# ------------------------------------------------------------------------------ +# helper functions for creating libbitcoin-server user / group +# ------------------------------------------------------------------------------ + +_mkuser() { + getent passwd $_bs_user &>/dev/null || { + echo -n "Creating libbitcoin-server user... " + grep -E "^$_bs_group:" /etc/group >/dev/null || groupadd $_bs_group + useradd -m -d /etc/bs -g $_bs_group -s /usr/bin/nologin $_bs_user + echo "done" + } +} + +_rmuser() { + echo -n "Removing libbitcoin-server user... " + userdel -rf $_bs_user 2>/dev/null + echo "done" +} + + +# ------------------------------------------------------------------------------ +# helper functions for disabling btrfs Copy-On-Write (CoW) +# https://wiki.archlinux.org/index.php/Btrfs#Copy-On-Write_.28CoW.29 +# ------------------------------------------------------------------------------ + +# check if dir is btrfs +_is_btrfs() { + if [[ $(df -TP "$1" | tail -n 1 | awk '{print $2}') == 'btrfs' ]]; then + return 0 + else + return 1 + fi +} + +# disable btrfs CoW +_chattrify() { + # original dir, with trailing slash stripped if it exists + _orig_dir=$( echo "$1" | sed 's@/$@@' ) + + # if original dir exists, back it up + [[ -d "$1" ]] && mv "$1" "${_orig_dir}"_old + + # re-make original dir + mkdir -p "$1" + + # set permissions on re-made dir + chmod "$2" "$1" + + # disable btrfs CoW on re-made dir + chattr +C "$1" + + # recursive copy to restore backed up dir while mainintaining disabled CoW + [[ -d "${_orig_dir}"_old ]] \ + && find "${_orig_dir}"_old -mindepth 1 -maxdepth 1 -exec cp -R '{}' "$1" \; + + # set ownership on re-made dir + chown -R $3:$4 "$1" + + # purge backed up dir + [[ -d "${_orig_dir}"_old ]] && rm -rf "${_orig_dir}"_old +} + +# if blockchain or log dir has btrfs filesystem, disable CoW: +_disable_cow() { + for _dir in /srv/bs /var/log/bs; do + _is_btrfs "$_dir" && _chattrify "$_dir" "700" "$_bs_user" "$_bs_group" + done +} + +read -d '' xx <<'EOF' +libbitcoin-server +================= + +To run normally: + + $ bs --initchain /path/to/bs/config/file + $ bs /path/to/bs/config/file + +To run as a service: + + $ sudo systemctl start bsinit # wait several mins for blockchain dir to init + $ sudo systemctl start bs +EOF diff --git a/bs.logrotate b/bs.logrotate new file mode 100644 index 000000000000..ff5f541eb65e --- /dev/null +++ b/bs.logrotate @@ -0,0 +1,10 @@ +/var/log/bs/*.log { + size 5M + missingok + rotate 7 + compress + delaycompress + notifempty + create 644 bs bs + sharedscripts +} diff --git a/bs.service b/bs.service new file mode 100644 index 000000000000..2ba2ad5d05ea --- /dev/null +++ b/bs.service @@ -0,0 +1,14 @@ +[Unit] +Description=Libbitcoin server: a full Bitcoin node in the global peer-to-peer network +Conflicts=bsinit.service + +[Service] +Type=simple +User=bs +Group=bs +ExecStart=/usr/bin/bs /etc/bs/bs.cfg +ExecReload=/usr/bin/kill -s SIGHUP $MAINPID +ExecStop=/usr/bin/kill -s SIGINT $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/bsinit.service b/bsinit.service new file mode 100644 index 000000000000..6b6acfd9b1ac --- /dev/null +++ b/bsinit.service @@ -0,0 +1,12 @@ +[Unit] +Description=Libbitcoin server: initialize database in the configured directory +Conflicts=bs.service + +[Service] +Type=oneshot +User=bs +Group=bs +ExecStart=/usr/bin/bs -i /etc/bs/bs.cfg + +[Install] +WantedBy=multi-user.target |