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/README.md b/README.md new file mode 100644 index 0000000..5369e14 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Fedora langpacks package + +This package enables langpacks for glibc, hunspell dictionaries, KDE, +and other packages, as well has default language support +(fonts and input methods) for languages. + +## Meta-package structure + +``` +langpacks-* -> langpacks-{core,fonts}-* -> default-fonts-* +``` + +### Default fonts + +``` +default-fonts -> default-fonts-{core,cjk,other}-* -> default-fonts-* +``` + +``` +default-fonts-core-* = default-core-{sans,mono,serif,emoji,math} +default-fonts-cjk-* = default-fonts-cjk-{sans,mono,serif} +default-fonts-other-* = default-fonts-other-{sans,mono,serif} +``` + +## FAQ + +### [Q] How to remove a default font or langpack meta-package? + +Because of the chains of meta-packages it can be a little daunting to remove +default fonts for example (ie without inducing dnf to remove lots of +default packages). + +But it can be done easily with for example: + +``` +sudo dnf remove google-noto-sans--fonts --noautoremove +``` +or +``` +sudo dnf remove default-fonts-LANGCODE --noautoremove +``` + +Though it is recommended to use the default-fonts in general. diff --git a/langpacks.spec b/langpacks.spec index 9f171b0..1d2d005 100644 --- a/langpacks.spec +++ b/langpacks.spec @@ -1,6 +1,6 @@ Name: langpacks -Version: 4.2 -Release: 5%{?dist} +Version: 4.3 +Release: 3%{?dist} Summary: Langpacks meta-package License: GPL-2.0-or-later @@ -44,10 +44,17 @@ Langpack meta-package to provide individual langpacks packages. # meta: dependencies foe langpacks meta package # requires: required packages by meta package # recommends: recommended packages by meta package +# only_default_font: boolean variable to generate only default-fonts package for any language # # Adding fedora_ prefix to inputmethod and meta.requires/meta.recommends will be available for Fedora only. # # See defcorepkg, deffontpkg, and defmetapkg for package template + +# Note: Adding new ll_cc code (not ll) may needs extra work in gnome-software +# to pick them up properly. +# See https://gitlab.gnome.org/GNOME/gnome-software/-/blob/main/plugins/fedora-langpacks/gs-plugin-fedora-langpacks.c?ref_type=heads#L48 +# + %{lua: local core_font_package_list if tonumber(rpm.expand("0%{?rhel}")) ~= 0 and tonumber(rpm.expand("0%{?rhel}")) > 9 then @@ -157,8 +164,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -168,8 +174,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -179,8 +184,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -224,8 +228,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -235,8 +238,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -246,8 +248,7 @@ local langpacks_package_list = { sans="google-noto-sans-cherokee-vf-fonts", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -257,8 +258,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -268,8 +268,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -279,8 +278,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -290,8 +288,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -301,8 +298,7 @@ local langpacks_package_list = { sans="google-noto-sans-thaana-vf-fonts", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -312,8 +308,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -323,8 +318,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -347,8 +341,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -358,8 +351,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -369,8 +361,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -380,8 +371,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -391,8 +381,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -413,8 +402,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -424,8 +412,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -435,8 +422,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -446,8 +432,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -457,8 +442,7 @@ local langpacks_package_list = { sans="google-noto-sans-gothic-fonts", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -519,8 +503,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -530,8 +513,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -541,8 +523,7 @@ local langpacks_package_list = { sans="google-noto-sans-armenian-vf-fonts", serif="google-noto-serif-armenian-vf-fonts", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -552,8 +533,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -563,19 +543,29 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} }, }, + { lang="ii", fclang="ii", langname="Sichuan Yi", default={ + sans="google-noto-sans-yi-fonts", + serif="", + mono="" }, + recommends={ "sil-nuosu-fonts" + }, + inputmethod="ibus-m17n", + meta={ requires={}, + recommends={} + }, + only_default_font=true, + }, { lang="is", fclang="", langname="Icelandic", default={ sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -585,8 +575,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -596,8 +585,7 @@ local langpacks_package_list = { sans="google-noto-sans-canadian-aboriginal-vf-fonts", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -607,12 +595,11 @@ local langpacks_package_list = { sans="", -- Use core_font_package_list if you want to have common fonts for CJK serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="ibus-anthy", meta={ requires={}, recommends={}, - fedora_recommends={ "(uim-anthy if uim)" } + fedora_recommends={ "(uim-anthy if uim)" } }, }, { lang="kab", fclang="", langname="Kabyle", default={ @@ -642,8 +629,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -687,8 +673,7 @@ local langpacks_package_list = { sans="", -- Use core_font_package_list if you want to have common fonts for CJK serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="ibus-hangul", meta={ requires={}, recommends={} @@ -698,8 +683,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -709,8 +693,7 @@ local langpacks_package_list = { sans="google-noto-sans-lao-vf-fonts", serif="google-noto-serif-lao-vf-fonts", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -720,8 +703,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -731,8 +713,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -754,8 +735,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -788,8 +768,7 @@ local langpacks_package_list = { sans="google-noto-sans-meetei-mayek-vf-fonts", serif="", mono="" }, - recommends={ "", - }, + recommends={}, inputmethod="ibus-m17n", meta={ requires={}, recommends={} @@ -812,8 +791,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -823,8 +801,7 @@ local langpacks_package_list = { sans="sil-padauk-fonts", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -834,8 +811,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -858,8 +834,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -869,8 +844,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -880,8 +854,7 @@ local langpacks_package_list = { sans="google-noto-sans-nko-fonts", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -891,8 +864,7 @@ local langpacks_package_list = { sans="", serif="", mono="" }, - recommends={ - }, + recommends={}, inputmethod="", meta={ requires={}, recommends={} @@ -1556,10 +1528,12 @@ local function defappstream(table) sdf = defappstream_metabody(sdf, "cjk", "Chinese/Japanese/Korean") for i = 1, #table do - slpc = defappstream_body(slpc, "localization", "LangPack-Core", table[i]["lang"], table[i]["lang"], table[i]["langname"], "Core Localization support", "Core Meta-package to install default font, glibc locale and input-method if available.") - slp = defappstream_body(slp, "localization", "LangPack", table[i]["lang"], table[i]["lang"], table[i]["langname"], "Localization support", "Meta-package to install available langpacks for the language available for the installed packages.") sdf = defappstream_body(sdf, "font", "default-fonts", table[i]["lang"], table[i]["fclang"], table[i]["langname"], "Localization Font support", "Core font package to install default font.") - slf = defappstream_body(slf, "font", "langpacks-fonts", table[i]["lang"], table[i]["fclang"], table[i]["langname"], "Localization Font support", "Meta-package to install extra font.") + if not table[i]["only_default_font"] then + slpc = defappstream_body(slpc, "localization", "LangPack-Core", table[i]["lang"], table[i]["lang"], table[i]["langname"], "Core Localization support", "Core Meta-package to install default font, glibc locale and input-method if available.") + slp = defappstream_body(slp, "localization", "LangPack", table[i]["lang"], table[i]["lang"], table[i]["langname"], "Localization support", "Meta-package to install available langpacks for the language available for the installed packages.") + slf = defappstream_body(slf, "font", "langpacks-fonts", table[i]["lang"], table[i]["fclang"], table[i]["langname"], "Localization Font support", "Meta-package to install extra font.") + end end rpm.define("langpacks_metainfo_lpc " .. defappstream_close(slpc)) @@ -1591,6 +1565,7 @@ for i = 1, #langpacks_package_list do local im = (tonumber(rpm.expand("0%{?fedora}")) ~= 0 and langpacks_package_list[i]["fedora_inputmethod"] ~= nil and langpacks_package_list[i]["fedora_inputmethod"] or langpacks_package_list[i]["inputmethod"]) local fclang = (langpacks_package_list[i]["fclang"] == "" and string.gsub(lang, "_", "-") or langpacks_package_list[i]["fclang"]) local prov = "" + local only_default_pkg = langpacks_package_list[i]["only_default_font"] if orth ~= "" then --Try to validate orth in table @@ -1672,16 +1647,22 @@ for i = 1, #langpacks_package_list do deffontpkg("default-fonts-" .. lang, "default fonts", langname, append_obsolete(default_deps, "langpacks-core-font-" .. lang)) end end - deffontpkg("langpacks-fonts-" .. lang, "extra fonts", langname, append_obsolete(extra_deps, "default-fonts-extra-" .. lang)) + if only_default_pkg == nil then + deffontpkg("langpacks-fonts-" .. lang, "extra fonts", langname, append_obsolete(extra_deps, "default-fonts-extra-" .. lang)) + end + end + if only_default_pkg == nil then + defcorepkg(lang, fclang, langname, im) end - defcorepkg(lang, fclang, langname, im) --Generate langpacks-* meta packages - local metadeps = (tonumber(rpm.expand("0%{?fedora}")) ~= 0 and langpacks_package_list[i]["meta"]["fedora_requires"] ~= nil and langpacks_package_list[i]["meta"]["fedora_requires"] or langpacks_package_list[i]["meta"]["requires"]) - local metarecd = (tonumber(rpm.expand("0%{?fedora}")) ~= 0 and langpacks_package_list[i]["meta"]["fedora_recommends"] ~= nil and langpacks_package_list[i]["meta"]["fedora_recommends"] or langpacks_package_list[i]["meta"]["recommends"]) - local deps = build_deps("", "Requires", drop_duplicate(metadeps)) - deps = build_deps(deps, "Recommends", drop_duplicate(metarecd)) - defmetapkg(lang, fclang, langname, deps) + if only_default_pkg == nil then + local metadeps = (tonumber(rpm.expand("0%{?fedora}")) ~= 0 and langpacks_package_list[i]["meta"]["fedora_requires"] ~= nil and langpacks_package_list[i]["meta"]["fedora_requires"] or langpacks_package_list[i]["meta"]["requires"]) + local metarecd = (tonumber(rpm.expand("0%{?fedora}")) ~= 0 and langpacks_package_list[i]["meta"]["fedora_recommends"] ~= nil and langpacks_package_list[i]["meta"]["fedora_recommends"] or langpacks_package_list[i]["meta"]["recommends"]) + local deps = build_deps("", "Requires", drop_duplicate(metadeps)) + deps = build_deps(deps, "Recommends", drop_duplicate(metarecd)) + defmetapkg(lang, fclang, langname, deps) + end end --Generate AppStream files @@ -1793,6 +1774,19 @@ DESTDIR=%{buildroot} appstream-util split-appstream org.fedoraproject.default-fo DESTDIR=%{buildroot} appstream-util split-appstream org.fedoraproject.langpacks-fonts.xml %changelog +* Thu Jul 16 2026 Fedora Release Engineering - 4.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Tue May 12 2026 Parag Nemade - 4.3-2 +- Add functionality to only generate default-fonts for any language + +* Mon Mar 02 2026 Jens Petersen - 4.3-1 +- add ii langpack for Sichuan Yi (Nuosu) +- add README.md (#2237646) + +* Fri Jan 16 2026 Fedora Release Engineering - 4.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Thu Jul 24 2025 Fedora Release Engineering - 4.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/plans/langpacks.fmf b/plans/langpacks.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/langpacks.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/tests/check-default-font-installed.sh b/tests/check-default-font-installed.sh old mode 100644 new mode 100755 index fcc5152..99491ee --- a/tests/check-default-font-installed.sh +++ b/tests/check-default-font-installed.sh @@ -1,34 +1,36 @@ #!/bin/bash +set -e +echo "First check installed langpacks list" +sudo dnf list --installed| grep langpacks -for pkg in `cat /tmp/langpacks-packages-list.txt`; do -sudo dnf install $pkg -y --quiet +echo "Check hi language" +sudo dnf list --installed|grep google-noto-sans-devanagari-vf-fonts retval=$? echo $retval if [ $retval -ne 0 ]; then - echo "$pkg is not installed" + echo "langpacks-core-hi failed to install google-noto-sans-devanagari-vf-fonts as default font package" else - echo "$pkg is successfully installed" + echo "langpacks-core-hi installed with default font google-noto-sans-devanagari-vf-fonts package" fi -done -# Check hi language -sudo dnf list installed|grep lohit-devanagari-fonts +echo "Check ja language" +sudo dnf list --installed|grep google-noto-sans-cjk-vf-fonts retval=$? echo $retval if [ $retval -ne 0 ]; then - echo "default-fonts-hi failed to install lohit-devanagari-fonts as default font package" + echo "langpacks-core-ja failed to install google-noto-sans-cjk-vf-fonts as default font package" else - echo "default-fonts-hi installed with default font lohit-devanagari-fonts package" + echo "langpacks-core-ja installed with default font google-noto-sans-cjk-vf-fonts package" fi -# Check zh_CN language -sudo dnf list installed|grep google-noto-sans-cjk-vf-fonts +echo "Check zh_CN language" +sudo dnf list --installed|grep google-noto-sans-cjk-vf-fonts retval=$? echo $retval if [ $retval -ne 0 ]; then - echo "default-fonts-zh_CN failed to install google-noto-sans-cjk-vf-fonts as default font package" + echo "langpacks-core-zh_CN failed to install google-noto-sans-cjk-vf-fonts as default font package" else - echo "default-fonts-zh_CN installed with default font google-noto-sans-cjk-vf-fonts package" + echo "langpacks-core-zh_CN installed with default font google-noto-sans-cjk-vf-fonts package" fi diff --git a/tests/langpacks-packages-list.txt b/tests/langpacks-packages-list.txt deleted file mode 100644 index 9933bd9..0000000 --- a/tests/langpacks-packages-list.txt +++ /dev/null @@ -1,96 +0,0 @@ -default-fonts-af -default-fonts-am -default-fonts-ar -default-fonts-as -default-fonts-ast -default-fonts-be -default-fonts-bg -default-fonts-bn -default-fonts-bo -default-fonts-br -default-fonts-bs -default-fonts-ca -default-fonts-chr -default-fonts-cs -default-fonts-cy -default-fonts-da -default-fonts-de -default-fonts-dv -default-fonts-dz -default-fonts-el -default-fonts-en -default-fonts-eo -default-fonts-es -default-fonts-et -default-fonts-eu -default-fonts-fa -default-fonts-fi -default-fonts-fr -default-fonts-ga -default-fonts-gl -default-fonts-got -default-fonts-gu -default-fonts-he -default-fonts-hi -default-fonts-hr -default-fonts-hu -default-fonts-hy -default-fonts-ia -default-fonts-id -default-fonts-is -default-fonts-it -default-fonts-iu -default-fonts-ja -default-fonts-ka -default-fonts-kab -default-fonts-kk -default-fonts-km -default-fonts-kn -default-fonts-ko -default-fonts-ku -default-fonts-lo -default-fonts-lt -default-fonts-lv -default-fonts-mai -default-fonts-mk -default-fonts-ml -default-fonts-mr -default-fonts-ms -default-fonts-my -default-fonts-nb -default-fonts-ne -default-fonts-nl -default-fonts-nn -default-fonts-nqo -default-fonts-nr -default-fonts-nso -default-fonts-or -default-fonts-pa -default-fonts-pl -default-fonts-pt -default-fonts-ro -default-fonts-ru -default-fonts-si -default-fonts-sk -default-fonts-sl -default-fonts-sq -default-fonts-sr -default-fonts-ss -default-fonts-sv -default-fonts-syr -default-fonts-ta -default-fonts-te -default-fonts-th -default-fonts-tn -default-fonts-tr -default-fonts-ts -default-fonts-uk -default-fonts-ur -default-fonts-ve -default-fonts-vi -default-fonts-xh -default-fonts-yi -default-fonts-zh_CN -default-fonts-zh_HK -default-fonts-zh_TW -default-fonts-zu diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..a51e055 --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,4 @@ +require: +- langpacks-core-ja +test: bash ./check-default-font-installed.sh +framework: shell diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index ce07ce9..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,39 +0,0 @@ -- hosts: localhost - vars: - - artifacts: "{{ lookup('env', 'TEST_ARTIFACTS')|default('./artifacts', true) }}" - tags: - - classic - remote_user: root - tasks: - - name: Install required packages - dnf: - name: - - langpacks-core-hi - - langpacks-core-zh_CN - - - name: Install the test files - copy: src={{ item.file }} dest=/tmp/{{ item.dest }} mode=0755 - with_items: - - {file: check-default-font-installed.sh, dest: check-default-font-installed.sh } - - - name: Install the test data files - copy: src={{ item.file }} dest=/tmp/{{ item.dest }} mode=0644 - with_items: - - {file: langpacks-packages-list.txt, dest: langpacks-packages-list.txt } - - - name: Test block - block: - - name: Execute the tests - shell: | - /tmp/check-default-font-installed.sh &> /tmp/test.log && result=pass || result=fail - echo -e "results:\n- {result: $result, test: simple}" > /tmp/results.yml - - always: - - name: Pull out the logs - fetch: - dest: "{{ artifacts }}/" - src: "{{ item }}" - flat: yes - with_items: - - /tmp/test.log - - /tmp/results.yml