From ba74354a1f672da6394eb06866d420e4146b915b Mon Sep 17 00:00:00 2001 From: Python Maint Date: Wed, 14 Jun 2023 06:12:48 +0200 Subject: [PATCH 01/19] Rebuilt for Python 3.12 --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 3bfd9a0..e82e8d5 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -123,6 +123,9 @@ popd %doc %{_pkgdocdir} %changelog +* Wed Jun 14 2023 Python Maint - 20230101-4 +- Rebuilt for Python 3.12 + * Thu Jan 19 2023 Fedora Release Engineering - 20230101-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From ea4723723694db793d98679e910c1430458be1d6 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 6 Jul 2023 20:06:51 -0400 Subject: [PATCH 02/19] Fix build with gettext-0.22 Submitted upstream: https://github.com/fontforge/fontforge/pull/5257 --- ...s-in-French-and-Italian-translations.patch | 181 ++++++++++++++++++ fontforge.spec | 3 + 2 files changed, 184 insertions(+) create mode 100644 0001-Fix-errors-in-French-and-Italian-translations.patch diff --git a/0001-Fix-errors-in-French-and-Italian-translations.patch b/0001-Fix-errors-in-French-and-Italian-translations.patch new file mode 100644 index 0000000..8158ea8 --- /dev/null +++ b/0001-Fix-errors-in-French-and-Italian-translations.patch @@ -0,0 +1,181 @@ +From 472e238cafcff113c7be9815a13ff864540d5ef9 Mon Sep 17 00:00:00 2001 +From: Yaakov Selkowitz +Date: Thu, 6 Jul 2023 19:15:53 -0400 +Subject: [PATCH] Fix errors in French and Italian translations + +With gettext-0.22, these mismatches trigger errors: + +'msgstr' is not a valid C format string, unlike 'msgid'. Reason: In the +directive number 2, the argument size specifier is invalid. +--- + po/fr.po | 36 ++++++++++++++++++------------------ + po/it.po | 8 ++++---- + 2 files changed, 22 insertions(+), 22 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index 26e446b38..cb492d7a0 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -291,7 +291,7 @@ msgstr "chaîne %1$.30s pour %2$.30s" + #. GT: $4 is the changed flag ('*' for the changed items) + #, c-format + msgid "%1$.80s at %2$d from %3$.90s%4$s" +-msgstr "%1$.80s à %2$d de %3$.90hs%4$s" ++msgstr "%1$.80s à %2$d de %3$.90s%4$s" + + #. GT: This is the title for a window showing a bitmap character + #. GT: It will look something like: +@@ -302,7 +302,7 @@ msgstr "%1$.80s à %2$d de %3$.90hs%4$s" + #. GT: $4 is the font name + #, c-format + msgid "%1$.80s at %2$d size %3$d from %4$.80s" +-msgstr "%1$.80s (%2$d) taille %3$d de %4$.80hs" ++msgstr "%1$.80s (%2$d) taille %3$d de %4$.80s" + + #, c-format + msgid "%1$s from lookup subtable %2$.50s" +@@ -7433,7 +7433,7 @@ msgid "" + "Reverting the file will lose those changes.\n" + "Is that what you want?" + msgstr "" +-"La fonte %1$.40s dans le fichier %2$.40hs a été modifiée.\n" ++"La fonte %1$.40s dans le fichier %2$.40s a été modifiée.\n" + "Revenir vous fera perdre toutes les modifications.\n" + "Voulez vous vraiment revenir ?" + +@@ -19925,7 +19925,7 @@ msgid "" + "The fonts %1$.30s and %2$.30s have a different number of glyphs or different " + "encodings" + msgstr "" +-"Les fontes %1$.30s et %2$.30hs n'ont pas le même nombre de glyphes ou des " ++"Les fontes %1$.30s et %2$.30s n'ont pas le même nombre de glyphes ou des " + "codages différents" + + #, c-format +@@ -19933,7 +19933,7 @@ msgid "" + "The fonts %1$.30s and %2$.30s use different types of splines (one quadratic, " + "one cubic)" + msgstr "" +-"Les fontes %1$.30s et %2$.30hs utilisent des courbes de Bézier d'ordres " ++"Les fontes %1$.30s et %2$.30s utilisent des courbes de Bézier d'ordres " + "différents (quadratique et cubique)" + + msgid "The generated font won't work with ATM" +@@ -19968,8 +19968,8 @@ msgid "" + "The glyph %1$.30s in font %2$.30s has a different hint mask on its contours " + "than in %3$.30s" + msgstr "" +-"Le glyphe %1$.30s dans la police %2$.30hs a un masque de hints différent que " +-"dans %3$.30hs" ++"Le glyphe %1$.30s dans la police %2$.30s a un masque de hints différent que " ++"dans %3$.30s" + + #, c-format + msgid "" +@@ -19984,8 +19984,8 @@ msgid "" + "The glyph %1$.30s in font %2$.30s has a different number of references than " + "in %3$.30s" + msgstr "" +-"Le glyphe %1$.30s de la fonte %2$.30hs a un nombre de références différent " +-"dans %3$.30hs" ++"Le glyphe %1$.30s de la fonte %2$.30s a un nombre de références différent " ++"dans %3$.30s" + + #, c-format + msgid "" +@@ -20457,7 +20457,7 @@ msgstr "" + #, c-format + msgid "The outlines of glyph %2$.30s were not found in the font %1$.60s" + msgstr "" +-"Le contours du glyphe %2$.30s n'ont pas été trouvés dans la police %1$.60hs" ++"Le contours du glyphe %2$.30s n'ont pas été trouvés dans la police %1$.60s" + + msgid "The paths that make up this glyph intersect one another" + msgstr "Les chemins qui composent ce glyphe se coupent les uns les autres" +@@ -21042,7 +21042,7 @@ msgstr "Il y a déjà une sous-table avec ce nom, changez de nom SVP" + + #, c-format + msgid "There is already an anchor point named %1$.40s in %2$.40s." +-msgstr "Il y a déjà une ancre appelée %1$.40s dans %2$.40hs." ++msgstr "Il y a déjà une ancre appelée %1$.40s dans %2$.40s." + + msgid "There is another glyph in the font with this name" + msgstr "Il y a un autre glyphe dans la fonte avec ce nom" +@@ -21441,8 +21441,8 @@ msgid "" + "been able to find is %1$.20s-%2$.20s-%4$d.\n" + "Shall I use that or let you search?" + msgstr "" +-"Cette fonte est basée sur le jeu de caractères %1$.20s-%2$.20hs-%3$d, mais " +-"ce que j'ai trouvé de mieux c'est %1$.20hs-%2$.20hs-%4$d.\n" ++"Cette fonte est basée sur le jeu de caractères %1$.20s-%2$.20s-%3$d, mais " ++"ce que j'ai trouvé de mieux c'est %1$.20s-%2$.20s-%4$d.\n" + "Devrais-je utiliser cette valeur ou préférez vous chercher ?" + + msgid "" +@@ -21770,7 +21770,7 @@ msgid "" + "with a 0 offset for this combination. Would you like to alter this kerning " + "class entry (or create a kerning pair for just these two glyphs)?" + msgstr "" +-"Cette paire de crénage (%.20s et %.20hs) est dans une classe de crénage\n" ++"Cette paire de crénage (%.20s et %.20s) est dans une classe de crénage\n" + "avec un déplacement de 0 pour cette combinaison. Voulez-vous modifier cette " + "partie\n" + "de la classe de crénage (ou créer une nouvelle paire rien que pour ces 2 " +@@ -24551,8 +24551,8 @@ msgid "" + "referred to.\n" + "It will not be copied." + msgstr "" +-"Vous essayer de coller une référence vers %1$s dans %2$hs.\n" +-"Mais %1$hs n'existe pas dans cette fonte, et FontForge ne trouve pas le " ++"Vous essayer de coller une référence vers %1$s dans %2$s.\n" ++"Mais %1$s n'existe pas dans cette fonte, et FontForge ne trouve pas le " + "glyphe auquel il se référait.\n" + "Le glyphe ne sera pas copié." + +@@ -24562,8 +24562,8 @@ msgid "" + "But %1$s does not exist in this font.\n" + "Would you like to copy the original splines (or delete the reference)?" + msgstr "" +-"Vous essayer de coller une référence vers %1$s dans %2$hs.\n" +-"Mais %1$hs n'existe pas dans cette fonte.\n" ++"Vous essayer de coller une référence vers %1$s dans %2$s.\n" ++"Mais %1$s n'existe pas dans cette fonte.\n" + "Voulez vous copier le contour d'origine (ou supprimer la référence)?" + + msgid "" +diff --git a/po/it.po b/po/it.po +index e13711485..d0c3ea987 100644 +--- a/po/it.po ++++ b/po/it.po +@@ -2303,7 +2303,7 @@ msgid "" + "Reverting the file will lose those changes.\n" + "Is that what you want?" + msgstr "" +-"Il font %1$.40s nel file %2$.40hs è stato modificato.\n" ++"Il font %1$.40s nel file %2$.40s è stato modificato.\n" + "Ripristinando il file perderai tutte le modifiche.\n" + "È quello che vuoi fare?" + +@@ -5835,7 +5835,7 @@ msgid "" + "The glyph %1$.30s has a different number of contours in font %2$.30s than in " + "%3$.30s" + msgstr "" +-"Il glifo %1$.30s ha un diverso numero di contorni nel font %2$.30hs rispetto " ++"Il glifo %1$.30s ha un diverso numero di contorni nel font %2$.30s rispetto " + "a %3$.30s" + + #, c-format +@@ -6235,8 +6235,8 @@ msgid "" + "been able to find is %1$.20s-%2$.20s-%4$d.\n" + "Shall I use that or let you search?" + msgstr "" +-"Questo font è basato sulla codifica di caratteri %1$.20s-%2$.20hs-%3$d, ma " +-"il migliore che io abbia trovato è %1$.20hs-%2$.20hs-%4$d.\n" ++"Questo font è basato sulla codifica di caratteri %1$.20s-%2$.20s-%3$d, ma " ++"il migliore che io abbia trovato è %1$.20s-%2$.20s-%4$d.\n" + "Devo usare questo valore o preferisci cercare tu stesso?" + + msgid "" +-- +2.41.0 + diff --git a/fontforge.spec b/fontforge.spec index e82e8d5..f2b5116 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -8,6 +8,8 @@ Summary: Outline and bitmap font editor License: GPL-3.0-or-later URL: http://fontforge.github.io/ Source0: https://github.com/fontforge/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +# Fix translations with gettext-0.22, https://github.com/fontforge/fontforge/pull/5257 +Patch0: 0001-Fix-errors-in-French-and-Italian-translations.patch Requires: xdg-utils Requires: autotrace @@ -68,6 +70,7 @@ This package contains documentation files for %{name}. %prep %setup -q +%patch -P 0 -p1 # Remove tests that requires Internet access sed -i '45d;82d;101d;127d' tests/CMakeLists.txt From a0d98a2fed6a78d9b845f820a1f6e3c2880eea90 Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Fri, 7 Jul 2023 10:21:36 +0530 Subject: [PATCH 03/19] Fix fr.po and it.po translations issue --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index f2b5116..962cbe0 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -126,6 +126,9 @@ popd %doc %{_pkgdocdir} %changelog +* Fri Jul 07 2023 Parag Nemade - 20230101-5 +- Fix fr.po and it.po translations issue + * Wed Jun 14 2023 Python Maint - 20230101-4 - Rebuilt for Python 3.12 From 92fda056ca4487194fdeaac3d6a6ca2fa5f788cb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 20:02:08 +0000 Subject: [PATCH 04/19] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 962cbe0..7c7a53f 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -126,6 +126,9 @@ popd %doc %{_pkgdocdir} %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 20230101-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Fri Jul 07 2023 Parag Nemade - 20230101-5 - Fix fr.po and it.po translations issue From da3ade2e6a91a444a318f9f1f035b285f9353c54 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Mon, 7 Aug 2023 22:36:50 -0400 Subject: [PATCH 05/19] Allow potrace as an alternative to autotrace Both autotrace and potrace are supported for bitmap to vector graphics conversion. For flatpaks, potrace is preferred because it is standalone compared to autotrace which (through ImageMagick and pstoedit) has a large dependency tree. --- fontforge.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fontforge.spec b/fontforge.spec index 7c7a53f..1a4c5fd 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -12,7 +12,7 @@ Source0: https://github.com/fontforge/%{name}/archive/%{version}.tar.gz#/ Patch0: 0001-Fix-errors-in-French-and-Italian-translations.patch Requires: xdg-utils -Requires: autotrace +Requires: (autotrace or potrace) Requires: hicolor-icon-theme BuildRequires: gcc-c++ @@ -126,6 +126,9 @@ popd %doc %{_pkgdocdir} %changelog +* Tue Aug 08 2023 Yaakov Selkowitz - 20230101-7 +- Allow potrace as an alternative to autotrace + * Wed Jul 19 2023 Fedora Release Engineering - 20230101-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 44b91146ba81c9fb69552519a0f276d36cad18c0 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 10 Aug 2023 12:09:45 -0400 Subject: [PATCH 06/19] Drop unused libuninameslist dependency libuninameslist usage was replaced by an internal implemenation since the 20220308 release: https://github.com/fontforge/fontforge/commit/70b572a6c2faa8afc5686182500789daf45cf368 --- fontforge.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fontforge.spec b/fontforge.spec index 1a4c5fd..2b63d1d 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -24,7 +24,6 @@ BuildRequires: giflib-devel BuildRequires: libxml2-devel BuildRequires: freetype-devel BuildRequires: desktop-file-utils -BuildRequires: libuninameslist-devel BuildRequires: libXt-devel BuildRequires: xorg-x11-proto-devel BuildRequires: gettext @@ -126,6 +125,9 @@ popd %doc %{_pkgdocdir} %changelog +* Thu Aug 10 2023 Yaakov Selkowitz - 20230101-8 +- Drop unused libuninameslist dependency + * Tue Aug 08 2023 Yaakov Selkowitz - 20230101-7 - Allow potrace as an alternative to autotrace From a3c550aa4b78bbb8994ea8300af762ba0d2fbfaa Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 19:36:31 +0000 Subject: [PATCH 07/19] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 2b63d1d..d838575 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 8%{?dist} +Release: 9%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -125,6 +125,9 @@ popd %doc %{_pkgdocdir} %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 20230101-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Thu Aug 10 2023 Yaakov Selkowitz - 20230101-8 - Drop unused libuninameslist dependency From 417658457780e7475be6219a237c0913cd45c83a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 11:51:49 +0000 Subject: [PATCH 08/19] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index d838575..ce6c57e 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 9%{?dist} +Release: 10%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -125,6 +125,9 @@ popd %doc %{_pkgdocdir} %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 20230101-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 20230101-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From fe895d729a1ac8be3f9ee1211ea62dc5e30b1c24 Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Wed, 28 Feb 2024 08:17:47 +0530 Subject: [PATCH 09/19] Resolves: CVE-2024-25081 and CVE-2024-25082 Signed-off-by: Parag Nemade --- Fix_Splinefont_shell_invocation.patch | 178 ++++++++++++++++++++++++++ fontforge.spec | 9 +- 2 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 Fix_Splinefont_shell_invocation.patch diff --git a/Fix_Splinefont_shell_invocation.patch b/Fix_Splinefont_shell_invocation.patch new file mode 100644 index 0000000..1d75f6c --- /dev/null +++ b/Fix_Splinefont_shell_invocation.patch @@ -0,0 +1,178 @@ +From a64099931ea004a08e074b08ad0984d92c25daa2 Mon Sep 17 00:00:00 2001 +From: Peter Kydas +Date: Tue, 6 Feb 2024 10:23:36 +1100 +Subject: [PATCH] fix splinefont shell command injection + +--- + fontforge/splinefont.c | 125 +++++++++++++++++++++++++++++------------ + 1 file changed, 90 insertions(+), 35 deletions(-) + +diff --git a/fontforge/splinefont.c b/fontforge/splinefont.c +index 239fdc035b..647daee109 100644 +--- a/fontforge/splinefont.c ++++ b/fontforge/splinefont.c +@@ -788,11 +788,14 @@ return( name ); + + char *Unarchive(char *name, char **_archivedir) { + char *dir = getenv("TMPDIR"); +- char *pt, *archivedir, *listfile, *listcommand, *unarchivecmd, *desiredfile; ++ char *pt, *archivedir, *listfile, *desiredfile; + char *finalfile; + int i; + int doall=false; + static int cnt=0; ++ gchar *command[5]; ++ gchar *stdoutresponse = NULL; ++ gchar *stderrresponse = NULL; + + *_archivedir = NULL; + +@@ -827,18 +830,30 @@ return( NULL ); + listfile = malloc(strlen(archivedir)+strlen("/" TOC_NAME)+1); + sprintf( listfile, "%s/" TOC_NAME, archivedir ); + +- listcommand = malloc( strlen(archivers[i].unarchive) + 1 + +- strlen( archivers[i].listargs) + 1 + +- strlen( name ) + 3 + +- strlen( listfile ) +4 ); +- sprintf( listcommand, "%s %s %s > %s", archivers[i].unarchive, +- archivers[i].listargs, name, listfile ); +- if ( system(listcommand)!=0 ) { +- free(listcommand); free(listfile); +- ArchiveCleanup(archivedir); +-return( NULL ); +- } +- free(listcommand); ++ command[0] = archivers[i].unarchive; ++ command[1] = archivers[i].listargs; ++ command[2] = name; ++ command[3] = NULL; // command args need to be NULL-terminated ++ ++ if ( g_spawn_sync( ++ NULL, ++ command, ++ NULL, ++ G_SPAWN_SEARCH_PATH, ++ NULL, ++ NULL, ++ &stdoutresponse, ++ &stderrresponse, ++ NULL, ++ NULL ++ ) == FALSE) { // did not successfully execute ++ ArchiveCleanup(archivedir); ++ return( NULL ); ++ } ++ // Write out the listfile to be read in later ++ FILE *fp = fopen(listfile, "wb"); ++ fwrite(stdoutresponse, strlen(stdoutresponse), 1, fp); ++ fclose(fp); + + desiredfile = ArchiveParseTOC(listfile, archivers[i].ars, &doall); + free(listfile); +@@ -847,22 +862,28 @@ return( NULL ); + return( NULL ); + } + +- /* I tried sending everything to stdout, but that doesn't work if the */ +- /* output is a directory file (ufo, sfdir) */ +- unarchivecmd = malloc( strlen(archivers[i].unarchive) + 1 + +- strlen( archivers[i].listargs) + 1 + +- strlen( name ) + 1 + +- strlen( desiredfile ) + 3 + +- strlen( archivedir ) + 30 ); +- sprintf( unarchivecmd, "( cd %s ; %s %s %s %s ) > /dev/null", archivedir, +- archivers[i].unarchive, +- archivers[i].extractargs, name, doall ? "" : desiredfile ); +- if ( system(unarchivecmd)!=0 ) { +- free(unarchivecmd); free(desiredfile); +- ArchiveCleanup(archivedir); +-return( NULL ); ++ command[0] = archivers[i].unarchive; ++ command[1] = archivers[i].extractargs; ++ command[2] = name; ++ command[3] = doall ? "" : desiredfile; ++ command[4] = NULL; ++ ++ if ( g_spawn_sync( ++ (gchar*)archivedir, ++ command, ++ NULL, ++ G_SPAWN_SEARCH_PATH, ++ NULL, ++ NULL, ++ &stdoutresponse, ++ &stderrresponse, ++ NULL, ++ NULL ++ ) == FALSE) { // did not successfully execute ++ free(desiredfile); ++ ArchiveCleanup(archivedir); ++ return( NULL ); + } +- free(unarchivecmd); + + finalfile = malloc( strlen(archivedir) + 1 + strlen(desiredfile) + 1); + sprintf( finalfile, "%s/%s", archivedir, desiredfile ); +@@ -885,20 +906,54 @@ struct compressors compressors[] = { + + char *Decompress(char *name, int compression) { + char *dir = getenv("TMPDIR"); +- char buf[1500]; + char *tmpfn; +- ++ gchar *command[4]; ++ gint stdout_pipe; ++ gchar buffer[4096]; ++ gssize bytes_read; ++ GByteArray *binary_data = g_byte_array_new(); ++ + if ( dir==NULL ) dir = P_tmpdir; + tmpfn = malloc(strlen(dir)+strlen(GFileNameTail(name))+2); + strcpy(tmpfn,dir); + strcat(tmpfn,"/"); + strcat(tmpfn,GFileNameTail(name)); + *strrchr(tmpfn,'.') = '\0'; +- snprintf( buf, sizeof(buf), "%s < %s > %s", compressors[compression].decomp, name, tmpfn ); +- if ( system(buf)==0 ) +-return( tmpfn ); +- free(tmpfn); +-return( NULL ); ++ ++ command[0] = compressors[compression].decomp; ++ command[1] = "-c"; ++ command[2] = name; ++ command[3] = NULL; ++ ++ // Have to use async because g_spawn_sync doesn't handle nul-bytes in the output (which happens with binary data) ++ if (g_spawn_async_with_pipes( ++ NULL, ++ command, ++ NULL, ++ G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, ++ NULL, ++ NULL, ++ NULL, ++ NULL, ++ &stdout_pipe, ++ NULL, ++ NULL) == FALSE) { ++ //command has failed ++ return( NULL ); ++ } ++ ++ // Read binary data from pipe and output to file ++ while ((bytes_read = read(stdout_pipe, buffer, sizeof(buffer))) > 0) { ++ g_byte_array_append(binary_data, (guint8 *)buffer, bytes_read); ++ } ++ close(stdout_pipe); ++ ++ FILE *fp = fopen(tmpfn, "wb"); ++ fwrite(binary_data->data, sizeof(gchar), binary_data->len, fp); ++ fclose(fp); ++ g_byte_array_free(binary_data, TRUE); ++ ++ return(tmpfn); + } + + static char *ForceFileToHaveName(FILE *file, char *exten) { diff --git a/fontforge.spec b/fontforge.spec index ce6c57e..98d55aa 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 10%{?dist} +Release: 11%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -10,6 +10,9 @@ URL: http://fontforge.github.io/ Source0: https://github.com/fontforge/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz # Fix translations with gettext-0.22, https://github.com/fontforge/fontforge/pull/5257 Patch0: 0001-Fix-errors-in-French-and-Italian-translations.patch +# https://github.com/fontforge/fontforge/pull/5367 +# Fixes CVE-2024-25081 and CVE-2024-25082 +Patch1: https://patch-diff.githubusercontent.com/raw/fontforge/fontforge/pull/5367.patch#/Fix_Splinefont_shell_invocation.patch Requires: xdg-utils Requires: (autotrace or potrace) @@ -70,6 +73,7 @@ This package contains documentation files for %{name}. %prep %setup -q %patch -P 0 -p1 +%patch -P 1 -p1 # Remove tests that requires Internet access sed -i '45d;82d;101d;127d' tests/CMakeLists.txt @@ -125,6 +129,9 @@ popd %doc %{_pkgdocdir} %changelog +* Wed Feb 28 2024 Parag Nemade - 20230101-11 +- Resolves: CVE-2024-25081 and CVE-2024-25082 + * Wed Jan 24 2024 Fedora Release Engineering - 20230101-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 6b1f80e69781f8feae6fc4679f6fd1b38f2464c2 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 7 Jun 2024 14:06:53 +0200 Subject: [PATCH 10/19] Rebuilt for Python 3.13 --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 98d55aa..cf2cade 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 11%{?dist} +Release: 12%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -129,6 +129,9 @@ popd %doc %{_pkgdocdir} %changelog +* Fri Jun 07 2024 Python Maint - 20230101-12 +- Rebuilt for Python 3.13 + * Wed Feb 28 2024 Parag Nemade - 20230101-11 - Resolves: CVE-2024-25081 and CVE-2024-25082 From 4655f4dc0990e5b744efd055c4c6f095d848023b Mon Sep 17 00:00:00 2001 From: Gwyn Ciesla Date: Fri, 14 Jun 2024 16:33:07 -0500 Subject: [PATCH 11/19] Fix 3.13 build --- fontforge.spec | 10 ++++++++-- pyconfig.patch | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 pyconfig.patch diff --git a/fontforge.spec b/fontforge.spec index cf2cade..fcfef18 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 12%{?dist} +Release: 13%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -13,6 +13,7 @@ Patch0: 0001-Fix-errors-in-French-and-Italian-translations.patch # https://github.com/fontforge/fontforge/pull/5367 # Fixes CVE-2024-25081 and CVE-2024-25082 Patch1: https://patch-diff.githubusercontent.com/raw/fontforge/fontforge/pull/5367.patch#/Fix_Splinefont_shell_invocation.patch +Patch2: pyconfig.patch Requires: xdg-utils Requires: (autotrace or potrace) @@ -74,6 +75,7 @@ This package contains documentation files for %{name}. %setup -q %patch -P 0 -p1 %patch -P 1 -p1 +%patch -P 2 -p0 # Remove tests that requires Internet access sed -i '45d;82d;101d;127d' tests/CMakeLists.txt @@ -82,7 +84,8 @@ sed -i '45d;82d;101d;127d' tests/CMakeLists.txt %build export CFLAGS="%{optflags} -fno-strict-aliasing" %cmake -DCMAKE_BUILD_TYPE=Release \ - -DENABLE_WOFF2=ON + -DENABLE_WOFF2=ON \ + -DPYHOOK_INSTALL_DIR=%{python3_sitearch} %cmake_build %install @@ -129,6 +132,9 @@ popd %doc %{_pkgdocdir} %changelog +* Fri Jun 14 2024 Gwyn Ciesla - 20230101-13 +- Patch for Python 3.13 + * Fri Jun 07 2024 Python Maint - 20230101-12 - Rebuilt for Python 3.13 diff --git a/pyconfig.patch b/pyconfig.patch new file mode 100644 index 0000000..cfd90f4 --- /dev/null +++ b/pyconfig.patch @@ -0,0 +1,24 @@ +--- pycontrib/FontCompare/setup.py~ 2022-12-31 23:25:21.000000000 -0600 ++++ pycontrib/FontCompare/setup.py 2024-06-14 15:14:14.119920623 -0500 +@@ -15,7 +15,6 @@ + along with this program. If not, see . + """ + #!/usr/bin/env python +-from distutils.core import setup + from setuptools import setup + setup(name='Font Compare', + version='1.0', +--- fontforge/python.c~ 2022-12-31 23:25:21.000000000 -0600 ++++ fontforge/python.c 2024-06-14 15:38:41.397897757 -0500 +@@ -19633,7 +19633,10 @@ + if ( saved_progname ) + free(saved_progname); + saved_progname = copy_to_wide_string(progname); +- Py_SetProgramName(saved_progname); ++ PyStatus status; ++ PyConfig config; ++ PyConfig_InitPythonConfig(&config); ++ status = PyConfig_SetString(&config, &config.program_name, saved_progname); + } + + static wchar_t ** copy_argv(char *arg0, int argc ,char **argv) { From 943eb5ee68d0e4ed05a72dafbfc052d22e668fbb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 23:26:23 +0000 Subject: [PATCH 12/19] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index fcfef18..7dd5d58 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 13%{?dist} +Release: 14%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -132,6 +132,9 @@ popd %doc %{_pkgdocdir} %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 20230101-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Fri Jun 14 2024 Gwyn Ciesla - 20230101-13 - Patch for Python 3.13 From 6281667ef91283074cb9517aa36e9bf09751260a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 18:36:29 +0000 Subject: [PATCH 13/19] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 7dd5d58..63dbc4f 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 14%{?dist} +Release: 15%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -132,6 +132,9 @@ popd %doc %{_pkgdocdir} %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 20230101-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Wed Jul 17 2024 Fedora Release Engineering - 20230101-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From cf776b66303b49b97ad41ebc6303bacd158bd66b Mon Sep 17 00:00:00 2001 From: Python Maint Date: Tue, 3 Jun 2025 11:00:02 +0200 Subject: [PATCH 14/19] Rebuilt for Python 3.14 --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 63dbc4f..9a43418 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 15%{?dist} +Release: 16%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -132,6 +132,9 @@ popd %doc %{_pkgdocdir} %changelog +* Tue Jun 03 2025 Python Maint - 20230101-16 +- Rebuilt for Python 3.14 + * Thu Jan 16 2025 Fedora Release Engineering - 20230101-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From a138beedb9753bac6636d8691b221ea39b6a259f Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Wed, 28 Aug 2024 19:09:04 +0530 Subject: [PATCH 15/19] Add tmt testcase for CI --- .fmf/version | 1 + plans/fontforge.fmf | 5 +++ tests/{scripts => }/generate-font.py | 0 tests/{scripts => }/generate-sfd.pe | 0 tests/{scripts => }/generate-ttf.pe | 0 tests/{scripts => }/get-font-metadata.py | 0 tests/main.fmf | 5 +++ tests/{scripts => }/run_tests.sh | 0 tests/runtests.sh | 47 ++++++++++++++++++++++++ tests/tests.yml | 9 ----- 10 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 .fmf/version create mode 100644 plans/fontforge.fmf rename tests/{scripts => }/generate-font.py (100%) rename tests/{scripts => }/generate-sfd.pe (100%) rename tests/{scripts => }/generate-ttf.pe (100%) rename tests/{scripts => }/get-font-metadata.py (100%) create mode 100644 tests/main.fmf rename tests/{scripts => }/run_tests.sh (100%) mode change 100644 => 100755 create mode 100755 tests/runtests.sh delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/plans/fontforge.fmf b/plans/fontforge.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/fontforge.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/tests/scripts/generate-font.py b/tests/generate-font.py similarity index 100% rename from tests/scripts/generate-font.py rename to tests/generate-font.py diff --git a/tests/scripts/generate-sfd.pe b/tests/generate-sfd.pe similarity index 100% rename from tests/scripts/generate-sfd.pe rename to tests/generate-sfd.pe diff --git a/tests/scripts/generate-ttf.pe b/tests/generate-ttf.pe similarity index 100% rename from tests/scripts/generate-ttf.pe rename to tests/generate-ttf.pe diff --git a/tests/scripts/get-font-metadata.py b/tests/get-font-metadata.py similarity index 100% rename from tests/scripts/get-font-metadata.py rename to tests/get-font-metadata.py diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..542903b --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,5 @@ +require: +- fontforge +test: bash ./run_tests.sh +framework: shell + diff --git a/tests/scripts/run_tests.sh b/tests/run_tests.sh old mode 100644 new mode 100755 similarity index 100% rename from tests/scripts/run_tests.sh rename to tests/run_tests.sh diff --git a/tests/runtests.sh b/tests/runtests.sh new file mode 100755 index 0000000..a94d8f5 --- /dev/null +++ b/tests/runtests.sh @@ -0,0 +1,47 @@ +#!/bin/bash +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +NAME=fontforge + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm ${NAME} + rlAssertRpm ${NAME}-devel + rlShowPackageVersion ${NAME} + rlRun -t -l "VERSION=$(rpm -q ${NAME} --queryformat='%{version}')" 0 "Get VERSION" + FEDORA_VERSION=$(rlGetDistroRelease) + rlLog "FEDORA_VERSION=${DISTRO_RELEASE}" + rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory" + rlRun "pushd $tmp" + rlFetchSrcForInstalled "${NAME}" + rlRun "rpm --define '_topdir $tmp' -i *src.rpm" + rlRun -t -l "mkdir BUILD" 0 "Creating BUILD directory" + rlRun -t -l "rpmbuild --noclean --nodeps --define '_topdir $tmp' -bp $tmp/SPECS/*spec" + if [ -d BUILD/${NAME}-${VERSION}-build ]; then + rlRun -t -l "pushd BUILD/${NAME}-${VERSION}-build/${NAME}-${VERSION}" + else + rlRun -t -l "pushd BUILD/${NAME}-${VERSION}" + fi + rlRun "set -o pipefail" + rlRun "NOCONFIGURE=1 ./autogen.sh" + rlRun "./configure --disable-static --with-graphite2 --with-gobject --enable-introspection" + rlRun "make check" + rlRun "retval=$?" + rlRun "echo $retval" + rlPhaseEnd + + rlPhaseStartTest + rlRun -t -l "INSTALLED_VERSION=$(hb-info --version|awk 'NR==1 {print $3}')" \ + 0 "Get installed version" + rlAssertEquals "versions should be equal" "${VERSION}" "${INSTALLED_VERSION}" + rlGetTestState + rlLog "Number of failed asserts so far: ${ECODE}" + rlRun "popd" 0 + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $tmp" 0 "Remove tmp directory" + rlPhaseEnd +rlJournalEnd + diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index aaf3946..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,9 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - tests: - - simple: - dir: scripts/ - run: ./run_tests.sh From 24f3eadd43b4123ba5b9da0514b0e4cde1930602 Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Thu, 17 Jul 2025 21:49:13 +0530 Subject: [PATCH 16/19] Update for https://fedoraproject.org/wiki/Changes/CMake_ninja_default (rh#2381004) --- fontforge.spec | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fontforge.spec b/fontforge.spec index 9a43418..9d8b33b 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 16%{?dist} +Release: 17%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -107,9 +107,7 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml %find_lang %{gettext_package} %check -pushd %{__cmake_builddir} -make check -popd +%ctest %files -f %{gettext_package}.lang %doc AUTHORS @@ -132,6 +130,9 @@ popd %doc %{_pkgdocdir} %changelog +* Thu Jul 17 2025 Parag Nemade - 20230101-17 +- Update for https://fedoraproject.org/wiki/Changes/CMake_ninja_default (rh#2381004) + * Tue Jun 03 2025 Python Maint - 20230101-16 - Rebuilt for Python 3.14 From c75fc2832363562d9c1a718ddc107b8f7a6acfd8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 20:41:11 +0000 Subject: [PATCH 17/19] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- fontforge.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontforge.spec b/fontforge.spec index 9d8b33b..335a34e 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -2,7 +2,7 @@ Name: fontforge Version: 20230101 -Release: 17%{?dist} +Release: 18%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -130,6 +130,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml %doc %{_pkgdocdir} %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 20230101-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Thu Jul 17 2025 Parag Nemade - 20230101-17 - Update for https://fedoraproject.org/wiki/Changes/CMake_ninja_default (rh#2381004) From 7f20c24b80e5256095e94fb1b55afbafebef5d73 Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Fri, 10 Oct 2025 13:37:13 +0530 Subject: [PATCH 18/19] Update to 20251009 version (#2402960) --- .gitignore | 1 + fontforge.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 03adcba..c15e946 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ fontforge_full-20100501.tar.bz2 /fontforge-20200314.tar.gz /fontforge-20201107.tar.gz /fontforge-20230101.tar.gz +/fontforge-20251009.tar.gz diff --git a/fontforge.spec b/fontforge.spec index 335a34e..828305d 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -1,8 +1,8 @@ %global gettext_package FontForge Name: fontforge -Version: 20230101 -Release: 18%{?dist} +Version: 20251009 +Release: 1%{?dist} Summary: Outline and bitmap font editor License: GPL-3.0-or-later @@ -130,6 +130,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml %doc %{_pkgdocdir} %changelog +* Fri Oct 10 2025 Parag Nemade - 20251009-1 +- Update to 20251009 version (#2402960) + * Wed Jul 23 2025 Fedora Release Engineering - 20230101-18 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index b0ab3ee..3c609cb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (fontforge-20230101.tar.gz) = 67c21f7e55a78097ef7d7d9abac3add2017400015a6a9dfd56674d933bdba963cb6c4e631ae066026fe1862298d60dd968dec61a9bbee7253dd2f7d105655178 +SHA512 (fontforge-20251009.tar.gz) = 2923c54e10585551c93102d8b7a389c9de3c629c1676fc8c576c9b9c3f1f6fe28f7a1e39fd5a57ab7eeadf0b17d722bf439ca94f0a788ceab6993e1a93ea7d5f From 5e74208b9fc3996a6cb1c3bdcd1b0aa35e24908f Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Fri, 10 Oct 2025 17:44:14 +0530 Subject: [PATCH 19/19] Remove upstreamed patches and add new BR: gtkmm3.0-devel --- fontforge.spec | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/fontforge.spec b/fontforge.spec index 828305d..846dfdd 100644 --- a/fontforge.spec +++ b/fontforge.spec @@ -8,12 +8,6 @@ Summary: Outline and bitmap font editor License: GPL-3.0-or-later URL: http://fontforge.github.io/ Source0: https://github.com/fontforge/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz -# Fix translations with gettext-0.22, https://github.com/fontforge/fontforge/pull/5257 -Patch0: 0001-Fix-errors-in-French-and-Italian-translations.patch -# https://github.com/fontforge/fontforge/pull/5367 -# Fixes CVE-2024-25081 and CVE-2024-25082 -Patch1: https://patch-diff.githubusercontent.com/raw/fontforge/fontforge/pull/5367.patch#/Fix_Splinefont_shell_invocation.patch -Patch2: pyconfig.patch Requires: xdg-utils Requires: (autotrace or potrace) @@ -44,6 +38,8 @@ BuildRequires: shared-mime-info BuildRequires: gtk3-devel BuildRequires: python3-sphinx BuildRequires: make +# 20151009 version requires below +BuildRequires: gtkmm3.0-devel %py_provides python3-fontforge %py_provides python3-psMat @@ -72,14 +68,7 @@ This package contains documentation files for %{name}. %prep -%setup -q -%patch -P 0 -p1 -%patch -P 1 -p1 -%patch -P 2 -p0 - -# Remove tests that requires Internet access -sed -i '45d;82d;101d;127d' tests/CMakeLists.txt - +%autosetup %build export CFLAGS="%{optflags} -fno-strict-aliasing" @@ -132,6 +121,8 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml %changelog * Fri Oct 10 2025 Parag Nemade - 20251009-1 - Update to 20251009 version (#2402960) +- Remove upstream released patches +- Add new BR: gtkmm3.0-devel * Wed Jul 23 2025 Fedora Release Engineering - 20230101-18 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild