diff --git a/irc/soju/Makefile b/irc/soju/Makefile --- a/irc/soju/Makefile +++ b/irc/soju/Makefile @@ -1,6 +1,7 @@ PORTNAME= soju DISTVERSIONPREFIX= v DISTVERSION= 0.8.0 +PORTREVISION= 1 CATEGORIES= irc MAINTAINER= ashish@FreeBSD.org @@ -10,63 +11,110 @@ LICENSE= AGPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE -USES= go:modules,no_targets sqlite:3 -USE_GITHUB= nodefault -GH_TUPLE= golang:sys:v0.18.0:sys +USES= go:modules sqlite:3 +GO_TARGET= ./cmd/soju \ + ./cmd/sojuctl \ + ./cmd/sojudb \ + ./contrib/migrate-db:soju-migrate-db \ + ./contrib/migrate-logs:soju-migrate-logs \ + ./contrib/znc-import:soju-znc-import + OPTIONS_DEFAULT= DOCS OPTIONS_DEFINE= DOCS +PORTDOCS= README* doc/*.md doc/**/*.md +SOJU_MAN1= soju.1 sojuctl.1 + USERS= soju GROUPS= soju SUB_LIST= USER=${USERS} USE_RC_SUBR= ${PORTNAME} CGO_LDFLAGS+= -lsqlite3 -GO_MODULE= git.sr.ht/~emersion/soju -CONTRIBS= ./contrib/znc-import ./contrib/migrate-db \ - ./contrib/migrate-logs -MAKE_ENV+= ${GO_ENV} GOFLAGS="${GOFLAGS} -tags=libsqlite3,pam" \ - MANDIR=share/man \ - PREFIX=${PREFIX} \ - RUNDIR=/var/run \ - SYSCONFDIR=${ETCDIR}/.. -PLIST_FILES= ${CONTRIBS:T:C/^/bin\/soju-/g} \ - ${DOCSDIR_REL}/getting-started.md \ - "@sample ${ETCDIR_REL}/config.sample" \ - "@dir(${USERS},${GROUPS},0711) /var/db/soju" \ - bin/soju \ - bin/sojuctl \ - bin/sojudb -DOCS_BUILD_DEPENDS= scdoc:textproc/scdoc -DOCS_PLIST_FILES= share/man/man1/soju.1.gz \ - share/man/man1/sojuctl.1.gz +BUILD_DEPENDS= scdoc:textproc/scdoc -pre-patch: - ${RM} -r ${WRKSRC}/vendor/golang.org/x/sys - ${LN} -s ${WRKDIR}/sys-* ${WRKSRC}/vendor/golang.org/x/sys +USE_GITHUB= nodefault +GH_TUPLE= \ + SherClockHolmes:webpush-go:v1.3.0:sherclockholmes_webpush_go/vendor/github.com/SherClockHolmes/webpush-go \ + beorn7:perks:v1.0.1:beorn7_perks/vendor/github.com/beorn7/perks \ + cespare:xxhash:v2.2.0:cespare_xxhash_v2/vendor/github.com/cespare/xxhash/v2 \ + dustin:go-humanize:v1.0.1:dustin_go_humanize/vendor/github.com/dustin/go-humanize \ + emersion:go-sasl:e73c9f7bad43:emersion_go_sasl/vendor/github.com/emersion/go-sasl \ + go-irc:irc:v4.0.0:go_irc_irc/vendor/gopkg.in/irc.v4 \ + golang-jwt:jwt:v3.2.2:golang_jwt_jwt/vendor/github.com/golang-jwt/jwt \ + golang:crypto:v0.21.0:golang_crypto/vendor/golang.org/x/crypto \ + golang:sys:v0.18.0:golang_sys/vendor/golang.org/x/sys \ + golang:term:v0.18.0:golang_term/vendor/golang.org/x/term \ + golang:time:v0.5.0:golang_time/vendor/golang.org/x/time \ + google:uuid:v1.6.0:google_uuid/vendor/github.com/google/uuid \ + hashicorp:golang-lru:v2.0.7:hashicorp_golang_lru_v2/vendor/github.com/hashicorp/golang-lru/v2 \ + lib:pq:v1.10.9:lib_pq/vendor/github.com/lib/pq \ + mattn:go-isatty:v0.0.20:mattn_go_isatty/vendor/github.com/mattn/go-isatty \ + mattn:go-sqlite3:v1.14.22:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \ + msteinert:pam:v2.0.0:msteinert_pam_v2/vendor/github.com/msteinert/pam/v2 \ + ncruces:go-strftime:v0.1.9:ncruces_go_strftime/vendor/github.com/ncruces/go-strftime \ + nhooyr:websocket:v1.8.10:nhooyr_websocket/vendor/nhooyr.io/websocket \ + pires:go-proxyproto:v0.7.0:pires_go_proxyproto/vendor/github.com/pires/go-proxyproto \ + prometheus:client_golang:v1.18.0:prometheus_client_golang/vendor/github.com/prometheus/client_golang \ + prometheus:client_model:v0.6.0:prometheus_client_model/vendor/github.com/prometheus/client_model \ + prometheus:common:v0.47.0:prometheus_common/vendor/github.com/prometheus/common \ + prometheus:procfs:v0.13.0:prometheus_procfs/vendor/github.com/prometheus/procfs \ + protocolbuffers:protobuf-go:v1.33.0:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \ + remyoudompheng:bigfft:24d4a6f8daec:remyoudompheng_bigfft/vendor/github.com/remyoudompheng/bigfft + +GL_TUPLE= \ + cznic:gc:f0dba7c97c2b9a339c26efa9f85898b1d4d62c59:cznic_gc/vendor/modernc.org/gc/v3 \ + cznic:libc:43bff57ba062dd636862c109510b3ddb257691c2:cznic_libc/vendor/modernc.org/libc \ + cznic:mathutil:aabd79189264b253ce2360e80193242239022080:cznic_mathutil/vendor/modernc.org/mathutil \ + cznic:memory:dda74182ee99cca437f9abb436d906192e090c70:cznic_memory/vendor/modernc.org/memory \ + cznic:sqlite:569f7680f838c9da4ddc965633f4cab2c852fda6:cznic_sqlite/vendor/modernc.org/sqlite \ + cznic:strutil:f4c290107e9e43b1bb4a8bc7dcd154eb9b565cd8:cznic_strutil/vendor/modernc.org/strutil \ + cznic:token:24e30cd78ee0f2d5d4516917d9cc1101e3ccc1ab:cznic_token/vendor/modernc.org/token + +# Additional distfiles to fetch from https://git.sr.ht +# TODO waiting on SRHT_TUPLE support in bsd.sites.mk +_SRHT_TUPLE= emersion:soju:${DISTVERSIONPREFIX}${DISTVERSION}:.. \ + emersion:go-scfg:2ae16e782082:vendor/git.sr.ht/~emersion/go-scfg \ + sircmpwn:go-bare:ab86bc2846d9:vendor/git.sr.ht/~sircmpwn/go-bare \ + emersion:go-sqlite3-fts5:f3a72e8b79b1:vendor/git.sr.ht/~emersion/go-sqlite3-fts5 + +.for account project tag subdir in ${_SRHT_TUPLE:S/:/ /g} +MASTER_SITES+= https://git.sr.ht/~${account}/${project}/archive/${tag}${EXTRACT_SUFX}?dummy=/:${account}_${project:S/-/_/g} +DISTFILES+= ${account}-${project}-${tag}_SRHT0${EXTRACT_SUFX}:${account}_${project:S/-/_/g} +.endfor + +# TODO add these to OPTIONS_DEFINE +GO_BUILD_TAGS= sqlite3 pam + +GO_BUILDFLAGS+= -ldflags="-X 'git.sr.ht/~emersion/soju/config.DefaultPath=${ETCDIR}/config' -X 'git.sr.ht/~emersion/soju/config.DefaultUnixAdminPath=/var/run'" \ + -tags="${GO_BUILD_TAGS:ts,}" + +.include + +post-extract: +.for account project tag subdir in ${_SRHT_TUPLE:S/:/ /g} + @${MKDIR} ${WRKSRC}/${subdir:H} + @${MV} ${WRKDIR}/${project}-${tag} ${WRKSRC}/${subdir} +.endfor post-patch: @${REINPLACE_CMD} -r -e 's,/var/lib/soju,/var/db/soju,g' \ ${WRKSRC}/config.in - @${REINPLACE_CMD} -r -e 's,[$$]\(([^)]+)\),$${\1},g' \ - -e 's,(/cmd/sojuctl)$$,\1 ${CONTRIBS},' \ - -e '/^config_path/s,=.*$$,= ${ETCDIR}/config,' \ - -e '/^RUNDIR/s,=.*$$,= /var/run,' \ - -e '/^commands/s,$$, ${CONTRIBS:T},' \ - -e '/^sojudb/s,^,${CONTRIBS:T} ,' \ - -e '/^\.PHONY/s,$$, ${CONTRIBS:T},' \ - -e '/^sharedstatedir/s,/var/lib,/var/db,' ${WRKSRC}/Makefile -post-patch-DOCS-off: - @${REINPLACE_CMD} -e 's,[$$]{man_pages},,' -e '/man1$$/d' ${WRKSRC}/Makefile +post-build: +.for f in ${SOJU_MAN1} + ${LOCALBASE}/bin/scdoc < ${WRKSRC}/doc/${f}.scd > ${WRKSRC}/${f} +.endfor post-install: - ${MKDIR} ${STAGEDIR}${DOCSDIR} - ${INSTALL_MAN} ${WRKSRC}/doc/getting-started.md ${STAGEDIR}${DOCSDIR} -.for EXE in ${CONTRIBS:T} - ${MV} ${STAGEDIR}${PREFIX}/bin/${EXE} ${STAGEDIR}${PREFIX}/bin/soju-${EXE} -.endfor - ${MV} ${STAGEDIR}${ETCDIR}/config ${STAGEDIR}${ETCDIR}/config.sample - ${FIND} ${STAGEDIR}${PREFIX}/bin -type f -exec ${STRIP_CMD} {} \; + (cd ${WRKSRC} && ${INSTALL_MAN} ${SOJU_MAN1} ${STAGEDIR}${PREFIX}/share/man/man1) + ${MKDIR} ${STAGEDIR}${ETCDIR} + ${INSTALL_DATA} ${WRKSRC}/config.in ${STAGEDIR}${ETCDIR}/config.sample -.include +post-install-DOCS-on: + ${MKDIR} ${STAGEDIR}${DOCSDIR} +.for f in ${PORTDOCS} + ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR} +.endfor + +.include diff --git a/irc/soju/distinfo b/irc/soju/distinfo --- a/irc/soju/distinfo +++ b/irc/soju/distinfo @@ -1,7 +1,61 @@ -TIMESTAMP = 1716410424 -SHA256 (go/irc_soju/soju-v0.8.0/v0.8.0.mod) = 7a59d4f81d35ba67366ca41e6222104f35264ccddcd3ec0ba650369d33825ee7 -SIZE (go/irc_soju/soju-v0.8.0/v0.8.0.mod) = 1720 -SHA256 (go/irc_soju/soju-v0.8.0/v0.8.0.zip) = 93e5173361dcd927726cb8336ad6ddcc632e73b1bc1d0ee0fe0f21658269aabc -SIZE (go/irc_soju/soju-v0.8.0/v0.8.0.zip) = 186524 -SHA256 (go/irc_soju/soju-v0.8.0/golang-sys-v0.18.0_GH0.tar.gz) = cee1944ab655ddf7eab6301e15cb6d01fdd6cd0a0f0b5896050ee60b124e084c -SIZE (go/irc_soju/soju-v0.8.0/golang-sys-v0.18.0_GH0.tar.gz) = 1448211 +TIMESTAMP = 1716420226 +SHA256 (emersion-soju-v0.8.0_SRHT0.tar.gz) = 000ade5ffcf47d5cc92d6e05d2ccb9109b54c745f1558a8859ec60779dec969d +SIZE (emersion-soju-v0.8.0_SRHT0.tar.gz) = 154843 +SHA256 (emersion-go-scfg-2ae16e782082_SRHT0.tar.gz) = 51164ede5496f16a640a92b75b9cf9ab011f8691953a6f13e585bcf7f821fd4d +SIZE (emersion-go-scfg-2ae16e782082_SRHT0.tar.gz) = 9158 +SHA256 (sircmpwn-go-bare-ab86bc2846d9_SRHT0.tar.gz) = 97243a3ef98a3038a04ca8fb61af72d8323057312a67a8a3336772c11871f9a9 +SIZE (sircmpwn-go-bare-ab86bc2846d9_SRHT0.tar.gz) = 24974 +SHA256 (emersion-go-sqlite3-fts5-f3a72e8b79b1_SRHT0.tar.gz) = 3f0fee0f602cc399ff89928debe73c52ad47affd889f4764bd6e6f067787bc7f +SIZE (emersion-go-sqlite3-fts5-f3a72e8b79b1_SRHT0.tar.gz) = 370563 +SHA256 (SherClockHolmes-webpush-go-v1.3.0_GH0.tar.gz) = ddadd1731eefef7387dc941b22585225bfd87ee7256e449582667e8dfbc21ac3 +SIZE (SherClockHolmes-webpush-go-v1.3.0_GH0.tar.gz) = 9584 +SHA256 (beorn7-perks-v1.0.1_GH0.tar.gz) = 98db84bb0224a26094e6adba91b7ee7a1a7ace28cb648d818f8e779e6a19f825 +SIZE (beorn7-perks-v1.0.1_GH0.tar.gz) = 10867 +SHA256 (cespare-xxhash-v2.2.0_GH0.tar.gz) = b8c684b9e5e136510913727e6a845b28f8176e55db827b11f17769fba970fe13 +SIZE (cespare-xxhash-v2.2.0_GH0.tar.gz) = 12334 +SHA256 (dustin-go-humanize-v1.0.1_GH0.tar.gz) = ac3a0d8d0eef07c75d12eddce775a8e8306dfb9783a45312597c34ff643793d8 +SIZE (dustin-go-humanize-v1.0.1_GH0.tar.gz) = 17692 +SHA256 (emersion-go-sasl-e73c9f7bad43_GH0.tar.gz) = 93381ea17213dac9527a856d0119992dbc59fd5fb845716732a6ba300ad54fd1 +SIZE (emersion-go-sasl-e73c9f7bad43_GH0.tar.gz) = 7362 +SHA256 (go-irc-irc-v4.0.0_GH0.tar.gz) = 4bdb1976c6ef47eeeb63d3762ee9412dc27b4bce46573b37a2125b57a6f0a837 +SIZE (go-irc-irc-v4.0.0_GH0.tar.gz) = 52004 +SHA256 (golang-jwt-jwt-v3.2.2_GH0.tar.gz) = 4cd18a4bb5d949244f137fed0884f93695ff268cb9efaba71ddcf4c50b17efe0 +SIZE (golang-jwt-jwt-v3.2.2_GH0.tar.gz) = 39887 +SHA256 (golang-crypto-v0.21.0_GH0.tar.gz) = 4c65ea22c4b0bc7380b4213a294698c517fe3378e0edd30c4d2b6cf7f12fc8bd +SIZE (golang-crypto-v0.21.0_GH0.tar.gz) = 1810887 +SHA256 (golang-sys-v0.18.0_GH0.tar.gz) = cee1944ab655ddf7eab6301e15cb6d01fdd6cd0a0f0b5896050ee60b124e084c +SIZE (golang-sys-v0.18.0_GH0.tar.gz) = 1448211 +SHA256 (golang-term-v0.18.0_GH0.tar.gz) = d95bb8c95f321f8f1b33bd45c168c17c2e09e932b2e96c15ad5a30b87317eb84 +SIZE (golang-term-v0.18.0_GH0.tar.gz) = 14747 +SHA256 (golang-time-v0.5.0_GH0.tar.gz) = bb876812abbce995ed8c8523b55c5c5518e594f0570cf372a5d1213a5423d95f +SIZE (golang-time-v0.5.0_GH0.tar.gz) = 12219 +SHA256 (google-uuid-v1.6.0_GH0.tar.gz) = ee63376b5675376c60e055ed66e5f3651ccc703bd580c022b8ad00cea309252d +SIZE (google-uuid-v1.6.0_GH0.tar.gz) = 20896 +SHA256 (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 312697d0bf6e6bb44e66a94b2a8a07955edf89af10b09e69b5a9101d30ad5149 +SIZE (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 23860 +SHA256 (lib-pq-v1.10.9_GH0.tar.gz) = b150b286d59b5f0bdde499112e2f01881773ff5bfdff023802e9e01b7314a06f +SIZE (lib-pq-v1.10.9_GH0.tar.gz) = 114490 +SHA256 (mattn-go-isatty-v0.0.20_GH0.tar.gz) = 18fc42a278e60fb7a1dffa72f20539ae88d0e292db55b513ef514b7d369883a6 +SIZE (mattn-go-isatty-v0.0.20_GH0.tar.gz) = 4713 +SHA256 (mattn-go-sqlite3-v1.14.22_GH0.tar.gz) = 5b1d74ec4359b1ae0fe373fab37ae8a661ed128cf2f89b27875ecbb18bbe1078 +SIZE (mattn-go-sqlite3-v1.14.22_GH0.tar.gz) = 2602367 +SHA256 (msteinert-pam-v2.0.0_GH0.tar.gz) = 7687e9bfbd0d4caf5e7006008cadfc8f53f43f489f30db3f566897c0e168d937 +SIZE (msteinert-pam-v2.0.0_GH0.tar.gz) = 13742 +SHA256 (ncruces-go-strftime-v0.1.9_GH0.tar.gz) = 67e1785acddfe20586da40628b74773b467e052dd4e133df0acefd1d6f259bd3 +SIZE (ncruces-go-strftime-v0.1.9_GH0.tar.gz) = 11738 +SHA256 (nhooyr-websocket-v1.8.10_GH0.tar.gz) = 0d91430f743963fbb39bea08592b47b2a8fed7c93b5338b7b30c809e111c8c4f +SIZE (nhooyr-websocket-v1.8.10_GH0.tar.gz) = 58189 +SHA256 (pires-go-proxyproto-v0.7.0_GH0.tar.gz) = e56a59ecbdfe5ca2f76df4c10efd6c19d0b9984ddafd8416854f4412ae855a2f +SIZE (pires-go-proxyproto-v0.7.0_GH0.tar.gz) = 39678 +SHA256 (prometheus-client_golang-v1.18.0_GH0.tar.gz) = 7de5d163cb7f18e1a3a0dd40d35e8de7bc2ef85f4a0bc22572bcbcfaa86ff709 +SIZE (prometheus-client_golang-v1.18.0_GH0.tar.gz) = 1081423 +SHA256 (prometheus-client_model-v0.6.0_GH0.tar.gz) = 6f8464471e34749753e5d767b22939b98a73b2149bc551c0f017d861f8a0adeb +SIZE (prometheus-client_model-v0.6.0_GH0.tar.gz) = 17375 +SHA256 (prometheus-common-v0.47.0_GH0.tar.gz) = 63e9523e1f1743e706baa810f8bd6ea4609ce225cca35b6177249f168227d71e +SIZE (prometheus-common-v0.47.0_GH0.tar.gz) = 140734 +SHA256 (prometheus-procfs-v0.13.0_GH0.tar.gz) = 49ab8aaae39fa6df7630512eda69db6ee7f58ffd4b1a027b05d06021e1c69070 +SIZE (prometheus-procfs-v0.13.0_GH0.tar.gz) = 242065 +SHA256 (protocolbuffers-protobuf-go-v1.33.0_GH0.tar.gz) = 21661d7634e3f783b015b93ceafc0261f2f02a270799bac871602c3a2172cfbe +SIZE (protocolbuffers-protobuf-go-v1.33.0_GH0.tar.gz) = 1482410 +SHA256 (remyoudompheng-bigfft-24d4a6f8daec_GH0.tar.gz) = 449a58b41c7e13d62cabaee8d9ee78a108a3de60cba27f5c194bd5eba489bab6 +SIZE (remyoudompheng-bigfft-24d4a6f8daec_GH0.tar.gz) = 14841 diff --git a/irc/soju/files/soju.in b/irc/soju/files/soju.in --- a/irc/soju/files/soju.in +++ b/irc/soju/files/soju.in @@ -20,7 +20,7 @@ desc="Soju IRC bouncer" : ${soju_enable:=NO} -: ${soju_config:=%%PREFIX%%/etc/soju/config} +: ${soju_config:=%%ETCDIR%%/config} command=/usr/sbin/daemon procname="%%PREFIX%%/bin/soju" diff --git a/irc/soju/pkg-plist b/irc/soju/pkg-plist new file mode 100644 --- /dev/null +++ b/irc/soju/pkg-plist @@ -0,0 +1,22 @@ +bin/soju +bin/soju-migrate-db +bin/soju-migrate-logs +bin/soju-znc-import +bin/sojuctl +bin/sojudb +etc/rc.d/soju +@sample %%ETCDIR%%/config.sample +%%PORTDOCS%%%%DOCSDIR%%/README.md +%%PORTDOCS%%%%DOCSDIR%%/account-required.md +%%PORTDOCS%%%%DOCSDIR%%/architecture.md +%%PORTDOCS%%%%DOCSDIR%%/bouncer-networks.md +%%PORTDOCS%%%%DOCSDIR%%/filehost.md +%%PORTDOCS%%%%DOCSDIR%%/getting-started.md +%%PORTDOCS%%%%DOCSDIR%%/no-implicit-names.md +%%PORTDOCS%%%%DOCSDIR%%/packaging.md +%%PORTDOCS%%%%DOCSDIR%%/per-user-ip.md +%%PORTDOCS%%%%DOCSDIR%%/read.md +%%PORTDOCS%%%%DOCSDIR%%/search.md +%%PORTDOCS%%%%DOCSDIR%%/webpush.md +share/man/man1/soju.1.gz +share/man/man1/sojuctl.1.gz