summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Weidenbaum2015-12-21 21:40:05 -0800
committerAndy Weidenbaum2015-12-21 21:40:05 -0800
commit792ce56ffd75a3d6ff8383f147815285be7ccb70 (patch)
treef1a780912f738b36d97e27c35e5bbac36c1ba694
parent3437fdf1762e253c6e6b62339bf480d8fd447313 (diff)
downloadaur-792ce56ffd75a3d6ff8383f147815285be7ccb70.tar.gz
update pkgver to 20151128, disable btrfs copy-on-write
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD35
-rw-r--r--electrum-server.install76
3 files changed, 89 insertions, 26 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 726268456f9e..26b66285e071 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index b25ec34ca7f3..b30891a4a27e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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'
########################################################################
########################################################################