Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 850745 - sys-apps/portage: implicates incorrect mask file for overlay masks
Summary: sys-apps/portage: implicates incorrect mask file for overlay masks
Status: UNCONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Interface (emerge) (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks:
 
Reported: 2022-06-09 14:17 UTC by Michael Moon
Modified: 2024-01-21 07:45 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Check masking reason with repo tag (file_850745.txt,1.26 KB, patch)
2023-10-12 19:43 UTC, Michel Ganguin
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Moon 2022-06-09 14:17:44 UTC
Portage implicates the incorrect mask file for overlay masks (*/*::overlay).

In the following example, it implicates package.mask/chaoslab when it _should_ implicate package.mask/guru

-

# emerge -avt waydroid

These are the packages that would be merged:

Calculating dependencies                   ... done!
[ebuild  N    #] app-emulation/waydroid-1.2.1::guru  PYTHON_SINGLE_TARGET="python3_9 -python3_10" 218 KiB
[ebuild  N     ]  app-containers/lxc-4.0.12::gentoo  USE="-apparmor caps -doc -io-uring -man pam seccomp (-selinux) ssl tools -verify-sig" 1,529 KiB
[ebuild  N     ]   acct-group/lxc-0::gentoo  0 KiB
[ebuild  N     ]   acct-user/lxc-0::gentoo  0 KiB
[ebuild  N    #]  dev-python/gbinder-1.0.0::guru  PYTHON_TARGETS="python3_9 python3_10" 23 KiB
[ebuild  N    #]   dev-libs/gbinder-1.1.19::guru  193 KiB
[ebuild  N    #]    dev-libs/libglibutil-1.0.63::guru  58 KiB

Total: 7 packages (7 new), Size of downloads: 2,019 KiB

The following mask changes are necessary to proceed:
(see "package.unmask" in the portage(5) man page for more details)
# required by app-emulation/waydroid-1.2.1::guru[python_single_target_python3_9]
# required by waydroid (argument)
# /etc/portage/package.mask/chaoslab:
=dev-python/gbinder-1.0.0
# required by waydroid (argument)
# /etc/portage/package.mask/chaoslab:
=app-emulation/waydroid-1.2.1
# required by dev-python/gbinder-1.0.0::guru
# required by app-emulation/waydroid-1.2.1::guru[python_single_target_python3_9]
# required by waydroid (argument)
# /etc/portage/package.mask/chaoslab:
=dev-libs/gbinder-1.1.19
# required by dev-libs/gbinder-1.1.19::guru
# required by dev-python/gbinder-1.0.0::guru
# required by app-emulation/waydroid-1.2.1::guru[python_single_target_python3_9]
# required by waydroid (argument)
# /etc/portage/package.mask/chaoslab:
=dev-libs/libglibutil-1.0.63

# cat /etc/portage/package.mask/chaoslab
*/*::chaoslab

# cat /etc/portage/package.mask/guru
*/*::guru

-

I use multiple overlays and mask them all this way (only listing select packages in portage.unmask/), and portage _always_ says that package.mask/chaoslab is responsible for masking overlay packages _regardless_ of which actual mask file has masked the relevant overlay.

I assume it's doing some lexical ordering and picking the 0th result to get this curious conclusion, but haven't dug into the specifics since I'm unfamiliar with portage internals.

The error output is correct for other types of mask, eg specific packages or package versions.

This behaviour has persisted over several recent versions of portage, and I couldn't find an existing bug that addresses it.

-

Supplementary information:

# emerge --info
Portage 3.0.30 (python 3.10.4-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-11.3.0, glibc-2.34-r13, 5.15.43-dorellan x86_64)
=================================================================
System uname: Linux-5.15.43-dorellan-x86_64-Intel-R-_Core-TM-_i7-7700K_CPU_@_4.20GHz-with-glibc2.34
KiB Mem:    32767796 total,   7782172 free
KiB Swap:   67633144 total,  65041136 free
Head commit of repository gentoo: ba19270dcd942b45acf1fc15e6145ae0cf8362b8

Timestamp of repository flussence: Wed, 08 Jun 2022 16:33:01 +0000
Head commit of repository flussence: b3f07b6a5af8ecdc9a0c644904ce62e6220c7b5c

Timestamp of repository gentoo-zh: Thu, 09 Jun 2022 08:03:08 +0000
Head commit of repository gentoo-zh: d81b52f89c013ced58577f7f9d10ff40ac48f981

Timestamp of repository guru: Wed, 08 Jun 2022 18:03:04 +0000
Head commit of repository guru: c750a77575a7a7765693d2d24ef3b58924579c68

Head commit of repository polymc: 358b12bcc57c42066a9aba8292898a2abb69656a

Timestamp of repository tatsh-overlay: Wed, 08 Jun 2022 08:04:15 +0000
Head commit of repository tatsh-overlay: 8ab7ecd772d87e4b7cc1ef419bc77427ededa612

Head commit of repository steam-overlay: 845eed8eae17b06f8e7cf6c94bc0143f60d5cc98

Head commit of repository tastytea: af5d3323f40f0bd46f828732ac4a36b9d7fda8c0

sh bash 5.1_p16
ld GNU ld (Gentoo 2.37_p1 p2) 2.37
distcc 3.4 x86_64-pc-linux-gnu [disabled]
ccache version 4.5.1 [disabled]
app-misc/pax-utils:        1.3.3::gentoo
app-shells/bash:           5.1_p16::gentoo
dev-java/java-config:      2.3.1::gentoo
dev-lang/perl:             5.34.0-r9::gentoo
dev-lang/python:           2.7.18_p15::gentoo, 3.8.13::gentoo, 3.9.12::gentoo, 3.10.4::gentoo
dev-lang/rust:             1.60.0::gentoo
dev-util/ccache:           4.5.1::gentoo
dev-util/cmake:            3.22.4::gentoo
dev-util/meson:            0.62.2::gentoo
sys-apps/baselayout:       2.8::gentoo
sys-apps/openrc:           0.44.10::gentoo
sys-apps/sandbox:          2.29::gentoo
sys-devel/autoconf:        2.13-r1::gentoo, 2.71-r1::gentoo
sys-devel/automake:        1.16.5::gentoo
sys-devel/binutils:        2.37_p1-r2::gentoo
sys-devel/binutils-config: 5.4.1::gentoo
sys-devel/clang:           13.0.1::gentoo, 14.0.4::gentoo
sys-devel/gcc:             11.3.0::gentoo
sys-devel/gcc-config:      2.5-r1::gentoo
sys-devel/libtool:         2.4.6-r6::gentoo
sys-devel/lld:             14.0.4::gentoo
sys-devel/llvm:            13.0.1::gentoo, 14.0.4::gentoo
sys-devel/make:            4.3::gentoo
sys-kernel/linux-headers:  5.15-r3::gentoo (virtual/os-headers)
sys-libs/glibc:            2.34-r13::gentoo
sys-libs/libselinux:       3.3::gentoo
Repositories:

gentoo
location: /var/db/repos/gentoo
sync-type: git
sync-uri: https://anongit.gentoo.org/git/repo/gentoo.git
priority: -1000

flussence
location: /var/db/repos/flussence
sync-type: git
sync-uri: https://github.com/gentoo-mirror/flussence.git
masters: gentoo

gentoo-zh
location: /var/db/repos/gentoo-zh
sync-type: git
sync-uri: https://github.com/gentoo-mirror/gentoo-zh.git
masters: gentoo

guru
location: /var/db/repos/guru
sync-type: git
sync-uri: https://github.com/gentoo-mirror/guru.git
masters: gentoo

polymc
location: /var/db/repos/polymc
sync-type: git
sync-uri: https://gitlab.com/flowln/polymc-gentoo
masters: gentoo

tatsh-overlay
location: /var/db/repos/tatsh-overlay
sync-type: git
sync-uri: https://github.com/gentoo-mirror/tatsh-overlay.git
masters: gentoo

crossdev
location: /usr/local/portage-crossdev
masters: gentoo
priority: 10

steam-overlay
location: /var/lib/layman/steam-overlay
sync-type: git
sync-uri: https://github.com/anyc/steam-overlay.git
masters: gentoo
priority: 50

tastytea
location: /var/lib/layman/tastytea
sync-type: git
sync-uri: https://schlomp.space/tastytea/overlay.git
masters: guru gentoo
priority: 50

local
location: /usr/local/portage
masters: gentoo
priority: 999

Installed sets: @esteam
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0 /var/bind"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/init.d /etc/portage/savedconfig /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /lib/modules"
CXXFLAGS="-O2 -pipe -march=native"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS="--alphabetical --keep-going --load-average=8 --autounmask=y --autounmask-write=n --verbose-conflicts --backtrack=100 --autounmask-backtrack=y --unordered-display"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg-live candy config-protect-if-modified distlocks downgrade-backup ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://mirrors.163.com/gentoo/ http://mirrors.aliyun.com/gentoo/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en en-GB en_US zh_CN"
MAKEOPTS="-j9 -l8"
PKGDIR="/var/cache/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
SHELL=""
USE="MSP430 Mips WebAssembly X a52 aac acl acpi activities alsa amd64 apng av1 bitcoin_policy_spamfilter bittorrent bluetooth bluray branding btrfs bzip2 cairo cdda cddb cdr chm cjk cli client conntrack corefonts cpudetection cpufreq_bench crossdev crypt cryptsetup cups cxx cycles d3d9 dbus declarative dhcp dhcp-tools dist-kernel dlz dnsretry dri drm dts dvd dvdr eap-sim eap-tls elogind encode epub evdev exif expat fat ffmpeg fftw flac fluidsynth fontconfig fortran ftdi fuse gd gdbm geoip2 gif gimp github gles1 gles2 gphoto2 gpm grub gstreamer gtk gui haptic havege hcitop hddtemp http2 hwaccel iconv icu id3tag imagemagick imlib inotify io-uring iproute2 ipv6 ithreads jack jpeg json jumbo-build kde kwallet ladspa latex lcms libass libglvnd libinput libkms libnotify libtirpc libusb ljr lm_sensors logrotate lxc lz4 lzma lzo mad markdown matroska mdnsresponder-compat midi mikmod minizip mjpeg mng mobi mobile mod mp3 mp4 mpeg mtp multilib multimedia nano ncurses nethack netlink nftables nls nptl ntfs ntp nvme ocr ogg onigurama oniguruma opencl opengl openh264 openimageio openmp openssl pam pango pcre pcre16 pdf pdf-writer pdfimport pipewire pipewire-alsa plasma png policykit postproc postscript ppds printsupport qml qt5 qtmedia rar rdp readline redfish rendering rle rustfmt s3tc samba sasl scanner sdl sdl2 seccomp secure-delete semantic-desktop smp socks5 soundcloud spell split-usr sqlite ssh ssl sslv3 startup-notification subtitles svc svg sync-plugin-portage system-llvm taglib tcl text theora tiff tk tracepath truetype tty-helpers udev udf udisks uefi unicode unicode3 unit-mm update_drivedb upnp upower urandom usb usbredir utils uvm v4l vaapi vcd vdpau virt-network virtualbox vkd3d vnc vorbis vpx vulkan vulkan-overlay webp widgets winbind wireshark-plugins wps x264 x265 xattr xcb xcomposite xft xinerama xkb xla xml xmp xnasong xnest xrandr xv xvfb xvid xvmc zeroconf zip zlib zstd" ABI_X86="64" ADA_TARGET="gnat_2020" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias http2" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse synaptics evdev mutouch" KERNEL="linux" L10N="en en-GB en-US zh-CN" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="AMDGPU ARM BPF NVPTX X86" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-4 php8-0" POSTGRES_TARGETS="postgres12 postgres13" PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_9 python3_10" QEMU_SOFTMMU_TARGETS="arm" QEMU_USER_TARGETS="arm" RUBY_TARGETS="ruby27" SANE_BACKENDS="abaton agfafocus apple artec artec_eplus48u as6e avision bhcanon canon630u canon_dr cardscan coolscan coolscan2 coolscan3 dc210 dc240 dc25 dell1600n_net dmc epjitsu epson epson2 fujitsu genesys gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx kvs40xx leo lexmark ma1509 magicolor matsushita microtek microtek2 mustek mustek_usb mustek_usb2 nec net niash p5 pie pixma plustek plustek_pp pnm qcam ricoh rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400 stv680 tamarack teco1 teco2 teco3 {-test} u12 umax umax1220u umax_pp xerox_mfp" USERLAND="GNU" VIDEO_CARDS="nvidia intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LEX, LFLAGS, LIBTOOL, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Comment 1 Michael Moon 2022-07-31 07:48:05 UTC
Here's another example:

# emerge -avt wifite

These are the packages that would be merged:

Calculating dependencies... done!
[ebuild  N    #] net-wireless/wifite-2.6.0:2::pentoo  USE="-dict -extra opencl" PYTHON_TARGETS="python3_9 python3_10" 4,411 KiB
[ebuild  N     ]  net-wireless/aircrack-ng-1.6_p20200722-r1::gentoo  USE="airdrop-ng airgraph-ng experimental netlink pcre sqlite" PYTHON_TARGETS="-python3_8 python3_9 python3_10" 7,425 KiB
[ebuild  N     ]   net-wireless/lorcon-0.0_p20200214::gentoo  USE="python" PYTHON_TARGETS="-python3_8 python3_9 python3_10" 495 KiB
[ebuild  N    #]  net-wireless/hcxdumptool-6.2.0::pentoo  USE="-gpio" 105 KiB
[ebuild  N    #]  net-wireless/hcxtools-6.2.0::pentoo  139 KiB

Total: 5 packages (5 new), Size of downloads: 12,573 KiB

The following mask changes are necessary to proceed:
(see "package.unmask" in the portage(5) man page for more details)
# required by net-wireless/wifite-2.6.0::pentoo
# required by wifite (argument)
# /etc/portage/package.mask/chaoslab:
=net-wireless/hcxdumptool-6.2.0
# required by net-wireless/wifite-2.6.0::pentoo
# required by wifite (argument)
# /etc/portage/package.mask/chaoslab:
=net-wireless/hcxtools-6.2.0

NOTE: The --autounmask-keep-masks option will prevent emerge
from creating package.unmask or ** keyword changes.

Use --autounmask-write to write changes to config files (honoring
CONFIG_PROTECT). Carefully examine the list of proposed changes,
paying special attention to mask or keyword changes that may expose
experimental or unstable packages.

# edescribe hcxdumptool hcxtools
net-wireless/hcxdumptool::pentoo        Small tool to capture packets from wlan devices (https://github.com/ZerBea/hcxdumptool)
net-wireless/hcxtools::pentoo   Portable solution for capturing wlan traffic and conversion to hashcat formats  (https://github.com/ZerBea/hcxtools)

# grep . /etc/portage/package.mask/chaoslab /etc/portage/package.mask/pentoo
/etc/portage/package.mask/chaoslab:*/*::chaoslab
/etc/portage/package.mask/pentoo:*/*::pentoo

# emerge --version
Portage 3.0.30 (python 3.10.5-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-11.3.0, glibc-2.34-r13, 5.15.55-dorellan x86_64)

--

As in the original report, portage is claiming that these packages are masked by an entry in /etc/portage/package.mask/chaoslab, when they're actually masked by an entry in /etc/portage/package.mask/pentoo.

Portage's description of the specific mask is also rather unhelpful, and since portage is lauded for its clear descriptions of relevant issues, this may also be considered a bug.
Comment 2 Michael Moon 2022-11-24 06:46:30 UTC
Here's another example:

# emerge -avtDUu @world

…

The following mask changes are necessary to proceed:
(see "package.unmask" in the portage(5) man page for more details)
# required by games-emulation/yuzu-9999::guru
# required by @__auto_slot_operator_replace_installed__ (argument)
# /etc/portage/package.mask/chaoslab:
=dev-cpp/cpp-httplib-0.10.9
# required by games-emulation/yuzu-9999::guru
# required by @__auto_slot_operator_replace_installed__ (argument)
# /etc/portage/package.mask/chaoslab:
=dev-cpp/cpp-jwt-1.5_pre20220727

$ edescribe cpp-httplib cpp-jwt
dev-cpp/cpp-httplib::guru       C++ header-only HTTP/HTTPS server and client library    (https://github.com/yhirose/cpp-httplib)
dev-cpp/cpp-jwt::guru   JSON Web Token library for C++  (https://github.com/arun11299)

$ grep . /etc/portage/package.mask/{chaoslab,guru}
/etc/portage/package.mask/chaoslab:*/*::chaoslab
/etc/portage/package.mask/guru:*/*::guru

$ emerge --info
Portage 3.0.38.1 (python 3.10.8-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-11.3.0, glibc-2.36-r5, 5.19.17-dorellan x86_64)

------------

Emerge claims the packages are masked by an exact version mask in /etc/portage/package.mask/chaoslab, when they're actually masked by an overlay/repo mask (*/*::guru) in /etc/portage/package.mask/guru

If portage is trying to suggest what should change so it can continue, perhaps it should be suggesting to add those lines to /etc/portage/package.unmask/yuzu?
Comment 3 Michel Ganguin 2023-10-04 22:58:14 UTC
TLDR in portage/package/ebuild/getmaskingreason.py:
* Remove Atom .without_repo for pkg comparison
* For more clarity about which package.mask entry is blocking the install, add the exact entry in the comment (e.g. # */*::repo)

The reason is because the package.mask lookup is performed by ignoring the overlay.

in portage/package/ebuild/getmaskingreason.py, `x = x.without_repo` is compared to `l_atom = Atom(...).without_repo`. Thus, it will take the first package.mask file matching (*/*::any) in alphabetic order.

I'm not sure why, or if there is a good reason to have done like this. But it seems that if you remove both the `.without_repo` it works properly.

> If portage is trying to suggest what should change so it can continue, perhaps it should be suggesting to add those lines to /etc/portage/package.unmask/yuzu?

It is suggesting to add it to package.unmask:

    The following mask changes are necessary to proceed:
    (see "package.unmask" in the portage(5) man page for more details)

If you add --autounmask-write, it will add it to /etc/portage/package.unmask

It may be confusing because the comment shows the reason why it is masked (not where to put the unmask entry):

    # /etc/portage/package.mask/chaoslab:
    =dev-cpp/cpp-jwt-1.5_pre20220727

If you add a comment before your mask, it will be included in the output, e.g.

    # /etc/portage/package.mask/chaoslab:
    # chaoslab overlay masked by default
    =dev-cpp/cpp-jwt-1.5_pre20220727

It shows what it would suggest to add to the unmask file. For more clarity, the mask entry could be included in the comment part:

    # /etc/portage/package.mask/chaoslab:
    # chaoslab overlay masked by default
    # */*::chaoslab
    =dev-cpp/cpp-jwt-1.5_pre20220727

This could be done by adding l_atom to the comment (or conditionally adding it when l_atom is not the same as mycpv or mycp).
Comment 4 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2023-10-05 11:23:17 UTC
Could you give a patch, given you've analysed the problem? It'd be really appreciated.
Comment 5 Michel Ganguin 2023-10-12 19:43:10 UTC
Created attachment 872660 [details, diff]
Check masking reason with repo tag

The mask reason can be wrong when using wildcards or when a package is present in multiple repos. Thus checking against the package name including the repo tag is required.

I also added a extra comment line if the mask does not contain to package name to install (e.g. a wildcard mask). I think allow better clarity on the mask reason.

    # required by category/package (argument)
    # /etc/portage/package.mask/repo:
    # masked by wildcard: */*::repo
    =category/package-X.Y.Z

I made few tests, by I'm not sure if there are edge cases where this change may cause other issues.
Comment 6 Michael Moon 2024-01-21 07:45:06 UTC
Hi, an update on this issue with portage-3.0.61-r1 (or possibly earlier, I haven't checked in a while)

Now it just states 'masked by: package.mask' instead of suggesting any file or details of the mask at all:

# emerge -avt linux-tools-power-x86
!!! All ebuilds that could satisfy "linux-tools-power-x86" have been masked.
!!! One of the following masked packages is required to complete your request:
- sys-power/linux-tools-power-x86-6.1::guru (masked by: package.mask)
- sys-power/linux-tools-power-x86-5.18::guru (masked by: package.mask)

Ideally it should implicate /etc/portage/package.mask/guru:*/*::guru here for maximum clarity