https://bugzilla.redhat.com/show_bug.cgi?id=1926533

            Bug ID: 1926533
           Summary: Postinstall scripts are failable, fail during KDE
                    netinst (due to dependency loop most likely)
           Product: Fedora
           Version: rawhide
          Hardware: All
                OS: All
            Status: NEW
         Component: xorg-x11-fonts
          Severity: urgent
          Assignee: xgl-ma...@redhat.com
          Reporter: awill...@redhat.com
        QA Contact: extras...@fedoraproject.org
                CC: airl...@redhat.com, a...@redhat.com,
                    caillon+fedoraproj...@gmail.com, caol...@redhat.com,
                    fonts-bugs@lists.fedoraproject.org,
                    jgli...@redhat.com, negativ...@gmail.com,
                    rhug...@redhat.com, rstr...@redhat.com,
                    sandm...@redhat.com, xgl-ma...@redhat.com
  Target Milestone: ---
    Classification: Fedora



In current Fedora Rawhide, KDE network installs fail with a scriptlet error in
an xorg-x11-fonts subpackage:

16:36:01,304 INF dnf.rpm: mkfontscale: error while loading shared libraries:
libfreetype.so.6: cannot open shared object file: No such file or directory
warning: %post(xorg-x11-fonts-ISO8859-1-100dpi-7.5-27.fc34.noarch) scriptlet
failed, exit status 127

16:36:01,310 ERR dnf.rpm: Error in POSTIN scriptlet in rpm package
xorg-x11-fonts-ISO8859-1-100dpi

Dependencies should be in place, AFAICT: xorg-x11-fonts subpackages require
'mkfontdir', which is in the same package as mkfontscale (xorg-x11-font-utils)
and that package requires libfreetype.so.6. What's likely happening is a
dependency loop that dnf has to break somehow. This isn't uncommon on initial
install, something like A requires B requires C requires A, and in order to do
anything, dnf has to pick *some* dependency to disregard. Probably because of
some loop like this, it's ordering install of xorg-x11-fonts-ISO8859-1-100dpi
before install of freetype, and so its %post script fails.

We could look for and try to fix that loop, but note the packaging guidelines
state:

"All scriptlets MUST exit with the zero exit status. Because RPM in its default
configuration does not execute shell scriptlets with the -e argument to the
shell, excluding explicit exit calls (frowned upon with a non-zero argument!),
the exit status of the last command in a scriptlet determines its exit status.
Most commands in the snippets in this document have a “|| :” appended to them,
which is a generic trick to force the zero exit status for those commands
whether they worked or not. Usually the most important bit is to apply this to
the last command executed in a scriptlet, or to add a separate command such as
plain “:” or “exit 0” as the last one in a scriptlet. Note that depending on
the case, other error checking/prevention measures may be more appropriate.

Non-zero exit codes from scriptlets can break installs/upgrades/erases such
that no further actions will be taken for that package in a transaction (see
Ordering), which may for example prevent an old version of a package from being
erased on upgrades, leaving behind duplicate rpmdb entries and possibly stale,
unowned files on the filesystem. There are some cases where letting the
transaction to proceed when some things in scriptlets failed may result in
partially broken setup. It is however often limited to that package only
whereas letting a transaction to proceed with some packages dropped out on the
fly is more likely to result in broader system wide problems."

https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax

basically, by policy scriptlets should be written to return 0 even if they
don't work. These scriptlets aren't respecting that. Given that not running
mkfontdir likely doesn't have any calamitous consequences, I think it would
make sense to go with the guidelines and amend all the scriptlets to add `|| :`
at the end (which will cause them to exit 0 even if the command failed).


-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
fonts-bugs mailing list -- fonts-bugs@lists.fedoraproject.org
To unsubscribe send an email to fonts-bugs-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/fonts-bugs@lists.fedoraproject.org

Reply via email to