aboutsummaryrefslogtreecommitdiffstats
path: root/community/clsync
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2017-04-03 01:00:58 +0200
committerJakub Jirutka <jakub@jirutka.cz>2017-04-03 01:00:58 +0200
commit64a2d6243471cee6a4151768f8ef4ca556ba2402 (patch)
treed097604a14347806e08ff6529cb4687f139b175b /community/clsync
parent8f9e0dc8f2e3b2ed519e3c41335f50d32240a751 (diff)
downloadaports-64a2d6243471cee6a4151768f8ef4ca556ba2402.tar.bz2
aports-64a2d6243471cee6a4151768f8ef4ca556ba2402.tar.xz
community/clsync: move from testing
Diffstat (limited to 'community/clsync')
-rw-r--r--community/clsync/APKBUILD55
-rw-r--r--community/clsync/musl-fix.patch32
-rw-r--r--community/clsync/pthread_setname_np.patch13
3 files changed, 100 insertions, 0 deletions
diff --git a/community/clsync/APKBUILD b/community/clsync/APKBUILD
new file mode 100644
index 0000000000..0cfa0f3521
--- /dev/null
+++ b/community/clsync/APKBUILD
@@ -0,0 +1,55 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+pkgname=clsync
+pkgver=0.4.2
+pkgrel=0
+pkgdesc="File live sync daemon based on inotify"
+url="https://github.com/xaionaro/clsync"
+arch="x86 x86_64"
+license="GPLv3+"
+depends=""
+depends_dev="glib-dev fts-dev libcap-dev libexecinfo-dev linux-headers musl-dev"
+makedepends="$depends_dev autoconf automake file libtool"
+subpackages="$pkgname-doc $pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/xaionaro/$pkgname/archive/v$pkgver.tar.gz
+ musl-fix.patch
+ pthread_setname_np.patch"
+builddir="$srcdir/$pkgname-$pkgver"
+options="!check" # upstream does not provide tests
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+ autoreconf -i
+}
+
+build() {
+ cd "$builddir"
+
+ ./configure \
+ CFLAGS="$CFLAGS -lfts -lexecinfo" \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-capabilities \
+ --enable-seccomp \
+ --disable-debug
+ make
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install
+
+ # https://github.com/xaionaro/clsync/issues/150
+ rm "$pkgdir"/usr/bin/gencompilerflags
+}
+
+sha512sums="d14a2efc4bf58d9d5c7a3fe5634cacdd182cd7cd814b0e9ebd99024a7282b056d1f7ceeec6903666391c3572d599a18e205af818b098ed7768d5c0e0f4cd1200 clsync-0.4.2.tar.gz
+98e81408911731f6e203368094ea0e9eda312648eef8c5beec98b13c6ee43bccee59f0777805bea4d26cbe4e964d2ff95fe863be5be7750b50358d213f106542 musl-fix.patch
+da65cfb7182fa1509c77d7da43132c1f8b4911acb819d90aaab88c78d35167c85c0f23259bb78983fdab8217c43ba93b6b21267ab96c7fdf4723878a800fe414 pthread_setname_np.patch"
diff --git a/community/clsync/musl-fix.patch b/community/clsync/musl-fix.patch
new file mode 100644
index 0000000000..a0dc31e9f2
--- /dev/null
+++ b/community/clsync/musl-fix.patch
@@ -0,0 +1,32 @@
+musl declares lstat64 only for GNU compatibility using macro
+`#define lstat64 lstat`. Local variable lstat in mon_gio overrides
+global function lstat from sys/stat.h.
+
+Upstream issue: https://github.com/xaionaro/clsync/issues/150
+--- a/mon_gio.c
++++ b/mon_gio.c
+@@ -305,18 +305,18 @@
+ count = 0;
+ while (gio_wait(ctx_p, indexes_p, &tv)) {
+ event_t *ev = event_pop();
+- stat64_t lstat, *lstat_p;
++ stat64_t _lstat, *lstat_p;
+ mode_t st_mode;
+ size_t st_size;
+- if ((ev->objtype_new == EOT_DOESNTEXIST) || (ctx_p->flags[CANCEL_SYSCALLS]&CSC_MON_STAT) || lstat64(ev->path, &lstat)) {
+- debug(2, "Cannot lstat64(\"%s\", lstat). Seems, that the object had been deleted (%i) or option \"--cancel-syscalls mon_stat\" (%i) is set.", ev->path, ev->objtype_new == EOT_DOESNTEXIST, ctx_p->flags[CANCEL_SYSCALLS]&CSC_MON_STAT);
++ if ((ev->objtype_new == EOT_DOESNTEXIST) || (ctx_p->flags[CANCEL_SYSCALLS]&CSC_MON_STAT) || lstat64(ev->path, &_lstat)) {
++ debug(2, "Cannot lstat64(\"%s\", _lstat). Seems, that the object had been deleted (%i) or option \"--cancel-syscalls mon_stat\" (%i) is set.", ev->path, ev->objtype_new == EOT_DOESNTEXIST, ctx_p->flags[CANCEL_SYSCALLS]&CSC_MON_STAT);
+ st_mode = (ev->objtype_event == EOT_DIR ? S_IFDIR : S_IFREG);
+ st_size = 0;
+ lstat_p = NULL;
+ } else {
+- st_mode = lstat.st_mode;
+- st_size = lstat.st_size;
+- lstat_p = &lstat;
++ st_mode = _lstat.st_mode;
++ st_size = _lstat.st_size;
++ lstat_p = &_lstat;
+ }
+
+ if (sync_prequeue_loadmark(1, ctx_p, indexes_p, NULL, ev->path, lstat_p, ev->objtype_old, ev->objtype_new, ev->event_id, ev->handle_id, st_mode, st_size, &path_full, &path_full_len, NULL)) {
diff --git a/community/clsync/pthread_setname_np.patch b/community/clsync/pthread_setname_np.patch
new file mode 100644
index 0000000000..aab4dd4ef8
--- /dev/null
+++ b/community/clsync/pthread_setname_np.patch
@@ -0,0 +1,13 @@
+pthread_setname_np is a glibc extension not defined in POSIX
+and is not supported by musl libc.
+--- a/privileged.c
++++ b/privileged.c
+@@ -920,7 +920,7 @@
+ # endif
+ } else {
+ register_blockthread();
+- pthread_setname_np(pthread_self(), "clsync-helper");
++ //pthread_setname_np(pthread_self(), "clsync-helper");
+ }
+ cap_drop(ctx_p, ctx_p->caps);
+