Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error: Checkout unixODBC-2.3.7-5.fc31.i686: Hardlinking #1937

Closed
I-Iawk opened this issue Nov 1, 2019 · 15 comments · Fixed by #3161
Closed

error: Checkout unixODBC-2.3.7-5.fc31.i686: Hardlinking #1937

I-Iawk opened this issue Nov 1, 2019 · 15 comments · Fixed by #3161
Assignees
Labels
bug jira for syncing to jira

Comments

@I-Iawk
Copy link

I-Iawk commented Nov 1, 2019

Host system details

$ cat /etc/yum.repos.d/winehq.repo 
[WineHQ]
name=WineHQ packages
type=rpm-md
baseurl=https://dl.winehq.org/wine-builds/fedora/29
gpgcheck=1
gpgkey=https://dl.winehq.org/wine-builds/winehq.key
enabled=1

$ rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
● ostree://fedora:fedora/31/x86_64/silverblue
                   Version: 31.20191031.0 (2019-10-31T00:35:49Z)
                BaseCommit: 1f77b254e196f244b20f14e0bac895ca151dd90dd18e0431e716ee1dbbe3f06e
              GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4
             LocalPackages: rpmfusion-free-release-31-1.noarch
                            rpmfusion-nonfree-release-31-1.noarch

  ostree://fedora:fedora/31/x86_64/silverblue
                   Version: 31.1.9 (2019-10-23T21:44:48Z)
                BaseCommit: c4bf7a6339e6be97d0ca48a117a1a35c9c5e3256ae2db9e706b0147c5845fac4
              GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4
             LocalPackages: rpmfusion-free-release-31-1.noarch
                            rpmfusion-nonfree-release-31-1.noarch

Expected vs actual behavior

$ rpm-ostree install winehq-staging
Checking out tree 1f77b25... done
Enabled rpm-md repositories: WineHQ updates-testing rpmfusion-free rpmfusion-nonfree updates rpmfusion-free-updates rpmfusion-nonfree-updates fedora
rpm-md repo 'WineHQ' (cached); generated: 2019-10-19T12:40:05Z
rpm-md repo 'updates-testing' (cached); generated: 2019-10-30T01:12:10Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2019-10-22T10:21:36Z
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2019-10-22T10:43:47Z
rpm-md repo 'updates' (cached); generated: 2019-10-30T00:50:26Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2019-10-28T08:13:05Z
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2019-10-28T08:34:09Z
rpm-md repo 'fedora' (cached); generated: 2019-10-25T01:48:20Z
Importing rpm-md... done
Resolving dependencies... done
Checking out packages... done
error: Checkout unixODBC-2.3.7-5.fc31.i686: Hardlinking 3d/796dd72b604bcabb0d6a8738cbc4b973f84a3bc5ce7e32dedd3ebf5ebd5b6b.file to dltest: File exists

Expected:

$ rpm-ostree install lutris
Checking out tree 1f77b25... done
Enabled rpm-md repositories: WineHQ updates-testing rpmfusion-free rpmfusion-nonfree updates rpmfusion-free-updates rpmfusion-nonfree-updates fedora
rpm-md repo 'WineHQ' (cached); generated: 2019-10-19T12:40:05Z
rpm-md repo 'updates-testing' (cached); generated: 2019-10-30T01:12:10Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2019-10-22T10:21:36Z
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2019-10-22T10:43:47Z
rpm-md repo 'updates' (cached); generated: 2019-10-30T00:50:26Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2019-10-28T08:13:05Z
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2019-10-28T08:34:09Z
rpm-md repo 'fedora' (cached); generated: 2019-10-25T01:48:20Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 2 packages (72.1 MB)
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 2.5 GB (pkgcache branches: 353)
Added:
  SDL2-2.0.10-1.fc31.x86_64
  cabextract-1.9-3.fc31.x86_64
  elfutils-libelf-0.177-1.fc31.i686
  expat-2.2.8-1.fc31.i686
  glibc-2.30-5.fc31.i686
  libFAudio-19.09-1.fc31.x86_64
  libX11-1.6.8-3.fc31.i686
  libX11-xcb-1.6.8-3.fc31.i686
  libXau-1.0.9-2.fc31.i686
  libXdamage-1.1.4-17.fc31.i686
  libXext-1.3.4-2.fc31.i686
  libXfixes-5.0.3-10.fc31.i686
  libXxf86vm-1.1.4-12.fc31.i686
  libdrm-2.4.99-2.fc31.i686
  libedit-3.1-28.20190324cvs.fc31.i686
  libffi-3.1-23.fc31.i686
  libgcc-9.2.1-1.fc31.i686
  libglvnd-1:1.1.1-5.fc31.i686
  libglvnd-glx-1:1.1.1-5.fc31.i686
  libpciaccess-0.15-2.fc31.i686
  libselinux-2.9-5.fc31.i686
  libsepol-2.9-2.fc31.i686
  libstdc++-9.2.1-1.fc31.i686
  libva-2.6.0-0.1.fc31.x86_64
  libvkd3d-1.1-3.fc31.x86_64
  libwayland-client-1.17.0-2.fc31.i686
  libxcb-1.13.1-3.fc31.i686
  libxshmfence-1.3-5.fc31.i686
  llvm-libs-9.0.0-1.fc31.i686
  lutris-0.5.3-1.fc31.x86_64
  mesa-dri-drivers-19.2.0-1.fc31.i686
  mesa-filesystem-19.2.0-1.fc31.i686
  mesa-libGL-19.2.0-1.fc31.i686
  mesa-libOSMesa-19.2.0-1.fc31.x86_64
  mesa-libglapi-19.2.0-1.fc31.i686
  mesa-vulkan-drivers-19.2.0-1.fc31.i686
  ncurses-libs-6.1-12.20190803.fc31.i686
  pcre2-10.33-14.fc31.i686
  python3-evdev-1.1.2-4.fc31.x86_64
  python3-pyyaml-5.1.2-1.fc31.x86_64
  spirv-tools-libs-2019.4-0.1.20190715.gitaa9e8f5.fc31.x86_64
  unixODBC-2.3.7-5.fc31.x86_64
  vulkan-loader-1.1.114.0-1.fc31.i686
  wine-core-4.18-1.fc31.x86_64
  wine-filesystem-4.18-1.fc31.noarch
  xorg-x11-server-Xephyr-1.20.5-7.fc31.x86_64
  zlib-1.2.11-19.fc31.i686
Run "systemctl reboot" to start a reboot

Steps to reproduce it

Refer to section "Host system details"

Would you like to work on the issue?

I am fully aware of the issues for Fedora Silverblue not supporting 32bit libraries going forward, but this is serious roadblock for users who wish to use Wine to play games such as Battlefield 3-5 via Origin on Linux. Unsure if WineHQ will attempt to flatpak the winehq-staging package any time soon...

I would love to help contribute but do not know where to start or how... feel free to contact me directly for further information.

@jlebon
Copy link
Member

jlebon commented Nov 4, 2019

rpm-ostree itself does support multilib, so I suspect there's something going wrong in that logic.
(That said, I agree this would be cleaner overall as a flatpak. A quick search returned https://ramsdenj.com/2018/03/26/packaging-pathofexile-with-flatpak.html... might be worth a try?).

@jlebon jlebon added the bug label Nov 4, 2019
@I-Iawk
Copy link
Author

I-Iawk commented Nov 12, 2019

Thanks for the bug label! I'll follow up with the winepak and report back if needed!

@bauno
Copy link

bauno commented Jun 14, 2020

Hello! Not sure if it makes sense to add here or to open another but, but there is the same problem with SilverBlue 32, w/o additional repostories. After a 'rpm-ostree install wine' the transaction fails with:
error: Checkout unixODBC-2.3.7-6.fc32.i686: Hardlinking 2f/9ea67391201811f709a7df399ad598139277a71e4abf00e41327e6d81005c2.file to dltest: File exists

@BailShamber
Copy link

On fedora Silverblue 33, installing 'libstdc++.i686' fails with error:
error: Checkout libstdc++-10.2.1-3.fc33.i686: Hardlinking ea/d62955df283cbfca2597e94bc41073a81c61ff118e48a2ff7afa81cb1020e9.file to __init__.cpython-39.opt-1.pyc: File exists

@BailShamber
Copy link

BailShamber commented Sep 22, 2020

$ rpm-ostree --version
rpm-ostree:
Version: '2020.3'
Git: 108d19beadadcc7d2a05689d95d43ff48fa83546
Features:

  • compose
  • rust

@BailShamber
Copy link

I can now install libstdc++.i686, but, still, cannot install wine.

@tapir
Copy link

tapir commented Mar 14, 2021

Fedora Silverblue 33 and this error still persists

@Willdrick
Copy link

Also present on Silverblue 34

[willdrick@vega ~]$ rpm-ostree --version
rpm-ostree:
 Version: '2021.3'
 Git: 577501cf749131d077a73926ac9acf930ed638d2
 Features:
  - compose
  - rust
  - fedora-integration

Found this while trying to layer gamehub, which pulls Wine

[willdrick@vega ~]$ rpm-ostree install gamehub
Checking out tree 7b99463... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2021-02-23T00:49:00Z
rpm-md repo 'updates' (cached); generated: 2021-06-07T01:11:58Z
rpm-md repo 'fedora' (cached); generated: 2021-04-23T10:47:57Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 211 packages (351,3 MB)
Downloading from 'fedora'... done
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
error: Checkout unixODBC-2.3.9-2.fc34.i686: Hardlinking b0/e4e85e6dd01f72e42b8200143a560c22dfaf80fcd5282edc6925f730777009.file to dltest: El fichero ya existe

@jlebon
Copy link
Member

jlebon commented Jun 7, 2021

Before this entirely leaves my brain: I looked at this some time back and started hacking on a patch, but didn't push through.

The base issue IIRC is that handle_file_dispositions in the core knows how to handle file colouring between packages in the base vs packages in the layer. But it doesn't correctly handle different file colouring coming from layered packages, as is the case here (we're layering both unixODBD.x86_64 and unixODBC.i686). I.e. it tries to check out both of them instead of letting the x86_64 version of the file win (and skipping the i686 version), hence why we get the checkout error.

@Mershl
Copy link
Contributor

Mershl commented Jun 18, 2021

It has been working for me in SB32 and SB33, but it's now back in SB34. Is there a workaround (besides not using wine) available for this issue?

rpm-ostree[3515]: Txn Upgrade on /org/projectatomic/rpmostree1/fedora failed: Checkout unixODBC-2.3.9-2.fc34.i686: Hardlinking b0/e4e85e6dd01f72e42b8200143a560c22dfaf80fcd5282edc6925f730777009.file to dltest: File exists

@jonkoops
Copy link

jonkoops commented Jul 4, 2021

Same for me when installing Lutris on SB34:

error: Checkout unixODBC-2.3.9-2.fc34.i686: Hardlinking b0/e4e85e6dd01f72e42b8200143a560c22dfaf80fcd5282edc6925f730777009.file to dltest: File exists

@Mershl
Copy link
Contributor

Mershl commented Aug 24, 2021

Most prominently (I presume) this affects Lutris since it introduced a weak-dependency to wine-core (32-bit).
https://bugzilla.redhat.com/show_bug.cgi?id=1974116

A workaround is to grab the latest version which came without the weak-dependency from Koji, which is: 0.5.8.3-4

As Lutris is steadily developed this workaround will get less and less feasible. @cgwalters Is this an issue that needs further discussion/concept work or is it ready to be implemented/getting fixed?

EDIT: Two options come to mind: Fixing the underlying Hardlinking issue or allow skipping weak-dependencies either manually or as an error handler for when the Hardlinking error is thrown. Skipping weak-dependecies will introduce further issues as the 32-bit runners of Lutris will fail if wine-core (32-bit) is not present, as that was the original reason the weak dep was introduced for the package.

@Mershl
Copy link
Contributor

Mershl commented Oct 2, 2021

The workaround is no longer applicable for SB35. The fc34 package is incompatible as it has a hard requirement to python3.9 and the .fc35 packages start after the introduction of the weak-dep to wine-core (32-bit): https://koji.fedoraproject.org/koji/search?terms=lutris*.fc35&type=build&match=glob

@jlebon jlebon added the jira for syncing to jira label Oct 6, 2021
@jlebon jlebon self-assigned this Oct 6, 2021
jlebon added a commit to jlebon/rpm-ostree that referenced this issue Oct 6, 2021
Before, we were only comparing rpm file coloring between layered
packages and base packages. But we also need to compare layered packages
among themselves. A concrete example is `unixODBC` which isn't in e.g.
Fedora Silverblue, but which some packages pull in both the i686 and
x86_64 versions. In that case, we need to skip the checkout of files in
the i686 version which are also in the x86_64 one.

Closes: coreos#1937
@jlebon
Copy link
Member

jlebon commented Oct 6, 2021

Fix for this in #3161.

jlebon added a commit to jlebon/rpm-ostree that referenced this issue Oct 6, 2021
Before, we were only comparing rpm file coloring between layered
packages and base packages. But we also need to compare layered packages
among themselves. A concrete example is `unixODBC` which isn't in e.g.
Fedora Silverblue, but which some packages pull in both the i686 and
x86_64 versions. In that case, we need to skip the checkout of files in
the i686 version which are also in the x86_64 one.

Closes: coreos#1937
jlebon added a commit to jlebon/rpm-ostree that referenced this issue Oct 8, 2021
Before, we were only comparing rpm file coloring between layered
packages and base packages. But we also need to compare layered packages
among themselves. A concrete example is `unixODBC` which isn't in e.g.
Fedora Silverblue, but which some packages pull in both the i686 and
x86_64 versions. In that case, we need to skip the checkout of files in
the i686 version which are also in the x86_64 one.

Closes: coreos#1937
cgwalters pushed a commit that referenced this issue Oct 14, 2021
Before, we were only comparing rpm file coloring between layered
packages and base packages. But we also need to compare layered packages
among themselves. A concrete example is `unixODBC` which isn't in e.g.
Fedora Silverblue, but which some packages pull in both the i686 and
x86_64 versions. In that case, we need to skip the checkout of files in
the i686 version which are also in the x86_64 one.

Closes: #1937
@jkrogers9862
Copy link

This problem has resurfaced in SB40.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug jira for syncing to jira
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants