View Raw Ebuild
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit font git-r3
DESCRIPTION="Monospaced fonts pre-patched with Powerline symbols"
HOMEPAGE="https://github.com/powerline/fonts"
EGIT_REPO_URI="https://github.com/powerline/fonts"
LICENSE="
3270? ( || ( BSD CC-BY-SA-3.0 ) )
anonymouspro? ( OFL-1.1 )
arimo? ( Apache-2.0 )
cousine? ( Apache-2.0 )
dejavusansmono? ( BitstreamVera )
droidsansmono? ( Apache-2.0 )
droidsansmonodotted? ( Apache-2.0 )
droidsansmonoslashed? ( Apache-2.0 )
firamono? ( OFL-1.1 )
gomono? ( BSD )
hack? ( OFL-1.1 )
inconsolata? ( OFL-1.0 )
inconsolatadz? ( OFL-1.0 )
inconsolata-g? ( OFL-1.0 )
liberationmono? ( OFL-1.1 )
meslodotted? ( Apache-2.0 )
mesloslashed? ( Apache-2.0 )
monofur? ( free-noncomm )
notomono? ( OFL-1.1 )
novamono? ( free-noncomm )
profont? ( MIT )
robotomono? ( Apache-2.0 )
sourcecodepro? ( OFL-1.1 )
spacemono? ( OFL-1.1 )
symbolneu? ( Apache-2.0 )
terminus? ( OFL-1.1 )
tinos? ( Apache-2.0 )
ubuntumono? ( UbuntuFontLicense-1.0 )
"
SLOT="0"
# src_install() expects USE flags to be the lowercase basenames of the
# corresponding font directories. See src_install_font() for details.
IUSE_FLAGS=(
3270
anonymouspro
arimo
cousine
dejavusansmono
droidsansmono
droidsansmonodotted
droidsansmonoslashed
firamono
gomono
hack
inconsolata-g
inconsolata
inconsolatadz
liberationmono
meslodotted
mesloslashed
monofur
notomono
novamono
profont
robotomono
sourcecodepro
spacemono
symbolneu
terminus
tinos
ubuntumono
)
# TODO: Add d2coding w/ own ebuild and RDEPEND
IUSE="${IUSE_FLAGS[*]} +pcf psf bdf"
# If no such USE flags were enabled, fail.
REQUIRED_USE="
|| ( ${IUSE_FLAGS[*]} )
|| ( pcf psf bdf )
"
# List of the basenames of all subdirectories containing OTF-formatted fonts.
OTF_DIRNAMES=(
DroidSansMono
FiraMono
Inconsolata-g
Inconsolata
InconsolataDz
SourceCodePro
)
# List of the basenames of all subdirectories containing TTF-formatted fonts.
TTF_DIRNAMES=(
3270
AnonymousPro
Arimo
Cousine
DejaVuSansMono
DroidSansMonoDotted
DroidSansMonoSlashed
GoMono
Hack
Inconsolata
LiberationMono
'Meslo Dotted'
'Meslo Slashed'
Monofur
NotoMono
NovaMono
ProFont
RobotoMono
SpaceMono
SymbolNeu
Tinos
UbuntuMono
)
# Temporary directory to which all fonts to be installed will be copied.
# Ideally, such fonts could simply be installed from their default directories;
# sadly, eclass "font" assumes such fonts always reside in a single directory.
FONT_S="${S}/fonts"
DOCS="README.rst"
src_install() {
# Map of all font filetypes to be installed and hence appended to eclass
# "font" string global ${FONT_SUFFIX} below. Since we only leverage this
# map for its keys (e.g., as an unordered set or bag), all keys are mapped
# to the empty string for simplicity.
declare -A font_filetypes
local otf_dirname ttf_dirname
# Create the temporary directory containing all fonts to be installed.
mkdir -p "${FONT_S}" || die '"mkdir" failed.'
# Copy all fonts in the passed directory with the passed filetype to a
# temporary directory for subsequent installation if the corresponding USE
# flag is enabled or return silently otherwise.
src_install_font() {
(( ${#} == 2 )) || die 'Expected one dirname and one filetype.'
local dirname="${1}" filetype="${2}" flag_name doc_filename
# Name of the USE flag converted from the passed directory as follows:
#
# * "${...,,}", lowercasing this directory.
# * "${...//[[:space:]]/}", stripping whitespace from this directory.
flag_name="${dirname,,}"
flag_name="${flag_name//[[:space:]]/}"
# If this font's USE flag is enabled...
if use "${flag_name}"; then
# Install all fonts of this filetype in this subdirectory.
mv "${dirname}"/*.${filetype} "${FONT_S}" || die '"mv" failed.'
# Register this filetype with the "font" eclass below.
font_filetypes[${filetype}]=
# Install this font's documentation (if available) to a file with
# the same basename as this directory with whitespace stripped.
doc_filename="${dirname}/README.rst"
if [[ -f "${doc_filename}" ]]; then
newdoc "${doc_filename}" README_${dirname//[[:space:]]/}.rst
fi
fi
}
# Copy all OTF-formatted fonts to be installed into a temporary directory.
for otf_dirname in "${OTF_DIRNAMES[@]}"; do
src_install_font "${otf_dirname}" otf
done
# Copy all TTF-formatted fonts to be installed into a temporary directory.
for ttf_dirname in "${TTF_DIRNAMES[@]}"; do
src_install_font "${ttf_dirname}" ttf
done
# Terminus is a bitmap- rather than vector-based font and hence requires
# unique handling. In particular, the repository provides three variants of
# such patched font: in BDF, PCF, and PSF format. Since X.org is
# incompatible with PSF-formatted fonts and since PCF-formatted fonts are
# more space efficient than BDF-formatted fonts, install only the Terminus
# fonts in PCF format. This corresponds to the "terminus" ebuild, as well.
if use terminus; then
if use pcf; then
mv Terminus/PCF/*.pcf.gz "${FONT_S}" || die '"mv" failed.'
font_filetypes[pcf.gz]=
fi
if use psf; then
mv Terminus/PSF/*.psf.gz "${FONT_S}" || die '"mv" failed.'
font_filetypes[psf.gz]=
fi
if use bdf; then
mv Terminus/BDF/*.bdf "${FONT_S}" || die '"mv" failed.'
font_filetypes[bdf]=
fi
newdoc Terminus/README.rst README_Terminus.rst
fi
# Convert the above map of all font filetypes to be installed into the
# whitespace-delimited string global accepted by the "font" eclass.
FONT_SUFFIX="${!font_filetypes[@]}"
# Install these fonts.
font_src_install
}