168 lines
4.3 KiB
Bash
168 lines
4.3 KiB
Bash
# Copyright 1999-2024 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit font check-reqs
|
|
|
|
# curl https://raw.githubusercontent.com/ryanoasis/nerd-fonts/v${PV}/bin/scripts/lib/fonts.json |
|
|
# jq --raw-output '.fonts[] | "\"\(.folderName):\(.licenseId)\""'
|
|
FONTS=(
|
|
"0xProto:OFL-1.1-no-RFN"
|
|
"3270:BSD-3-Clause"
|
|
"Agave:MIT"
|
|
"AnonymousPro:OFL-1.1-RFN"
|
|
"Arimo:Apache-2.0"
|
|
"AurulentSansMono:OFL-1.1-no-RFN"
|
|
"BigBlueTerminal:CC-BY-SA-4.0"
|
|
"BitstreamVeraSansMono:Bitstream-Vera"
|
|
"IBMPlexMono:OFL-1.1-RFN"
|
|
"CascadiaCode:OFL-1.1-RFN"
|
|
"CascadiaMono:OFL-1.1-RFN"
|
|
"CodeNewRoman:OFL-1.1-no-RFN"
|
|
"ComicShannsMono:MIT"
|
|
"CommitMono:OFL-1.1-no-RFN"
|
|
"Cousine:Apache-2.0"
|
|
"D2Coding:OFL-1.1-no-RFN"
|
|
"DaddyTimeMono:OFL-1.1-no-RFN"
|
|
"DejaVuSansMono:Bitstream-Vera"
|
|
"DroidSansMono:Apache-2.0"
|
|
"EnvyCodeR:OFL-1.1-RFN"
|
|
"FantasqueSansMono:OFL-1.1-no-RFN"
|
|
"FiraCode:OFL-1.1-no-RFN"
|
|
"FiraMono:OFL-1.1-no-RFN"
|
|
"GeistMono:OFL-1.1-no-RFN"
|
|
"Go-Mono:BSD-3-Clause-Clear"
|
|
"Gohu:WTFPL"
|
|
"Hack:Bitstream-Vera AND MIT"
|
|
"Hasklig:OFL-1.1-RFN"
|
|
"HeavyData:LicenseRef-VicFieger"
|
|
"Hermit:OFL-1.1-RFN"
|
|
"iA-Writer:OFL-1.1-RFN"
|
|
"Inconsolata:OFL-1.1-no-RFN"
|
|
"InconsolataGo:OFL-1.1-no-RFN"
|
|
"InconsolataLGC:OFL-1.1-no-RFN"
|
|
"IntelOneMono:OFL-1.1-RFN"
|
|
"Iosevka:OFL-1.1-no-RFN"
|
|
"IosevkaTerm:OFL-1.1-no-RFN"
|
|
"IosevkaTermSlab:OFL-1.1-no-RFN"
|
|
"JetBrainsMono:OFL-1.1-no-RFN"
|
|
"Lekton:OFL-1.1-no-RFN"
|
|
"LiberationMono:OFL-1.1-RFN"
|
|
"Lilex:OFL-1.1-no-RFN"
|
|
"MartianMono:OFL-1.1-no-RFN"
|
|
"Meslo:Apache-2.0"
|
|
"Monaspace:OFL-1.1-RFN"
|
|
"Monofur:LicenseRef-Monofur"
|
|
"Monoid:MIT OR OFL-1.1-no-RFN"
|
|
"Mononoki:OFL-1.1-RFN"
|
|
"MPlus:OFL-1.1-no-RFN"
|
|
"Noto:OFL-1.1-no-RFN"
|
|
"OpenDyslexic:Bitstream-Vera"
|
|
"Overpass:OFL-1.1-no-RFN or LGPL-2.1-only"
|
|
"ProFont:MIT"
|
|
"ProggyClean:MIT"
|
|
"Recursive:OFL-1.1-no-RFN"
|
|
"RobotoMono:Apache-2.0"
|
|
"ShareTechMono:OFL-1.1-RFN"
|
|
"SourceCodePro:OFL-1.1-RFN"
|
|
"SpaceMono:OFL-1.1-no-RFN"
|
|
"NerdFontsSymbolsOnly:MIT"
|
|
"Terminus:OFL-1.1-RFN"
|
|
"Tinos:Apache-2.0"
|
|
"Ubuntu:LicenseRef-UbuntuFont"
|
|
"UbuntuMono:LicenseRef-UbuntuFont"
|
|
"UbuntuSans:LicenseRef-UbuntuFont"
|
|
"VictorMono:OFL-1.1-no-RFN"
|
|
"ZedMono:OFL-1.1-no-RFN"
|
|
)
|
|
|
|
# translate licenses to gentoos names
|
|
gentoo_license() {
|
|
local name names
|
|
# bash shenanigans since we can't sed here
|
|
names="${1}"
|
|
names="${names// AND / }"
|
|
names="${names// OR / }"
|
|
names="${names// and / }"
|
|
names="${names// or / }"
|
|
for name in ${names}; do
|
|
case "$name" in
|
|
OFL-1.1*) echo OFL-1.1;;
|
|
BSD*) echo BSD;;
|
|
MIT) echo MIT;;
|
|
Apache-2.0) echo Apache-2.0;;
|
|
CC-BY-SA-4.0) echo CC-BY-SA-4.0;;
|
|
Bitstream-Vera) echo BitstreamVera;;
|
|
WTFPL) echo WTFPL-2;;
|
|
LicenseRef-VicFieger) echo Vic-Fieger-License;;
|
|
LicenseRef-Monofur) echo Monofur;;
|
|
LGPL-2.1*) echo LGPL-2.1;;
|
|
LicenseRef-UbuntuFont) echo UbuntuFontLicense-1.0;;
|
|
*) eqawarn "Unknown license: \"$1\"\nUpdate gentoo_license";;
|
|
esac
|
|
done
|
|
}
|
|
|
|
font_vars() {
|
|
local base_uri="https://github.com/ryanoasis/nerd-fonts/releases/latest/download"
|
|
local font name license
|
|
for font in "${FONTS[@]}"; do
|
|
name="${font%:*}"
|
|
license="${font#*:}"
|
|
FONT_SRC_URI+=" ${name,,}? ( ${base_uri}/${name}.tar.xz -> ${PN}-${name}.tar.xz )"
|
|
FONT_LICENSE+=" ${name,,}? ( $(gentoo_license "${license}") )"
|
|
FONT_IUSE+=" ${name,,}"
|
|
done
|
|
}
|
|
font_vars
|
|
|
|
DESCRIPTION="Nerd Fonts is a project that patches fonts with a high number of glyphs"
|
|
HOMEPAGE="https://www.nerdfonts.com/"
|
|
|
|
SRC_URI="${FONT_SRC_URI}"
|
|
S="${WORKDIR}"
|
|
FONT_S="${S}"
|
|
|
|
LICENSE="${FONT_LICENSE}"
|
|
IUSE="${FONT_IUSE}"
|
|
REQUIRED_USE="|| ( ${FONT_IUSE} )"
|
|
|
|
SLOT="0"
|
|
KEYWORDS="~amd64"
|
|
|
|
approx_fonts_disk_reqs() {
|
|
# all fonts combined need ~8G
|
|
# (according to portage "final size of build dir")
|
|
# let's assume that's distributed somewhat evenly
|
|
local avgsize font fontcount
|
|
avgsize=$(( 8000 / ${#FONTS[@]} ))
|
|
fontcount=0
|
|
for font in ${FONT_IUSE}; do
|
|
use "${font}" && fontcount=$(( fontcount + 1 ))
|
|
done
|
|
echo "$(( avgsize * fontcount ))M"
|
|
}
|
|
|
|
pkg_setup() {
|
|
CHECKREQS_DISK_BUILD="$(approx_fonts_disk_reqs)"
|
|
CHECKREQS_DISK_USR="${CHECKREQS_DISK_BUILD}"
|
|
check-reqs_pkg_setup
|
|
}
|
|
|
|
pkg_pretend() {
|
|
CHECKREQS_DISK_BUILD="$(approx_fonts_disk_reqs)"
|
|
CHECKREQS_DISK_USR="${CHECKREQS_DISK_BUILD}"
|
|
check-reqs_pkg_pretend
|
|
}
|
|
|
|
src_install() {
|
|
local suffix
|
|
for suffix in ttf otf; do
|
|
if ( find . -name "*.${suffix}" | read ); then
|
|
FONT_SUFFIX="${FONT_SUFFIX} ${suffix}"
|
|
fi
|
|
done
|
|
font_src_install
|
|
}
|