diff options
author | skv <skv@FreeBSD.org> | 2009-07-28 00:53:25 +0800 |
---|---|---|
committer | skv <skv@FreeBSD.org> | 2009-07-28 00:53:25 +0800 |
commit | eb28f8f8b64fbd1efb08ad6eb10e131465e03d75 (patch) | |
tree | f1014f63d7e6b60dd4be849d504fae2ffa5ce80e /databases/redis2 | |
parent | 57ad69e1b1f33ae355f7b6196ec31ae61798daae (diff) | |
download | freebsd-ports-gnome-eb28f8f8b64fbd1efb08ad6eb10e131465e03d75.tar.gz freebsd-ports-gnome-eb28f8f8b64fbd1efb08ad6eb10e131465e03d75.tar.zst freebsd-ports-gnome-eb28f8f8b64fbd1efb08ad6eb10e131465e03d75.zip |
Add redis 0.900, a persistent key-value database with built-in net
interface.
Diffstat (limited to 'databases/redis2')
-rw-r--r-- | databases/redis2/Makefile | 59 | ||||
-rw-r--r-- | databases/redis2/distinfo | 3 | ||||
-rw-r--r-- | databases/redis2/files/patch-redis.conf | 34 | ||||
-rw-r--r-- | databases/redis2/files/pkg-install.in | 85 | ||||
-rw-r--r-- | databases/redis2/files/pkg-message.in | 8 | ||||
-rw-r--r-- | databases/redis2/files/redis.sh.in | 35 | ||||
-rw-r--r-- | databases/redis2/pkg-descr | 14 | ||||
-rw-r--r-- | databases/redis2/pkg-plist | 6 |
8 files changed, 244 insertions, 0 deletions
diff --git a/databases/redis2/Makefile b/databases/redis2/Makefile new file mode 100644 index 000000000000..ddbf6ec23bb3 --- /dev/null +++ b/databases/redis2/Makefile @@ -0,0 +1,59 @@ +# New ports collection makefile for: redis +# Date created: 03 Jul 2009 +# Whom: Sergey Skvortsov <skv@protey.ru> +# +# $FreeBSD$ +# + +PORTNAME= redis +PORTVERSION= 0.900 +DISTVERSIONSUFFIX= _2 +CATEGORIES= databases +MASTER_SITES= GOOGLE_CODE + +MAINTAINER= skv@FreeBSD.org +COMMENT= A persistent key-value database with built-in net interface + +LIB_DEPENDS= execinfo.1:${PORTSDIR}/devel/libexecinfo + +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} + +CFLAGS+= -I${LOCALBASE}/include + +USE_RC_SUBR= redis.sh +BIN_FILES= redis-server redis-benchmark redis-cli + +PKGINSTALL= ${WRKDIR}/pkg-install +PKGDEINSTALL= ${WRKDIR}/pkg-install +PKGMESSAGE= ${WRKDIR}/pkg-message + +REDIS_USER?= redis +REDIS_UID?= 535 +REDIS_GROUP?= redis +REDIS_GID?= 535 + +REDIS_DBDIR?= /var/db/redis +REDIS_RUNDIR?= /var/run/redis +REDIS_LOGDIR?= /var/log/redis + +SUB_FILES= pkg-message pkg-install +SUB_LIST+= PORTNAME="${PORTNAME}" \ + REDIS_USER="${REDIS_USER}" \ + REDIS_UID="${REDIS_UID}" \ + REDIS_GROUP="${REDIS_GROUP}" \ + REDIS_GID="${REDIS_GID}" \ + REDIS_LOGDIR="${REDIS_LOGDIR}" \ + REDIS_DBDIR="${REDIS_DBDIR}" \ + REDIS_RUNDIR="${REDIS_RUNDIR}" + +post-build: + ${SED} ${SUB_LIST:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ + ${WRKSRC}/redis.conf > ${WRKDIR}/redis.conf + +do-install: + @PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL + ${INSTALL_PROGRAM} ${BIN_FILES:C!^!${WRKSRC}/!} ${PREFIX}/bin/ + ${INSTALL_DATA} ${WRKDIR}/redis.conf ${PREFIX}/etc/redis.conf.sample + @PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL + +.include <bsd.port.mk> diff --git a/databases/redis2/distinfo b/databases/redis2/distinfo new file mode 100644 index 000000000000..8eff5f5c2176 --- /dev/null +++ b/databases/redis2/distinfo @@ -0,0 +1,3 @@ +MD5 (redis-0.900_2.tar.gz) = 15ecbb37ba74b455ddfd5995730506bc +SHA256 (redis-0.900_2.tar.gz) = a2e5baaae0943b0d1cc2f09b8afbf40f5a6f361b968938f277ed0883dfcbadda +SIZE (redis-0.900_2.tar.gz) = 191386 diff --git a/databases/redis2/files/patch-redis.conf b/databases/redis2/files/patch-redis.conf new file mode 100644 index 000000000000..f68bd795ad4a --- /dev/null +++ b/databases/redis2/files/patch-redis.conf @@ -0,0 +1,34 @@ +--- redis.conf ++++ redis.conf +@@ -2,11 +2,11 @@ + + # By default Redis does not run as a daemon. Use 'yes' if you need it. + # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. +-daemonize no ++daemonize yes + + # When run as a daemon, Redis write a pid file in /var/run/redis.pid by default. + # You can specify a custom pid file location here. +-pidfile /var/run/redis.pid ++pidfile %%REDIS_RUNDIR%%/redis.pid + + # Accept connections on the specified port, default is 6379 + port 6379 +@@ -39,7 +39,7 @@ + + # For default save/load DB in/from the working directory + # Note that you must specify a directory not a file name. +-dir ./ ++dir %%REDIS_DBDIR%%/ + + # Set server verbosity to 'debug' + # it can be one of: +@@ -51,7 +51,7 @@ + # Specify the log file name. Also 'stdout' can be used to force + # the demon to log on the standard output. Note that if you use standard + # output for logging but daemonize, logs will be sent to /dev/null +-logfile stdout ++logfile %%REDIS_LOGDIR%%/redis.log + + # Set the number of databases. The default database is DB 0, you can select + # a different one on a per-connection basis using SELECT <dbid> where diff --git a/databases/redis2/files/pkg-install.in b/databases/redis2/files/pkg-install.in new file mode 100644 index 000000000000..9eec80ea70f9 --- /dev/null +++ b/databases/redis2/files/pkg-install.in @@ -0,0 +1,85 @@ +#!/bin/sh + +# $FreeBSD$ + +PATH=/bin:/usr/bin:/usr/sbin + +USER="%%REDIS_USER%%" +USER_ID="%%REDIS_UID%%" +GROUP="%%REDIS_GROUP%%" +GROUP_ID="%%REDIS_GID%%" + +RUNTIME_DIRS="%%REDIS_LOGDIR%% %%REDIS_DBDIR%% %%REDIS_RUNDIR%%" + +case $2 in +PRE-INSTALL) + +if [ `id -u` -ne 0 ]; then + echo; echo "You must be root to run this step!"; echo; echo + exit 1 +fi + +RES=`pw groupshow -n ${GROUP} 2>/dev/null` +if [ $? -eq 0 ]; then + echo "You already have a group \"${GROUP}\", so we will use it." +else + RES=`pw groupshow -g ${GROUP_ID} 2>/dev/null` + if [ $? -ne 0 ]; then + _GID="-g ${GROUP_ID}" + else + _GID='' + fi + + if pw groupadd -n ${GROUP} ${_GID}; then + echo "Added group \"${GROUP}\"." + else + echo "Adding group \"${GROUP}\" failed..." + exit 1 + fi +fi + +RES=`id -u ${USER} 2>/dev/null` +if [ $? -ne 0 ]; then + RES=`id -un ${USER_ID} 2>/dev/null` + if [ $? -ne 0 ]; then + _UID="-u ${USER_ID}" + else + _UID='' + fi + + if pw useradd -n ${USER} ${_UID} -g ${GROUP} \ + -w no -s /usr/sbin/nologin; then + echo "Added user \"${USER}\"." + else + echo "Adding user \"${USER}\" failed..." + exit 1 + fi +fi + +;; + +POST-INSTALL) + +for DIR in ${RUNTIME_DIRS}; do + mkdir -p ${DIR} + chown -R ${USER}:${GROUP} ${DIR} + chmod -R 755 ${DIR} +done + +;; + +DEINSTALL) + +if [ -z ${UPGRADE_PORT} ] ; then + + echo + echo "If you do not intend to reinstall \"%%PORTNAME%%\" you should manually" + echo "remove user '${USER}' (uid='${USER_ID}') and group '${GROUP}' (gid='${USER_ID}')." + echo + echo "Also you may want to remove the no longer required directoris:" + echo ${RUNTIME_DIRS} + echo + +fi + +esac diff --git a/databases/redis2/files/pkg-message.in b/databases/redis2/files/pkg-message.in new file mode 100644 index 000000000000..fd3763137ea3 --- /dev/null +++ b/databases/redis2/files/pkg-message.in @@ -0,0 +1,8 @@ + +===> CONFIGURATION NOTE: + + To setup "%%PORTNAME%%" you need to edit the configuration file: + %%PREFIX%%/etc/%%PORTNAME%%.conf + + To run redis from startup, add %%PORTNAME%%_enable="YES" + in your /etc/rc.conf. diff --git a/databases/redis2/files/redis.sh.in b/databases/redis2/files/redis.sh.in new file mode 100644 index 000000000000..27c3b8d08fbd --- /dev/null +++ b/databases/redis2/files/redis.sh.in @@ -0,0 +1,35 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: redis +# REQUIRE: LOGIN +# BEFORE: securelevel +# KEYWORD: shutdown + +# Add the following line to /etc/rc.conf to enable `redis': +# +#redis_enable="YES" +# + +. "%%RC_SUBR%%" + +name="redis" +rcvar=`set_rcvar` + +extra_commands="reload" + +command="%%PREFIX%%/bin/redis-server" +config_file="%%PREFIX%%/etc/$name.conf" +command_args="${config_file}" +pidfile="%%REDIS_RUNDIR%%/$name.pid" +required_files="${config_file}" + +# read configuration and set defaults +load_rc_config "$name" +: ${redis_enable="NO"} +: ${redis_user="%%REDIS_USER%%"} +: ${redis_flags=""} + +run_rc_command "$1" diff --git a/databases/redis2/pkg-descr b/databases/redis2/pkg-descr new file mode 100644 index 000000000000..81dd3e5bdd3b --- /dev/null +++ b/databases/redis2/pkg-descr @@ -0,0 +1,14 @@ +Redis is a key-value database. It is similar to memcached but the +dataset is not volatile, and values can be strings, exactly like in +memcached, but also lists and sets with atomic operations to push/pop +elements. + +In order to be very fast but at the same time persistent the whole +dataset is taken in memory and from time to time and/or when a number of +changes to the dataset are performed it is written asynchronously on +disk. You may lost the last few queries that is acceptable in many +applications but it is as fast as an in memory DB (Redis supports +non-blocking master-slave replication in order to solve this problem by +redundancy). + +WWW: http://code.google.com/p/redis/ diff --git a/databases/redis2/pkg-plist b/databases/redis2/pkg-plist new file mode 100644 index 000000000000..3f7c08dc7eee --- /dev/null +++ b/databases/redis2/pkg-plist @@ -0,0 +1,6 @@ +bin/redis-server +bin/redis-benchmark +bin/redis-cli +@unexec (cmp -s %D/etc/redis.conf %D/etc/redis.conf.sample && rm -f %D/etc/redis.conf) || true +etc/redis.conf.sample +@exec [ -f %B/redis.conf ] || cp %B/%f %B/redis.conf |