Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 2244503

Summary: Fixes for various regressions related to i18n/l10n regression, missing Recommends, and typos
Product: [Fedora] Fedora Container Images Reporter: Debarshi Ray <debarshir>
Component: fedora-toolboxAssignee: Debarshi Ray <debarshir>
Status: CLOSED WORKSFORME QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 39CC: awilliam, debarshir, fedoraproject, harrymichal, lkenfwq83r984+RHBUGS, ogutierr, petersen, sumukher, travier
Target Milestone: ---Keywords: i18n, Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: AcceptedFreezeException
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-10-27 12:19:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2143447, 2216766    

Description Debarshi Ray 2023-10-16 16:02:24 UTC
This bug report is about a collection of regressions in the fedora-toolbox image for Fedora 39 and onwards when compared to the fedora-toolbox:38 image.

It's missing various localization bits like translations for programs and manuals:

* All non-English translations for all programs, such as LC_MESSAGES and LC_TIME, are missing, except for those coming from glibc-all-langpacks.  eg., see:
  $ LANG=cs_CZ.UTF-8 cp foo bar
  cp: cannot stat 'foo': Adresář nebo soubor neexistuje

Only the part coming from glibc is translated.  The part coming from coreutils isn't.  There are lots and lots of such packages.  eg., bash, coreutils, dnf, grep, rpm, sed, tar, etc..

Toolbx users do care about internationalization and localization, which is why have tried to iron out these things over time.  eg., https://github.com/containers/toolbox/issues/60

* Any package that has translated manuals marked with %lang() in their %files section will have those translations missing.  eg., man-db, passwd, psmisc, etc..

Missing weak dependencies due to the use of --exclude-weakdeps in the fedora-container-toolbox.ks file.

The fedora-container-toolbox.ks file has an obvious typo where the %end and %post markers went missing.  This conflates the %pre and %post sections into one %pre section.

Comment 1 Fedora Blocker Bugs Application 2023-10-16 16:06:45 UTC
Proposed as a Freeze Exception for 39-final by Fedora user rishi using the blocker tracking app because:

 All of these are regressions arising from this Fedora 39 Change:
https://fedoraproject.org/wiki/Changes/ToolbxReleaseBlocker

It will be sad to have known regressions from a Change that wants to:
"... improve the quality of the containerized interactive command line Toolbx environments on Fedora by adding formal requirements to ensure that they are usable when a new Fedora is released. This will bring them closer to the reliability of similar environments running directly on the host operating system."

Some of these are already fixed for the fedora-toolbox:40 image and there have been no known problems so far.

Finally, these changes only impact the toolbox RPM, and no other part of the distribution.  If necessary, they can be reverted.

The other alternative is to re-spin the fedora-toolbox:39 image  post Fedora 39 GA.

Comment 2 Debarshi Ray 2023-10-16 16:20:28 UTC
(In reply to Debarshi Ray from comment #0)
> The fedora-container-toolbox.ks file has an obvious typo where the %end and
> %post markers went missing.  This conflates the %pre and %post sections into
> one %pre section.

Here's a pull request for the f39 branch:
https://pagure.io/fedora-kickstarts/pull-request/994

... and it was already merged into main for Rawhide/F40 a few days ago:
https://pagure.io/fedora-kickstarts/pull-request/993

Comment 3 Debarshi Ray 2023-10-16 16:27:50 UTC
(In reply to Debarshi Ray from comment #0)
> Missing weak dependencies due to the use of --exclude-weakdeps in the
> fedora-container-toolbox.ks file.

Here's one way to fix it:
https://pagure.io/fedora-kickstarts/pull-request/995
https://pagure.io/fedora-kickstarts/pull-request/996

I tried to check which packages are actually missing in fedora-toolbox:39 with:
⬢$ rpm --query --all >packages.txt
⬢$ while read package; do echo "$package"; sudo dnf repoquery --recommends "$package"; echo "--"; done <packages.txt

... and then manually comparing with the content in fedora-toolbox:38.

It seems to me that python-systemd-doc, which is recommended by python3-systemd, is the only package missing in fedora-toolbox:39 when compared with fedora-toolbox:38.  So, we can also fix it with a more localized patch that pulls in only that one RPM.

Comment 4 Adam Williamson 2023-10-17 00:26:10 UTC
Discussed at 2023-10-16 FE review meeting: https://meetbot-raw.fedoraproject.org/fedora-blocker-review/2023-10-16/f39-blocker-review.2023-10-16-16.00.html . Accepted as an FE since we do want the release day toolbx container to be 'correct' in these regards.

Comment 5 Jens Petersen 2023-10-17 11:39:20 UTC
Thank you for the attention to detail here, Rishi :+1:

Comment 6 Jens Petersen 2023-10-18 06:54:38 UTC
Actually today I was quite surprised to find that translations seem to be rpm disabled in all current fedora-toolbox containers?
By /etc/rpm/macros.image-language-conf - I didn't know that was the case...

Comment 7 Jens Petersen 2023-10-18 07:56:19 UTC
despite the fact that /etc/rpm/macros.image-language-conf is removed when building fedora-toolbox images.

Comment 8 Debarshi Ray 2023-10-18 17:49:56 UTC
(In reply to Jens Petersen from comment #6)
> Actually today I was quite surprised to find that translations seem to be
> rpm disabled in all current fedora-toolbox containers?
> By /etc/rpm/macros.image-language-conf - I didn't know that was the case...

Do you remember which packages had their translations missing?

For the OSBS-built images from Dockerfile, I suspect these are packages that are inherited from the base image.  We have a hacky solution where we 'dnf reinstall' those packages, but the package list is manually maintained and hence can go stale.

Comment 9 Jens Petersen 2023-10-19 01:59:25 UTC
One simple example is gtk4.

But I just reproduced this in a fresh fedora-toolbox:39 container!:

⬢[petersen@toolbox ~]$ cat /etc/rpm/macros.image-language-conf 
%_install_langs en_US

So the file isn't actually removed!

Maybe the -f should be removed from "rm -f /mnt/sysimage/etc/rpm/macros.image-language-conf", shrug?

Comment 10 Debarshi Ray 2023-10-25 13:44:36 UTC
(In reply to Debarshi Ray from comment #3)
> (In reply to Debarshi Ray from comment #0)
> > Missing weak dependencies due to the use of --exclude-weakdeps in the
> > fedora-container-toolbox.ks file.
>
> [...]
> 
> It seems to me that python-systemd-doc, which is recommended by
> python3-systemd, is the only package missing in fedora-toolbox:39 when
> compared with fedora-toolbox:38.

mesa-va-drivers, recommended by mesa-dri-drivers, is perhaps a better example of a package that was missing due to the exclusion of weak dependencies.

Comment 11 Debarshi Ray 2023-10-25 17:36:47 UTC
(In reply to Jens Petersen from comment #9)
> One simple example is gtk4.
> 
> But I just reproduced this in a fresh fedora-toolbox:39 container!:

Aha, ok.  I got alarmed when you said (in comment 6) "translations seem to be rpm disabled in all current fedora-toolbox containers", because I thought that the fedora-toolbox images for F38 and F37 are also impacted.  :)

Comment 12 Debarshi Ray 2023-10-25 18:27:07 UTC
(In reply to Jens Petersen from comment #9)
> One simple example is gtk4.
> 
> But I just reproduced this in a fresh fedora-toolbox:39 container!:
> 
> ⬢[petersen@toolbox ~]$ cat /etc/rpm/macros.image-language-conf 
> %_install_langs en_US
> 
> So the file isn't actually removed!

This should be fixed by:
https://pagure.io/fedora-kickstarts/pull-request/1002 (main or rawhide)
https://pagure.io/fedora-kickstarts/pull-request/1004 (f39)

> Maybe the -f should be removed from "rm -f
> /mnt/sysimage/etc/rpm/macros.image-language-conf", shrug?

The problem, as described in the above pull requests, was that the %post section of fedora-container-common.ks was reverting what was done in the %pre section of fedora-container-toolbox.ks.

I think that 'rm' invocation can be removed now.  We are no longer using fedora-container-common.ks so there shouldn't be anything to remove.  I didn't do that now to keep the size of the changes as small as possible.

In future, we should also reinstate the built-in tests from the Container/Dockerfile that are currently commented out in fedora-container-toolbox.ks.  It's probably too late for Fedora 39, but we should definitely do that for Fedora 40.

Comment 13 Jens Petersen 2023-10-26 10:21:22 UTC
(In reply to Debarshi Ray from comment #11)
> Aha, ok.  I got alarmed when you said (in comment 6) "translations seem to
> be rpm disabled in all current fedora-toolbox containers", because I thought
> that the fedora-toolbox images for F38 and F37 are also impacted.  :)

They (f38 from my testing at the same time) _are_ in some way AFAICT - though I would gladly be wrong!

(In reply to Debarshi Ray from comment #12)
> (In reply to Jens Petersen from comment #9)
> > ⬢[petersen@toolbox ~]$ cat /etc/rpm/macros.image-language-conf 
> > %_install_langs en_US
> > So the file isn't actually removed!
> 
> This should be fixed by:
> https://pagure.io/fedora-kickstarts/pull-request/1002 (main or rawhide)
> https://pagure.io/fedora-kickstarts/pull-request/1004 (f39)

Ah okay cool thanks, then I will hold off on such a PR, at least until yours are merged.

Comment 14 Debarshi Ray 2023-10-27 11:14:32 UTC
I tested the Fedora-Container-Toolbox build from today morning:
https://koji.fedoraproject.org/koji/buildinfo?buildID=2312442

... by downloading the tarball and:
$ skopeo copy docker-archive:Fedora-Container-Toolbox-39-20231027.n.0.x86_64.tar.xz containers-storage:localhost/fedora-toolbox:39
$ toolbox create --release f39

I can confirm that all the issues I had raised in this bug are fixed to the best of my knowledge.

Comment 15 Debarshi Ray 2023-10-27 19:07:27 UTC
(In reply to Jens Petersen from comment #13)
> (In reply to Debarshi Ray from comment #11)
> > Aha, ok.  I got alarmed when you said (in comment 6) "translations seem to
> > be rpm disabled in all current fedora-toolbox containers", because I thought
> > that the fedora-toolbox images for F38 and F37 are also impacted.  :)
> 
> They (f38 from my testing at the same time) _are_ in some way AFAICT -
> though I would gladly be wrong!

Just to be sure, the Container/Dockerfile equivalent of the fedora-toolbox images for Fedora < 39:
  * shouldn't have %_install_langs set through /etc/rpm/macros.image-language-conf
  * shouldn't have tsflags=nodocs in /etc/dnf/dnf.conf
  * should have glibc-all-langpacks, not glibc-minimal-langpack

These images had the handicap of being layered on top of the fedora base images.

The base image strips out all documentation, all translations for non-English languages, and had the locale definitions for only C, POSIX and C.UTF-8.  The fedora-toolbox image tries to undo as much of these as possible by:
  RUN rm /etc/rpm/macros.image-language-conf
  RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
  RUN dnf -y swap glibc-minimal-langpack glibc-all-langpacks

... and reinstalling a bunch of packages that are part of the fedora base image and had their documentation and localization stripped out.

This last part about reinstalling the packages was totally ad-hoc.  Every once in a while someone noticed that something is missing from a package, and would add it to the missing-docs file, which would add it to the list of packages that got reinstalled.  We didn't have a way to systematically go through the fedora base image and restore everything that got lost.

I suspect that maybe you noticed something like this?  eg., I recently noticed that the useradd(8), etc. manuals were missing: https://github.com/containers/toolbox/pull/1394

If you found a problem with the fedora-toolbox images for Fedora < 39, then we can definitely rebuild them quickly and issue updates.

Comment 16 Debarshi Ray 2023-10-31 00:41:27 UTC
(In reply to Debarshi Ray from comment #12)
> In future, we should also reinstate the built-in tests from the
> Container/Dockerfile that are currently commented out in
> fedora-container-toolbox.ks.  It's probably too late for Fedora 39, but we
> should definitely do that for Fedora 40.

Restored the tests: https://pagure.io/fedora-kickstarts/pull-request/1008

Comment 17 Jens Petersen 2023-10-31 03:29:16 UTC
I can't reproduce in a fresh fedora-toolbox:38 (so wondering how it happened to me...)

However with fresh fedora-toolbox:39:

petersen@fedora:~$ toolbox enter fedora-toolbox-39
⬢[petersen@toolbox ~]$ cat /etc/rpm/macros.image-language-conf 
%_install_langs en_US

Comment 18 Debarshi Ray 2023-11-01 14:49:16 UTC
(In reply to Jens Petersen from comment #17)
> I can't reproduce in a fresh fedora-toolbox:38 (so wondering how it happened
> to me...)

The missing documentation and translation due to the minimized fedora base image should be now gone for good in the fedora-toolbox images for Fedora < 39.  We no longer use a hand-maintained list of packages that had their content stripped out by the fedora base image and must be reinstalled, because we found a way to automatically generate it.  Plus, we have a test built into the Container/Dockerfile.

See:
https://github.com/containers/toolbox/issues/603
https://github.com/containers/toolbox/pull/1396
https://bodhi.fedoraproject.org/updates/FEDORA-CONTAINER-2023-56b4fa11b3
https://bodhi.fedoraproject.org/updates/FEDORA-CONTAINER-2023-4b86a3ebfc

Let me know if you find something missing.

> However with fresh fedora-toolbox:39:
> 
> petersen@fedora:~$ toolbox enter fedora-toolbox-39
> ⬢[petersen@toolbox ~]$ cat /etc/rpm/macros.image-language-conf 
> %_install_langs en_US

This looks like a slightly stale registry.fedoraproject.org/fedora-toolbox:39

Comment 19 Debarshi Ray 2023-11-23 17:09:28 UTC
*** Bug 2248006 has been marked as a duplicate of this bug. ***