Bug 26278 - dnf does not install all build dependencies to compile VLC locally
Summary: dnf does not install all build dependencies to compile VLC locally
Status: RESOLVED INVALID
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: 7
Hardware: All Linux
Priority: Normal normal
Target Milestone: ---
Assignee: Neal Gompa
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-01 07:52 CET by Kristoffer Grundström
Modified: 2020-10-13 17:20 CEST (History)
5 users (show)

See Also:
Source RPM: dnf-4.2.6-1.mga7.src.rpm,vlc-3.0.8-1.mga7.src.rpm
CVE:
Status comment:


Attachments
Log file from rebuilding the src.rpm for VLC 3.0.8 (65.53 KB, text/plain)
2020-03-03 00:02 CET, Kristoffer Grundström
Details

Description Kristoffer Grundström 2020-03-01 07:52:28 CET
Description of problem: I was about to compile and build my own local version of the master branch and before I cloned the git repo I ran this as root:

dnf build-dep vlc -y

That went fine without any errors.

However, that didn't seem to install all the necessary dependencies to build VLC as I got this running ./configure:

checking for QT... no
configure: error: Package 'Qt5Quick', required by 'virtual:world', not found
Package 'Qt5QuickWidgets', required by 'virtual:world', not found
Package 'Qt5QuickControls2', required by 'virtual:world', not found. If you want to build VLC without GUI, pass --disable-qt.

As I do plan to build a GUI for VLC I don't want to use --disable-qt with ./configure

I ran this as root:

urpmi libqt5quick libqt5quickwidgets5 libqt5quickcontrols2_5 and during the installation I got this message:

A desired package cannot be installed:
libqt5core-devel-5.12.6-2.mga7.i586 (due to insufficient systemd-devel-241-8.mga7.i586)

Version-Release number of selected component (if applicable): 5.12.6

How reproducible: Everytime

Steps to Reproduce:
1. Open a terminal.
2. Run this as root: dnf build-dep vlc
3. All dependancies installed just fine, but libqt5quick libqt5quickwidgets5 libqt5quickcontrols2_5 weren't included in the installation.
3. As normal user, run git clone --recursive git://git.videolan.org/vlc.git -b master
4. Do cd vlc/ && aclocal && ./bootstrap && ./configure
5. Here's where the configure script fails to find Qt5Quick, Qt5QuickWidgets and Qt5QuickControls2 which is required by virtual:world.
Comment 1 Kristoffer Grundström 2020-03-01 07:53:25 CET
urpmq --list-media shows:

Core Release
Core Release Debug
Core Updates
Core Updates Debug
Nonfree Release
Nonfree Release Debug
Nonfree Updates
Nonfree Updates Debug
Tainted Release
Tainted Release Debug
Tainted Updates
Tainted Updates Debug
Core 32bit Release
Core 32bit Updates
Nonfree 32bit Release
Nonfree 32bit Updates
Tainted 32bit Release
Tainted 32bit Updates
Comment 2 Lewis Smith 2020-03-01 21:35:22 CET
[I could not find any mention of 'build-dep' in the DNF man page].
Is this a 32-bit system (& problem)?

Among all the details, I see 2 problems:
1. The 3 apparently missing dependencies for VLC. I doubt this is a DNF affair.
 $ urpmq --requires-recursive vlc
 lib64qt5core5
but not the 3 in question.
2.
> A desired package cannot be installed:
> libqt5core-devel-5.12.6-2.mga7.i586
> (due to insufficient systemd-devel-241-8.mga7.i586)
Exploring this last on my 64-bit box:
 lib64qt5core-devel-5.12.6-2.mga7
which is required by a huge number of things, including the 3:
 lib64qt5quickcontrols2-devel
 lib64qt5quick-devel
 lib64qt5quickwidgets-devel
Should you have tried installing the -devel packages?

It is surprising that it should not already be present. Happy on this box with systemd-devel-241-8.5.mga7
 $ urpmq --whatrequires systemd-devel
 lib64qt5core-devel
 $ urpmq --requires lib64qt5core-devel
 devel(libsystemd(64bit))

Awaiting your response before assigning.

CC: (none) => lewyssmith
Source RPM: dnf => (none)

Comment 3 Kristoffer Grundström 2020-03-02 00:05:55 CET
(In reply to Lewis Smith from comment #2)
> [I could not find any mention of 'build-dep' in the DNF man page].
> Is this a 32-bit system (& problem)?

No, x86_64.

> Should you have tried installing the -devel packages?

I did install them, but I still can't build from the master branch.
Something is broken I guess.

> Awaiting your response before assigning.
Comment 4 Martin Whitaker 2020-03-02 10:03:21 CET
You should install the 64-bit devel packages on a 64-bit system. devel packages only contain arch-independent files (e.g. header files), so can be used for building both 32-bit and 64-bit versions (you need to install the appropriate arch-specific lib files).

'urpmq --requires-recursive' only shows the files needed to run a package, not the ones needed to build it. To show the build requirements, you can use

  rpm -q --requires <package>.src.rpm

I don't know a way to do this without downloading the source rpm first. You can also use

  urpmi --buildrequires <package>.src.rpm

to easily install all the necessary packages.

CC: (none) => mageia

Comment 5 Kristoffer Grundström 2020-03-02 12:06:59 CET
(In reply to Martin Whitaker from comment #4)
> You should install the 64-bit devel packages on a 64-bit system. devel
> packages only contain arch-independent files (e.g. header files), so can be
> used for building both 32-bit and 64-bit versions (you need to install the
> appropriate arch-specific lib files).
> 
> 'urpmq --requires-recursive' only shows the files needed to run a package,
> not the ones needed to build it. To show the build requirements, you can use
> 
>   rpm -q --requires <package>.src.rpm
> 
> I don't know a way to do this without downloading the source rpm first. You
> can also use
> 
>   urpmi --buildrequires <package>.src.rpm
> 
> to easily install all the necessary packages.

Yeah, but the problem still remains, if dnf has a command to install build deps, why isn't it also installing these 3 missing packages regardless if they're i586 or x86_64?
Comment 6 Martin Whitaker 2020-03-02 21:11:00 CET
(In reply to Kristoffer Grundström from comment #5)
> Yeah, but the problem still remains, if dnf has a command to install build
> deps, why isn't it also installing these 3 missing packages regardless if
> they're i586 or x86_64?

% rpm -q --requires vlc-3.0.8-1.mga7.src.rpm | grep -i qt
pkgconfig(Qt5Core) >= 5.1.0
pkgconfig(Qt5Gui)
pkgconfig(Qt5Svg)
pkgconfig(Qt5Widgets)
pkgconfig(Qt5X11Extras)

No mention of Qt5Quick* there, so seems they aren't required for the mga7 package build.

If you can't rebuild vlc from the Mageia source rpm without installing additional packages, there's a bug. If you can, there isn't.
Comment 7 Lewis Smith 2020-03-02 21:31:48 CET
(In reply to Lewis Smith from comment #2)
> [I could not find any mention of 'build-dep' in the DNF man page].
Because it comes as a DNF Plugin (in pkg dnf-utils):
https://rpm-software-management.github.io/dnf-plugins-core/builddep.html
"DNF builddep Plugin
Install whatever is needed to build the given .src.rpm or .spec file"
"Synopsis
dnf builddep <file>..."
"Arguments
<file>
The path to .src.rpm or .spec file, to read the needed build requirements from"
 Is this pertinent? It looks contradictory: to build or read the file.
Also, the parameter name is variable: build-dep | builddep.

(In reply to Martin Whitaker from comment #4)
As usual, thanks for your intervention. This is an unknown world to me.
> 'urpmq --requires-recursive' only shows the files needed to run a package,
> not the ones needed to build it. To show the build requirements, you can use
>   rpm -q --requires <package>.src.rpm
       -R, --requires
              List capabilities on which this package depends.
OK, I shall believe 'capabilities' is what we are talking about.

>   urpmi --buildrequires <package>.src.rpm
> to easily install all the necessary packages.
       --buildrequires
           Select all the "BuildRequires" of the wanted source packages.
is clearer. Pity this does not exist also for urpmq to look first.

(In reply to Kristoffer Grundström from comment #3)
> > Is this a 32-bit system (& problem)?
> No, x86_64.
which makes those references to .i586 pkgs suspect. Why do you have all those 32-bit repos enabled?

> > Should you have tried installing the -devel packages?
> I did install them, but I still can't build from the master branch.
> Something is broken I guess.
Clearly. But I am unsure where. DNS? VLC? Assigning/CC'ing for both.
DNF: Neal; VLC: Thierry & DavidG.

Assignee: bugsquad => ngompa13
Source RPM: (none) => dnf-4.2.6-1.mga7.src.rpm,vlc-3.0.8-1.mga7.src.rpm

Lewis Smith 2020-03-02 21:32:38 CET

CC: (none) => geiger.david68210, thierry.vignaud

Comment 8 Kristoffer Grundström 2020-03-03 00:02:27 CET
Created attachment 11533 [details]
Log file from rebuilding the src.rpm for VLC 3.0.8

CC: (none) => hamnisdude

Comment 9 Kristoffer Grundström 2020-03-03 00:03:01 CET
(In reply to Kristoffer Grundström from comment #8)
> Created attachment 11533 [details]
> Log file from rebuilding the src.rpm for VLC 3.0.8

I don't know about you guys, but I'd say it's a bug.
Comment 10 Martin Whitaker 2020-03-03 01:03:54 CET
You are building from a cauldron SRPM on a mga7 system? There's no guarantee that'll work without some adjustments.
Comment 11 Lewis Smith 2020-03-03 19:08:47 CET
>> Is this a 32-bit system (& problem)?
> No, x86_64.
A late thought. Much of comment 0 relates to *32-bit* libraries & packages. This is not appropriate for Kristoffer's 64-bit system.
Can you try disabling all 32-bit repos, and see what that gives?
Did you ever try installing lib64qt5quick lib64qt5quickwidgets5 lib64qt5quickcontrols2_5 [-devel] ?
Comment 12 Martin Whitaker 2020-03-03 20:24:40 CET
(In reply to Martin Whitaker from comment #10)
> You are building from a cauldron SRPM on a mga7 system? There's no guarantee
> that'll work without some adjustments.

...because many of the RPM macros have been changed in cauldron.

So, using iurt to test a build from vlc-3.0.8-8.mga8.tainted.src.rpm in a mga7 build environment, I get the same failure you report. But building from vlc-3.0.8-1.mga7.tainted.src.rpm succeeds.

Checking the iurt logs, I find these are the only Qt -devel packages that were installed:

core/updates/lib64qt5widgets-devel-5.12.6-2.mga7.x86_64.rpm
core/updates/lib64qt5dbus-devel-5.12.6-2.mga7.x86_64.rpm
core/updates/qtbase5-common-devel-5.12.6-2.mga7.x86_64.rpm
core/updates/lib64qt5eglfsdeviceintegration-devel-5.12.6-2.mga7.x86_64.rpm
core/updates/lib64qt5core-devel-5.12.6-2.mga7.x86_64.rpm
core/updates/lib64qt5xcbqpa-devel-5.12.6-2.mga7.x86_64.rpm
core/updates/lib64qt5svg-devel-5.12.6-1.mga7.x86_64.rpm
core/updates/lib64qt5x11extras-devel-5.12.6-1.mga7.x86_64.rpm
core/updates/lib64qt5gui-devel-5.12.6-2.mga7.x86_64.rpm

so the ones you mention in comment #0 are not needed to build the Mageia package, and hence neither dnf nor urpmi will automatically install them. You will need to install them manually.

Resolution: (none) => INVALID
Status: NEW => RESOLVED

Lewis Smith 2020-05-30 21:06:54 CEST

See Also: (none) => https://bugs.mageia.org/show_bug.cgi?id=26706

Lewis Smith 2020-10-13 17:20:53 CEST

See Also: (none) => https://bugs.mageia.org/show_bug.cgi?id=27393


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