Date: Tue, 19 Nov 2013 14:53:18 GMT From: Oleg Ginzburg <olevole@olevole.ru> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/184086: new port: sysutils/zrep Message-ID: <201311191453.rAJErIUM099480@oldred.freebsd.org> Resent-Message-ID: <201311191500.rAJF00WW031409@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 184086 >Category: ports >Synopsis: new port: sysutils/zrep >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Nov 19 15:00:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Oleg Ginzburg >Release: >Organization: >Environment: >Description: ZFS based replication and failover solution >How-To-Repeat: >Fix: Patch attached with submission follows: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # zrep # zrep/Makefile # zrep/distinfo # zrep/files # zrep/files/patch-zrep # zrep/pkg-descr # echo c - zrep mkdir -p zrep > /dev/null 2>&1 echo x - zrep/Makefile sed 's/^X//' >zrep/Makefile << 'b0ee7966475c69df318f595d03b204b5' X# $FreeBSD: $ X XPORTNAME= zrep XPORTVERSION= 1.0.1 XCATEGORIES= sysutils XMASTER_SITES= http://www.bolthole.com/solaris/zrep/ \ X http://www.bsdstore.ru/downloads/ XDISTNAME= ${PORTNAME} XEXTRACT_SUFX= "" X XMAINTAINER= olevole@olevole.ru XCOMMENT= ZFS based replication and failover solution. X XRUN_DEPENDS= ksh93:${PORTSDIR}/shells/ksh93 X XPLIST_FILES= bin/zrep X XNO_INSTALL_MANPAGES= yes X XNO_BUILD= yes XNO_INSTALL= yes XNO_EXTRACT= yes X X.include <bsd.port.options.mk> X Xpost-patch: X @${REINPLACE_CMD} -e 's|#!/bin/ksh -p|#!${PREFIX}/bin/ksh93 -p|' ${WRKSRC}/zrep X Xdo-extract: X @${MKDIR} ${WRKSRC} X @${CP} -p ${DISTDIR}/${PORTNAME} ${WRKSRC} X Xdo-install: X ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}/${PREFIX}/bin X X.include <bsd.port.mk> b0ee7966475c69df318f595d03b204b5 echo x - zrep/distinfo sed 's/^X//' >zrep/distinfo << 'a6f2039f9d8cda21de2ee46a3051b86e' XSHA256 (zrep) = 2156852bfe0e9ed3a220cbb459ffb2b423488de023b03f8f9c8e1af876a44b75 XSIZE (zrep) = 45158 a6f2039f9d8cda21de2ee46a3051b86e echo c - zrep/files mkdir -p zrep/files > /dev/null 2>&1 echo x - zrep/files/patch-zrep sed 's/^X//' >zrep/files/patch-zrep << 'f78ce14574ed88f9d7e5390f1f563104' X--- zrep.orig 2013-05-13 22:01:15.000000000 +0400 X+++ zrep 2013-11-19 18:37:52.921978370 +0400 X@@ -15,7 +15,6 @@ X ZREP_PATH=${ZREP_PATH:-zrep} #Set to /path/to/zrep, if needed, for remote X #ZREP_CREATE_FLAGS="-o whatever" #Set for extra options on remote zfs create X X- X ######################################################################### X # Everyting else below here, should not be touched. First we have autodetect X # routines, and then internal utilities such as locking functions. X@@ -35,8 +34,8 @@ X X # dump the usage message, and check for capabilities X # make sure we dont spew for non-root, so that "zrep status" works X-case `id` in X- *\(root\)) X+case `whoami` in X+ root) X zrep_checkfile=/var/run/zrep.check.$$ X ;; X *) X@@ -109,7 +108,8 @@ X # Note that we check for "us, OR our global parent", if different X # X zrep_has_global_lock(){ X- lockpid=`ls -l $Z_GLOBAL_LOCKFILE 2>/dev/null |awk -F/ '{print $NF}'` X+ [ ! -f "${Z_GLOBAL_LOCKFILE}" ] && return 1 X+ lockpid=`cat ${Z_GLOBAL_LOCKFILE}` X if [[ "$lockpid" == "" ]] ; then return 1 ; fi X if [[ "$lockpid" != "$Z_GLOBAL_PID" ]] ; then X if [[ "$lockpid" != "$$" ]] ; then X@@ -127,7 +127,10 @@ X zrep_get_global_lock(){ X typeset retry_count=$Z_LOCK_RETRY X X- ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0 X+ if [ ! -f "${Z_GLOBAL_LOCKFILE}" ] ; then X+ echo $Z_GLOBAL_PID > $Z_GLOBAL_LOCKFILE X+ return 0 X+ fi X X # otherwise, deal with fail X # Check for dead old holder first. X@@ -135,7 +138,10 @@ X X while (( retry_count > 0 )); do X sleep 1 X- ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0 X+ if [ ! -f "${Z_GLOBAL_LOCKFILE}" ] ; then X+ echo $Z_GLOBAL_PID > $Z_GLOBAL_LOCKFILE X+ return 0 X+ fi X retry_count=$((retry_count-1)) X done X X@@ -178,7 +184,9 @@ X typeset check=`zrep_fs_lock_pid $1` newcheck X if [[ "$check" != "-" ]] ; then X # validate fs lock before giving up X- ls -d /proc/$check >/dev/null 2>&1 && return 1 X+ if [ "${check}" != "-" ] ; then X+ [ -f "${Z_GLOBAL_LOCKFILE}" ] && return 1 X+ fi X fi X X zrep_get_global_lock || return 1 X@@ -257,8 +265,7 @@ X X zrep_gettimeinseconds(){ X # unfortunately, solaris date doesnt do '%s', so need to use perl X- typeset PATH=$PERL_BIN:$PATH X- perl -e 'print int(time);' X+ date +%s X } X ###### zrep_status X X@@ -713,7 +720,7 @@ X READONLYPROP="-o readonly=on" X else X READONLYPROP="" X- print Ancient local version of ZFS detected. X+# print Ancient local version of ZFS detected. X print Creating destination filesystem as separate step X zrep_ssh $desthost zfs create $ZREP_CREATE_FLAGS -o readonly=on $destfs || zrep_errquit "Cannot create $desthost:$destfs" X fi X@@ -757,7 +764,7 @@ X # Successful initial sync! Woo! okay record that, etc. X # ... after stupid old-zfs-compat junk, that is X if (( ! Z_HAS_X )) ; then X- print Debug: Because you have old zfs support, setting remote properties by hand X+# print Debug: Because you have old zfs support, setting remote properties by hand X zrep_ssh $desthost zfs set readonly=on $destfs || X clearquit Could not set readonly for $desthost:$destfs X f78ce14574ed88f9d7e5390f1f563104 echo x - zrep/pkg-descr sed 's/^X//' >zrep/pkg-descr << 'd400e34ba739a809a784894ceba77235' XZrep is an enterprise-grade, single-program solution for handling asynchronous, Xcontinuous replication of a zfs filesystem, to another filesystem. XThat filesystem can be on another machine, or on the same machine. X XIt also handles 'failover', as simply as "zrep failover datapool/yourfs". XThis will conveniently handle all the details of X X - Making 'yourfs' be a data destination, rather than a source X - Making 'yourfs' be read-only X - Making the destination fs be "live", and ready to transfer data to yourfs X XWWW: http://www.bolthole.com/solaris/zrep/ d400e34ba739a809a784894ceba77235 exit >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311191453.rAJErIUM099480>