RHEL 9.0.0 Alpha bootstrap

The content of this branch was automatically imported from Fedora ELN
with the following as its source:
https://src.fedoraproject.org/rpms/bitmap-fonts#2c4fec66edc8179d5784014d49a137a6bd8015f3
This commit is contained in:
Troy Dawson 2020-10-20 06:46:43 -07:00
parent 8f17d0fc1b
commit 3e0d5393a4
15 changed files with 1004 additions and 0 deletions

3
.gitignore vendored
View File

@ -0,0 +1,3 @@
bitmap-fonts-0.3.tar.bz2
fixfont.tar.bz2
fixfont-3.5.tar.bz2

17
66-bitmap-console.conf Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
<fontconfig>
<alias>
<family>monospace</family>
<prefer>
<family>Console</family>
</prefer>
</alias>
<alias>
<family>Console</family>
<default>
<family>monospace</family>
</default>
</alias>
</fontconfig>

17
66-bitmap-fangsongti.conf Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
<fontconfig>
<alias>
<family>monospace</family>
<prefer>
<family>Fangsong ti</family>
</prefer>
</alias>
<alias>
<family>Fangsong ti</family>
<default>
<family>monospace</family>
</default>
</alias>
</fontconfig>

17
66-bitmap-fixed.conf Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
<fontconfig>
<alias>
<family>monospace</family>
<prefer>
<family>Fixed</family>
</prefer>
</alias>
<alias>
<family>Fixed</family>
<default>
<family>monospace</family>
</default>
</alias>
</fontconfig>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
<fontconfig>
<alias>
<family>monospace</family>
<prefer>
<family>LucidaTypewriter</family>
</prefer>
</alias>
<alias>
<family>LucidaTypewriter</family>
<default>
<family>monospace</family>
</default>
</alias>
</fontconfig>

58
LICENSE Normal file
View File

@ -0,0 +1,58 @@
This font is a merge of:
-ISAS-Fangsong ti-Medium-R-Normal--24-240-72-72-c-240-ISO10646-1
-Sony-Fixed-Medium-R-Normal--24-170-100-100-C-120-ISO8859-1
Copyright (C) 1988 The Institute of Software, Academia Sinica.
Correspondence Address: P.O.Box 8718, Beijing, China 100080.
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby granted,
provided that the above copyright notices appear in all copies and
that both those copyright notices and this permission notice appear
in supporting documentation, and that the name of "the Institute of
Software, Academia Sinica" not be used in advertising or publicity
pertaining to distribution of the software without specific, written
prior permission. The Institute of Software, Academia Sinica,
makes no representations about the suitability of this software
for any purpose. It is provided "as is" without express or
implied warranty.
THE INSTITUTE OF SOFTWARE, ACADEMIA SINICA, DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE INSTITUTE OF
SOFTWARE, ACADEMIA SINICA, BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
This is a hanzi guobiao (GB) code 24x24 song ti font.
GB stands for the National Standard GB2312-80 of
the People's Republic of China.
Copyright 1989 by Sony Corp.
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby granted,
provided that the above copyright notices appear in all copies and
that both those copyright notices and this permission notice appear
in supporting documentation, and that the name of Sony Corp.
not be used in advertising or publicity pertaining to distribution
of the software without specific, written prior permission. Sony
Corp. makes no representations about the suitability of this
software for any purpose. It is provided "as is" without express or
implied warranty.
SONY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL SONY BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

379
bitmap-fonts.spec Normal file
View File

@ -0,0 +1,379 @@
%global fontname bitmap
%global fontconf 66-%{fontname}
%global common_desc \
The bitmap-fonts package provides a number of bitmap fonts selected\
from the xorg package designed for use locations such as\
terminals.
Name: bitmap-fonts
Version: 0.3
Release: 35%{?dist}
License: GPLv2 and MIT and Lucida
Source0: bitmap-fonts-%{version}.tar.bz2
Source1: fixfont-3.5.tar.bz2
Source2: LICENSE
Source3: 66-bitmap-console.conf
Source4: 66-bitmap-fangsongti.conf
Source5: 66-bitmap-fixed.conf
Source6: 66-bitmap-lucida-typewriter.conf
BuildArch: noarch
Summary: Selected set of bitmap fonts
BuildRequires: xorg-x11-font-utils
BuildRequires: fontpackages-devel
BuildRequires: python3
BuildRequires: /usr/bin/ftdump
%description
%common_desc
%package -n %{fontname}-fonts-compat
Summary: Compatibility files of bitmap-font families
Provides: bitmap-fonts = %{version}-%{release}
Requires: %{fontname}-lucida-typewriter-fonts = %{version}-%{release}
Requires: %{fontname}-fangsongti-fonts = %{version}-%{release}
Requires: %{fontname}-console-fonts = %{version}-%{release}
Requires: %{fontname}-fixed-fonts = %{version}-%{release}
Requires: ucs-miscfixed-fonts
Obsoletes: bitmap-fonts < %{version}-%{release}
Conflicts: %{fontname}-opentype-fonts-compat
%description -n %{fontname}-fonts-compat
%common_desc
Meta-package for installing all font families of bitmap.
%files -n %{fontname}-fonts-compat
%package -n %{fontname}-opentype-fonts-compat
Summary: Compatibility files of bitmap-font families (opentype version)
Requires: %{fontname}-lucida-typewriter-opentype-fonts = %{version}-%{release}
Requires: %{fontname}-fangsongti-opentype-fonts = %{version}-%{release}
Requires: %{fontname}-console-opentype-fonts = %{version}-%{release}
Requires: %{fontname}-fixed-opentype-fonts = %{version}-%{release}
Requires: ucs-miscfixed-opentype-fonts
Conflicts: %{fontname}-fonts-compat
%description -n %{fontname}-opentype-fonts-compat
%common_desc
Meta-package for installing all font families of opentype bitmap.
%files -n %{fontname}-opentype-fonts-compat
%package -n bitmap-lucida-typewriter-fonts
Summary: Selected CJK bitmap fonts for Anaconda
Requires: fontpackages-filesystem
Provides: %{name}-cjk = %{version}-%{release}
License: Lucida
Conflicts: bitmap-lucida-typewriter-opentype-fonts
%description -n bitmap-lucida-typewriter-fonts
%common_desc
%_font_pkg -n lucida-typewriter -f %{fontconf}-lucida-typewriter.conf lut*.pcf.gz
%doc LU_LEGALNOTICE
%package -n bitmap-lucida-typewriter-opentype-fonts
Summary: Selected CJK bitmap fonts for Anaconda (opentype version)
Requires: fontpackages-filesystem
License: Lucida
Conflicts: bitmap-lucida-typewriter-fonts
%description -n bitmap-lucida-typewriter-opentype-fonts
%common_desc
%_font_pkg -n lucida-typewriter-opentype -f %{fontconf}-lucida-typewriter.conf lut*.otb
%doc LU_LEGALNOTICE
%package -n bitmap-fangsongti-fonts
Summary: Selected CJK bitmap fonts for Anaconda
Requires: fontpackages-filesystem
Provides: %{name}-cjk = %{version}-%{release}
License: MIT
Conflicts: bitmap-fangsongti-opentype-fonts
%description -n %{fontname}-fangsongti-fonts
bitmap-fonts-cjk package contains bitmap fonts used by Anaconda. They are
selected from the xorg packages, and the font encoding are converted from
native encoding to ISO10646. They are only intended to be used in Anaconda.
%_font_pkg -n fangsongti -f %{fontconf}-fangsongti.conf fangsongti*.pcf.gz
%doc LICENSE
%package -n bitmap-fangsongti-opentype-fonts
Summary: Selected CJK bitmap fonts for Anaconda (opentype version)
Requires: fontpackages-filesystem
License: MIT
Conflicts: bitmap-fangsongti-fonts
%description -n %{fontname}-fangsongti-opentype-fonts
%common_desc
%_font_pkg -n fangsongti-opentype -f %{fontconf}-fangsongti.conf fangsongti*.otb
%doc LICENSE
%package -n bitmap-console-fonts
Summary: Selected set of bitmap fonts
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-console-opentype-fonts
%description -n %{fontname}-console-fonts
%common_desc
%_font_pkg -n console -f %{fontconf}-console.conf console8x16*.pcf.gz
%package -n bitmap-console-opentype-fonts
Summary: Selected set of bitmap fonts (opentype version)
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-console-fonts
%description -n %{fontname}-console-opentype-fonts
%common_desc
%_font_pkg -n console-opentype -f %{fontconf}-console.conf console8x16*.otb
%package -n bitmap-fixed-fonts
Summary: Selected set of bitmap fonts
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-fixed-opentype-fonts
%description -n %{fontname}-fixed-fonts
%common_desc
%_font_pkg -n fixed -f %{fontconf}-fixed.conf console9*.pcf.gz
%package -n bitmap-fixed-opentype-fonts
Summary: Selected set of bitmap fonts (opentype version)
Requires: fontpackages-filesystem
License: GPLv2
Conflicts: bitmap-fixed-fonts
%description -n %{fontname}-fixed-opentype-fonts
%common_desc
%_font_pkg -n fixed-opentype -f %{fontconf}-fixed.conf console9*.otb
%prep
%setup -q -a 1
cp %{SOURCE2} .
%build
%{nil}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
pushd fixfont-3.5
make install DESTDIR=$RPM_BUILD_ROOT
popd
mv $RPM_BUILD_ROOT/usr/share/fonts/bitmap-fonts %{buildroot}%{_fontdir}
rm %{buildroot}%{_fontdir}/[0-9]*.pcf
rm %{buildroot}%{_fontdir}/console8x8.pcf
rm README
# Convert to OpenType Bitmap Font
rm [0-9]*.bdf fixfont-3.5/[0-9]*.bdf
for bdf in `ls *.bdf`;
do fonttosfnt -b -c -g 2 -m 2 -o ${bdf%%bdf}otb $bdf;
done
install -m 0644 -p *.otb %{buildroot}%{_fontdir}
pushd fixfont-3.5
for bdf in `ls *.bdf`;
do fonttosfnt -b -c -g 2 -m 2 -o ${bdf%%bdf}otb $bdf;
done
# For console9x15.otb
fonttosfnt -b -c -g 2 -m 2 -o console9x15.otb console9x15.pcf
install -m 0644 -p *.otb %{buildroot}%{_fontdir}
popd
gzip %{buildroot}%{_fontdir}/*.pcf
install -m 0755 -d %{buildroot}%{_fontconfig_templatedir} \
%{buildroot}%{_fontconfig_confdir}
# Repeat for every font family
install -m 0644 -p %{SOURCE3} \
%{buildroot}%{_fontconfig_templatedir}/%{fontconf}-console.conf
install -m 0644 -p %{SOURCE4} \
%{buildroot}%{_fontconfig_templatedir}/%{fontconf}-fangsongti.conf
install -m 0644 -p %{SOURCE5} \
%{buildroot}%{_fontconfig_templatedir}/%{fontconf}-fixed.conf
install -m 0644 -p %{SOURCE6} \
%{buildroot}%{_fontconfig_templatedir}/%{fontconf}-lucida-typewriter.conf
for fconf in %{fontconf}-console.conf \
%{fontconf}-fangsongti.conf \
%{fontconf}-fixed.conf \
%{fontconf}-lucida-typewriter.conf ; do
ln -s %{_fontconfig_templatedir}/$fconf \
%{buildroot}%{_fontconfig_confdir}/$fconf
done
%changelog
* Fri Sep 4 2020 Peng Wu <pwu@redhat.com> - 0.3-35
- Use BDF fonts for OpenType conversion
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-34
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Feb 6 2020 Peng Wu <pwu@redhat.com> - 0.3-33
- Provide OpenType Bitmap fonts
- Use bitmapfonts2otb.py to combine bitmap fonts
- Add bitmap-*-opentype-fonts sub packages
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-32
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-31
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-30
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.3-28
- Escape macros in %%changelog
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-27
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-26
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-25
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-22
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-19
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Wed Mar 03 2010 Pravin Satpute <psatpute@redhat.com> - 0.3-16
- fixed lucida license
- added compat package for smooth upgradation
* Tue Mar 02 2010 Pravin Satpute <psatpute@redhat.com> - 0.3-15
- updated as per merge review comments
- bug 225617
* Wed Nov 18 2009 Pravin Satpute <psatpute@redhat.com> - 0.3-14
- removed console8x8.pcf from console sub-package
* Fri Oct 09 2009 Pravin Satpute <psatpute@redhat.com> - 0.3-13
- added lucida-typewriter and fixed subpackage
- removed common subpackage
- added conf file for each subpackage
* Fri Oct 09 2009 Pravin Satpute <psatpute@redhat.com> - 0.3-12
- updates license for each subpackage
* Thu Sep 17 2009 Pravin Satpute <psatpute@redhat.com> - 0.3-11
- second update as per merge review comment, bug 225617
* Thu Sep 17 2009 Pravin Satpute <psatpute@redhat.com> - 0.3-10
- updating as per merge review comment
* Thu Sep 17 2009 Pravin Satpute <psatpute@redhat.com> - 0.3-9
- updating as per new packaging guidelines
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Mon Jul 14 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 0.3-6
- fix license tag
* Tue Feb 12 2008 Rahul Bhalerao <rbhalera@redhat.com> - 0.3-5.2
- Rebuild for gcc4.3.
* Tue Feb 27 2007 Mayank Jain <majain@redhat.com> - 0.3-5.1.2
- Changed BuildRoot to %%{_tmppath}/%%{name}-%%{version}-%%{release}-root-%%(%%{__id_u} -n)
- Changed Prereq tag to Requires(pre)
- In the "cjk" subpackage summary, CJK is now spelt with capital letters.
- Added %%{?dist} to the Release tag
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 0.3-5.1.1
- rebuild
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
- rebuilt
* Wed Nov 09 2004 Caolan McNamara <caolanm@redhat.com> - 0.3-5
- build fixfont .pcfs from source .bdfs
* Wed Sep 22 2004 Owen Taylor <otaylor@redhat.com> - 0.3-4
- Update BuildRequires to xorg-x11-font-utils (#118428, Mike Harris)
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
- rebuilt
* Tue Jan 21 2003 Owen Taylor <otaylor@redhat.com>
- Version 0.3 adding misc-fixed fonts from ucs-fonts
- Adjust %%post, %%postun
* Mon Jan 13 2003 Owen Taylor <otaylor@redhat.com>
- Patch from Anthony Fok, to fix problem where fangsongti16.bdf
wasn't considered to cover english because it didn't have
e-diaresis. (Causing bad font choice in Anaconda)
* Wed Dec 18 2002 Than Ngo <than@redhat.com> 0.2-4
- add some bitmap fonts
* Thu Oct 31 2002 Owen Taylor <otaylor@redhat.com> 0.2-3
- Own the bitmap-fonts directory (Enrico Scholz, #73940)
- Add %%post, %%postun for cjk subpackage
* Fri Aug 30 2002 Alexander Larsson <alexl@redhat.com> 0.2-2
- Call fc-cache from post
* Wed Aug 28 2002 Owen Taylor <otaylor@redhat.com>
- Augment fangsongti fonts with characters from 8x16, 12x24
* Tue Jul 31 2002 Yu Shao <yshao@redhat.com>
- add fangsong*.bdf converted from gb16fs.bdf and gb24st.bdf
* Mon Nov 13 2000 Owen Taylor <otaylor@redhat.com>
- Initial package

62
bitmapfonts2otb.py Normal file
View File

@ -0,0 +1,62 @@
#!/usr/bin/python3
# Automatically group the font files by family names and style names,
# and assume each bitmap font only contains one font face.
#
# Generates one otb file per (family name, style name) tuple, named
# after the tuple.
#
# This tool requires ftdump and fonttosfnt.
# Written by Peng Wu as
# https://pwu.fedorapeople.org/fonts/convertbitmap/convertfont.py
# Some changes by Hans Ulrich Niedermann.
import sys
import subprocess
usage = '''
bitmapfonts2otb.py [BITMAPFONTFILE]...
'''
fontnames = dict()
# get font family name and style name by ftdump
def getfullname(fontname):
output = subprocess.check_output(['ftdump', fontname])
output = output.decode('utf8')
# only contain one font face
assert not 'Face number: 1' in output
result = {}
for row in output.split('\n'):
if ':' in row:
key, value = row.split(': ')
result[key.strip()] = value.strip()
familyname, stylename = result['family'], result['style']
if stylename == 'Regular':
return familyname
else:
return familyname + ' ' + stylename
def generate_fonts():
for fullname, filenames in fontnames.items():
outputfilename = fullname.replace(' ', '-') + '.otb'
argv = ['fonttosfnt', '-b', '-c', '-g', '2', '-m', '2', '-o', outputfilename ]
argv.extend(filenames)
print(outputfilename)
print(' '.join(argv))
print(subprocess.check_output(argv).decode('utf8'))
if __name__ == '__main__':
for bitmapfontname in sys.argv[1:]:
fullname = getfullname(bitmapfontname)
if fullname in fontnames:
fontnames[fullname].append(bitmapfontname)
else:
fontnames[fullname] = [bitmapfontname]
generate_fonts()

2
sources Normal file
View File

@ -0,0 +1,2 @@
f07548f9668f178e1a6f6ae39d595c8c bitmap-fonts-0.3.tar.bz2
008073dee211f94105b2ff2790aa45dc fixfont-3.5.tar.bz2

View File

@ -0,0 +1,7 @@
---
role_pkgs_req:
- fontconfig
- fontconfig-devel
- pkg-config
- rsync

View File

@ -0,0 +1,153 @@
#! /bin/bash -efu
debug() {
if [ -n "$DEBUG" ]; then
echo "$*" >&2
fi
}
msg_usage() {
cat <<_EOF_
Run family test.
Usage:
$PROG <options>
Options:
-h, --help Display this help and exit
-v, --verbose Turn on debug
-l, --lang=LANG Test LANG language coverage (default: en)
-f, --family=FILE Set a family name supposed to be assigned for alias.
-g, --alias=STR Set an alias name. (default: sans-serif)
-a, --artifactsdir=DIR Set environment dir to store artifacts
-k, --package=NAME Set a package name for fonts.
_EOF_
}
PROG="${PROG:-${0##*/}}"
DEBUG="${DEBUG:-}"
OPT_LANG="${OPT_LANG:-en}"
OPT_FAMILY="${OPT_FAMILY:-}"
OPT_ARTIFACTS_DIR="${OPT_ARTIFACTS_DIR:-}"
OPT_ALIAS="${OPT_ALIAS:-sans-serif}"
OPT_PACKAGE="${OPT_PACKAGE:-}"
opt=$(getopt -n "$0" --options "hvl:f:t:a:g:k:" --longoptions "help,verbose,lang:,family:,test:,artifactsdir:,alias:,package:" -- "$@")
eval set -- "$opt"
while [[ $# -gt 0 ]]; do
case "$1" in
-k|--package)
OPT_PACKAGE="$2"
shift 2
;;
-g|--alias)
OPT_ALIAS="$2"
shift 2
;;
-a|--artifactsdir)
OPT_ARTIFACTS_DIR="$2"
shift 2
;;
-f|--family)
OPT_FAMILY="$2"
shift 2
;;
-l|--lang)
OPT_LANG="$2"
shift 2
;;
-v|--verbose)
DEBUG="-v"
shift
;;
-h|--help)
msg_usage
exit 0
;;
--)
shift
;;
*)
msg_usage
exit 1
esac
done
if [ -z "$OPT_ARTIFACTS_DIR" ] || [ -z "$OPT_LANG" ] || [ -z "$OPT_FAMILY" ]; then
echo "Use: $PROG -h for help."
exit 0
fi
debug "Alias: $OPT_ALIAS"
debug "Family: $OPT_FAMILY"
debug "Lang: $OPT_LANG"
debug "Artifacts dir: $OPT_ARTIFACTS_DIR"
debug "Package name: $OPT_PACKAGE"
STR_TEST_DASHED=$(echo "${OPT_PACKAGE}_${OPT_ALIAS}" | sed -e 's/\//-/g' -e 's/ /-/g')
debug "Log file: $STR_TEST_DASHED.log"
clean_exit() {
rc=$?;
trap - SIGINT SIGTERM SIGABRT EXIT
echo "Run test $OPT_ALIAS: done."
for pid in $(ps -o pid --no-headers --ppid $$); do
if [ -n "$(ps -p $pid -o pid=)" ]; then
kill -s HUP $pid
fi
done
local log_file_name="$STR_TEST_DASHED.log"
local log_file_path="$OPT_ARTIFACTS_DIR/$log_file_name"
local status
if [[ $rc -eq 127 ]]; then
status="ERROR"
elif grep -q "RESULT: WARN" "$log_file_path"; then
status="ERROR"
elif grep -q "RESULT: FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "RESULT: PASS" "$log_file_path"; then
status="PASS"
elif grep -q "FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "PASS" "$log_file_path"; then
status="PASS"
else
status="ERROR"
fi
echo "$status $OPT_ALIAS" >> "$OPT_ARTIFACTS_DIR/test.log"
mv "$log_file_path" "$OPT_ARTIFACTS_DIR/${status}_${log_file_name}"
local results="$OPT_ARTIFACTS_DIR/results.yml"
local result=$(echo $status | tr '[:upper:]' '[:lower:]')
test -f "$results" || echo 'results:' > "$results"
echo "- {result: $result, test: $OPT_ALIAS}" >> "$results"
exit 0
}
trap clean_exit SIGINT SIGTERM SIGABRT EXIT
cachedir=`pkg-config --variable cachedir fontconfig`
tmpconfd=`mktemp --tmpdir -d fontsci.XXXXXXXX`
conf=$(for i in `rpm -ql $OPT_PACKAGE | grep conf.d`; do
echo "<include>$i</include>"
done)
cat <<_EOF_> $tmpconfd/fonts.conf
<fontconfig>
<dir>/usr/share/fonts</dir>
$conf
<cachedir>$cachedir</cachedir>
</fontconfig>
_EOF_
debug "Config: `cat $tmpconfd/fonts.conf`"
mkdir -p "$OPT_ARTIFACTS_DIR"
export OUTPUTFILE="$(realpath "$OPT_ARTIFACTS_DIR")/$STR_TEST_DASHED-out.log"
logfile_stdout="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED.log"
logfile_stderr="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED-err.log"
exec 3>&1 4>&2 1> >(tee -a "$logfile_stdout" >&3) 2> >(tee -a "$logfile_stderr" >&4)
debug "Check family assignment"
res=`FONTCONFIG_FILE=$tmpconfd/fonts.conf fc-match -f "%{family[0]}" :family=$OPT_ALIAS:lang=$OPT_LANG`
if [ "x$res" = "x$OPT_FAMILY" ]; then
echo "RESULT: PASS: $OPT_FAMILY was assigned to $OPT_ALIAS as expected"
else
echo "RESULT: FAIL: $OPT_FAMILY wasn't assigned to $OPT_ALIAS (actual result: $res)"
fi
rm -rf $tmpconfd

View File

@ -0,0 +1,197 @@
#! /bin/bash -efu
debug() {
if [ -n "$DEBUG" ]; then
echo "$*" >&2
fi
}
msg_usage() {
cat <<_EOF_
Run language coverage test.
Usage:
$PROG <options>
Options:
-h, --help Display this help and exit
-v, --verbose Turn on debug
-l, --lang=LANG Test LANG language coverage (default: en)
-p, --path=PATH Test fonts on PATH
-n, --name=NAME Set NAME to store a log file.
-a, --artifactsdir=DIR test environment dir to store artifacts
-e, --exclude=FILE Exclude FILE to check.
-i, --include=FILE Include File to check.
_EOF_
}
PROG="${PROG:-${0##*/}}"
DEBUG="${DEBUG:-}"
OPT_LANG="${OPT_LANG:-en}"
OPT_PATH="${OPT_PATH:-}"
OPT_ARTIFACTS_DIR="${OPT_ARTIFACTS_DIR:-}"
OPT_EXCLUDE=()
OPT_INCLUDE=()
OPT_NAME="${OPT_NAME:-}"
opt=$(getopt -n "$0" --options "hvl:p:n:a:e:i:" --longoptions "help,verbose,lang:,path:,name:,artifactsdir:,exclude:,include:" -- "$@")
eval set -- "$opt"
while [[ $# -gt 0 ]]; do
case "$1" in
-n|--name)
OPT_NAME="$2"
shift 2
;;
-i|--include)
OPT_INCLUDE+=("$2")
shift 2
;;
-e|--exclude)
OPT_EXCLUDE+=("$2")
shift 2
;;
-a|--artifactsdir)
OPT_ARTIFACTS_DIR="$2"
shift 2
;;
-p|--path)
OPT_PATH="$2"
shift 2
;;
-l|--lang)
OPT_LANG="$2"
shift 2
;;
-v|--verbose)
DEBUG="-v"
shift
;;
-h|--help)
msg_usage
exit 0
;;
--)
shift
;;
*)
msg_usage
exit 1
esac
done
if [ -z "$OPT_ARTIFACTS_DIR" ] || [ -z "$OPT_LANG" ] || [ -z "$OPT_PATH" ]; then
echo "Use: $PROG -h for help."
exit 0
fi
expand_regex() {
local e ret=()
local path="$1"
shift
(cd $path;
for e; do
debug "$e"
set +f
local x=$(find -regextype posix-egrep -regex "./$e" -print|sed -e 's,^\./,,g')
ret+=($x)
set -f
echo ${ret[@]}
done)
echo ${ret[@]}
}
OPT_INCLUDE=($(expand_regex $OPT_PATH ${OPT_INCLUDE[@]}))
OPT_EXCLUDE=($(expand_regex $OPT_PATH ${OPT_EXCLUDE[@]}))
debug "Path: $OPT_PATH"
debug "Lang: $OPT_LANG"
debug "Artifacts dir: $OPT_ARTIFACTS_DIR"
debug "Exclude: ${OPT_EXCLUDE[@]}"
debug "Include: ${OPT_INCLUDE[@]}"
STR_TEST_DASHED=$(echo "${OPT_NAME:-${OPT_LANG}_${OPT_PATH}}" | sed -e 's/\//-/g')
clean_exit() {
rc=$?;
trap - SIGINT SIGTERM SIGABRT EXIT
echo "Run test $OPT_PATH: done."
for pid in $(ps -o pid --no-headers --ppid $$); do
if [ -n "$(ps -p $pid -o pid=)" ]; then
kill -s HUP $pid
fi
done
local log_file_name="$STR_TEST_DASHED.log"
local log_file_path="$OPT_ARTIFACTS_DIR/$log_file_name"
local status
if [[ $rc -eq 127 ]]; then
status="ERROR"
elif grep -q "RESULT: WARN" "$log_file_path"; then
status="ERROR"
elif grep -q "RESULT: FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "RESULT: PASS" "$log_file_path"; then
status="PASS"
elif grep -q "FAIL" "$log_file_path"; then
status="FAIL"
elif grep -q "PASS" "$log_file_path"; then
status="PASS"
else
status="ERROR"
fi
echo "$status $OPT_PATH" >> "$OPT_ARTIFACTS_DIR/test.log"
mv "$log_file_path" "$OPT_ARTIFACTS_DIR/${status}_${log_file_name}"
local results="$OPT_ARTIFACTS_DIR/results.yml"
local result=$(echo $status | tr '[:upper:]' '[:lower:]')
test -f "$results" || echo 'results:' > "$results"
echo "- {result: $result, test: $OPT_PATH}" >> "$results"
exit 0
}
trap clean_exit SIGINT SIGTERM SIGABRT EXIT
mkdir -p "$OPT_ARTIFACTS_DIR"
export OUTPUTFILE="$(realpath "$OPT_ARTIFACTS_DIR")/$STR_TEST_DASHED-out.log"
logfile_stdout="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED.log"
logfile_stderr="$OPT_ARTIFACTS_DIR/$STR_TEST_DASHED-err.log"
exec 3>&1 4>&2 1> >(tee -a "$logfile_stdout" >&3) 2> >(tee -a "$logfile_stderr" >&4)
contains() {
local e match="$1"
shift
for e; do [[ "$e" == "$match" ]] && return 1; done
return 0
}
debug "Check language coverage"
set +f
for i in `find $OPT_PATH -regex '.*/*\.\(t1\)?\(ttf\)?\(otf\)?\(ttc\)?\(pcf.*\)?\(pfa\)?'`; do
set -f
debug "$i"
if test -f $i; then
n=`basename $i`
set +e
contains "$n" "${OPT_EXCLUDE[@]}"
ret=$?
set -e
if [ $ret -eq 1 ]; then
debug "ignoring $i"
continue
fi
if [ ${#OPT_INCLUDE[@]} -ne 0 ]; then
set +e
contains "$n" "${OPT_INCLUDE[@]}"
ret=$?
set -e
if [ $ret -eq 0 ]; then
debug "$i isn't targeted file"
continue
fi
fi
debug " $i"
res=`fc-validate -l $OPT_LANG $i`
if echo $res | grep -q Missing; then
echo "RESULT: FAIL: $i doesn't satisfy $OPT_LANG language coverage."
else
echo "RESULT: PASS: $i satisfy $OPT_LANG language coverage."
fi
fi
done

View File

@ -0,0 +1,4 @@
---
dependencies:
- role: str-common-init

View File

@ -0,0 +1,40 @@
---
- block:
- name: language coverage
script: run-lang-coverage-test --lang "{{ item }}" --path "{{ path_prefix }}" --artifactsdir "{{ remote_artifacts }}" {{ "" if coverage.values is not defined or coverage[item].name is not defined else "--name " + coverage[item].name }} {{ "" if coverage.values is not defined or coverage[item].exclude is not defined else '--exclude "' + (coverage[item].exclude | join('" --exclude "')) + '"'}} {{ "" if coverage.values is not defined or coverage[item].include is not defined else '--include "' + (coverage[item].include | join('" --include "')) + '"'}}
with_items:
- "{{ coverage if coverage.keys is not defined else coverage.keys()|list }}"
- name: generic family assignment
when: families is defined
script: run-family-test --lang {{ item.lang }} --family '{{ item.family }}' --alias {{ item.alias }} --artifactsdir {{ remote_artifacts }} --package {{ package if item.package is not defined else item.package }}
with_items:
- "{{ families }}"
- name: Check the results
shell: |
log="{{ remote_artifacts }}/test.log"
if [ ! -f "$log" ]; then
echo ERROR
echo "Test results not found." 1>&2
elif grep ^ERROR "$log" 1>&2; then
echo ERROR
elif grep ^FAIL "$log" 1>&2; then
echo FAIL
elif grep -q ^PASS "$log"; then
echo PASS
else
echo ERROR
echo "No test results found." 1>&2
fi
register: test_results
- name: Set role result
set_fact:
role_result: "{{ test_results.stdout }}"
role_message: "{{ test_results.stderr|d('test execution error.') }}"
role_result_failed: "{{ test_results.stdout != 'PASS' }}"
role_result_msg: "{{ test_results.stderr|d('test execution error.') }}"
- include_role:
name: str-common-final

31
tests/tests.yml Normal file
View File

@ -0,0 +1,31 @@
- hosts: localhost
tags:
- classic
become: yes
roles:
- role: custom-test-fonts
required_packages:
- bitmap-console-fonts
- bitmap-fangsongti-fonts
- bitmap-fixed-fonts
- bitmap-lucida-typewriter-fonts
path_prefix: /usr/share/fonts/bitmap
coverage:
en:
families:
- lang: en
alias: monospace
family: Console
package: bitmap-console-fonts
- lang: en
alias: monospace
family: Fangsong ti
package: bitmap-fangsongti-fonts
- lang: en
alias: monospace
family: Fixed
package: bitmap-fixed-fonts
- lang: en
alias: monospace
family: LucidaTypewriter
package: bitmap-lucida-typewriter-fonts