view Makefile @ 723:a97ec3f07bdb

farray.sh: REFACTOR: More flexible metadata retrieval. Using an array or alist variable name or token value (with prefix) is now supported in every function. This is possible because the value prefixes contain questin marks (?) which are not allowed in shell variable names. This again is a major precondition for recursive data structures (arrays/alists in arrays/alists).
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 05 Oct 2024 21:55:55 +0200
parents 019e69bf6f21
children 56ab5c012d5f
line wrap: on
line source

# Created by: Franz Glasner <freebsd-dev@dom66.de>

PORTNAME=	local-bsdtools
PORTVERSION=	0.28.2
CATEGORIES=	sysutils
MASTER_SITES=	# none
DISTFILES=	# none

MAINTAINER=	freebsd-dev@dom66.de
COMMENT=	Collection of system management tools for FreeBSD

LICENSE=	BSD3CLAUSE

EXTRACT_DEPENDS=	hg:devel/mercurial
RUN_DEPENDS=		pkg:ports-mgmt/pkg
alldeps_RUN_DEPENDS=	jq>=1.5:textproc/jq \
			tmux>=3:sysutils/tmux

FLAVORS=	default alldeps
FLAVOR?=	${FLAVORS:[1]}

default_PKGNAMESUFFIX=
default_CONFLICTS_INSTALL=	local-bsdtools-alldeps

alldeps_PKGNAMESUFFIX=	-alldeps
.if ${FLAVOR} == alldeps
COMMENT=	Collection of system management tools for FreeBSD (all runtime dependencies)
.endif
alldeps_DESCR=		pkg-descr.alldeps
alldeps_CONFLICTS_INSTALL=	local-bsdtools

#
# We want noarch **and** noabi because we do not have compiled
# binaries and are independent of the major OS version.
#
#NO_ARCH=	yes
PKG_ENV+=	ABI="freebsd:*:*"

WRKSRC=		${WRKDIR}/local-bsdtools

OPTIONS_DEFINE=	DOCS
OPTIONS_SUB=	yes

DOCS_BUILD_DEPENDS=	sphinx-build:textproc/py-sphinx
DOCS_VARS_OFF=		NO_BUILD=yes

USE_RC_SUBR=	fbhyve fwireguard

SUB_LIST=	SIMPLEVERSIONTAG="${SIMPLEVERSIONTAG}" \
		FWIREGUARD_ETCDIR="${FWIREGUARD_ETCDIR}" \
		FBHYVE_ETCDIR="${FBHYVE_ETCDIR}" \
		FBHYVE_RUNDIR="${FBHYVE_RUNDIR}"

PLIST_SUB=	FWIREGUARD_ETCDIR="${FWIREGUARD_ETCDIR}" \
		FBHYVE_ETCDIR="${FBHYVE_ETCDIR}" \
	=	FBHYVE_RUNDIR="${FBHYVE_RUNDIR}"

.include <bsd.port.options.mk>

SRC=		${.CURDIR}

MANPAGES5=	${:!${LS} -1 "${.CURDIR}/docs/man/man5"!}
MANPAGES8=	${:!${LS} -1 "${.CURDIR}/docs/man/man8"!}

HGCANONICALPATH?=	default
HGREVISION=	${:!hg id -R "${SRC}" -i!}
HGDATE=		${:!hg log -R "${SRC}" -r "${HGREVISION:S/+//}" --template '{date|isodatesec}'!}
HGAUTHOR=	${:!hg log -R "${SRC}" -r "${HGREVISION:S/+//}" --template '{author|person}' | ${TR} ' ' '+'!}
HGPATH=		${:!hg --config ui.paginate=never path -R "${SRC}" ${HGCANONICALPATH} || echo "file://\$$\(hg root)"!}
HGPHASE=	${:!hg phase!:[2]}
SIMPLEVERSIONSTR=	v${PKGVERSION} (rv:${HGREVISION})
SIMPLEVERSIONTAG=	${PKGORIGIN} v${PKGVERSION} (rv:${HGREVISION})

FWIREGUARD_ETCDIR?=	"${PREFIX}/etc/fwireguard"

FBHYVE_ETCDIR?=	"${PREFIX}/etc/fbhyve"
FBHYVE_RUNDIR?=	/var/run/fbhyve

do-extract:
	${MKDIR} ${WRKSRC}/bin
	${MKDIR} ${WRKSRC}/sbin
	${CP} Makefile ${WRKSRC}/Makefile
.for _rp in sbin/check-ports sbin/fjail sbin/ftjail sbin/fzfs sbin/fpkg sbin/bsmtp2dma
	${CP} -v ${SRC}/${_rp} ${WRKSRC}/${_rp}
	${SED} -i "" -e "s|@@VERSION@@|${PORTVERSION}|" -e "s|@@ETCDIR@@|${ETCDIR}|" -e "s|@@DATADIR@@|${DATADIR}|" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" -e "s|@@SIMPLEVERSIONSTR@@|${SIMPLEVERSIONSTR}|" ${WRKSRC}/${_rp}
.endfor
	${MKDIR} ${WRKSRC}/etc/periodic/daily
.for _ef in etc/package-mapping.conf.sample etc/pkgtools.conf.sample etc/bsmtp2dma.conf.sample etc/periodic/daily/800.local-ipv6-refresh etc/periodic/daily/750.local-trim-zfs etc/periodic/daily/720.local-triggered-action
	${CP} -v ${SRC}/${_ef} ${WRKSRC}/${_ef}
	${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/${_ef}
.endfor
	${MKDIR} ${WRKSRC}/share/${PORTNAME}
.for _df in share/local-bsdtools/farray.sh share/local-bsdtools/common.subr
	${CP} -v ${SRC}/${_df} ${WRKSRC}/${_df}
	${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/${_df}
.endfor
	${MKDIR} ${WRKSRC}/share/examples/${PORTNAME}
.for _sf in share/examples/local-bsdtools/freebsd-update-ftjail-template.sh share/examples/local-bsdtools/freebsd-update-ftjail.sh
	${CP} -v ${SRC}/${_sf} ${WRKSRC}/${_sf}
.endfor

post-extract-DOCS-on:
	${MKDIR} ${WRKSRC}/docs
	(${TAR} -C ${.CURDIR}/docs -c --exclude ./_build -f - . | ${TAR} -C ${WRKSRC}/docs -x -f - )
.for _mp in man/man8/local-bsdtools.rst
	${SED} -i "" -e "s|@@SIMPLEVERSIONTAG@@|${SIMPLEVERSIONTAG}|" ${WRKSRC}/docs/${_mp}
	${SED} -i "" -e "s|\\\$$HGid\\\$$|\$$HGid: ${HGPATH}/docs/${_mp} ${HGREVISION} ${HGDATE} ${HGAUTHOR} ${HGPHASE} \$$|" ${WRKSRC}/docs/${_mp}
.endfor

.if ${PORT_OPTIONS:MDOCS}
do-build:
	(cd ${WRKSRC}/docs && sphinx-build -M man . _build)
	(cd ${WRKSRC}/docs && sphinx-build -M html . _build)
.endif

do-install:
.for _rp in sbin/check-ports sbin/fjail sbin/ftjail sbin/fzfs sbin/fpkg sbin/bsmtp2dma
	${INSTALL_SCRIPT} ${WRKSRC}/${_rp} ${STAGEDIR}${PREFIX}/${_rp}
.endfor
	${MKDIR} ${STAGEDIR}${ETCDIR}
.for _ef in package-mapping.conf.sample pkgtools.conf.sample bsmtp2dma.conf.sample
	${INSTALL_DATA} ${WRKSRC}/etc/${_ef} ${STAGEDIR}${ETCDIR}/${_ef}
.endfor
	${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/daily
.for _ps in 800.local-ipv6-refresh 750.local-trim-zfs 720.local-triggered-action
	${INSTALL_SCRIPT} ${WRKSRC}/etc/periodic/daily/${_ps} ${STAGEDIR}${PREFIX}/etc/periodic/daily
.endfor
	${MKDIR} ${STAGEDIR}${DATADIR}
.for _df in farray.sh common.subr
	${INSTALL_DATA} ${WRKSRC}/share/${PORTNAME}/${_df} ${STAGEDIR}${DATADIR}
.endfor
	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
.for _exf in freebsd-update-ftjail-template.sh freebsd-update-ftjail.sh
	${INSTALL_DATA} ${WRKSRC}/share/examples/${PORTNAME}/${_exf} ${STAGEDIR}${EXAMPLESDIR}
.endfor
	${MKDIR} ${STAGEDIR}${FWIREGUARD_ETCDIR}
	${MKDIR} ${STAGEDIR}${FBHYVE_ETCDIR}
	${MKDIR} ${STAGEDIR}${FBHYVE_RUNDIR}

post-install-DOCS-on:
.for _mp in ${MANPAGES5:R}
	${INSTALL_MAN} ${WRKSRC}/docs/_build/man/${_mp}.5 ${STAGEDIR}${PREFIX}/share/man/man5
.endfor
.for _mp in ${MANPAGES8:R}
	${INSTALL_MAN} ${WRKSRC}/docs/_build/man/${_mp}.8 ${STAGEDIR}${PREFIX}/share/man/man8
.endfor

.include <bsd.port.mk>