Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Check what will an USE flag pull in?
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
midnite
Guru
Guru


Joined: 09 Apr 2006
Posts: 449
Location: Hong Kong

PostPosted: Wed Nov 13, 2024 3:17 am    Post subject: Check what will an USE flag pull in? Reply with quote

Take kde-apps/kdesdk-meta as an example. By default all its USE flags are disabled. Installing kde-apps/kdesdk-meta with default USE flags options almost install nothing.

eix kdesdk-meta:
[I] kde-apps/kdesdk-meta
     Available versions:  24.05.2 24.08.1{xpak} ~24.08.2 {cvs git mercurial perl php python subversion webengine}
     Installed versions:  24.08.1{xpak}(09點50分25秒 2024年11月13號 禮拜叁)(-cvs -git -mercurial -perl -php -python -subversion -webengine)
     Homepage:            https://apps.kde.org/categories/development/
     Description:         KDE SDK - merge this to pull in all kdesdk-derived packages


After installed kde-apps/kdesdk-meta, (almost) none of these programs available in my system.

equery depgraph kdesdk-meta:
 * dependency graph for kde-apps/kdesdk-meta-24.08.1
...

 `--  kde-apps/kdesdk-meta-24.08.1  amd64
   `--  dev-util/massif-visualizer-24.08.1  (>=dev-util/massif-visualizer-24.08.1) amd64
   `--  kde-apps/kapptemplate-24.08.1  (>=kde-apps/kapptemplate-24.08.1) amd64
   `--  kde-apps/kcachegrind-24.08.1  (>=kde-apps/kcachegrind-24.08.1) amd64
   `--  kde-apps/kde-dev-scripts-24.08.1  (>=kde-apps/kde-dev-scripts-24.08.1) amd64
   `--  kde-apps/kde-dev-utils-24.08.1  (>=kde-apps/kde-dev-utils-24.08.1) amd64
   `--  kde-apps/kdesdk-thumbnailers-24.08.1  (>=kde-apps/kdesdk-thumbnailers-24.08.1) amd64
   `--  kde-apps/kompare-24.08.1  (>=kde-apps/kompare-24.08.1) amd64
   `--  kde-apps/libkomparediff2-24.08.1  (>=kde-apps/libkomparediff2-24.08.1) amd64
   `--  kde-apps/poxml-24.08.1-r1  (>=kde-apps/poxml-24.08.1) amd64
   `--  kde-apps/umbrello-24.08.1  (>=kde-apps/umbrello-24.08.1) amd64
   `--  kde-apps/cervisia-24.08.1  (>=kde-apps/cervisia-24.08.1) amd64
   `--  kde-apps/dolphin-plugins-git-24.08.1  (>=kde-apps/dolphin-plugins-git-24.08.1) amd64
   `--  kde-apps/dolphin-plugins-mercurial-24.08.1  (>=kde-apps/dolphin-plugins-mercurial-24.08.1) amd64
   `--  dev-util/kio-perldoc-24.08.1  (>=dev-util/kio-perldoc-24.08.1) amd64
   `--  kde-apps/lokalize-24.08.1  (>=kde-apps/lokalize-24.08.1) amd64
   `--  kde-apps/dolphin-plugins-subversion-24.08.1-r1  (>=kde-apps/dolphin-plugins-subversion-24.08.1) amd64
   `--  dev-util/kdevelop-24.08.1  (>=dev-util/kdevelop-24.08.1) amd64
   `--  dev-util/kdevelop-php-24.08.1  (>=dev-util/kdevelop-php-24.08.1) amd64
   `--  dev-util/kdevelop-python-24.08.1  (>=dev-util/kdevelop-python-24.08.1) amd64
[ kde-apps/kdesdk-meta-24.08.1 stats: packages (20), max depth (1) ]

...


I can try enabling the USE flag and see what packages it will pull in.

USE='webengine' emerge -pv kde-apps/kdesdk-meta:
These are the packages that would be merged, in order:
...
...
[ebuild  N     ] sys-devel/clang-runtime-18.1.8:18::gentoo  USE="compiler-rt openmp sanitize -libcxx" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  N     ] dev-util/kdevelop-24.08.1:6/24.08::gentoo  USE="handbook plasma qmake share -debug -gdbui -subversion -test" LLVM_SLOT="18 -15 -16 -17" 8,588 KiB
[ebuild  N     ] kde-apps/dolphin-plugins-git-24.08.1:6::gentoo  USE="-debug" 0 KiB
[ebuild  N     ] dev-util/kdevelop-php-24.08.1:6::gentoo  USE="handbook -debug -test" 1,069 KiB
[ebuild  N     ] dev-util/kdevelop-python-24.08.1:6::gentoo  USE="-debug -test" PYTHON_SINGLE_TARGET="python3_12 -python3_10 -python3_11" 1,076 KiB
[ebuild   R    ] kde-apps/kdesdk-meta-24.08.1::gentoo  USE="git* php* python* webengine* -cvs -mercurial -perl -subversion" 0 KiB

Total: 53 packages (1 upgrade, 51 new, 1 reinstall), Size of downloads: 179,176 KiB


But what if after I actually installed those packages, how to check what packages that the USE flag would pull in?

I found that the dependency information may be written in the ebuild file.

cat /var/db/pkg/kde-apps/kdesdk-meta-24.08.1/kdesdk-meta-24.08.1.ebuild:
...
        webengine? (
                >=dev-util/kdevelop-${PV}:*
                php? ( >=dev-util/kdevelop-php-${PV}:* )
                python? ( >=dev-util/kdevelop-python-${PV}:* )
        )
...


Any programs to phrase this dependence information recursively (or up to a depth of e.g. 3)?
_________________
- midnite.
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 5108
Location: Bavaria

PostPosted: Wed Nov 13, 2024 12:37 pm    Post subject: Re: Check what will an USE flag pull in? Reply with quote

midnite wrote:
[...] But what if after I actually installed those packages, how to check what packages that the USE flag would pull in?

I found that the dependency information may be written in the ebuild file. [...]

Yes, you will find the answer what a USE flag will pull in, in the ebuild file ... OR ... you can also check it with emerge (by using parameter -p and a temporary adding of a flag) ... e.g.:
Code:
# USE="newflag" emerge -pvD packagename

(of course you should set this flag later in your /etc/portage/package.use IF you really want to use it.)
_________________
https://wiki.gentoo.org/wiki/User:Pietinger
Back to top
View user's profile Send private message
Genone
Retired Dev
Retired Dev


Joined: 14 Mar 2003
Posts: 9611
Location: beyond the rim

PostPosted: Thu Nov 14, 2024 10:56 am    Post subject: Re: Check what will an USE flag pull in? Reply with quote

midnite wrote:
But what if after I actually installed those packages, how to check what packages that the USE flag would pull in?

Maybe this is a language issue, but I don't understand your question. Or rather, you already answered it yourself in the previous sentence.

Probably easiest if you could give a specific example what output you're looking for a given input. It looks like you want to use "kdesdk-meta" and "webengine" as inputs, but I'm not really sure what output you're looking for if you're not satisified with what you already got.
Back to top
View user's profile Send private message
midnite
Guru
Guru


Joined: 09 Apr 2006
Posts: 449
Location: Hong Kong

PostPosted: Fri Nov 15, 2024 10:30 am    Post subject: Reply with quote

Thanks both pietinger and Genone for reply.

Sorry if I caused the confusion.

Before the USE flag was enabled, USE='webengine' emerge -pv kde-apps/kdesdk-meta would list the packages going to be emerged, (This output is quoted from my first post):

Code:
These are the packages that would be merged, in order:
...
...
[ebuild  N     ] sys-devel/clang-runtime-18.1.8:18::gentoo  USE="compiler-rt openmp sanitize -libcxx" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  N     ] dev-util/kdevelop-24.08.1:6/24.08::gentoo  USE="handbook plasma qmake share -debug -gdbui -subversion -test" LLVM_SLOT="18 -15 -16 -17" 8,588 KiB
[ebuild  N     ] kde-apps/dolphin-plugins-git-24.08.1:6::gentoo  USE="-debug" 0 KiB
[ebuild  N     ] dev-util/kdevelop-php-24.08.1:6::gentoo  USE="handbook -debug -test" 1,069 KiB
[ebuild  N     ] dev-util/kdevelop-python-24.08.1:6::gentoo  USE="-debug -test" PYTHON_SINGLE_TARGET="python3_12 -python3_10 -python3_11" 1,076 KiB
[ebuild   R    ] kde-apps/kdesdk-meta-24.08.1::gentoo  USE="git* php* python* webengine* -cvs -mercurial -perl -subversion" 0 KiB

Total: 53 packages (1 upgrade, 51 new, 1 reinstall), Size of downloads: 179,176 KiB


After I actually emerged all the 53 packages above, now executing any of the three commands below, it will not show what the USE flag "webengine" will pull in.

  • emerge -pv kde-apps/kdesdk-meta
  • USE='webengine' emerge -pv kde-apps/kdesdk-meta
  • USE='-webengine' emerge -pv kde-apps/kdesdk-meta


All of them show the same output:

Code:
These are the packages that would be merged, in order:

Calculating dependencies ... done!                           
Dependency resolution took 11.72 s (backtrack: 0/20).

[ebuild   R    ] kde-apps/kdesdk-meta-24.08.1::gentoo  USE="git php python webengine -cvs -mercurial -perl -subversion" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB


This is what I expected. And I understand this output.

It may be possible to run USE='-webengine' emerge -pv --deep --depclean and see what packages will be removed. It will get a picture of what packages was pulled in by the USE flag "webengine". But I have a bad habit that quite a few packages were not recorded in @world (was emerged by --oneshot). Doing emerge --depclean will include a lot of other packages. As a result, this approach is not possible.

From the ebuild file /var/db/pkg/kde-apps/kdesdk-meta-24.08.1/kdesdk-meta-24.08.1.ebuild, the answer to what the USE flag "webengine" will pull in is actually written there:

Code:
...
        webengine? (
                >=dev-util/kdevelop-${PV}:*
                php? ( >=dev-util/kdevelop-php-${PV}:* )
                python? ( >=dev-util/kdevelop-python-${PV}:* )
        )
...


But this is not the full answer. For example I do not know (directly from the ebuild file) that kde-apps/dolphin-plugins-git was pulled in by the USE flag "webengine". Any programs to phrase this dependence information recursively?

My imaginary input would be: equery depgraph kde-apps/kdesdk-meta --useflag webengine

And the expected output is: (This list is composed from the USE='webengine' emerge -pv kde-apps/kdesdk-meta output in my first post.)

Code:
dev-util/kdevelop-python
dev-util/kdevelop-php
kde-apps/dolphin-plugins-git
dev-util/kdevelop
sys-devel/clang-runtime
...
53 packages


The program logic should be:

  1. Read the ebuild file /var/db/pkg/kde-apps/kdesdk-meta-24.08.1/kdesdk-meta-24.08.1.ebuild section webengine? ( ... )
  2. Check >=dev-util/kdevelop-${PV}:*. If true, recursive into it.
  3. Check if php USE flag is enabled. If true, recursive check dev-util/kdevelop-php.
  4. Check if python USE flag is enabled. If true, recursive check dev-util/kdevelop-python.


It is actually similar to what equery depgraph kde-apps/kdesdk-meta tells us.

Code:
equery depgraph kde-apps/kdesdk-meta

...

 * dependency graph for kde-apps/kdesdk-meta-24.08.1
 `--  kde-apps/kdesdk-meta-24.08.1  amd64
   `--  dev-util/massif-visualizer-24.08.1  (>=dev-util/massif-visualizer-24.08.1) amd64
   `--  kde-apps/kapptemplate-24.08.1  (>=kde-apps/kapptemplate-24.08.1) amd64
   `--  kde-apps/kcachegrind-24.08.1  (>=kde-apps/kcachegrind-24.08.1) amd64
   `--  kde-apps/kde-dev-scripts-24.08.1  (>=kde-apps/kde-dev-scripts-24.08.1) amd64
   `--  kde-apps/kde-dev-utils-24.08.1  (>=kde-apps/kde-dev-utils-24.08.1) amd64
   `--  kde-apps/kdesdk-thumbnailers-24.08.1  (>=kde-apps/kdesdk-thumbnailers-24.08.1) amd64
   `--  kde-apps/kompare-24.08.1  (>=kde-apps/kompare-24.08.1) amd64
   `--  kde-apps/libkomparediff2-24.08.1  (>=kde-apps/libkomparediff2-24.08.1) amd64
   `--  kde-apps/poxml-24.08.1-r1  (>=kde-apps/poxml-24.08.1) amd64
   `--  kde-apps/umbrello-24.08.1  (>=kde-apps/umbrello-24.08.1) amd64
   `--  kde-apps/cervisia-24.08.1  (>=kde-apps/cervisia-24.08.1) amd64
   `--  kde-apps/dolphin-plugins-git-24.08.1  (>=kde-apps/dolphin-plugins-git-24.08.1) amd64
   `--  kde-apps/dolphin-plugins-mercurial-24.08.1  (>=kde-apps/dolphin-plugins-mercurial-24.08.1) amd64
   `--  dev-util/kio-perldoc-24.08.1  (>=dev-util/kio-perldoc-24.08.1) amd64
   `--  kde-apps/lokalize-24.08.1  (>=kde-apps/lokalize-24.08.1) amd64
   `--  kde-apps/dolphin-plugins-subversion-24.08.1-r1  (>=kde-apps/dolphin-plugins-subversion-24.08.1) amd64
   `--  dev-util/kdevelop-24.08.1  (>=dev-util/kdevelop-24.08.1) amd64
   `--  dev-util/kdevelop-php-24.08.1  (>=dev-util/kdevelop-php-24.08.1) amd64
   `--  dev-util/kdevelop-python-24.08.1  (>=dev-util/kdevelop-python-24.08.1) amd64
[ kde-apps/kdesdk-meta-24.08.1 stats: packages (20), max depth (1) ]

...


But I was surprised that after I emerge -av kde-apps/kdesdk-meta, none of the packages above was installed. It is because all the USE flags of kde-apps/kdesdk-meta were OFF by default. equery depgraph kde-apps/kdesdk-meta does not give the USE flag conditional information.
_________________
- midnite.
Back to top
View user's profile Send private message
CaptainBlood
Advocate
Advocate


Joined: 24 Jan 2010
Posts: 3859

PostPosted: Fri Nov 15, 2024 3:16 pm    Post subject: Reply with quote

equery d doesn't filter its output according to active USE flags.

So once the most recent package install has pulled any new package,
equery d will report about any installed package which COULD require such new package to be installed.

It would be indeed be nice if equery could only report packages which DO require new package installed according to their current settings.

Thks 4 ur attention, interest & support.
_________________
USE="-* ..." in /etc/portage/make.conf here, i.e. a countermeasure to portage implicit braces, belt & diaper paradigm
LT: "I've been doing a passable imitation of the Fontana di Trevi, except my medium is mucus. Sooo much mucus. "


Last edited by CaptainBlood on Fri Nov 15, 2024 4:05 pm; edited 1 time in total
Back to top
View user's profile Send private message
Genone
Retired Dev
Retired Dev


Joined: 14 Mar 2003
Posts: 9611
Location: beyond the rim

PostPosted: Fri Nov 15, 2024 3:51 pm    Post subject: Reply with quote

Ok, it was a language issue. Your question is "How to check what packages were pulled in due to a specific USE flag?"
That is a complex topic. In your example, kdevelop-php and kdevelop-python were pulled in by USE=webengine, but only because you also had set USE="php python". And other relationsships are even more complex. Properly resolving all that in reverse and displaying it in a usable way is quite tricky.


Quote:
For example I do not know (directly from the ebuild file) that kde-apps/dolphin-plugins-git was pulled in by the USE flag "webengine".

Because it wasn't. Your example includes multiple USE changes (evident by the * in front of php and python), not just USE=webengine. Where those came from I can't tell, I'd assume you've modified make.conf and/or package.use. And dolphin-plugins-git was installed because you set USE=git, there is no relation to USE=webengine at all.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2425

PostPosted: Fri Nov 15, 2024 4:11 pm    Post subject: Reply with quote

midnite wrote:


But this is not the full answer. For example I do not know (directly from the ebuild file) that kde-apps/dolphin-plugins-git was pulled in by the USE flag "webengine". Any programs to phrase this dependence information recursively?


Add --tree (-t) to your emerge query. Then you can inspect the packages reported to pull in packages of interest and find out about the use flags. There's no such program because this is not a common case. You rarely do it and once you're all set you forget about it. Unless you install a new system every other day :)

Best Regards,
Georgi
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum