diff options
Diffstat (limited to 'filesystems/zrepl')
-rw-r--r-- | filesystems/zrepl/Makefile | 61 | ||||
-rw-r--r-- | filesystems/zrepl/distinfo | 7 | ||||
-rw-r--r-- | filesystems/zrepl/files/500.zrepl.in | 41 | ||||
-rw-r--r-- | filesystems/zrepl/files/newsyslog.conf | 5 | ||||
-rw-r--r-- | filesystems/zrepl/files/patch-go.mod | 89 | ||||
-rw-r--r-- | filesystems/zrepl/files/patch-go.sum | 28 | ||||
-rw-r--r-- | filesystems/zrepl/files/patch-vendor_modules.txt | 277 | ||||
-rw-r--r-- | filesystems/zrepl/files/pkg-message.in | 37 | ||||
-rw-r--r-- | filesystems/zrepl/files/syslog.conf | 7 | ||||
-rw-r--r-- | filesystems/zrepl/files/zrepl.in | 80 | ||||
-rw-r--r-- | filesystems/zrepl/files/zrepl.yml | 13 | ||||
-rw-r--r-- | filesystems/zrepl/pkg-descr | 2 | ||||
-rw-r--r-- | filesystems/zrepl/pkg-plist | 25 |
13 files changed, 672 insertions, 0 deletions
diff --git a/filesystems/zrepl/Makefile b/filesystems/zrepl/Makefile new file mode 100644 index 000000000000..fccb602a1809 --- /dev/null +++ b/filesystems/zrepl/Makefile @@ -0,0 +1,61 @@ +PORTNAME= zrepl +DISTVERSIONPREFIX= v +DISTVERSION= 0.6.1 +PORTREVISION= 9 +CATEGORIES= filesystems sysutils + +MAINTAINER= driesm@FreeBSD.org +COMMENT= ZFS dataset replication tool +WWW= https://zrepl.github.io/ + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= go:modules ncurses +USE_RC_SUBR= zrepl +USE_GITHUB= nodefault +GH_TUPLE= golang:sys:v0.6.0:sys + +GO_MODULE= github.com/${PORTNAME}/${PORTNAME} +GO_BUILDFLAGS= -ldflags "\ + ${STRIP} -w\ + -X ${GO_MODULE}/version.${PORTNAME}Version=${DISTVERSIONFULL}" + +SUB_FILES= pkg-message 500.zrepl + +OPTIONS_DEFINE= EXAMPLES MANPAGES +OPTIONS_DEFAULT= MANPAGES + +MANPAGES_BUILD_DEPENDS= sphinx-multiversion:textproc/py-sphinx-multiversion-zrepl@${PY_FLAVOR} +MANPAGES_USES= gmake python:build +MANPAGES_PLIST_FILES= share/man/man1/zrepl.1.gz + +pre-patch: + ${RM} -r ${WRKSRC}/vendor/golang.org/x/sys + ${LN} -s ${WRKDIR}/sys-* ${WRKSRC}/vendor/golang.org/x/sys + +post-build-MANPAGES-on: + @${MAKE_CMD} -C ${WRKSRC}/docs SPHINXBUILD=sphinx-build-${PYTHON_VER} man + +post-install: + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} \ + ${STAGEDIR}${ETCDIR} \ + ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d \ + ${STAGEDIR}${PREFIX}/etc/syslog.d \ + ${STAGEDIR}/var/run/zrepl + ${INSTALL_DATA} ${FILESDIR}/newsyslog.conf ${STAGEDIR}${EXAMPLESDIR}/newsyslog.conf + ${INSTALL_DATA} ${FILESDIR}/syslog.conf ${STAGEDIR}${EXAMPLESDIR}/syslog.conf + ${INSTALL_DATA} ${FILESDIR}/zrepl.yml ${STAGEDIR}${ETCDIR}/zrepl.yml.sample + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/weekly + ${INSTALL_SCRIPT} ${WRKDIR}/500.zrepl \ + ${STAGEDIR}${PREFIX}/etc/periodic/weekly/500.zrepl + +post-install-EXAMPLES-on: + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/hooks + (cd ${WRKSRC}/config/samples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) + ${INSTALL_DATA} ${WRKSRC}/dist/grafana/grafana-prometheus-zrepl.json ${STAGEDIR}${EXAMPLESDIR} + +post-install-MANPAGES-on: + ${INSTALL_MAN} ${WRKSRC}/docs/_build/man/zrepl.1 ${STAGEDIR}${PREFIX}/share/man/man1 + +.include <bsd.port.mk> diff --git a/filesystems/zrepl/distinfo b/filesystems/zrepl/distinfo new file mode 100644 index 000000000000..33e3320c0169 --- /dev/null +++ b/filesystems/zrepl/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1697090687 +SHA256 (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.mod) = 27760d04eb9b7c3c1ca35069afde9f3855f2491f80412bd3aba6cccb557fb009 +SIZE (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.mod) = 2186 +SHA256 (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.zip) = 87756e2d173cb6c588ba58d05a564bab9dd1febdbb6dbab435425981f379d715 +SIZE (go/sysutils_zrepl/zrepl-v0.6.1/v0.6.1.zip) = 587381 +SHA256 (go/sysutils_zrepl/zrepl-v0.6.1/golang-sys-v0.6.0_GH0.tar.gz) = b4f6d17c7a128f76169964b437cb66b3f2dbf9a33361928ec19dfecf7b03fc54 +SIZE (go/sysutils_zrepl/zrepl-v0.6.1/golang-sys-v0.6.0_GH0.tar.gz) = 1434234 diff --git a/filesystems/zrepl/files/500.zrepl.in b/filesystems/zrepl/files/500.zrepl.in new file mode 100644 index 000000000000..b7f1b3abb4d3 --- /dev/null +++ b/filesystems/zrepl/files/500.zrepl.in @@ -0,0 +1,41 @@ +#!/bin/sh + +# Check zrepl SSL certificates for impending expiration each week +# +# Add the following lines to /etc/periodic.conf: +# +# weekly_zrepl_enable (bool): Set to "NO" by default +# weekly_zrepl_warntime (int): Set to one month's worth of seconds by default + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +# 30 days in seconds +: ${weekly_zrepl_warntime="2592000"} + +rc=0 +case "$weekly_zrepl_enable" in + [Yy][Ee][Ss]) + echo + echo "Check Zrepl certificates for upcoming expiration:" + + for cert in `/usr/bin/find %%ETCDIR%% -maxdepth 1 -name *.crt`; do + /usr/bin/openssl x509 --in "${cert}" \ + -checkend "${weekly_zrepl_warntime}" + + if [ $? -gt 0 ]; then + echo "${cert} will expire soon" + /usr/bin/openssl x509 --in "${cert}" -noout -enddate + rc=3 + fi + done + ;; + *) rc=0;; +esac + +exit $rc diff --git a/filesystems/zrepl/files/newsyslog.conf b/filesystems/zrepl/files/newsyslog.conf new file mode 100644 index 000000000000..647b87247baa --- /dev/null +++ b/filesystems/zrepl/files/newsyslog.conf @@ -0,0 +1,5 @@ +# Newsyslog configuration file for zrepl. +# See newsyslog.conf(5) for details. +# +# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] +/var/log/zrepl.log 644 7 1000 @T00 JNC diff --git a/filesystems/zrepl/files/patch-go.mod b/filesystems/zrepl/files/patch-go.mod new file mode 100644 index 000000000000..abb50a71b69c --- /dev/null +++ b/filesystems/zrepl/files/patch-go.mod @@ -0,0 +1,89 @@ +--- go.mod.orig 2023-03-24 22:49:20 UTC ++++ go.mod +@@ -1,6 +1,6 @@ + module github.com/zrepl/zrepl + +-go 1.12 ++go 1.17 + + require ( + github.com/fatih/color v1.7.0 +@@ -15,37 +15,68 @@ require ( + github.com/google/uuid v1.1.2 + github.com/jinzhu/copier v0.0.0-20170922082739-db4671f3a9b8 + github.com/juju/ratelimit v1.0.1 +- github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect + github.com/kr/pretty v0.1.0 +- github.com/leodido/go-urn v1.2.1 // indirect + github.com/lib/pq v1.2.0 +- github.com/mattn/go-colorable v0.1.4 // indirect + github.com/mattn/go-isatty v0.0.8 + github.com/montanaflynn/stats v0.5.0 +- github.com/onsi/ginkgo v1.10.2 // indirect +- github.com/onsi/gomega v1.7.0 // indirect + github.com/pkg/errors v0.8.1 + github.com/pkg/profile v1.2.1 + github.com/problame/go-netssh v0.0.0-20200601114649-26439f9f0dc5 + github.com/prometheus/client_golang v1.2.1 + github.com/prometheus/common v0.7.0 + github.com/robfig/cron/v3 v3.0.1 +- github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 // indirect; go1.12 thinks it needs this + github.com/spf13/cobra v0.0.2 + github.com/spf13/pflag v1.0.5 + github.com/stretchr/testify v1.6.1 + github.com/willf/bitset v1.1.10 + github.com/yudai/gojsondiff v0.0.0-20170107030110-7b1b7adf999d +- github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect; go1.12 thinks it needs this +- github.com/yudai/pp v2.0.1+incompatible // indirect + github.com/zrepl/yaml-config v0.0.0-20191220194647-cbb6b0cf4bdd + gitlab.com/tslocum/cview v1.5.3 + golang.org/x/net v0.0.0-20210119194325-5f4716e94777 + golang.org/x/sync v0.0.0-20190423024810-112230192c58 +- golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c ++ golang.org/x/sys v0.6.0 + golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 +- google.golang.org/genproto v0.0.0-20210122163508-8081c04a3579 // indirect + google.golang.org/grpc v1.35.0 + google.golang.org/protobuf v1.25.0 ++) ++ ++require ( ++ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect ++ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 // indirect ++ github.com/beorn7/perks v1.0.1 // indirect ++ github.com/cespare/xxhash/v2 v2.1.0 // indirect ++ github.com/davecgh/go-spew v1.1.1 // indirect ++ github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff // indirect ++ github.com/gdamore/encoding v1.0.0 // indirect ++ github.com/go-playground/locales v0.13.0 // indirect ++ github.com/go-playground/universal-translator v0.17.0 // indirect ++ github.com/inconshreveable/mousetrap v1.0.0 // indirect ++ github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect ++ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 // indirect ++ github.com/kr/text v0.1.0 // indirect ++ github.com/leodido/go-urn v1.2.1 // indirect ++ github.com/lucasb-eyer/go-colorful v1.0.3 // indirect ++ github.com/mattn/go-colorable v0.1.4 // indirect ++ github.com/mattn/go-runewidth v0.0.10 // indirect ++ github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect ++ github.com/onsi/ginkgo v1.10.2 // indirect ++ github.com/onsi/gomega v1.7.0 // indirect ++ github.com/pmezard/go-difflib v1.0.0 // indirect ++ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect ++ github.com/prometheus/procfs v0.0.5 // indirect ++ github.com/rivo/uniseg v0.2.0 // indirect ++ github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 // indirect; go1.12 thinks it needs this ++ github.com/sirupsen/logrus v1.4.2 // indirect ++ github.com/theckman/goconstraint v1.11.0 // indirect ++ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect; go1.12 thinks it needs this ++ github.com/yudai/pp v2.0.1+incompatible // indirect ++ gitlab.com/tslocum/cbind v0.1.4 // indirect ++ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect ++ golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf // indirect ++ golang.org/x/text v0.3.5 // indirect ++ google.golang.org/appengine v1.4.0 // indirect ++ google.golang.org/genproto v0.0.0-20210122163508-8081c04a3579 // indirect ++ gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect + gopkg.in/go-playground/assert.v1 v1.2.1 // indirect ++ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect + ) diff --git a/filesystems/zrepl/files/patch-go.sum b/filesystems/zrepl/files/patch-go.sum new file mode 100644 index 000000000000..7a439ab0bf98 --- /dev/null +++ b/filesystems/zrepl/files/patch-go.sum @@ -0,0 +1,28 @@ +--- go.sum.orig 2023-03-24 22:49:23 UTC ++++ go.sum +@@ -25,7 +25,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.202012 + github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= + github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= + github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= + github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= + github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff h1:zk1wwii7uXmI0znwU+lqg+wFL9G5+vm5I+9rv2let60= + github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff/go.mod h1:yUhRXHewUVJ1k89wHKP68xfzk7kwXUx/DV1nx4EBMbw= +@@ -92,8 +91,6 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m + github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY= + github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= + github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= +-github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= + github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= + github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= + github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +@@ -235,6 +232,8 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go + golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= + golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= ++golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= + golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf h1:MZ2shdL+ZM/XzY3ZGOnh4Nlpnxz5GSOhOmtHo3iPU6M= + golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/filesystems/zrepl/files/patch-vendor_modules.txt b/filesystems/zrepl/files/patch-vendor_modules.txt new file mode 100644 index 000000000000..90f922b88bf2 --- /dev/null +++ b/filesystems/zrepl/files/patch-vendor_modules.txt @@ -0,0 +1,277 @@ +--- vendor/modules.txt.orig 2023-03-24 22:50:20 UTC ++++ vendor/modules.txt +@@ -1,21 +1,30 @@ + # github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 ++## explicit + github.com/alecthomas/template + github.com/alecthomas/template/parse + # github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 ++## explicit + github.com/alecthomas/units + # github.com/beorn7/perks v1.0.1 ++## explicit; go 1.11 + github.com/beorn7/perks/quantile + # github.com/cespare/xxhash/v2 v2.1.0 ++## explicit; go 1.13 + github.com/cespare/xxhash/v2 + # github.com/davecgh/go-spew v1.1.1 ++## explicit + github.com/davecgh/go-spew/spew + # github.com/fatih/color v1.7.0 ++## explicit + github.com/fatih/color + # github.com/ftrvxmtrx/fd v0.0.0-20150925145434-c6d800382fff ++## explicit + github.com/ftrvxmtrx/fd + # github.com/gdamore/encoding v1.0.0 ++## explicit; go 1.9 + github.com/gdamore/encoding + # github.com/gdamore/tcell v1.2.0 ++## explicit; go 1.12 + github.com/gdamore/tcell + github.com/gdamore/tcell/terminfo + github.com/gdamore/tcell/terminfo/a/ansi +@@ -26,6 +35,7 @@ github.com/gdamore/tcell/terminfo/v/vt102 + github.com/gdamore/tcell/terminfo/v/vt220 + github.com/gdamore/tcell/terminfo/x/xterm + # github.com/gdamore/tcell/v2 v2.2.0 ++## explicit; go 1.12 + github.com/gdamore/tcell/v2 + github.com/gdamore/tcell/v2/terminfo + github.com/gdamore/tcell/v2/terminfo/a/aixterm +@@ -65,117 +75,171 @@ github.com/gdamore/tcell/v2/terminfo/x/xterm + github.com/gdamore/tcell/v2/terminfo/x/xterm_kitty + github.com/gdamore/tcell/v2/terminfo/x/xterm_termite + # github.com/gitchander/permutation v0.0.0-20181107151852-9e56b92e9909 ++## explicit + github.com/gitchander/permutation + # github.com/go-logfmt/logfmt v0.4.0 ++## explicit + github.com/go-logfmt/logfmt + # github.com/go-playground/locales v0.13.0 ++## explicit; go 1.13 + github.com/go-playground/locales + github.com/go-playground/locales/currency + # github.com/go-playground/universal-translator v0.17.0 ++## explicit; go 1.13 + github.com/go-playground/universal-translator + # github.com/go-playground/validator v9.31.0+incompatible ++## explicit + github.com/go-playground/validator + # github.com/go-playground/validator/v10 v10.4.1 ++## explicit; go 1.13 + github.com/go-playground/validator/v10 + # github.com/go-sql-driver/mysql v1.4.1-0.20190907122137-b2c03bcae3d4 ++## explicit + github.com/go-sql-driver/mysql + # github.com/golang/protobuf v1.4.3 ++## explicit; go 1.9 + github.com/golang/protobuf/proto + github.com/golang/protobuf/ptypes + github.com/golang/protobuf/ptypes/any + github.com/golang/protobuf/ptypes/duration + github.com/golang/protobuf/ptypes/timestamp + # github.com/google/uuid v1.1.2 ++## explicit + github.com/google/uuid + # github.com/inconshreveable/mousetrap v1.0.0 ++## explicit + github.com/inconshreveable/mousetrap + # github.com/jinzhu/copier v0.0.0-20170922082739-db4671f3a9b8 ++## explicit + github.com/jinzhu/copier + # github.com/juju/ratelimit v1.0.1 ++## explicit + github.com/juju/ratelimit + # github.com/konsorten/go-windows-terminal-sequences v1.0.1 ++## explicit + github.com/konsorten/go-windows-terminal-sequences + # github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 ++## explicit + github.com/kr/logfmt + # github.com/kr/pretty v0.1.0 ++## explicit + github.com/kr/pretty + # github.com/kr/text v0.1.0 ++## explicit + github.com/kr/text + # github.com/leodido/go-urn v1.2.1 ++## explicit; go 1.13 + github.com/leodido/go-urn + # github.com/lib/pq v1.2.0 ++## explicit + github.com/lib/pq + github.com/lib/pq/oid + github.com/lib/pq/scram + # github.com/lucasb-eyer/go-colorful v1.0.3 ++## explicit; go 1.12 + github.com/lucasb-eyer/go-colorful + # github.com/mattn/go-colorable v0.1.4 ++## explicit + github.com/mattn/go-colorable + # github.com/mattn/go-isatty v0.0.8 ++## explicit + github.com/mattn/go-isatty + # github.com/mattn/go-runewidth v0.0.10 ++## explicit; go 1.9 + github.com/mattn/go-runewidth + # github.com/matttproud/golang_protobuf_extensions v1.0.1 ++## explicit + github.com/matttproud/golang_protobuf_extensions/pbutil + # github.com/montanaflynn/stats v0.5.0 ++## explicit + github.com/montanaflynn/stats ++# github.com/onsi/ginkgo v1.10.2 ++## explicit ++# github.com/onsi/gomega v1.7.0 ++## explicit + # github.com/pkg/errors v0.8.1 ++## explicit + github.com/pkg/errors + # github.com/pkg/profile v1.2.1 ++## explicit + github.com/pkg/profile + # github.com/pmezard/go-difflib v1.0.0 ++## explicit + github.com/pmezard/go-difflib/difflib + # github.com/problame/go-netssh v0.0.0-20200601114649-26439f9f0dc5 ++## explicit; go 1.11 + github.com/problame/go-netssh + github.com/problame/go-netssh/internal/circlog + # github.com/prometheus/client_golang v1.2.1 ++## explicit; go 1.11 + github.com/prometheus/client_golang/prometheus + github.com/prometheus/client_golang/prometheus/internal + github.com/prometheus/client_golang/prometheus/promhttp + # github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 ++## explicit; go 1.9 + github.com/prometheus/client_model/go + # github.com/prometheus/common v0.7.0 ++## explicit; go 1.11 + github.com/prometheus/common/expfmt + github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg + github.com/prometheus/common/log + github.com/prometheus/common/model + # github.com/prometheus/procfs v0.0.5 ++## explicit + github.com/prometheus/procfs + github.com/prometheus/procfs/internal/fs + github.com/prometheus/procfs/internal/util + # github.com/rivo/uniseg v0.2.0 ++## explicit; go 1.12 + github.com/rivo/uniseg + # github.com/robfig/cron/v3 v3.0.1 ++## explicit; go 1.12 + github.com/robfig/cron/v3 + # github.com/sergi/go-diff v1.0.1-0.20180205163309-da645544ed44 ++## explicit + github.com/sergi/go-diff/diffmatchpatch + # github.com/sirupsen/logrus v1.4.2 ++## explicit + github.com/sirupsen/logrus + # github.com/spf13/cobra v0.0.2 ++## explicit + github.com/spf13/cobra + # github.com/spf13/pflag v1.0.5 ++## explicit; go 1.12 + github.com/spf13/pflag + # github.com/stretchr/testify v1.6.1 ++## explicit; go 1.13 + github.com/stretchr/testify/assert + github.com/stretchr/testify/require + # github.com/theckman/goconstraint v1.11.0 ++## explicit + github.com/theckman/goconstraint/go1.11/gte + # github.com/willf/bitset v1.1.10 ++## explicit + github.com/willf/bitset + # github.com/yudai/gojsondiff v0.0.0-20170107030110-7b1b7adf999d ++## explicit + github.com/yudai/gojsondiff + github.com/yudai/gojsondiff/formatter + # github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 ++## explicit + github.com/yudai/golcs ++# github.com/yudai/pp v2.0.1+incompatible ++## explicit + # github.com/zrepl/yaml-config v0.0.0-20191220194647-cbb6b0cf4bdd ++## explicit + github.com/zrepl/yaml-config + # gitlab.com/tslocum/cbind v0.1.4 ++## explicit; go 1.15 + gitlab.com/tslocum/cbind + # gitlab.com/tslocum/cview v1.5.3 ++## explicit; go 1.12 + gitlab.com/tslocum/cview + # golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 ++## explicit; go 1.11 + golang.org/x/crypto/sha3 + # golang.org/x/net v0.0.0-20210119194325-5f4716e94777 ++## explicit; go 1.11 + golang.org/x/net/http/httpguts + golang.org/x/net/http2 + golang.org/x/net/http2/hpack +@@ -184,8 +248,10 @@ golang.org/x/net/internal/timeseries + golang.org/x/net/trace + golang.org/x/net/websocket + # golang.org/x/sync v0.0.0-20190423024810-112230192c58 ++## explicit + golang.org/x/sync/semaphore +-# golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c ++# golang.org/x/sys v0.6.0 ++## explicit; go 1.17 + golang.org/x/sys/cpu + golang.org/x/sys/internal/unsafeheader + golang.org/x/sys/plan9 +@@ -194,8 +260,10 @@ golang.org/x/sys/windows + golang.org/x/sys/windows/registry + golang.org/x/sys/windows/svc/eventlog + # golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf ++## explicit; go 1.11 + golang.org/x/term + # golang.org/x/text v0.3.5 ++## explicit; go 1.11 + golang.org/x/text/encoding + golang.org/x/text/encoding/internal/identifier + golang.org/x/text/secure/bidirule +@@ -203,6 +271,7 @@ golang.org/x/text/transform + golang.org/x/text/unicode/bidi + golang.org/x/text/unicode/norm + # golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 ++## explicit + golang.org/x/tools/go/gcexportdata + golang.org/x/tools/go/internal/gcimporter + golang.org/x/tools/go/internal/packagesdriver +@@ -211,10 +280,13 @@ golang.org/x/tools/internal/fastwalk + golang.org/x/tools/internal/gopathwalk + golang.org/x/tools/internal/semver + # google.golang.org/appengine v1.4.0 ++## explicit + google.golang.org/appengine/cloudsql + # google.golang.org/genproto v0.0.0-20210122163508-8081c04a3579 ++## explicit; go 1.11 + google.golang.org/genproto/googleapis/rpc/status + # google.golang.org/grpc v1.35.0 ++## explicit; go 1.11 + google.golang.org/grpc + google.golang.org/grpc/attributes + google.golang.org/grpc/backoff +@@ -260,6 +332,7 @@ google.golang.org/grpc/stats + google.golang.org/grpc/status + google.golang.org/grpc/tap + # google.golang.org/protobuf v1.25.0 ++## explicit; go 1.9 + google.golang.org/protobuf/encoding/prototext + google.golang.org/protobuf/encoding/protowire + google.golang.org/protobuf/internal/descfmt +@@ -290,6 +363,10 @@ google.golang.org/protobuf/types/known/anypb + google.golang.org/protobuf/types/known/durationpb + google.golang.org/protobuf/types/known/timestamppb + # gopkg.in/alecthomas/kingpin.v2 v2.2.6 ++## explicit + gopkg.in/alecthomas/kingpin.v2 ++# gopkg.in/go-playground/assert.v1 v1.2.1 ++## explicit + # gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c ++## explicit + gopkg.in/yaml.v3 diff --git a/filesystems/zrepl/files/pkg-message.in b/filesystems/zrepl/files/pkg-message.in new file mode 100644 index 000000000000..b210277014d0 --- /dev/null +++ b/filesystems/zrepl/files/pkg-message.in @@ -0,0 +1,37 @@ +[ +{ type: install + message: <<EOM +Messages from filesystems/zrepl: + +SETUP BEFORE FIRST USE: +- Create the log file /var/log/zrepl.log: + # service newsyslog restart +- Teach syslogd to redirect facility local0 to the zrepl.log file: + # service syslogd reload +- Modify the %%PREFIX%%/etc/zrepl/zrepl.yml configuration file +- For remote backups, create the SSH key pair and authorized_keys file +- Enable the zrepl daemon to start automatically at boot: + # sysrc zrepl_enable="YES" +- Start the zrepl daemon: + # service zrepl start + +Documentation: https://zrepl.github.io/ +Changelog: https://zrepl.github.io/master/changelog.html + +DANGER - SNAPSHOT PRUNING REQUIRES EXPLICIT KEEP RULES: +For any ZFS snapshot that you want to keep, at least one rule must match. +This also applies to snapshots taken by means other than zrepl +(e.g. snapshots taken manually or via boot environment tools). + +In order to automatically warn the operator of impending certificate +expiration, add this line to /etc/periodic.conf: + + weekly_zrepl_enable="YES" + +More config details in the zrepl periodic script: + + %%LOCALBASE%%/etc/periodic/weekly/500.zrepl + +EOM +} +] diff --git a/filesystems/zrepl/files/syslog.conf b/filesystems/zrepl/files/syslog.conf new file mode 100644 index 000000000000..c825c409d5a6 --- /dev/null +++ b/filesystems/zrepl/files/syslog.conf @@ -0,0 +1,7 @@ +# Syslog configuration file for zrepl. +# See syslog.conf(5) for details. +# +# SELECTOR ACTION +# FACILITY.[!<=>]LEVEL +!zrepl +local0.info /var/log/zrepl.log diff --git a/filesystems/zrepl/files/zrepl.in b/filesystems/zrepl/files/zrepl.in new file mode 100644 index 000000000000..6a2510f80572 --- /dev/null +++ b/filesystems/zrepl/files/zrepl.in @@ -0,0 +1,80 @@ +#!/bin/sh + +# PROVIDE: zrepl +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# zrepl_enable (bool): Set to YES to enable the zrepl service. +# Default: NO +# zrepl_config (str): File containing zrepl configuration details. +# Default: %%PREFIX%%/etc/zrepl/zrepl.yml +# zrepl_user (str): The user account used to run the zrepl daemon. +# Do not specifically set this to an empty string as this +# will cause the daemon to run as root. +# Default: root +# zrepl_group (str): The group account used to run the zrepl daemon. +# Do not specifically set this to an empty string as this +# will cause the daemon to run with group wheel. +# Default: wheel +# zrepl_flags (str): Extra flags passed to zrepl +# Default: "" +# zrepl_facility (str): Syslog facility to use +# Default: local0 +# zrepl_priority (str): Syslog priority to use +# Default: alert + +. /etc/rc.subr +name=zrepl +rcvar=${name}_enable +load_rc_config $name + +: ${zrepl_enable:="NO"} +: ${zrepl_config:="%%PREFIX%%/etc/zrepl/zrepl.yml"} +: ${zrepl_user:="root"} +: ${zrepl_group:="wheel"} +: ${zrepl_flags:=""} +: ${zrepl_facility:="local0"} +: ${zrepl_priority:="alert"} +: ${zrepl_options:="${zrepl_flags} --config ${zrepl_config}"} + +pidfile="/var/run/zrepl.pid" +command="/usr/sbin/daemon" +procname="%%PREFIX%%/bin/zrepl" +command_args="-p ${pidfile} -S -l ${zrepl_facility} -s ${zrepl_priority} -T ${name} \ + ${procname} ${zrepl_options} daemon" + +start_precmd="zrepl_precmd" +stop_postcmd="zrepl_postcmd" +restart_precmd="zrepl_checkconfig" +configtest_cmd="zrepl_checkconfig" +extra_commands="configtest" + +zrepl_precmd() +{ + if [ ! -d "/var/run/zrepl/stdinserver" ]; then + install -d -g ${zrepl_group} -o ${zrepl_user} -m 0700 -- "/var/run/zrepl"; + install -d -g ${zrepl_group} -o ${zrepl_user} -m 0700 -- "/var/run/zrepl/stdinserver"; + fi + + if [ ! -e "${pidfile}" ]; then + install -g ${zrepl_group} -o ${zrepl_user} -- /dev/null "${pidfile}"; + fi + + zrepl_checkconfig +} + +zrepl_postcmd() +{ + rm -f -- "${pidfile}" +} + +zrepl_checkconfig() +{ + echo "Performing sanity check on zrepl configuration:" + eval ${procname} ${zrepl_options} configcheck +} + +run_rc_command "$1" diff --git a/filesystems/zrepl/files/zrepl.yml b/filesystems/zrepl/files/zrepl.yml new file mode 100644 index 000000000000..94e924c4eb7e --- /dev/null +++ b/filesystems/zrepl/files/zrepl.yml @@ -0,0 +1,13 @@ +# zrepl main configuration file. +# For documentation, refer to https://zrepl.github.io/ +# +global: + logging: + - type: "stdout" + level: "error" + format: "human" + - type: "syslog" + level: "info" + format: "logfmt" + +# Add "jobs:" section(s) here for your specific use cases. diff --git a/filesystems/zrepl/pkg-descr b/filesystems/zrepl/pkg-descr new file mode 100644 index 000000000000..4913c21f125b --- /dev/null +++ b/filesystems/zrepl/pkg-descr @@ -0,0 +1,2 @@ +Cross-platform ZFS replication tool written in Go that supports +feature detection, bookmarks, and other new features. diff --git a/filesystems/zrepl/pkg-plist b/filesystems/zrepl/pkg-plist new file mode 100644 index 000000000000..a11961d1fa43 --- /dev/null +++ b/filesystems/zrepl/pkg-plist @@ -0,0 +1,25 @@ +bin/zrepl +etc/periodic/weekly/500.zrepl +@sample %%ETCDIR%%/zrepl.yml.sample +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bandwidth_limit.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/grafana-prometheus-zrepl.json +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hooks/template.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/local.yml +@sample %%EXAMPLESDIR%%/newsyslog.conf etc/newsyslog.conf.d/zrepl.conf +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pull.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pull_ssh.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/push.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_backup_to_external_disk.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_continuous_server_backup_receiver.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_continuous_server_backup_sender.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_fan_out_replication_source.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quickstart_fan_out_replication_target.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sink.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/snap.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/snap_cron.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/source.yml +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/source_ssh.yml +@sample %%EXAMPLESDIR%%/syslog.conf etc/syslog.d/zrepl.conf +@dir etc/newsyslog.conf.d +@dir etc/syslog.d +@dir(root,wheel,0750) /var/run/zrepl |