Fixes an issue with missing git hash in version metadata of built fonts. Closes #234

This commit is contained in:
Rasmus Andersson 2020-04-04 13:05:03 -07:00
parent 4519bffb7c
commit cd4e4bca3a
5 changed files with 27 additions and 47 deletions

View file

@ -46,9 +46,11 @@ web: all_web
all_const: all_otf all_ttf all_web all_const: all_otf all_ttf all_web
all_const_hinted: all_ttf_hinted all_web_hinted all_const_hinted: all_ttf_hinted all_web_hinted
var: \ var: var_text var_display
var_text: \
$(FONTDIR)/var/Inter.var.woff2 \ $(FONTDIR)/var/Inter.var.woff2 \
$(FONTDIR)/var/Inter.var.otf \ $(FONTDIR)/var/Inter.var.otf
var_display: \
$(FONTDIR)/var/InterDisplay.var.woff2 \ $(FONTDIR)/var/InterDisplay.var.woff2 \
$(FONTDIR)/var/InterDisplay.var.otf $(FONTDIR)/var/InterDisplay.var.otf
all_var: \ all_var: \
@ -73,7 +75,7 @@ all_var: \
# all_var_hinted: $(FONTDIR)/var-hinted/Inter.var.otf $(FONTDIR)/var-hinted/Inter.var.woff2 # all_var_hinted: $(FONTDIR)/var-hinted/Inter.var.otf $(FONTDIR)/var-hinted/Inter.var.woff2
# .PHONY: all_var_hinted # .PHONY: all_var_hinted
.PHONY: all_const all_const_hinted var all_var .PHONY: all_const all_const_hinted var var_text var_display all_var
export PATH := $(PWD)/build/venv/bin:$(PATH) export PATH := $(PWD)/build/venv/bin:$(PATH)
@ -97,23 +99,23 @@ build/%.woff: build/%.ttf
# VF OTF from UFO # VF OTF from UFO
$(FONTDIR)/var/Inter.var.otf: $(all_ufo_masters) version.txt $(FONTDIR)/var/Inter.var.otf: $(all_ufo_masters_text) version.txt
misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) build/ufo/Inter.designspace misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) build/ufo/Inter.designspace
$(FONTDIR)/var/Inter-V.var.otf: $(FONTDIR)/var/Inter.var.otf $(FONTDIR)/var/Inter-V.var.otf: $(FONTDIR)/var/Inter.var.otf
misc/fontbuild rename --family "Inter V" -o $@ $< misc/fontbuild rename --family "Inter V" -o $@ $<
$(FONTDIR)/var/Inter-%.var.otf: build/ufo/Inter-%.designspace $(all_ufo_masters) version.txt $(FONTDIR)/var/Inter-%.var.otf: build/ufo/Inter-%.designspace $(all_ufo_masters_text) version.txt
misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) $< misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) $<
misc/tools/fix-vf-meta.py $@ misc/tools/fix-vf-meta.py $@
$(FONTDIR)/var/InterDisplay.var.otf: $(all_display_ufo_masters) version.txt $(FONTDIR)/var/InterDisplay.var.otf: $(all_ufo_masters_display) version.txt
misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) build/ufo/InterDisplay.designspace misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) build/ufo/InterDisplay.designspace
$(FONTDIR)/var/InterDisplay-V.var.otf: $(FONTDIR)/var/InterDisplay.var.otf $(FONTDIR)/var/InterDisplay-V.var.otf: $(FONTDIR)/var/InterDisplay.var.otf
misc/fontbuild rename --family "Inter Display V" -o $@ $< misc/fontbuild rename --family "Inter Display V" -o $@ $<
$(FONTDIR)/var/InterDisplay-%.var.otf: build/ufo/InterDisplay-%.designspace $(all_display_ufo_masters) version.txt $(FONTDIR)/var/InterDisplay-%.var.otf: build/ufo/InterDisplay-%.designspace $(all_ufo_masters_display) version.txt
misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) $< misc/fontbuild compile-var -o $@ $(FONTBUILD_FLAGS) $<
misc/tools/fix-vf-meta.py $@ misc/tools/fix-vf-meta.py $@

View file

@ -454,9 +454,13 @@ else
echo ")" >> "$GEN_MAKE_FILE" echo ")" >> "$GEN_MAKE_FILE"
echo -e "\t@touch \"\$@\"" >> "$GEN_MAKE_FILE" echo -e "\t@touch \"\$@\"" >> "$GEN_MAKE_FILE"
done done
echo -n "all_ufo_masters :=" >> "$GEN_MAKE_FILE" echo -n "all_ufo_masters_text :=" >> "$GEN_MAKE_FILE"
for style in "${master_styles[@]}"; do for style in "${master_styles[@]}"; do
echo -n " build/ufo/Inter-${style}.ufo" >> "$GEN_MAKE_FILE" echo -n " build/ufo/Inter-${style}.ufo" >> "$GEN_MAKE_FILE"
done
echo "" >> "$GEN_MAKE_FILE"
echo -n "all_ufo_masters_display :=" >> "$GEN_MAKE_FILE"
for style in "${master_styles[@]}"; do
echo -n " build/ufo/InterDisplay-${style}.ufo" >> "$GEN_MAKE_FILE" echo -n " build/ufo/InterDisplay-${style}.ufo" >> "$GEN_MAKE_FILE"
done done
echo "" >> "$GEN_MAKE_FILE" echo "" >> "$GEN_MAKE_FILE"

View file

@ -21,7 +21,7 @@ from glyphsLib.interpolation import apply_instance_data
from fontbuildlib import FontBuilder from fontbuildlib import FontBuilder
from fontbuildlib.util import mkdirs, loadTTFont from fontbuildlib.util import mkdirs, loadTTFont
from fontbuildlib.info import setFontInfo, updateFontVersion from fontbuildlib.info import setFontInfo
from fontbuildlib.name import setFamilyName, renameStylesGoogleFonts from fontbuildlib.name import setFamilyName, renameStylesGoogleFonts
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View file

@ -1,39 +1,11 @@
import subprocess import subprocess
import re import re
import sys
from datetime import datetime from datetime import datetime
from common import getGitHash, getVersion from common import getGitHash, getVersion
from .util import readTextFile, BASEDIR, pjoin from .util import readTextFile, BASEDIR, pjoin
_gitHash = None
def getGitHash():
global _gitHash
if _gitHash is None:
_gitHash = ''
try:
_gitHash = subprocess.check_output(
['git', '-C', BASEDIR, 'rev-parse', '--short', 'HEAD'],
stderr=subprocess.STDOUT,
**_enc_kwargs
).strip()
except:
try:
# git rev-parse --short HEAD > githash.txt
_gitHash = readTextFile(pjoin(BASEDIR, 'githash.txt')).strip()
except:
pass
return _gitHash
_version = None
def getVersion():
global _version
if _version is None:
_version = readTextFile(pjoin(BASEDIR, 'version.txt')).strip()
return _version
def updateFontVersion(font, dummy, isVF): def updateFontVersion(font, dummy, isVF):
if dummy: if dummy:
version = "1.0" version = "1.0"
@ -41,8 +13,11 @@ def updateFontVersion(font, dummy, isVF):
now = datetime(2016, 1, 1, 0, 0, 0, 0) now = datetime(2016, 1, 1, 0, 0, 0, 0)
else: else:
version = getVersion() version = getVersion()
buildtag = getGitHash() buildtag, buildtagErrs = getGitHash()
now = datetime.utcnow() now = datetime.utcnow()
if buildtag == "" or len(buildtagErrs) > 0:
buildtag = "src"
print("warning: getGitHash() failed: %r" % buildtagErrs, file=sys.stderr)
versionMajor, versionMinor = [int(num) for num in version.split(".")] versionMajor, versionMinor = [int(num) for num in version.split(".")]
font.info.version = version font.info.version = version
font.info.versionMajor = versionMajor font.info.versionMajor = versionMajor

View file

@ -36,23 +36,22 @@ def readTextFile(filename):
_gitHash = None _gitHash = None
def getGitHash(): _gitHashErrs = []
def getGitHash(): # returns tuple (hash :string, errors :string[])
global _gitHash global _gitHash
if _gitHash is None: if _gitHash is None:
_gitHash = '' _gitHash = ''
args = ['git', '-C', BASEDIR, 'rev-parse', '--short', 'HEAD']
try: try:
_gitHash = subprocess.check_output( _gitHash = subprocess.check_output(args, stderr=subprocess.STDOUT, **_enc_kwargs).strip()
['git', '-C', BASEDIR, 'rev-parse', '--short', 'HEAD'],
stderr=subprocess.STDOUT,
**_enc_kwargs
).strip()
except: except:
_gitHashErrs.append(sys.exc_info()[0])
try: try:
# git rev-parse --short HEAD > githash.txt # git rev-parse --short HEAD > githash.txt
_gitHash = readTextFile(pjoin(BASEDIR, 'githash.txt')).strip() _gitHash = readTextFile(pjoin(BASEDIR, 'githash.txt')).strip()
except: except:
pass _gitHashErrs.append(sys.exc_info()[0])
return _gitHash return (_gitHash, _gitHashErrs)
_version = None _version = None