Bug 228714

Summary: [NEW PORT] sysutils/lsyncd: Live Syncing (Mirror) Daemon
Product: Ports & Packages Reporter: Junichi Satoh <junichi>
Component: Individual Port(s)Assignee: Tobias Kortkamp <tobik>
Status: Closed FIXED    
Severity: Affects Only Me CC: 0mp, junichi
Priority: --- Keywords: feature, patch
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
shar file for sysutils/lsyncd port
none
fixed shar file for sysutils/lsyncd port
none
re-corrected shar file for sysutils/lsyncd port none

Description Junichi Satoh 2018-06-03 01:22:14 UTC
Created attachment 193956 [details]
shar file for sysutils/lsyncd port

Lsyncd is designed to synchronize a local directory tree with low profile of expected changes to a remote mirror.

Details are here:
https://axkibe.github.io/lsyncd/
Comment 1 Mateusz Piotrowski freebsd_committer freebsd_triage 2018-06-03 01:49:45 UTC
Hello :)

I've got a couple suggestions:
 * Replace the current MASTER_SITES with USE_GITHUB.[1]
 * Define LICENSE_FILE if it's available.
 * Remove the "Created by..." line. It should not be included in new ports.

[1]: https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#makefile-master_sites-github-description
Comment 2 Junichi Satoh 2018-06-03 05:31:47 UTC
Created attachment 193960 [details]
fixed shar file for sysutils/lsyncd port
Comment 3 Junichi Satoh 2018-06-03 05:33:47 UTC
(In reply to Mateusz Piotrowski from comment #1)

Thanks for suggestions.
I've fixed them and also updated some codes.

I attached the fixed shar file.
Comment 4 Tobias Kortkamp freebsd_committer freebsd_triage 2018-06-03 06:35:54 UTC
X+#ifdef __FreeBSD__
X+#include </usr/local/include/sys/inotify.h>
X+#else

This is incorrect on many levels.  Why can't it find sys/inotify.h
without this?  Maybe you need to add USES=localbase or
USES=localbase:ldflags to the port.

X+	// daemonize should be done before open_inofity with FreeBSD.

Hmm, why?

X: ${lsyncd_configfile:=/usr/local/etc/$name.conf}

Replace /usr/local with %%PREFIX%%.

XUSES=		cmake lua

cmake:outsource is preferred.

X.include <bsd.port.pre.mk>

Not necessary here.

XPLIST_FILES=	sbin/lsyncd man/man1/lsyncd.1.gz etc/lsyncd.conf.sample

lsyncd.conf.sample should probably have an @sample keyword.

XLICENSE=	GPLv2

This should be GPLv2+ as they allow later version of the GPL.

X+#ifdef __FreeBSD__
X+#define DT_UNKNOWN 0
X+#define DT_DIR 4
X+#endif

Why is this needed?  These should be defined in sys/dirent.h on
FreeBSD.  If lsyncd defines _XOPEN_SOURCE (or similar things that
may hide some definitions) maybe try removing that instead.

XLIB_DEPENDS+=	libinotify.so:devel/libinotify

This needs to go after BUILD_DEPENDS. Use = not +=.
Comment 5 Junichi Satoh 2018-06-09 22:09:26 UTC
Created attachment 194120 [details]
re-corrected shar file for sysutils/lsyncd port
Comment 6 Junichi Satoh 2018-06-09 22:27:57 UTC
(In reply to Tobias Kortkamp from comment #4)

I've fixed them except daemonize.

About daemonize, if it's done after open_inotify() like original source, lsyncd doesn't work correctly on FreeBSD even if it's compiled without errors.
The lsyncd which is compiled with original source can't receive events for file updating. So, pselect() in mail loop waits events forever.

Because, I don't know details of differences between Linux's inotify and libinotify, I don't know that exact reason.
Comment 7 commit-hook freebsd_committer freebsd_triage 2018-06-10 10:30:30 UTC
A commit references this bug:

Author: tobik
Date: Sun Jun 10 10:30:16 UTC 2018
New revision: 472128
URL: https://svnweb.freebsd.org/changeset/ports/472128

Log:
  New port: sysutils/lsyncd

  Lsyncd is designed to synchronize a local directory tree with low
  profile of expected changes to a remote mirror.  Lsyncd is especially
  useful to sync data from a secure area to a not-so-secure area.

  WWW: https://axkibe.github.io/lsyncd/

  PR:		228714
  Submitted by:	Junichi Satoh <junichi@junichi.org>

Changes:
  head/sysutils/Makefile
  head/sysutils/lsyncd/
  head/sysutils/lsyncd/Makefile
  head/sysutils/lsyncd/distinfo
  head/sysutils/lsyncd/files/
  head/sysutils/lsyncd/files/lsyncd.conf.sample
  head/sysutils/lsyncd/files/lsyncd.in
  head/sysutils/lsyncd/files/patch-CMakeLists.txt
  head/sysutils/lsyncd/files/patch-default-rsync.lua
  head/sysutils/lsyncd/files/patch-lsyncd.c
  head/sysutils/lsyncd/pkg-descr