Currently, the font module defines a default install target based on file extension. A port sets MODFONT_TYPES to "ttf otf", and the module installs ${WRKSRC}/*.ttf and ${WRKSRC}/*.otf to MODFONT_DIR.
This misses two fairly common cases: - the port needs to install font files from multiple subdirectories - the port wants to install only a subset of font files present The diff below replaces MODFONT_TYPES with a mechanism similar to MODFONT_DOCFILES: the port sets MODFONT_FONTFILES to a list of paths (which may contain wildcards) relative to WRKSRC to install to the font directory. This means 12 of the 14 custom install targets in ports using the font module can be eliminated. (The other two were not trivial conversions.) And many of the 50+ other font ports that don't use the font module yet can now start using it, although I haven't converted any in this diff. The diff also renames MODFONT_DIR (which is only used in two ports) to MODFONT_FONTDIR for consistency with MODFONT_DOCDIR. I plan to introduce more MODFONT_*DIR types in the future. All of fonts/ still fetches and packages, no bumps necessary. ok? Index: infrastructure/mk/font.port.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/font.port.mk,v retrieving revision 1.8 diff -u -p -r1.8 font.port.mk --- infrastructure/mk/font.port.mk 9 Jul 2024 13:03:39 -0000 1.8 +++ infrastructure/mk/font.port.mk 11 Jul 2024 09:19:15 -0000 @@ -11,20 +11,20 @@ EXTRACT_SUFX ?= .zip PKGNAME ?= ${MODFONT_FAMILY}-${MODFONT_VERSION} . endif -MODFONT_DIR ?= ${PREFIX}/share/fonts/${MODFONT_FAMILY} +MODFONT_FONTDIR ?= ${PREFIX}/share/fonts/${MODFONT_FAMILY} MODFONT_DOCDIR ?= ${PREFIX}/share/doc/${MODFONT_FAMILY} -MODFONT_TYPES ?= +MODFONT_FONTFILES ?= MODFONT_DOCFILES ?= -MODFONT_do-install = ${INSTALL_DATA_DIR} ${MODFONT_DIR}; +MODFONT_do-install = ${INSTALL_DATA_DIR} ${MODFONT_FONTDIR}; -# if MODFONT_TYPES is not set, install .otf files if present (and break, +# if MODFONT_FONTFILES is not set, install .otf files if present (and break, # to skip ttf) otherwise fallback to ttf. -.if empty(MODFONT_TYPES) -MODFONT_do-install += for t in otf ttf; do ${INSTALL_DATA} ${WRKSRC}/*.$$t ${MODFONT_DIR} && break; done +.if empty(MODFONT_FONTFILES) +MODFONT_do-install += for t in otf ttf; do ${INSTALL_DATA} ${WRKSRC}/*.$$t ${MODFONT_FONTDIR} && break; done .else -MODFONT_do-install += for t in ${MODFONT_TYPES}; do ${INSTALL_DATA} ${WRKSRC}/*.$$t ${MODFONT_DIR}; done +MODFONT_do-install += for t in ${MODFONT_FONTFILES}; do ${INSTALL_DATA} ${WRKSRC}/$$t ${MODFONT_FONTDIR}; done .endif .if !empty(MODFONT_DOCFILES) Index: fonts/alkalami/Makefile =================================================================== RCS file: /cvs/ports/fonts/alkalami/Makefile,v retrieving revision 1.11 diff -u -p -r1.11 Makefile --- fonts/alkalami/Makefile 9 Jul 2024 13:03:39 -0000 1.11 +++ fonts/alkalami/Makefile 11 Jul 2024 09:19:15 -0000 @@ -19,7 +19,7 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -MODFONT_TYPES = ttf +MODFONT_FONTFILES = *.ttf MODFONT_DOCFILES = FONTLOG.txt README.txt .include <bsd.port.mk> Index: fonts/atkinson-hyperlegible/Makefile =================================================================== RCS file: /cvs/ports/fonts/atkinson-hyperlegible/Makefile,v retrieving revision 1.6 diff -u -p -r1.6 Makefile --- fonts/atkinson-hyperlegible/Makefile 9 Jul 2024 13:03:40 -0000 1.6 +++ fonts/atkinson-hyperlegible/Makefile 11 Jul 2024 09:19:15 -0000 @@ -13,7 +13,7 @@ HOMEPAGE = https://brailleinstitute.org/ PERMIT_PACKAGE = Yes MODULES = font -MODFONT_TYPES = otf +MODFONT_FONTFILES = *.otf SITES = https://brailleinstitute.org/wp-content/uploads/atkinson-hyperlegible-font/ SITES.doc = https://brailleinstitute.org/wp-content/uploads/2020/11/ Index: fonts/blockzone/Makefile =================================================================== RCS file: /cvs/ports/fonts/blockzone/Makefile,v retrieving revision 1.18 diff -u -p -r1.18 Makefile --- fonts/blockzone/Makefile 18 Apr 2024 09:20:38 -0000 1.18 +++ fonts/blockzone/Makefile 11 Jul 2024 09:19:15 -0000 @@ -20,10 +20,6 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -DOCDIR = ${PREFIX}/share/doc/blockzone - -post-install: - ${INSTALL_DATA_DIR} ${DOCDIR} - ${INSTALL_DATA} ${WRKSRC}/LICENSE ${DOCDIR} +MODFONT_DOCFILES = LICENSE .include <bsd.port.mk> Index: fonts/cascadia-code/Makefile =================================================================== RCS file: /cvs/ports/fonts/cascadia-code/Makefile,v retrieving revision 1.12 diff -u -p -r1.12 Makefile --- fonts/cascadia-code/Makefile 21 Sep 2023 15:28:02 -0000 1.12 +++ fonts/cascadia-code/Makefile 11 Jul 2024 09:19:15 -0000 @@ -5,6 +5,8 @@ PKGNAME = cascadia-code-${V} EXTRACT_SUFX = .zip CATEGORIES = fonts x11 +MODFONT_FAMILY = cascadia-code + # SIL OFL 1.1 PERMIT_PACKAGE = Yes @@ -16,9 +18,7 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -do-install: - ${INSTALL_DATA_DIR} ${PREFIX}/share/fonts/cascadia - ${INSTALL_DATA} ${WRKDIR}/ttf/*.ttf ${PREFIX}/share/fonts/cascadia - ${INSTALL_DATA} ${WRKDIR}/otf/static/*.otf ${PREFIX}/share/fonts/cascadia +MODFONT_FONTDIR = ${PREFIX}/share/fonts/cascadia +MODFONT_FONTFILES = ttf/*.ttf otf/static/*.otf .include <bsd.port.mk> Index: fonts/ecoliercourt-fonts/Makefile =================================================================== RCS file: /cvs/ports/fonts/ecoliercourt-fonts/Makefile,v retrieving revision 1.11 diff -u -p -r1.11 Makefile --- fonts/ecoliercourt-fonts/Makefile 15 Apr 2024 16:08:16 -0000 1.11 +++ fonts/ecoliercourt-fonts/Makefile 11 Jul 2024 09:19:15 -0000 @@ -21,7 +21,7 @@ EXTRACT_ONLY= NO_BUILD= Yes NO_TEST= Yes -pre-install: - cp ${FULLDISTDIR}/*.ttf ${WRKSRC} +WRKDIST = ${FULLDISTDIR} +MODFONT_FONTFILES = *.ttf .include <bsd.port.mk> Index: fonts/font-awesome/Makefile =================================================================== RCS file: /cvs/ports/fonts/font-awesome/Makefile,v retrieving revision 1.41 diff -u -p -r1.41 Makefile --- fonts/font-awesome/Makefile 30 Jun 2024 08:13:54 -0000 1.41 +++ fonts/font-awesome/Makefile 11 Jul 2024 09:19:15 -0000 @@ -4,6 +4,8 @@ V = 6.5.2 PKGNAME = font-awesome-${V} DISTNAME = fontawesome-free-${V}-desktop +MODFONT_FAMILY = font-awesome + CATEGORIES= fonts HOMEPAGE = https://fontawesome.com @@ -17,18 +19,11 @@ EXTRACT_SUFX = .zip PERMIT_PACKAGE= Yes MODULES = font -MODFONT_TYPES = otf NO_BUILD = Yes NO_TEST = Yes -FONTS_DIR= ${PREFIX}/share/fonts/font-awesome -DOCDIR = ${PREFIX}/share/doc/font-awesome - -do-install: - ${INSTALL_DATA_DIR} ${FONTS_DIR} - ${INSTALL_DATA} ${WRKSRC}/otfs/*.otf ${FONTS_DIR} - ${INSTALL_DATA_DIR} ${DOCDIR} - ${INSTALL_DATA} ${WRKDIST}/*.txt ${DOCDIR} +MODFONT_FONTFILES = otfs/*.otf +MODFONT_DOCFILES = *.txt .include <bsd.port.mk> Index: fonts/hermit-font/Makefile =================================================================== RCS file: /cvs/ports/fonts/hermit-font/Makefile,v retrieving revision 1.15 diff -u -p -r1.15 Makefile --- fonts/hermit-font/Makefile 15 Apr 2024 16:08:17 -0000 1.15 +++ fonts/hermit-font/Makefile 11 Jul 2024 09:19:15 -0000 @@ -19,7 +19,7 @@ MODULES= font NO_BUILD= Yes NO_TEST= Yes -MODFONT_TYPES= otf +MODFONT_FONTFILES= *.otf WRKDIST= ${WRKDIR} .include <bsd.port.mk> Index: fonts/ibm-plex/Makefile =================================================================== RCS file: /cvs/ports/fonts/ibm-plex/Makefile,v retrieving revision 1.21 diff -u -p -r1.21 Makefile --- fonts/ibm-plex/Makefile 9 Jul 2024 13:03:40 -0000 1.21 +++ fonts/ibm-plex/Makefile 11 Jul 2024 09:19:15 -0000 @@ -23,17 +23,13 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes +# currently JP fonts only have hinted/unhinted directory, +# this package use hinted font following Noto fonts. +MODFONT_FONTFILES = OpenType/*/*.otf \ + TrueType/*/*.ttf \ + OpenType/IBM-Plex-Sans-JP/hinted/*.otf \ + TrueType/IBM-Plex-Sans-JP/hinted/*.ttf +MODFONT_DOCFILES = OpenType/IBM-Plex-Sans/license.txt FONTDIR = ${PREFIX}/share/fonts/ibm-plex - -do-install: - ${INSTALL_DATA_DIR} ${FONTDIR} - ${INSTALL_DATA} ${WRKDIST}/OpenType/*/*.otf ${FONTDIR} - ${INSTALL_DATA} ${WRKDIST}/TrueType/*/*.ttf ${FONTDIR} - # currently JP fonts only have hinted/unhinted directory, - # this package use hinted font following Noto fonts. - ${INSTALL_DATA} ${WRKDIST}/OpenType/IBM-Plex-Sans-JP/hinted/*.otf ${FONTDIR} - ${INSTALL_DATA} ${WRKDIST}/TrueType/IBM-Plex-Sans-JP/hinted/*.ttf ${FONTDIR} - ${INSTALL_DATA_DIR} ${MODFONT_DOCDIR} - ${INSTALL_DATA} ${WRKDIST}/OpenType/IBM-Plex-Sans/license.txt ${MODFONT_DOCDIR} .include <bsd.port.mk> Index: fonts/inconsolata-font/Makefile =================================================================== RCS file: /cvs/ports/fonts/inconsolata-font/Makefile,v retrieving revision 1.15 diff -u -p -r1.15 Makefile --- fonts/inconsolata-font/Makefile 15 Apr 2024 16:08:17 -0000 1.15 +++ fonts/inconsolata-font/Makefile 11 Jul 2024 09:19:16 -0000 @@ -16,12 +16,12 @@ EXTRACT_ONLY= PERMIT_PACKAGE= Yes MODULES= font -MODFONT_TYPES= otf +MODFONT_FONTFILES= *.otf NO_BUILD= Yes NO_TEST= Yes -pre-install: - cp ${FULLDISTDIR}/${DISTFILES} ${WRKSRC} +WRKDIST = ${FULLDISTDIR} +MODFONT_FONTFILES = ${DISTFILES} .include <bsd.port.mk> Index: fonts/intel-one-mono/Makefile =================================================================== RCS file: /cvs/ports/fonts/intel-one-mono/Makefile,v retrieving revision 1.3 diff -u -p -r1.3 Makefile --- fonts/intel-one-mono/Makefile 15 Apr 2024 14:52:14 -0000 1.3 +++ fonts/intel-one-mono/Makefile 11 Jul 2024 09:19:16 -0000 @@ -1,8 +1,8 @@ COMMENT = expressive monospaced font family CATEGORIES = fonts -V = 1.3.0 -PKGNAME = intel-one-mono-$V +MODFONT_VERSION = 1.3.0 +MODFONT_FAMILY = intel-one-mono # SIL OFL 1.1 PERMIT_PACKAGE = Yes @@ -12,7 +12,7 @@ SITES = https://github.com/intel/intel- DISTFILES = otf.zip \ ttf.zip -DIST_SUBDIR = intel-one-mono-$V +DIST_SUBDIR = intel-one-mono-${MODFONT_VERSION} HOMEPAGE = https://github.com/intel/intel-one-mono @@ -21,11 +21,7 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -FONTDIR = ${PREFIX}/share/fonts/intel-one-mono - -do-install: - ${INSTALL_DATA_DIR} ${FONTDIR} - ${INSTALL_DATA} ${WRKDIST}/otf/*.otf ${FONTDIR} - ${INSTALL_DATA} ${WRKDIST}/ttf/*.ttf ${FONTDIR} +MODFONT_FONTFILES = otf/*.otf \ + ttf/*.ttf .include <bsd.port.mk> Index: fonts/mada/Makefile =================================================================== RCS file: /cvs/ports/fonts/mada/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- fonts/mada/Makefile 21 Sep 2023 15:28:09 -0000 1.4 +++ fonts/mada/Makefile 11 Jul 2024 09:19:16 -0000 @@ -3,7 +3,7 @@ COMMENT = modernist Arabic typeface V = 1.3 DISTNAME = mada-${V} -CATEGORIES = fonts +MODFONT_FAMILY = mada MAINTAINER = George Rosamond <geo...@nycbug.org> @@ -17,13 +17,9 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -FONTDIR = ${PREFIX}/share/fonts/mada -DOCDIR = ${PREFIX}/share/doc/mada WRKDIST = ${WRKDIR}/Mada-${V} -do-install: - ${INSTALL_DATA_DIR} ${FONTDIR} ${DOCDIR} - ${INSTALL_DATA} ${WRKDIST}/*.otf ${FONTDIR} - ${INSTALL_DATA} ${WRKDIST}/README.txt ${DOCDIR} +MODFONT_FONTFILES = *.otf +MODFONT_DOCFILES = README.txt .include <bsd.port.mk> Index: fonts/migmix/Makefile =================================================================== RCS file: /cvs/ports/fonts/migmix/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- fonts/migmix/Makefile 21 Sep 2023 15:28:09 -0000 1.5 +++ fonts/migmix/Makefile 11 Jul 2024 09:19:16 -0000 @@ -2,6 +2,7 @@ COMMENT = mixture of M+ and IPA Gothic f V = 20200307 PKGNAME = migmix-$V +MODFONT_FAMILY = migmix CATEGORIES = fonts @@ -21,11 +22,9 @@ DISTFILES = migmix-1m-$V.zip \ MODULES = font +MODFONT_FONTFILES = */*.ttf + NO_BUILD = Yes NO_TEST = Yes - -do-install: - ${INSTALL_DATA_DIR} ${PREFIX}/share/fonts/migmix - ${INSTALL_DATA} ${WRKDIR}/*/*.ttf ${PREFIX}/share/fonts/migmix .include <bsd.port.mk> Index: fonts/migu/Makefile =================================================================== RCS file: /cvs/ports/fonts/migu/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- fonts/migu/Makefile 21 Sep 2023 15:28:09 -0000 1.5 +++ fonts/migu/Makefile 11 Jul 2024 09:19:16 -0000 @@ -2,6 +2,7 @@ COMMENT = mixture of M+ and IPA Gothic f V = 20200307 PKGNAME = migu-$V +MODFONT_FAMILY = migu CATEGORIES = fonts @@ -24,8 +25,6 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -do-install: - ${INSTALL_DATA_DIR} ${PREFIX}/share/fonts/migu - ${INSTALL_DATA} ${WRKDIR}/*/*.ttf ${PREFIX}/share/fonts/migu +MODFONT_FONTFILES = */*.ttf .include <bsd.port.mk> Index: fonts/nerd-fonts/Makefile.inc =================================================================== RCS file: /cvs/ports/fonts/nerd-fonts/Makefile.inc,v retrieving revision 1.6 diff -u -p -r1.6 Makefile.inc --- fonts/nerd-fonts/Makefile.inc 15 Apr 2024 16:08:17 -0000 1.6 +++ fonts/nerd-fonts/Makefile.inc 11 Jul 2024 09:19:16 -0000 @@ -22,5 +22,5 @@ NO_BUILD = Yes NO_TEST = Yes MODFONT_FAMILY = ${NF_FONT:L} -MODFONT_DIR = ${PREFIX}/share/fonts/${NF_PROJECT}/${NF_FONT:L} +MODFONT_FONTDIR = ${PREFIX}/share/fonts/${NF_PROJECT}/${NF_FONT:L} DOCDIR = ${PREFIX}/share/doc/${NF_PROJECT}/${NF_FONT:L} Index: fonts/nerd-fonts/codenewroman/Makefile =================================================================== RCS file: /cvs/ports/fonts/nerd-fonts/codenewroman/Makefile,v retrieving revision 1.2 diff -u -p -r1.2 Makefile --- fonts/nerd-fonts/codenewroman/Makefile 15 Apr 2024 16:08:17 -0000 1.2 +++ fonts/nerd-fonts/codenewroman/Makefile 11 Jul 2024 09:19:16 -0000 @@ -1,5 +1,5 @@ NF_FONT = CodeNewRoman -MODFONT_TYPES = otf +MODFONT_FONTFILES = otf post-install: ${INSTALL_DATA_DIR} ${DOCDIR} Index: fonts/recursive/Makefile =================================================================== RCS file: /cvs/ports/fonts/recursive/Makefile,v retrieving revision 1.2 diff -u -p -r1.2 Makefile --- fonts/recursive/Makefile 15 Apr 2024 16:08:17 -0000 1.2 +++ fonts/recursive/Makefile 11 Jul 2024 09:19:16 -0000 @@ -18,13 +18,11 @@ MODULES = font NO_BUILD = Yes NO_TEST = Yes -do-install: - ${INSTALL_DATA_DIR} ${MODFONT_DIR} - ${INSTALL_DATA} \ - ${WRKSRC}/Recursive_Desktop/separate_statics/OTF/*.otf \ - ${WRKSRC}/Recursive_Code/RecMonoCasual/*.ttf \ - ${WRKSRC}/Recursive_Code/RecMonoDuotone/*.ttf \ - ${WRKSRC}/Recursive_Code/RecMonoLinear/*.ttf \ - ${WRKSRC}/Recursive_Code/RecMonoSemicasual/*.ttf ${MODFONT_DIR} +MODFONT_FONTFILES = Recursive_Desktop/separate_statics/OTF/*.otf \ + Recursive_Desktop/separate_statics/OTF/*.otf \ + Recursive_Code/RecMonoCasual/*.ttf \ + Recursive_Code/RecMonoDuotone/*.ttf \ + Recursive_Code/RecMonoLinear/*.ttf \ + Recursive_Code/RecMonoSemicasual/*.ttf .include <bsd.port.mk> Index: fonts/sunscreen/Makefile =================================================================== RCS file: /cvs/ports/fonts/sunscreen/Makefile,v retrieving revision 1.7 diff -u -p -r1.7 Makefile --- fonts/sunscreen/Makefile 9 Jul 2024 13:03:40 -0000 1.7 +++ fonts/sunscreen/Makefile 11 Jul 2024 09:19:16 -0000 @@ -14,7 +14,7 @@ PERMIT_PACKAGE = Yes SITES = http://www.simon-cozens.org/downloads/ MODULES = font -MODFONT_TYPES = otf +MODFONT_FONTFILES = *.otf NO_BUILD = Yes NO_TEST = Yes Index: fonts/vollkorn/Makefile =================================================================== RCS file: /cvs/ports/fonts/vollkorn/Makefile,v retrieving revision 1.3 diff -u -p -r1.3 Makefile --- fonts/vollkorn/Makefile 21 Sep 2023 15:28:12 -0000 1.3 +++ fonts/vollkorn/Makefile 11 Jul 2024 09:19:16 -0000 @@ -4,6 +4,7 @@ V = 4.105 DISTNAME = vollkorn-${V:S/./-/} PKGNAME = vollkorn-$V +MODFONT_FAMILY = vollkorn # SIL OFL 1.1 PERMIT_PACKAGE = Yes @@ -22,14 +23,8 @@ NO_TEST = Yes WRKDIST = ${WRKDIR} -FONTDIR = ${PREFIX}/share/fonts/vollkorn -DOCDIR = ${PREFIX}/share/doc/vollkorn - -do-install: - ${INSTALL_DATA_DIR} ${FONTDIR} - ${INSTALL_DATA} ${WRKSRC}/TTF/*.ttf ${FONTDIR} - ${INSTALL_DATA} ${WRKSRC}/PS-OTF/*.otf ${FONTDIR} - ${INSTALL_DATA_DIR} ${DOCDIR} - ${INSTALL_DATA} ${WRKSRC}/OFL.txt ${DOCDIR} +MODFONT_FONTFILES = TTF/*.ttf \ + PS-OTF/*.otf +MODFONT_DOCFILES = OFL.txt .include <bsd.port.mk> Index: fonts/zh-wqy-zenhei-ttf/Makefile =================================================================== RCS file: /cvs/ports/fonts/zh-wqy-zenhei-ttf/Makefile,v retrieving revision 1.12 diff -u -p -r1.12 Makefile --- fonts/zh-wqy-zenhei-ttf/Makefile 15 Apr 2024 16:08:18 -0000 1.12 +++ fonts/zh-wqy-zenhei-ttf/Makefile 11 Jul 2024 09:19:16 -0000 @@ -17,11 +17,11 @@ MODULES = font SITES= ${SITE_SOURCEFORGE:=wqy/} EXTRACT_SUFX= .tar.gz -MODFONT_TYPES = ttc +MODFONT_FONTFILES = *.ttc WRKDIST= ${WRKDIR}/wqy-zenhei NO_BUILD= Yes NO_TEST= Yes -MODFONT_DIR= ${PREFIX}/share/fonts/wqy +MODFONT_FONTDIR= ${PREFIX}/share/fonts/wqy .include <bsd.port.mk>