Subject: [alpine-aports] Re: [PATCH] testing/twemproxy: new aport

From: Yagnesh Mistry <[email-masked]>
Date: Thu, 22 Oct 2015 00:47:43 +0530

Removed the doc() function, using the default doc now.
Fixed indentation at places.
Using the sample initd from the original developer, removed unnecessary 
code from initd script.

https://github.com/twitter/twemproxy
A fast, light-weight proxy for memcached and redis
---
  testing/twemproxy/APKBUILD                 | 85 
++++++++++++++++++++++++++++++
  testing/twemproxy/nutcracker.confd         |  5 ++
  testing/twemproxy/nutcracker.initd         | 42 +++++++++++++++
  testing/twemproxy/use-system-libyaml.patch | 60 +++++++++++++++++++++
  4 files changed, 192 insertions(+)
  create mode 100644 testing/twemproxy/APKBUILD
  create mode 100644 testing/twemproxy/nutcracker.confd
  create mode 100644 testing/twemproxy/nutcracker.initd
  create mode 100644 testing/twemproxy/use-system-libyaml.patch

diff --git a/testing/twemproxy/APKBUILD b/testing/twemproxy/APKBUILD
new file mode 100644
index 0000000..fc829d6
--- /dev/null
+++ b/testing/twemproxy/APKBUILD
@@ -0,0 +1,85 @@
+# Maintainer: Yagnesh Mistry <[email-masked]>
+
+pkgname=twemproxy
+akaname=nutcracker
+pkgver=0.4.1
+pkgrel=0
+pkgdesc="A fast, light-weight proxy for memcached and redis"
+url="https://github.com/twitter/twemproxy"
+arch="all"
+license="ASL 2.0"
+depends="yaml"
+depends_dev=""
+makedepends="automake autoconf libtool yaml-dev"
+subpackages="$pkgname-doc"
+source="saveas-https://github.com/twitter/twemproxy/archive/v$pkgver.tar.gz/$pkgname-$pkgver.tar.gz
+    nutcracker.initd
+    nutcracker.confd
+    use-system-libyaml.patch
+    "
+
+_builddir="$srcdir"/$pkgname-$pkgver
+_logdir=/var/log/$akaname
+_rundir=/var/run/$akaname
+
+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"
+    autoreconf -vif
+    ./configure \
+        --build=$CBUILD \
+        --host=$CHOST \
+        --prefix=/usr \
+        || return 1
+    make || return 1
+}
+
+package() {
+    cd "$_builddir"
+    make DESTDIR="$pkgdir" install || return 1
+    install -m644 -D "$srcdir"/$pkgname-$pkgver/conf/nutcracker.yml \
+        "$pkgdir"/etc/$akaname/nutcracker.yml || return 1
+        install -m644 -D 
"$srcdir"/$pkgname-$pkgver/conf/nutcracker.leaf.yml \
+        "$pkgdir"/etc/$akaname/nutcracker.leaf.yml || return 1
+        install -m644 -D 
"$srcdir"/$pkgname-$pkgver/conf/nutcracker.root.yml \
+        "$pkgdir"/etc/$akaname/nutcracker.root.yml || return 1
+    install -m755 -D "$srcdir"/$akaname.initd \
+        "$pkgdir"/etc/init.d/$akaname || return 1
+    install -m644 -D "$srcdir"/$akaname.confd \
+        "$pkgdir"/etc/conf.d/$akaname || return 1
+
+    install -m0755 -d "$pkgdir"/$_rundir || return 1
+    install -m0755 -d "$pkgdir"/$_logdir || return 1
+
+    _docs="README.md NOTICE ChangeLog"
+    for _doc in $_docs; do
+        install -m644 -D "$srcdir"/$pkgname-$pkgver/$_doc \
+            "$pkgdir"/usr/share/doc/$akaname/$_doc || return 1
+    done
+
+    install -m644 -D "$srcdir"/$pkgname-$pkgver/LICENSE \
+        "$pkgdir"/usr/share/licenses/$akaname/LICENSE || return 1
+
+}
+
+md5sums="6b27455285f81e4335d00983076cf4b8  twemproxy-0.4.1.tar.gz
+531b2ded35c9f9e3c53388ceb9da9e9d  nutcracker.initd
+5fcf33052bb7ddd286e58fcdef5335db  nutcracker.confd
+521837066110c2d0248c11620bf66e15  use-system-libyaml.patch"
+sha256sums="00c2940f91947bea9457a348316aac1aa1d4e757238aafbefc9d51057da8ede0 
twemproxy-0.4.1.tar.gz
+f6531c2bbb085e70e4de4b51a01e4b2a6fe6cec41ba4924cc7ac56d51393fdfd 
nutcracker.initd
+ff28c0ffb1aa82e7bcd19c79f76cdb05641b4181f6668349fe9ed87044ce0d3e 
nutcracker.confd
+718fe0cf3a48f51f5b8a2b6ef8120068b1604c7588b33e5db27de8301e77fdf4 
use-system-libyaml.patch"
+sha512sums="581fae1d12feb983ed25b22cd6f597fd28b7070906ac29d3990669ae5c626a468914021cee152a6a2299a2838c838ad907e4c911b911ef04166ac7bbb2982da1 
twemproxy-0.4.1.tar.gz
+56bc051eac972cc1e4cfb334673f8e4c8a5f0855fb4f0b66e05a148855dae34870d949a5d19c111d072a0405b2014a334151ad9414a40fdc67e559ff37d68093 
nutcracker.initd
+e69e6d7b48a360b8b7b7ec7d7d46e2c736c4e30e6d6a22ed5b01d64ccb3ec701537545b2b6e5c1cbf2ba9f657f86e7a94686e3dc8a43dcba9688695717d62f12 
nutcracker.confd
+beadf407de53378bfe0ee12bbdf2315bde220a322aa13fc1993b487e1503f8825280408c500c902db683ee35b255e304acfe2cb011a6e9ffe02cdbfcfb1d2bf5 
use-system-libyaml.patch"
diff --git a/testing/twemproxy/nutcracker.confd 
b/testing/twemproxy/nutcracker.confd
new file mode 100644
index 0000000..95efa6b
--- /dev/null
+++ b/testing/twemproxy/nutcracker.confd
@@ -0,0 +1,5 @@
+CONFFILE=/etc/nutcracker/nutcracker.yml
+PIDFILE=/var/run/nutcracker/nutcracker.pid
+LOGFILE=/var/log/nutcracker/nutcracker.log
+
+DAEMON_ARGS="-c $CONFFILE -o $LOGFILE -p $PIDFILE -d"
diff --git a/testing/twemproxy/nutcracker.initd 
b/testing/twemproxy/nutcracker.initd
new file mode 100644
index 0000000..76d120a
--- /dev/null
+++ b/testing/twemproxy/nutcracker.initd
@@ -0,0 +1,42 @@
+#!/sbin/openrc-run
+
+NAME="nutcracker"
+DAEMON=/usr/sbin/nutcracker
+USER="${USER:-nobody}"
+CONFFILE="${CONFFILE:-/etc/nutcracker/nutcracker.yml}"
+
+DAEMON_ARGS=${DAEMON_ARGS:-"-c $CONFFILE -o $LOGFILE -p $PIDFILE -d"}
+
+depend() {
+    need net
+    after firewall
+}
+
+checkconf() {
+    ebegin "Testing configuration: "
+        ${DAEMON} --test-conf \
+        --conf-file=${CONFFILE} \
+        >/dev/null 2>&1
+    eend $?
+}
+
+
+start() {
+    checkconf || exit 1
+    ebegin "Starting ${NAME}: "
+        start-stop-daemon --start --quiet \
+            --pidfile ${PIDFILE} \
+            --chuid ${USER}:${USER} \
+            --exec ${DAEMON} -- ${DAEMON_ARGS}
+    eend $?
+}
+
+stop() {
+    ebegin "Stopping ${NAME}: "
+        start-stop-daemon --stop --quiet \
+            --pidfile ${PIDFILE} \
+            --exec ${DAEMON}
+    eend $?
+}
+
+
diff --git a/testing/twemproxy/use-system-libyaml.patch 
b/testing/twemproxy/use-system-libyaml.patch
new file mode 100644
index 0000000..e3ec54a
--- /dev/null
+++ b/testing/twemproxy/use-system-libyaml.patch
@@ -0,0 +1,60 @@
+--- twemproxy-0.4.1/Makefile.am
++++ twemproxy/src/twemproxy-0.4.1/Makefile.am
+@@ -2,7 +2,7 @@
+
+ ACLOCAL_AMFLAGS = -I m4
+
+-SUBDIRS = contrib src
++SUBDIRS = src
+
+ dist_man_MANS = man/nutcracker.8
+
+--- twemproxy-0.4.1/configure.ac
++++ twemproxy/src/twemproxy-0.4.1/configure.ac
+@@ -75,6 +75,14 @@
+ # Checks for libraries
+ AC_CHECK_LIB([m], [pow])
+ AC_CHECK_LIB([pthread], [pthread_create])
++AC_CHECK_LIB([yaml], [yaml_get_version_string],,LIBYAML="no")
++if test "$LIBYAML" = "no"; then
++    echo
++    echo "    Error: libyaml library not found."
++    echo "    Run apk add yaml-dev"
++    echo
++    exit 1
++fi
+
+ # Checks for library functions
+ AC_FUNC_FORK
+@@ -196,15 +204,8 @@
+   [AC_DEFINE([HAVE_STATS], [1], [Define to 1 if stats is not disabled])])
+ AC_MSG_RESULT($disable_stats)
+
+-# Untar the yaml-0.1.4 in contrib/ before config.status is rerun
+-AC_CONFIG_COMMANDS_PRE([tar xvfz contrib/yaml-0.1.4.tar.gz -C contrib])
+-
+-# Call yaml-0.1.4 ./configure recursively
+-AC_CONFIG_SUBDIRS([contrib/yaml-0.1.4])
+-
+ # Define Makefiles
+ AC_CONFIG_FILES([Makefile
+-                 contrib/Makefile
+                  src/Makefile
+                  src/hashkit/Makefile
+                  src/proto/Makefile
+--- twemproxy-0.4.1/src/Makefile.am
++++ twemproxy/src/twemproxy-0.4.1/src/Makefile.am
+@@ -21,7 +21,7 @@
+ AM_CFLAGS += -Wstrict-prototypes -Wmissing-prototypes 
-Wredundant-decls -Wmissing-declarations
+
+ AM_LDFLAGS =
+-AM_LDFLAGS += -lm -lpthread -rdynamic
++AM_LDFLAGS += -lm -lpthread -lyaml -rdynamic
+ if OS_SOLARIS
+ AM_LDFLAGS += -lnsl -lsocket
+ endif
+@@ -57,4 +57,3 @@
+ nutcracker_LDADD = $(top_builddir)/src/hashkit/libhashkit.a
+ nutcracker_LDADD += $(top_builddir)/src/proto/libproto.a
+ nutcracker_LDADD += $(top_builddir)/src/event/libevent.a
+-nutcracker_LDADD += $(top_builddir)/contrib/yaml-0.1.4/src/.libs/libyaml.a
-- 
2.4.1

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Natanael Copa <[email-masked]>
Date: Thu, 22 Oct 2015 08:46:11 +0200

Hi,

Thanks for your patch. Unfortunally, your mailer mangles the patch.
Thunderbird incorrectly believes that it will be easier for git am to
read the email if the long lines are wrapped.

On Thu, 22 Oct 2015 00:47:43 +0530

> A fast, light-weight proxy for memcached and redis

...

> "$srcdir"/$pkgname-$pkgver/conf/nutcracker.root.yml \

The above line was wrapped.

...

> use-system-libyaml.patch"

The above lines was also wrapped.
 
...

> ++++ twemproxy/src/twemproxy-0.4.1/src/Makefile.am

Above line was wrapped.

I manually unwrapped the lines but ended up with checksum error so I
either did a mistake or you forgot to abuild checksum or you have
unintended (or untested) changes in there some place.

Could you please use git send-email, or maybe do a github pull request?
https://github.com/alpinelinux/aports

-nc

---