diff options
author | Andy Weidenbaum | 2015-12-21 21:40:05 -0800 |
---|---|---|
committer | Andy Weidenbaum | 2015-12-21 21:40:05 -0800 |
commit | 792ce56ffd75a3d6ff8383f147815285be7ccb70 (patch) | |
tree | f1a780912f738b36d97e27c35e5bbac36c1ba694 | |
parent | 3437fdf1762e253c6e6b62339bf480d8fd447313 (diff) | |
download | aur-792ce56ffd75a3d6ff8383f147815285be7ccb70.tar.gz |
update pkgver to 20151128, disable btrfs copy-on-write
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 35 | ||||
-rw-r--r-- | electrum-server.install | 76 |
3 files changed, 89 insertions, 26 deletions
@@ -1,6 +1,8 @@ +# Generated by mksrcinfo v8 +# Tue Dec 22 05:25:59 UTC 2015 pkgbase = electrum-server-git pkgdesc = Server to support Electrum python-based Bitcoin client - pkgver = 20150919 + pkgver = 20151128 pkgrel = 1 url = https://github.com/spesmilo/electrum-server install = electrum-server.install @@ -3,7 +3,7 @@ # Contributor: Sebastian Lindqvist <dunpin@gmail.com> pkgname=electrum-server-git -pkgver=20150919 +pkgver=20151128 pkgrel=1 pkgdesc="Server to support Electrum python-based Bitcoin client" arch=('i686' 'x86_64') @@ -38,58 +38,59 @@ pkgver() { prepare() { cd ${pkgname%-git} - msg 'Fixing Python version...' + msg2 'Fixing Python version...' find . -type f -print0 | xargs -0 sed -i 's#/usr/bin/python#/usr/bin/python2#g' find . -type f -print0 | xargs -0 sed -i 's#/usr/bin/env python#/usr/bin/env python2#g' - msg 'Changing electrum.banner to electrum-server.banner...' + msg2 'Changing electrum.banner to electrum-server.banner...' find . -type f -print0 | xargs -0 sed -i 's#/etc/electrum\.banner#/etc/electrum-server.banner#g' - msg 'Changing electrum.conf to electrum-server.conf...' + msg2 'Changing electrum.conf to electrum-server.conf...' cp -dpr --no-preserve=ownership electrum.conf.sample electrum-server.conf.sample find . -type f -print0 | xargs -0 sed -i 's#electrum\.conf#electrum-server.conf#g' - msg 'Changing electrum.log to electrum-server.log...' + msg2 'Changing electrum.log to electrum-server.log...' find . -type f -print0 | xargs -0 sed -i 's#electrum\.log#electrum-server/electrum-server.log#g' } build() { cd ${pkgname%-git} - msg 'Building...' + msg2 'Building...' python2 setup.py build } package() { cd ${pkgname%-git} - msg 'Installing license...' - install -Dm 644 LICENSE "$pkgdir/usr/share/licenses/electrum-server/LICENSE" + msg2 'Installing license...' + install -Dm 644 LICENSE -t "$pkgdir/usr/share/licenses/electrum-server" - msg 'Installing documentation...' + msg2 'Installing documentation...' for _doc in HOWTO.md INSTALL README-IRC.md README.md; do - install -Dm 644 $_doc "$pkgdir/usr/share/doc/electrum-server/$_doc" + install -Dm 644 $_doc -t "$pkgdir/usr/share/doc/electrum-server" done - msg 'Installing' + msg2 'Installing' install -dm 700 "$pkgdir/usr/share/electrum-server" install -dm 700 "$pkgdir/var/log/electrum-server" python2 setup.py install --root="$pkgdir" --optimize=1 - msg 'Installing electrum-server.conf...' + msg2 'Installing electrum-server.conf...' install -Dm 600 electrum-server.conf.sample "$pkgdir/etc/electrum-server.conf" - msg 'Installing electrum-server.banner...' + msg2 'Installing electrum-server.banner...' touch "$pkgdir/etc/electrum-server.banner" - msg 'Installing electrum-server.service...' - install -Dm 644 "$srcdir/electrum-server.service" "$pkgdir/usr/lib/systemd/system/electrum-server.service" + msg2 'Installing electrum-server.service...' + install -Dm 644 "$srcdir/electrum-server.service" \ + -t "$pkgdir/usr/lib/systemd/system" - msg 'Fixing binaries...' + msg2 'Fixing binaries...' rm -f "$pkgdir/usr/bin/electrum-server" mv "$pkgdir/usr/bin/run_electrum_server.py" "$pkgdir/usr/bin/electrum-server" - msg 'Cleaning up pkgdir...' + msg2 'Cleaning up pkgdir...' find "$pkgdir" -type d -name .git -exec rm -r '{}' + find "$pkgdir" -type f -name .gitignore -exec rm -r '{}' + } diff --git a/electrum-server.install b/electrum-server.install index c6f3df230b38..54a98ab009ac 100644 --- a/electrum-server.install +++ b/electrum-server.install @@ -1,10 +1,17 @@ +_es_user=electrum-server +_es_group=electrum-server + post_install() { _mkuser - chown -R electrum-server:electrum-server /etc/electrum-server \ - /etc/electrum-server.conf \ - /etc/electrum-server.banner \ - /usr/share/electrum-server \ - /var/log/electrum-server + # disable Copy-On-Write (btrfs directories only) + for _dir in /usr/share/electrum-server /var/log/electrum-server; do + _is_btrfs "$_dir" && _disable_cow "$_dir" + done + chown -R $_es_user:$_es_group /etc/electrum-server \ + /etc/electrum-server.conf \ + /etc/electrum-server.banner \ + /usr/share/electrum-server \ + /var/log/electrum-server printf "%b\n" "$ecdsa" } @@ -16,21 +23,74 @@ post_remove() { _rmuser } + +# ------------------------------------------------------------------------------ +# helper functions for creating electrum-server user / group +# ------------------------------------------------------------------------------ + _mkuser() { getent passwd electrum-server &>/dev/null || { echo -n "Creating electrum-server user... " - grep -E "^electrum-server:" /etc/group >/dev/null || groupadd electrum-server - useradd -m -d /etc/electrum-server -g electrum-server -s /usr/bin/nologin electrum-server + grep -E "^$_es_group:" /etc/group >/dev/null || groupadd $_es_group + useradd -m -d /etc/electrum-server -g $_es_group -s /usr/bin/nologin $_es_user echo "done" } } _rmuser() { echo -n "Removing electrum-server user... " - userdel -rf electrum-server 2>/dev/null + userdel -rf $_es_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 maintaining 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 +} + +_disable_cow() { + _chattrify "$1" "700" "$_es_user" "$_es_group" +} + + read -d '' ecdsa <<'EOF' ######################################################################## ######################################################################## |