git: 274cd4df4dcc - main - Framework: Introduce bsd.sponsor.mk
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 24 Jun 2024 18:38:37 UTC
The branch main has been updated by arrowd: URL: https://cgit.FreeBSD.org/ports/commit/?id=274cd4df4dcce0a9aa78da47bb6e35ab3dbcbf8c commit 274cd4df4dcce0a9aa78da47bb6e35ab3dbcbf8c Author: Gleb Popov <arrowd@FreeBSD.org> AuthorDate: 2024-03-17 09:04:33 +0000 Commit: Gleb Popov <arrowd@FreeBSD.org> CommitDate: 2024-06-24 18:37:42 +0000 Framework: Introduce bsd.sponsor.mk Differential Revision: https://reviews.freebsd.org/D44487 --- Mk/bsd.port.mk | 2 + Mk/bsd.sponsor.db.mk | 9 +++++ Mk/bsd.sponsor.mk | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+) diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 1604a1c7fd3d..c9b657230c25 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -1994,6 +1994,8 @@ ERROR+= "Unknown USES=${f:C/\:.*//}" . endif . endif +.include "${PORTSDIR}/Mk/bsd.sponsor.mk" + . if defined(USE_LOCALE) WRK_ENV+= LANG=${USE_LOCALE} LC_ALL=${USE_LOCALE} . endif diff --git a/Mk/bsd.sponsor.db.mk b/Mk/bsd.sponsor.db.mk new file mode 100644 index 000000000000..bf8ac051db2a --- /dev/null +++ b/Mk/bsd.sponsor.db.mk @@ -0,0 +1,9 @@ +Sponsor_db_Include_MAINTAINER= portmgr@FreeBSD.org + +# +# bsd.sponsor.db.mk - Sponsorship info database for FreeBSD Ports commiters +# +# Please keep descriptions sorted alphabetically by variable name. + +arrowd_at_freebsd_org_SPONSORSHIP_PLATFORMS= CARDANO +arrowd_at_freebsd_org_CARDANO_SPONSOR_HANDLE= addr1qy95v6rlgjchrqc7cae9g7vtrmsevdaty8hnl9p5kv0xtajpts7278jw0y9nh9n26y0dfa97j0zkjxxnut8ahg3hs02sth533h diff --git a/Mk/bsd.sponsor.mk b/Mk/bsd.sponsor.mk new file mode 100644 index 000000000000..9fa916ecb894 --- /dev/null +++ b/Mk/bsd.sponsor.mk @@ -0,0 +1,112 @@ +# These variables are used in Ports framework to define the ways to support +# port maintainers. +# +# SPONSORSHIP_PLATFORMS - List of ways to endorse the port's maintainer +# Currently supported values are: +# BOOSTY +# CARDANO +# GITHUB +# OPENCOLLECTIVE +# PATREON +# +# Each platform may have ":upstream" suffix to allow +# sponsoring project's upstream instead of a +# downstream maintainer. +# +# To define an additional platform the following +# vars should be defined: +# ${plat}_SPONSOR_HANDLE - Account name or some other handle for the +# given platform +# ${plat}_UPSTREAM_SPONSOR_HANDLE - The same as ${plat}_SPONSOR_HANDLE for +# the ":upstream" case. +# ${plat}_SPONSOR_URL - URL leading to the site that allows to make +# to make a donation +# +# Variables listed above may be either put into a port's Makefile directly or +# set automatically based on the MAINTAINER knob value and the data from +# bsd.sponsor.db.mk +# +# An auxiliary "make sponsor" target points the user to appropriate web page. +# An auxiliary "make sponsor-describe" target prints a machine-readable description +# of the sponsorship data. + +.if !defined(SPONSORMKINCLUDED) +SPONSORMKINCLUDED= bsd.sponsor.mk + +BOOSTY_SPONSOR_URL= https://boosty.to/%%HANDLE%% +CARDANO_SPONSOR_URL= https://cexplorer.io/address/%%HANDLE%% +GITHUB_SPONSOR_URL= https://github.com/sponsors/%%HANDLE%% +OPENCOLLECTIVE_SPONSOR_URL= https://opencollective.com/%%HANDLE%% +PATREON_SPONSOR_URL= https://www.patreon.com/%%HANDLE%% + +GITHUB_SPONSOR_HANDLE?= ${GH_PROJECT} +GITHUB_UPSTREAM_SPONSOR_HANDLE?= ${GH_PROJECT} + +.include "${PORTSDIR}/Mk/bsd.sponsor.db.mk" +_MAINTAINER_KEY= ${MAINTAINER:S/@FreeBSD.org/_at_freebsd_org/:S/@freebsd.org/_at_freebsd_org/} +. if defined(${_MAINTAINER_KEY}_SPONSORSHIP_PLATFORMS) +SPONSORSHIP_PLATFORMS+= ${${_MAINTAINER_KEY}_SPONSORSHIP_PLATFORMS} +. for plat in ${SPONSORSHIP_PLATFORMS} +. if defined(${_MAINTAINER_KEY}_${plat}_SPONSOR_HANDLE) +${plat}_SPONSOR_HANDLE= ${${_MAINTAINER_KEY}_${plat}_SPONSOR_HANDLE} +. endif +. endfor +. endif + +. for plat in ${SPONSORSHIP_PLATFORMS} +. for plat_w_u plat_wo_u in ${plat:S/:upstream/_UPSTREAM/} ${plat:S/:upstream//} +. if !defined(${plat_w_u}_SPONSOR_HANDLE) || empty(${plat_w_u}_SPONSOR_HANDLE) +.error Missing ${plat_w_u}_SPONSOR_HANDLE value +. endif +. if !defined(${plat_wo_u}_SPONSOR_URL) || empty(${plat_wo_u}_SPONSOR_URL) +.error Missing ${plat_wo_u}_SPONSOR_URL value +. endif +. endfor +. endfor + +SPONSOR_DIALOG= ${DIALOG} --backtitle "Sponsorship options" \ + --menu "Support options for ${PORTNAME}" 0 0 0 + +. for plat in ${SPONSORSHIP_PLATFORMS} +. for plat_w_u plat_wo_u in ${plat:S/:upstream/_UPSTREAM/} ${plat:S/:upstream//} +SPONSOR_DIALOG_ARGS+= ${plat_w_u} "${${plat_wo_u}_SPONSOR_URL:S/%%HANDLE%%/${${plat_w_u}_SPONSOR_HANDLE}/}" +PKG_NOTE_sponsor+= ${plat_w_u:tl}=${${plat_wo_u}_SPONSOR_URL:S/%%HANDLE%%/${${plat_w_u}_SPONSOR_HANDLE}/} +. endfor +. endfor + +. if exists(${LOCALBASE}/bin/xdg-open) +SPONSOR_CMD= ${LOCALBASE}/bin/xdg-open %%URL%% +. else +SPONSOR_CMD= ${ECHO_CMD} To sponsor the ${PORTNAME} project visit %%URL%% +. endif + +. if !empty(SPONSORSHIP_PLATFORMS) +PKG_NOTES+= sponsor + +sponsor: + @(_selected_platform_w_u=$$( { ${SPONSOR_DIALOG} ${SPONSOR_DIALOG_ARGS} 2>&1 >&3; } 3>&2 ) 2>&1 ;\ + _selected_platform_wo_u=$$(${ECHO_CMD} $$_selected_platform_w_u | sed 's/_UPSTREAM//') ;\ + _url=$$(${MAKE} -C ${.CURDIR} -v $${_selected_platform_wo_u}_SPONSOR_URL) ;\ + _handle=$$(${MAKE} -C ${.CURDIR} -v $${_selected_platform_w_u}_SPONSOR_HANDLE) ;\ + _url=$$(${ECHO_CMD} $$_url | sed "s|%%HANDLE%%|$$_handle|") ;\ + `${ECHO_CMD} ${SPONSOR_CMD} | sed "s|%%URL%%|$$_url|"` ;\ + ) +. else +sponsor: + @${ECHO_CMD} No sponsorship platforms defined for ${PORTNAME} maintainer + @${FALSE} +. endif + +# The format is +# distribution-name|maintainer|sponsorship_platform|sponsorship_type|sponsorship_url +sponsor-describe: ${SPONSORSHIP_PLATFORMS:tl:S/:upstream/-upstream/:S/^/sponsor-describe-/} + @${DO_NADA} + +. for plat in ${SPONSORSHIP_PLATFORMS} +. for plat_w_u plat_wo_u in ${plat:S/:upstream/_UPSTREAM/} ${plat:S/:upstream//} +sponsor-describe-${plat:tl:S/:upstream/-upstream/}: + @${ECHO_CMD} "${PKGNAME}|${MAINTAINER}|${plat_wo_u}|${"${plat_w_u:M*_UPSTREAM}":?Upstream:Maintainer}|${${plat_wo_u}_SPONSOR_URL:S/%%HANDLE%%/${${plat_w_u}_SPONSOR_HANDLE}/}" +. endfor +. endfor + +.endif