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 1922702 - api-ms-win-core-synch-l1-2-0.dll missing from standard dlls
Summary: api-ms-win-core-synch-l1-2-0.dll missing from standard dlls
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: mingw-binutils
Version: rawhide
Hardware: All
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Kalev Lember
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1923595
TreeView+ depends on / blocked
 
Reported: 2021-01-30 23:09 UTC by Thomas Sailer
Modified: 2021-02-02 07:40 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-02-02 07:40:57 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Thomas Sailer 2021-01-30 23:09:50 UTC
Description of problem:
DEBUG util.py:444:    - nothing provides mingw32(api-ms-win-core-synch-l1-2-0.dll) needed by mingw32-boost-1.75.0-1.fc34.noarch
DEBUG util.py:444:   Problem 2: conflicting requests
DEBUG util.py:444:    - nothing provides mingw64(api-ms-win-core-synch-l1-2-0.dll) needed by mingw64-boost-1.75.0-1.fc34.noarch


Version-Release number of selected component (if applicable):
mingw32-filesystem 116-1.fc33
mingw64-filesystem 116-1.fc33

How reproducible:
always

Steps to Reproduce:
1.dnf install mingw32-boost mingw64-boost

Actual results:
- nothing provides mingw32(api-ms-win-core-synch-l1-2-0.dll) needed by mingw32-boost-1.75.0-1.fc34.noarch
- nothing provides mingw64(api-ms-win-core-synch-l1-2-0.dll) needed by mingw64-boost-1.75.0-1.fc34.noarch


Expected results:
package installs

Additional info:
could api-ms-win-core-synch-l1-2-0.dll please be added to standard-dlls-mingw32 and standard-dlls-mingw64? boost 1.75 needs it...

Thanks

Comment 1 Sandro Mani 2021-02-01 11:04:30 UTC
These are Windows API umbrella libraries which are meant to be dlopened (aka LoadLibrary on Windows), see [1]. These are not "physical" libraries provided by mingw. I see

libs/atomic/src/wait_ops_windows.cpp:            boost::winapi::HMODULE_ kernel_base = boost::winapi::get_module_handle(L"api-ms-win-core-synch-l1-2-0.dll");

and it then appears as referenced DLL in libboost_atomic-mt-x64.dll:

mingw-objdump -p libboost_atomic-mt-x64.dll | grep core
        DLL Name: api-ms-win-core-synch-l1-2-0.dll

(the requires of the RPM being generated based on the objdump output). I'd say this is a bug in objdump, but I need to investigate more. In the meantime, please filter out the requires from the RPM.


[1] https://stackoverflow.com/questions/47529106/what-are-api-ms-win-lx-x-x-dll-umbrella-libraries/47530043#47530043

Comment 2 Thomas Sailer 2021-02-01 17:39:56 UTC
Thanks Sandro!

Do you have any info on how to do the filtering?

I have added:
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^mingw(32|64)\\(api-ms-.*dll\\)$

and tested the regex against mingw32(api-ms-win-core-synch-l1-2-0.dll) and mingw64(api-ms-win-core-synch-l1-2-0.dll), it matches, but the package built that way still has the requires... How can this be debugged?

BR, Thomas

Comment 3 Sandro Mani 2021-02-01 17:48:45 UTC
Hi Thomas

You'll want to filter the requires, not the provides.

Best
Sandro

Comment 4 Thomas Sailer 2021-02-01 20:51:09 UTC
Hi Sandro,

uhoh embarrassing... I changed it to:
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^mingw(32|64)\\(api-ms-.*dll\\)$

but it still doesn't work.

Log says:
warning: Deprecated external dependency generator is used!
Finding  Provides: /usr/lib/rpm/mingw-find-provides.sh mingw32 mingw64
Finding  Requires(interp): 
Finding  Requires(rpmlib): 
Finding  Requires(verify): 
Finding  Requires(pre): 
Finding  Requires(post): 
Finding  Requires(preun): 
Finding  Requires(postun): 
Finding  Requires(pretrans): 
Finding  Requires(posttrans): 
Finding  Requires: /usr/lib/rpm/mingw-find-requires.sh mingw32 mingw64
Finding  Conflicts: 
Finding  Obsoletes: 
Finding  Recommends: 
Finding  Suggests: 
Finding  Supplements: 
Finding  Enhances: 
Provides: ....
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: mingw64(advapi32.dll) mingw64(api-ms-win-core-synch-l1-2-0.dll) mingw64(icui18n67.dll) mingw64(icuuc67.dll) mingw64(kernel32.dll) mingw64(libboost_chrono-mt-x64.dll) mingw64(libboost_chrono-x64.dll) mingw64(libboost_context-mt-x64.dll) mingw64(libboost_filesystem-mt-x64.dll) mingw64(libboost_filesystem-x64.dll) mingw64(libboost_log-mt-x64.dll) mingw64(libboost_log-x64.dll) mingw64(libboost_regex-mt-x64.dll) mingw64(libboost_regex-x64.dll) mingw64(libboost_serialization-mt-x64.dll) mingw64(libboost_serialization-x64.dll) mingw64(libboost_thread-mt-x64.dll) mingw64(libbz2-1.dll) mingw64(libgcc_s_seh-1.dll) mingw64(libssp-0.dll) mingw64(libstdc++-6.dll) mingw64(libwinpthread-1.dll) mingw64(msvcrt.dll) mingw64(secur32.dll) mingw64(ws2_32.dll) mingw64(zlib1.dll) mingw64-crt mingw64-filesystem >= 95

Does filtering with __requires_exclude work with the external dependency generator?

Comment 5 Sandro Mani 2021-02-01 21:01:16 UTC
Good question, not sure whether it works with external generators.

I've moved ahead to filter these directly in the requires generator script [1]. As soon as mingw-filesystem-117-1.fc34 has appeared in the buildroot, it should be sufficient to just rebuild mingw-boost.

[1] https://src.fedoraproject.org/rpms/mingw-filesystem/c/9e2af704169d8d4acab5a26f187172faa28959eb?branch=master

Comment 6 Thomas Sailer 2021-02-02 07:40:32 UTC
Thanks Sandro for your quick support!

https://koji.fedoraproject.org/koji/buildinfo?buildID=1699630


Note You need to log in before you can comment on or make changes to this bug.