[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1082324: wine: FTBFS on amd64 because of infinite recursion when running ./make_vulkan in dlls/winevulkan



Source: wine
Version: 9.0~repack-4
Severity: serious
Tags: ftbfs
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: syominsergey@gmail.com

Hi!

I found a problem that it is impossible to build wine version 9.0~repack-4 from source in Debian Trixie amd64.
Also to could be reproduced in Debian Trixie i386.
It is easier and much more important to show how to reproduce problem in Debian Trixie amd64, so I will continue for this arch.

Goto page with official Debian Testing Vagrant images:
https://app.vagrantup.com/debian/boxes/testing64

Most recent version is here:
https://app.vagrantup.com/debian/boxes/testing64/versions/20240905.1

Download image for example for virtual box:
```
wget -O debian_trixie_amd64.img https://app.vagrantup.com/debian/boxes/testing64/versions/20240905.1/providers/virtualbox/unknown/vagrant.box
```

Import this image into Vagrant:
```
vagrant box add --name "debian/testing64 20240905.1" debian_trixie_amd64.img
```

Create a Vagrantfile:
```
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "debian/testing64 20240905.1"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.cpus = 4
  end
end
```
(number of CPUs and amount of RAM depends of host computer free resources)

Start VM:
```
vagrant up
```

Login into VM:
```
vagrant ssh
```

In VM for all later actions we will use a user called `vagrant`.

Update apt cache:
```
sudo apt update
```

Upgrade the system:
```
sudo apt upgrade
```

Then shutdown, start VM again and login as earlier.

Remove excess packages:
```
sudo apt autoremove
```

Then shutdown, start VM again and login as earlier.

Install dpkg-dev package with tools for package development (including dpkg-source necessary to unpack source packages):
```
sudo apt install dpkg-dev
```

Add line for sources in /etc/apt/sources.list:
```
echo "deb-src https://deb.debian.org/debian testing main" | sudo tee -a /etc/apt/sources.list
```

Now /etc/apt/sources.list looks like this:
```
deb https://deb.debian.org/debian testing main
deb-src https://deb.debian.org/debian testing main
```

Update apt cache again:
```
sudo apt update
```

Download wine sources:
```
apt source wine
```

In my case I got wine 9.0~repack-4.

Goto into folder with extracted sources and install necessary build deps:
```
sudo apt build-dep .
```

Try to build wine package using dpkg-buildpackage:
```
dpkg-buildpackage -b -uc
```

Full log is very big, so I will place here only small fragment with cuts:
```
cd dlls/winevulkan && ./make_vulkan -x /usr/share/vulkan/registry/vk.xml
Traceback (most recent call last):
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 3927, in <module>
    main()
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 3897, in main
    generator = VkGenerator(registry)
                ^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2667, in __init__
    conversions = func.get_conversions()
                  ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 688, in get_conversions
    conversions.extend(param.get_conversions(self.unwrap))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 1398, in get_conversions
    conversions.extend(struct.get_conversions(unwrap, is_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2301, in get_conversions
    conversions.extend(e.get_conversions(Unwrap.HOST, parent_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2307, in get_conversions
    conversions.extend(m.get_conversions(unwrap, parent_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<...>
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 1398, in get_conversions
    conversions.extend(struct.get_conversions(unwrap, is_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2301, in get_conversions
    conversions.extend(e.get_conversions(Unwrap.HOST, parent_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2307, in get_conversions
    conversions.extend(m.get_conversions(unwrap, parent_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<...>
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 1398, in get_conversions
    conversions.extend(struct.get_conversions(unwrap, is_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2301, in get_conversions
    conversions.extend(e.get_conversions(Unwrap.HOST, parent_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 2307, in get_conversions
    conversions.extend(m.get_conversions(unwrap, parent_const))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 1408, in get_conversions
    if self.needs_conversion(conv, unwrap, Direction.INPUT, parent_const):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 1683, in needs_conversion
    self.needs_conversion(conv, unwrap, Direction.OUTPUT, struct_const):
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vagrant/wine-9.0~repack/dlls/winevulkan/./make_vulkan", line 1651, in needs_conversion
    if self.is_union() and not self.selector:
       ^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded
make[1]: *** [debian/rules:129: override_dh_auto_configure] Error 1
make[1]: Leaving directory '/home/vagrant/wine-9.0~repack'
make: *** [debian/rules:115: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
```

It is possible to reproduce this problem in the same way when building wine from sources in Debian Trixie i386.

Some additional info about host platform:
- Virtual Box 6.1.38 r153438
- Vagrant 2.2.19

-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.10.9-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled


Reply to: