#12829 FEX image build fails in wine-core %postinstall
Closed: Fixed by adamwill. Opened by adamwill.

  • Describe the issue
    Since Fedora-Rawhide-20250710.n.0, the FEX container image build task fails, with errors in wine-core %postinstall. Note this is cut off at 100 columns for some reason, so we can't see all the file paths or what the exit status is:
DEBUG util.py:459:  >>> Running %posttrans scriptlet: wine-core-0:10.12-2.fc43.x86_64               
DEBUG util.py:459:  >>> Finished %posttrans scriptlet: wine-core-0:10.12-2.fc43.x86_64              
DEBUG util.py:459:  >>> Scriptlet output:                                                           
DEBUG util.py:459:  >>> alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.                
DEBUG util.py:459:  >>> This may be freely redistributed under the terms of the GNU Public License. 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> usage: alternatives --install <link> <name> <path> <priority>               
DEBUG util.py:459:  >>>                     [--initscript <service>]                                
DEBUG util.py:459:  >>>                     [--family <family>]                                     
DEBUG util.py:459:  >>>                     [--follower <follower_link> <follower_name> <follower_pa
DEBUG util.py:459:  >>>        alternatives --remove <name> <path>                                  
DEBUG util.py:459:  >>>        alternatives --auto <name>                                           
DEBUG util.py:459:  >>>        alternatives --config <name>                                         
DEBUG util.py:459:  >>>        alternatives --display <name>                                        
DEBUG util.py:459:  >>>        alternatives --set <name> <path/family>                              
DEBUG util.py:459:  >>>        alternatives --list                                                  
DEBUG util.py:459:  >>>        alternatives --remove-all <name>                                     
DEBUG util.py:459:  >>>        alternatives --add-follower <name> <path> <follower_link> <follower_n
DEBUG util.py:459:  >>>        alternatives --remove-follower <name> <path> <follower_name>         
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> common options: --verbose --test --help --usage --version --keep-missing --k
DEBUG util.py:459:  >>>                 --altdir <directory> --admindir <directory>                 
DEBUG util.py:459:  >>> alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.                
DEBUG util.py:459:  >>> This may be freely redistributed under the terms of the GNU Public License. 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> usage: alternatives --install <link> <name> <path> <priority>               
DEBUG util.py:459:  >>>                     [--initscript <service>]                                
DEBUG util.py:459:  >>>                     [--family <family>]                                     
DEBUG util.py:459:  >>>                     [--follower <follower_link> <follower_name> <follower_pa
DEBUG util.py:459:  >>>        alternatives --remove <name> <path>                                  
DEBUG util.py:459:  >>>        alternatives --auto <name>                                           
DEBUG util.py:459:  >>>        alternatives --config <name>                                         
DEBUG util.py:459:  >>>        alternatives --display <name>                                        
DEBUG util.py:459:  >>>        alternatives --set <name> <path/family>                              
DEBUG util.py:459:  >>>        alternatives --list                                                  
DEBUG util.py:459:  >>>        alternatives --remove-all <name>                                     
DEBUG util.py:459:  >>>        alternatives --add-follower <name> <path> <follower_link> <follower_n
DEBUG util.py:459:  >>>        alternatives --remove-follower <name> <path> <follower_name>         
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> common options: --verbose --test --help --usage --version --keep-missing --k
DEBUG util.py:459:  >>>                 --altdir <directory> --admindir <directory>                 
DEBUG util.py:459:  >>> alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.                
DEBUG util.py:459:  >>> This may be freely redistributed under the terms of the GNU Public License. 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> usage: alternatives --install <link> <name> <path> <priority>               
DEBUG util.py:459:  >>>                     [--initscript <service>]                                
DEBUG util.py:459:  >>>                     [--family <family>]                                     
DEBUG util.py:459:  >>>                     [--follower <follower_link> <follower_name> <follower_pa
DEBUG util.py:459:  >>>        alternatives --remove <name> <path>                                  
DEBUG util.py:459:  >>>        alternatives --auto <name>                                           
DEBUG util.py:459:  >>>        alternatives --config <name>                                         
DEBUG util.py:459:  >>>        alternatives --display <name>                                        
DEBUG util.py:459:  >>>        alternatives --set <name> <path/family>                              
DEBUG util.py:459:  >>>        alternatives --list                                                  
DEBUG util.py:459:  >>>        alternatives --remove-all <name>                                     
DEBUG util.py:459:  >>>        alternatives --add-follower <name> <path> <follower_link> <follower_n
DEBUG util.py:459:  >>>        alternatives --remove-follower <name> <path> <follower_name>         
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> common options: --verbose --test --help --usage --version --keep-missing --k
DEBUG util.py:459:  >>>                 --altdir <directory> --admindir <directory>                 
DEBUG util.py:459:  >>> alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.                
DEBUG util.py:459:  >>> This may be freely redistributed under the terms of the GNU Public License. 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> usage: alternatives --install <link> <name> <path> <priority>               
DEBUG util.py:459:  >>>                     [--initscript <service>]                                
DEBUG util.py:459:  >>>                     [--family <family>]                                     
DEBUG util.py:459:  >>>                     [--follower <follower_link> <follower_name> <follower_pa
DEBUG util.py:459:  >>>        alternatives --remove <name> <path>                                  
DEBUG util.py:459:  >>>        alternatives --auto <name>                                           
DEBUG util.py:459:  >>>        alternatives --config <name>                                         
DEBUG util.py:459:  >>>        alternatives --display <name>                                        
DEBUG util.py:459:  >>>        alternatives --set <name> <path/family>                              
DEBUG util.py:459:  >>>        alternatives --list                                                  
DEBUG util.py:459:  >>>        alternatives --remove-all <name>                                     
DEBUG util.py:459:  >>>        alternatives --add-follower <name> <path> <follower_link> <follower_n
DEBUG util.py:459:  >>>        alternatives --remove-follower <name> <path> <follower_name>         
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> common options: --verbose --test --help --usage --version --keep-missing --k
DEBUG util.py:459:  >>>                 --altdir <directory> --admindir <directory>                 
DEBUG util.py:459:  >>> alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.                
DEBUG util.py:459:  >>> This may be freely redistributed under the terms of the GNU Public License. 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> usage: alternatives --install <link> <name> <path> <priority>               
DEBUG util.py:459:  >>>                     [--initscript <service>]                                
DEBUG util.py:459:  >>>                     [--family <family>]                                     
DEBUG util.py:459:  >>>                     [--follower <follower_link> <follower_name> <follower_pa
DEBUG util.py:459:  >>>        alternatives --remove <name> <path>                                  
DEBUG util.py:459:  >>>        alternatives --auto <name>                                           
DEBUG util.py:459:  >>>        alternatives --config <name>                                         
DEBUG util.py:459:  >>>        alternatives --display <name>                                        
DEBUG util.py:459:  >>>        alternatives --set <name> <path/family>                              
DEBUG util.py:459:  >>>        alternatives --list                                                  
DEBUG util.py:459:  >>>        alternatives --remove-all <name>                                     
DEBUG util.py:459:  >>>        alternatives --add-follower <name> <path> <follower_link> <follower_n
DEBUG util.py:459:  >>>        alternatives --remove-follower <name> <path> <follower_name>         
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> common options: --verbose --test --help --usage --version --keep-missing --k
DEBUG util.py:459:  >>>                 --altdir <directory> --admindir <directory>                 
DEBUG util.py:459:  >>> alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.                
DEBUG util.py:459:  >>> This may be freely redistributed under the terms of the GNU Public License. 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> usage: alternatives --install <link> <name> <path> <priority>               
DEBUG util.py:459:  >>>                     [--initscript <service>]                                
DEBUG util.py:459:  >>>                     [--family <family>]                                     
DEBUG util.py:459:  >>>                     [--follower <follower_link> <follower_name> <follower_pa
DEBUG util.py:459:  >>>        alternatives --remove <name> <path>                                  
DEBUG util.py:459:  >>>        alternatives --auto <name>                                           
DEBUG util.py:459:  >>>        alternatives --config <name>                                         
DEBUG util.py:459:  >>>        alternatives --display <name>                                        
DEBUG util.py:459:  >>>        alternatives --set <name> <path/family>                              
DEBUG util.py:459:  >>>        alternatives --list                                                  
DEBUG util.py:459:  >>>        alternatives --remove-all <name>                                     
DEBUG util.py:459:  >>>        alternatives --add-follower <name> <path> <follower_link> <follower_n
DEBUG util.py:459:  >>>        alternatives --remove-follower <name> <path> <follower_name>         
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> common options: --verbose --test --help --usage --version --keep-missing --k
DEBUG util.py:459:  >>>                 --altdir <directory> --admindir <directory>                 
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> Running %posttrans scriptlet: wine-core-0:10.12-2.fc43.i686                 
DEBUG util.py:459:  >>> Non-critical error in %posttrans scriptlet: wine-core-0:10.12-2.fc43.i686   
DEBUG util.py:459:  >>> Scriptlet output:                                                           
DEBUG util.py:459:  >>> /usr/bin/wine32 has not been configured as an alternative for wine          
DEBUG util.py:459:  >>> the primary link for wine-dxgi(x86-32) must be /usr/lib64/wine/i386-windows/
DEBUG util.py:459:  >>> the primary link for wine-d3d9(x86-32) must be /usr/lib64/wine/i386-windows/
DEBUG util.py:459:  >>> the primary link for wine-d3d10(x86-32) must be /usr/lib64/wine/i386-windows
DEBUG util.py:459:  >>> the primary link for wine-d3d11(x86-32) must be /usr/lib64/wine/i386-windows
DEBUG util.py:459:  >>>                                                                             
DEBUG util.py:459:  >>> [RPM] %posttrans(wine-core-10.12-2.fc43.i686) scriptlet failed, exit status 

The weird thing is, nothing relevant seems to have changed between 20250709.n.0 (where this succeeded) and 20250710.n.0 (where it failed). chkconfig (which is where update-alternatives comes from) didn't change. wine didn't change. So I've no idea why this suddenly started failing.

  • When do you need this? (YYYY/MM/DD)
    No specific date, it's just...broken.

  • When is this no longer needed or useful? (YYYY/MM/DD)
    N/A

  • If we cannot complete your request, what is the impact?
    Fedora Rawhide (and eventually 43) composes will have no FEX images.

CC @ngompa


I have no idea what's going on here. This is basically a dnf install run failure...

@kevin noted that @gotmax23 saw the same thing in something different:

"Has anyone seen this? Go Vendor Tools' rawhide CI started failing today with this:
```
[ 28/122] Installing fakeroot-0:1.37.1- 100% | 4.6 MiB/s | 155.4 KiB | 00m00s

Running %post scriptlet: fakeroot-0:1.37.1-1.fc43.x86_64
Non-critical error in %post scriptlet: fakeroot-0:1.37.1-1.fc43.x86_64
Scriptlet output:
alternatives version 1.33 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install
[--initscript ]
[--family ]
[--follower <follower_pa
alternatives --remove
alternatives --auto
alternatives --config
alternatives --display
alternatives --set
alternatives --list
alternatives --remove-all
alternatives --add-follower <follower_n
alternatives --remove-follower

common options: --verbose --test --help --usage --version --keep-missing --k
--altdir --admindir

[RPM] %post(fakeroot-1.37.1-1.fc43.x86_64) scriptlet failed, exit status 2
```"

This may be an RPM issue. rpm changed from 5.99.90-6 to 5.99.91-1 in the first affected compose:

Package:      rpm-5.99.91-1.fc43
Old package:  rpm-5.99.90-6.fc43
Summary:      The RPM package management system
RPMs:         python3-rpm rpm rpm-apidocs rpm-build rpm-build-libs rpm-cron rpm-devel rpm-libs rpm-plugin-audit rpm-plugin-dbus-announce rpm-plugin-fapolicyd rpm-plugin-fsverity rpm-plugin-ima rpm-plugin-prioreset rpm-plugin-selinux rpm-plugin-syslog rpm-plugin-systemd-inhibit rpm-plugin-unshare rpm-sign rpm-sign-libs
Size:         11.14 MiB
Size change:  -17.75 KiB
Changelog:
  * Wed Jul 02 2025 Panu Matilainen <pmatilai@redhat.com> - 5.99.91-1
  - Rebase to 6.0 beta1
  - Revert to v4 package format by default for now (upstream switched to v6)

@pmatilai ?

Filed https://github.com/rpm-software-management/rpm/issues/3865 .

OK, so it turns out the fakeroot and wine-core cases are a bit different.

The problem with fakeroot's scriptlets is that the alternatives commands had trailing continuation characters. This worked with bash 5.2 but caused the second call to fail with bash 5.3. It broke with bash 5.3 landing, yesterday.

wine-core's scriptlets have been broken since https://src.fedoraproject.org/rpms/wine/c/65a088941cf20c6e8a4e6e7ffef3cd5761d51532 , three weeks ago. That caused several of the alternatives calls to expand to contain too many arguments and not work. They've been failing ever since then, but somehow, the failure was not fatal to FEX image builds up till 20250709.n.0, but was fatal from 20250710.n.0 onwards.

It's possible the new rpm changes behavior on whatever interface dnf uses; I'm not sure. But anyway, the important thing is to fix the scriptlets, not to figure out why the failures became fatal, because the failures are bad anyway - the alternatives are not getting set up.

I've sent https://bodhi.fedoraproject.org/updates/FEDORA-2025-92d625b9cf to fix fakeroot's scripts, and am doing a scratch build of wine with my planned fixes applied to test it before doing an official build.

wine build running: https://koji.fedoraproject.org/koji/repoinfo?repoID=6589281 . Should close this out.

Metadata Update from @adamwill:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

maven is also affected, see https://bugzilla.redhat.com/show_bug.cgi?id=2382210

Metadata