Bug 1854348 - fontawesome-fonts-5.13.1 no longer provides font(fontawesome), breaks other packages
Summary: fontawesome-fonts-5.13.1 no longer provides font(fontawesome), breaks other p...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: fontawesome-fonts
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: Fabio Alessandro Locati
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1853930 1853931 1853932 1853933 1853934 1853935 1853936
TreeView+ depends on / blocked
 
Reported: 2020-07-07 09:10 UTC by Miro Hrončok
Modified: 2020-07-08 16:22 UTC (History)
7 users (show)

Fixed In Version: fontawesome-fonts-1:4.7.0-9.fc33
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-07-08 16:22:30 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2020-07-07 09:10:37 UTC
After the recent upgrade to fontawesome-fonts-5.13.1-1.fc33, nothing provides font(fontawesome).


$ repoquery --releasever=32 --repo=fedora{,-source} --whatprovides 'font(fontawesome)'
fontawesome-fonts-0:4.7.0-8.fc32.noarch

$ repoquery --releasever=33 --repo=fedora{,-source} --whatprovides 'font(fontawesome)'
(nothing)

$ repoquery --releasever=33 --repo=fedora{,-source} --whatrequires 'font(fontawesome)'
libgpuarray-doc-0:0.7.6-8.fc33.noarch
libsemigroups-0:1.2.1-1.fc33.src
libsemigroups-doc-0:1.2.1-1.fc33.noarch
python-BTrees-0:4.7.2-2.fc33.src
python-BTrees-doc-0:4.7.2-2.fc33.noarch
python-cvxopt-0:1.2.5-2.fc33.src
python-networkx-doc-0:2.4-4.fc33.noarch
python-sphinx_rtd_theme-doc-0:0.4.3-13.fc33.noarch
python-theano-doc-0:1.0.4-6.fc33.1.noarch
python3-sphinx_rtd_theme-0:0.4.3-13.fc33.noarch

Comment 1 Miro Hrončok 2020-07-07 09:18:47 UTC
145 package BuildRequire python3-sphinx_rtd_theme, now fail to build from source. Nominating as a prioritized bug.

Comment 2 Fabio Alessandro Locati 2020-07-07 10:32:29 UTC
Hi,

I'm very sorry for this.

The old version was providing:
config(fontawesome-fonts) = 4.7.0-8.fc33
font(fontawesome)
fontawesome-fonts = 4.7.0-8.fc33

While the new one provides:
config(fontawesome-fonts) = 5.13.1-1.fc33
font(fontawesome5brands)
font(fontawesome5brandsregular)
font(fontawesome5free)
font(fontawesome5freeregular)
font(fontawesome5freesolid)
fontawesome-fonts = 5.13.1-1.fc33
metainfo()
metainfo(fontawesome.metainfo.xml)

Speaking on IRC, my understanding is that there are 3 possible ways to fix this:
1. create a link from /usr/share/fonts/fontawesome/Font Awesome 5 Free-Regular-400.otf to /usr/share/fonts/fontawesome/FontAwesome.otf so that the new package provides the expected font. Being a major release, some glyphs have been dropped/renamed, but the majority should still work
2. epoch the package, move it back to 4 and create fontawesome5-fonts for FA5
3. leave the package as is and create fontawesome4-fonts for FA4

What would be the best approach to this?

Comment 3 Akira TAGOH 2020-07-07 11:04:59 UTC
Right. Apparently upstream has made changes a lot between 4 and 5.

https://fontawesome.com/how-to-use/on-the-desktop/setup/upgrading-from-version-4

(In reply to Fabio Alessandro Locati from comment #2)
> 1. create a link from /usr/share/fonts/fontawesome/Font Awesome 5
> Free-Regular-400.otf to /usr/share/fonts/fontawesome/FontAwesome.otf so that
> the new package provides the expected font. Being a major release, some
> glyphs have been dropped/renamed, but the majority should still work

If they are exactly same, that should works. but is it really same?

> 2. epoch the package, move it back to 4 and create fontawesome5-fonts for FA5

As it is stated at https://github.com/FortAwesome/Font-Awesome/tree/4f4cb7c2f55d14d24f10390ebfeab0d25af612f3, 4 is EOL'd. the main package name should be provided for 5 or later.

> 3. leave the package as is and create fontawesome4-fonts for FA4

So this way looks good to me and better correcting something in the dependant packages for 5 in the future.

> 
> What would be the best approach to this?

Comment 4 Parag Nemade 2020-07-07 11:11:20 UTC
yeah it happens when upstream change font family names or any of inside font file metadata info.

1) I think other packages can be moved to use "font(fontawesome5free)" instead of "font(fontawesome)" now
OR
2) add additional virtual Provides: font(fontawesome) in rawhide

Comment 5 Nicolas Mailhot 2020-07-07 11:12:30 UTC
Hi,

At the desktop and server level, you need to add fontconfig aliasing, so the old name is aliased to the new one (and the new one should be something without version, to avoid breakage at the next release).

If there is no symbol overlap between font files, or if the overlaps do not matter, all font files should be aliased to a single unified font family (you can check in the droid package how such stacking in a signle font family can be achieved)

If there *is* symbol overlap and users need to be able to disambiguate between overlapping symbol versions, you need to create as many (synthetic) font families as necessary to insure symbols are reacheable.

This sorting work will give you the number of subpackages to create, since our guidelines mandate separating disctinct logical font families indistinct subpackages.

Unfortunately, font provides will be broken because fontconfig does not permit consulting new fontconfig rules at package build time. I reported that to fontconfig maintainers ages ago, back when they were using bugzilla, and reported it again a few months ago
https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/225


As long as you do all that things will work transparently in apps and font lists, for any app that accesses fonts via fontconfig (ie, all that matter nowadays).


There is the special case of apps that access fonts via file paths. This is broken for OpenType files, since OpenType allows the spreading of a font family over multiple files, and all the major font projects I know relayouted their files at one time or another for technical reasons.


Apps that access font families via file paths (mostly old games and CSS-using webapps) are required to rebuild their font configuration every time one of the font project they use relayouts. This can be done via manual config changes or by calling fontconfig at build time to ask it what the current file paths are. The gaming SIG did the second recently because some major font projects had relayouted between F31 and F32.


Above all you should not take the cop out of publishing several slightly different versions of the same font family. That seems to work at first but quickly degenerates into problems when two apps use different versions of the same thing with slightly different behaviour.

Multipackaging (be it multi version, or multi format) is prohibited by our guidelines and requires FPC approval (quite heavy handed process but that was the only way to prevent packagers from taking the easy initial way out, and dealing with years of problems afterwards).

Comment 6 Fabio Alessandro Locati 2020-07-07 13:54:32 UTC
Version fontawesome-fonts-5.13.1-2.fc33 is going in the next comp.
Hopefully is solves the problem, since it provides:

config(fontawesome-fonts) = 5.13.1-1.fc33
font(fontawesome)
font(fontawesome5brands)
font(fontawesome5brandsregular)
font(fontawesome5free)
font(fontawesome5freeregular)
font(fontawesome5freesolid)
fontawesome-fonts = 5.13.1-1.fc33


Thanks a lot Nicolas for all the help and support you provided :-)

Comment 7 Fedora Update System 2020-07-07 14:04:31 UTC
FEDORA-2020-14eda4c7a7 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-14eda4c7a7

Comment 8 Miro Hrončok 2020-07-07 14:08:46 UTC
Thanks for the awesomely quick fix! However I'm not sure if providing font(fontawesome) will be good enough :/

For example, python-sphinx_rtd_theme currently has:
	
ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.eot .
ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.svg .
ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.ttf .
ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.woff .
ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.woff2 .

And the files are not packaged, correct? I can only assume other packages do similar things.

Comment 9 Fabio Alessandro Locati 2020-07-07 14:16:44 UTC
/usr/share/fonts/fontawesome/fontawesome-webfont.ttf was provided by that package, while the others were provided by fontawesome-fonts-web.

The ttf file got dropped since upstream affirms that otf is to be preferred over the ttf. We were shipping both, which creates QA problems.

The other files are still in the same package (fontawesome-fonts-web) but got renamed to:
/usr/share/fonts/fontawesome/fa-regular-400.eot
/usr/share/fonts/fontawesome/fa-regular-400.svg
/usr/share/fonts/fontawesome/fa-regular-400.woff
/usr/share/fonts/fontawesome/fa-regular-400.woff2

we could provide symlinks for those, but not sure it would be the best way

Comment 10 Fabio Alessandro Locati 2020-07-08 07:50:28 UTC
The effects of the update have been far greater than my expectation.
I've epoched and rollback the package that is now back at 4.7.0-8.
The update should be in the next comp.
I will work on a more sustainable update proposal/update path following the system-wide change process.
Thanks a lot for your suggestions on how this change can happen in a way that is sustainable for dependent packages.

Comment 11 Fedora Update System 2020-07-08 07:53:33 UTC
FEDORA-2020-c5957bcd91 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-c5957bcd91

Comment 12 Miro Hrončok 2020-07-08 09:40:13 UTC
Thanks for the rollback, Fabio!

Comment 13 Miro Hrončok 2020-07-08 10:56:48 UTC
 Problem: package fontawesome-fonts-web-5.13.1-1.fc33.noarch requires fontawesome-fonts = 5.13.1-1.fc33, but none of the providers can be installed
  - cannot install both fontawesome-fonts-5.13.1-1.fc33.noarch and fontawesome-fonts-1:4.7.0-8.fc33.noarch

%package web
...
Requires:	%{fontname}-fonts = %{version}-%{release}

This need an epoch. I'll correct it.

Comment 14 Fedora Update System 2020-07-08 11:03:40 UTC
FEDORA-2020-6575d6210a has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-6575d6210a


Note You need to log in before you can comment on or make changes to this bug.