[Buildroot] [PATCH 2/2 v2] couchdb: New package.

Nicolas Cavallari nicolas.cavallari at green-communications.fr
Thu Jun 9 14:46:16 UTC 2016


Signed-off-by: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
---
v1 -> v2:
* added default file to S96prepare-couchdb init script, to allow
  customizing where to store the log and maybe store the data on a
  tmpfs too.
* addressed arnout comments.

 package/Config.in                              |  1 +
 package/couchdb/0001-remove-unsafe-paths.patch | 41 +++++++++++++++++++++
 package/couchdb/Config.in                      | 22 +++++++++++
 package/couchdb/S96prepare-couchdb             | 14 +++++++
 package/couchdb/couchdb.hash                   |  6 +++
 package/couchdb/couchdb.mk                     | 51 ++++++++++++++++++++++++++
 6 files changed, 135 insertions(+)
 create mode 100644 package/couchdb/0001-remove-unsafe-paths.patch
 create mode 100644 package/couchdb/Config.in
 create mode 100644 package/couchdb/S96prepare-couchdb
 create mode 100644 package/couchdb/couchdb.hash
 create mode 100644 package/couchdb/couchdb.mk

diff --git a/package/Config.in b/package/Config.in
index 4729b63..256b4e1 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -866,6 +866,7 @@ endmenu
 
 menu "Database"
 	source "package/berkeleydb/Config.in"
+	source "package/couchdb/Config.in"
 	source "package/cppdb/Config.in"
 	source "package/gdbm/Config.in"
 	source "package/kompexsqlite/Config.in"
diff --git a/package/couchdb/0001-remove-unsafe-paths.patch b/package/couchdb/0001-remove-unsafe-paths.patch
new file mode 100644
index 0000000..45b8170
--- /dev/null
+++ b/package/couchdb/0001-remove-unsafe-paths.patch
@@ -0,0 +1,41 @@
+From 39b34b35ac4741f65c0a4707b480301154ab2de5 Mon Sep 17 00:00:00 2001
+From: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
+Date: Thu, 19 May 2016 16:52:53 +0200
+Subject: configure.ac: Remove unsafe paths
+
+Remove the unconditionnally added paths to the host.
+
+Upstream-Status: not-applicable: later versions do not use autotools
+anymore, but rebar.
+
+Signed-Off-By: Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
+
+---
+ configure.ac | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index bf9ffc4..7b95554 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -195,17 +195,6 @@ AC_ARG_ENABLE([js-trunk],
+ AC_ARG_VAR([ERLC_FLAGS], [general flags to prepend to ERLC_FLAGS])
+ AC_ARG_VAR([FLAGS], [general flags to prepend to LDFLAGS and CPPFLAGS])
+ 
+-AS_CASE([$(uname -s)], [CYGWIN*], [] , [*], [
+-    CPPFLAGS="$CPPFLAGS -I/opt/local/include"
+-    CPPFLAGS="$CPPFLAGS -I/opt/local/include/js"
+-    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+-    CPPFLAGS="$CPPFLAGS -I/usr/local/include/js"
+-    CPPFLAGS="$CPPFLAGS -I/usr/include"
+-    CPPFLAGS="$CPPFLAGS -I/usr/include/js"
+-    LDFLAGS="$LDFLAGS -L/opt/local/lib"
+-    LDFLAGS="$LDFLAGS -L/usr/local/lib"
+-])
+-
+ CPPFLAGS="$CPPFLAGS $FLAGS"
+ LDFLAGS="$LDFLAGS $FLAGS"
+ 
+-- 
+2.8.1
+
diff --git a/package/couchdb/Config.in b/package/couchdb/Config.in
new file mode 100644
index 0000000..1b83c0b
--- /dev/null
+++ b/package/couchdb/Config.in
@@ -0,0 +1,22 @@
+comment "CouchDB need a toolchain with C++, wchar, threads, dynamic libs."
+	depends on !BR2_BINFMT_FLAT
+	depends on BR2_USE_MMU
+	depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR
+
+config BR2_PACKAGE_COUCHDB
+	bool "couchdb"
+	depends on BR2_USE_MMU # erlang, spidermonkey185
+	depends on !BR2_BINFMT_FLAT # icu
+	depends on BR2_INSTALL_LIBSTDCPP # icu, spidermonkey185
+	depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # erlang
+	depends on !BR2_STATIC_LIBS # erlang
+	depends on BR2_TOOLCHAIN_HAS_THREADS # icu
+	depends on BR2_USE_WCHAR # icu
+
+	select BR2_PACKAGE_ERLANG
+	select BR2_PACKAGE_ICU
+	select BR2_PACKAGE_LIBCURL
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_SPIDERMONKEY185
diff --git a/package/couchdb/S96prepare-couchdb b/package/couchdb/S96prepare-couchdb
new file mode 100644
index 0000000..2f36436
--- /dev/null
+++ b/package/couchdb/S96prepare-couchdb
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+REQUIRED_DIRS=/var/log/couchdb
+
+PREPARE_COUCHDB_DEFAULT=/etc/default/prepare-couchdb
+
+if [ -r "$PREPARE_COUCHDB_DEFAULT" ]; then
+	. "$PREPARE_COUCHDB_DEFAULT"
+fi
+
+case "$1" in
+	start)
+		install -d -o couchdb -g couchdb $REQUIRED_DIRS;;
+esac
diff --git a/package/couchdb/couchdb.hash b/package/couchdb/couchdb.hash
new file mode 100644
index 0000000..a8e702f
--- /dev/null
+++ b/package/couchdb/couchdb.hash
@@ -0,0 +1,6 @@
+# From https://archive.apache.org/dist/couchdb/source/1.6.1/apache-couchdb-1.6.1.tar.gz.{md5,sha}
+sha1	6275f3818579d7b307052e9735c42a8a64313229	apache-couchdb-1.6.1.tar.gz
+md5	01a2c8ab4fcde457529428993901a060		apache-couchdb-1.6.1.tar.gz
+
+# Locally generated after checking PGP signature
+sha256	5a601b173733ce3ed31b654805c793aa907131cd70b06d03825f169aa48c8627	apache-couchdb-1.6.1.tar.gz
diff --git a/package/couchdb/couchdb.mk b/package/couchdb/couchdb.mk
new file mode 100644
index 0000000..38a500f
--- /dev/null
+++ b/package/couchdb/couchdb.mk
@@ -0,0 +1,51 @@
+################################################################################
+#
+# CouchDB
+#
+################################################################################
+
+COUCHDB_VERSION = 1.6.1
+COUCHDB_SITE = \
+	http://archive.apache.org/dist/couchdb/source/${COUCHDB_VERSION}
+COUCHDB_SOURCE = apache-couchdb-${COUCHDB_VERSION}.tar.gz
+
+COUCHDB_LICENSE = Apache-2.0
+COUCHDB_LICENSE_FILES = LICENSE
+
+COUCHDB_DEPENDENCIES = host-autoconf-archive host-pkgconf \
+	erlang icu libcurl openssl spidermonkey185
+
+# configure.ac is patched.
+COUCHDB_AUTORECONF = YES
+COUCHDB_AUTORECONF_OPTS = -I $(HOST_DIR)/usr/share/autoconf-archive
+
+COUCHDB_CONF_ENV = \
+	CURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config \
+	ICU_CONFIG=$(STAGING_DIR)/usr/bin/icu-config
+COUCHDB_CONF_OPTS = $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),,--disable-init)
+
+# CouchDB's build system mixes the erl for the host and the erl for the
+# target.
+define COUCHDB_FIX_ERL_PATH
+	sed -i -re 's,$(HOST_DIR),,' \
+		$(TARGET_DIR)/usr/bin/couchdb \
+		$(TARGET_DIR)/usr/bin/couch-config
+endef
+COUCHDB_POST_INSTALL_TARGET_HOOKS += COUCHDB_FIX_ERL_PATH
+
+define COUCHDB_INSTALL_INIT_SYSV
+	mv $(TARGET_DIR)/etc/init.d/couchdb $(TARGET_DIR)/etc/init.d/S97couchdb
+	install -m 755 package/couchdb/S96prepare-couchdb \
+		$(TARGET_DIR)/etc/init.d/
+endef
+
+define COUCHDB_USERS
+	couchdb -1 couchdb -1 ! - /bin/sh - CouchDB Server
+endef
+
+define COUCHDB_PERMISSIONS
+	/etc/couchdb		r	755	couchdb	couchdb - - - -
+	/var/lib/couchdb	d	750	couchdb	couchdb - - - -
+endef
+
+$(eval $(autotools-package))
-- 
2.8.1




More information about the buildroot mailing list