When building with tk and not gtk USE flag, no GUI is installed. Reproducible: Always Steps to Reproduce: merge with tk USE flag only: * Found these USE flags for net-im/pidgin-2.14.8: U I - - dbus : Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) - - debug : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces - - doc : Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally - - eds : Enable support for Evolution-Data-Server (EDS) - - gadu : Enable Gadu Gadu protocol support - - gnutls : Prefer net-libs/gnutls as SSL/TLS provider (ineffective with USE=-ssl) - - groupwise : Enable Novell Groupwise protocol support - - gstreamer : Enables voice and video sessions - - gtk : Builds Pidgin, the GTK+ interface - - idn : Enable support for Internationalized Domain Names - - meanwhile : Enable meanwhile support for Sametime protocol - - ncurses : Build finch, console interface - - networkmanager : Enable net-misc/networkmanager support - - nls : Add Native Language Support (using gettext - GNU locale utilities) - - perl : Add optional support/bindings for the Perl language - - pie : Build programs as Position Independent Executables (a security hardening technique) - - prediction : Enable Contact Availability Prediction plugin - - python : Build libgnt (GLib Ncurses Toolkit used by finch) with python scripting support - - python_single_target_python3_8 : Build for Python 3.8 only + + python_single_target_python3_9 : Build for Python 3.9 only - - sasl : Add support for the Simple Authentication and Security Layer - - spell : Add dictionary support - - tcl : Add support the Tcl language + + tk : Add support for Tk GUI toolkit - - xscreensaver : Use X screensaver protocol extension to monitor idle/active status based on mouse/keyboard events - - zephyr : Enable Zephyr protocol support - - zeroconf : Support for DNS Service Discovery (DNS-SD) Actual Results: Emerge says >>> Running pre-merge checks for net-im/pidgin-2.14.8 * You did not pick the ncurses or gtk use flags, only libpurple * will be built. and no /usr/bin/pidgin is installed. Expected Results: Pidgin is installed with a Tk interface. Portage 3.0.30 (python 3.9.9-final-0, default/linux/amd64/17.1, gcc-11.2.1, glibc-2.33-r13, 5.15.23 x86_64) ================================================================= System uname: Linux-5.15.23-x86_64-with-glibc2.33 KiB Mem: 7995864 total, 5948904 free KiB Swap: 1357820 total, 1357820 free Timestamp of repository gentoo: Fri, 18 Mar 2022 00:00:01 +0000 Head commit of repository gentoo: 95e652435ccc57363418bdfd7cf23cdc24089557 sh dash 0.5.11.5 ld GNU ld (Gentoo 2.37_p1 p2) 2.37 app-misc/pax-utils: 1.3.3::gentoo app-shells/bash: 5.1_p16::gentoo dev-lang/perl: 5.34.0-r6::gentoo dev-lang/python: 3.9.9-r1::gentoo, 3.10.2_p1::gentoo dev-lang/rust-bin: 1.58.1::gentoo dev-util/cmake: 3.22.2::gentoo dev-util/meson: 0.60.3::gentoo sys-apps/baselayout: 2.7-r3::gentoo sys-apps/openrc: 0.44.10::gentoo sys-apps/sandbox: 2.25::gentoo sys-devel/autoconf: 2.13-r1::gentoo, 2.71-r1::gentoo sys-devel/automake: 1.16.4::gentoo sys-devel/binutils: 2.37_p1-r2::gentoo sys-devel/binutils-config: 5.4::gentoo sys-devel/gcc: 11.2.1_p20220115::gentoo sys-devel/gcc-config: 2.5-r1::gentoo sys-devel/libtool: 2.4.6-r6::gentoo sys-devel/llvm: 13.0.1::gentoo sys-devel/make: 4.3::gentoo sys-kernel/linux-headers: 5.15-r3::gentoo (virtual/os-headers) sys-libs/glibc: 2.33-r13::gentoo Repositories: gentoo location: /var/db/repos/gentoo sync-type: rsync sync-uri: rsync://rsync.gentoo.org/gentoo-portage priority: -1000 sync-rsync-verify-jobs: 1 sync-rsync-verify-max-age: 24 sync-rsync-verify-metamanifest: yes sync-rsync-extra-opts: ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="@FREE" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=native -O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /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" CXXFLAGS="-march=native -O2 -pipe" DISTDIR="/var/cache/distfiles" EMERGE_DEFAULT_OPTS="--nospinner -j 4 -l 3.2" 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="-march=native -O2 -pipe" FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg-live config-protect-if-modified distlocks 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 splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-march=native -O2 -pipe" GENTOO_MIRRORS="https://gentoo.c3sl.ufpr.br/ https://mirror.ufro.cl/gentoo/ https://gentoo.osuosl.org/" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j6" PKGDIR="/var/cache/binpkgs" 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="/bin/bash" USE="X acl alsa amd64 bzip2 cairo cli crypt dri elogind fortran gdbm gif iconv ipv6 libglvnd libtirpc mp3 multilib ncurses nptl openmp pam pcre postscript readline rubberband savedconfig seccomp split-usr ssl unicode xattr xpm zlib" 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" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" 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" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" 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" RUBY_TARGETS="ruby26 ruby27" USERLAND="GNU" VIDEO_CARDS="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, LINGUAS, 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
I think that's intentional (although it should be USE=gui now, see https://projects.gentoo.org/qa/policy-guide/use-flags.html#pg0802). You already quoted the message: > * You did not pick the ncurses or gtk use flags, only libpurple > * will be built. Does Pidgin actually have Tk toolkit/interface/GUI support, or is it just bindings support or something?
> I think that's intentional (although it should be USE=gui now, see https://projects.gentoo.org/qa/policy-guide/use-flags.html#pg0802). There is no gui or X flag available for pidgin. > Does Pidgin actually have Tk toolkit/interface/GUI support, or is it just bindings support or something? All Tk can offer is a GUI, as far as I can tell. And it wasn't dropped by Pidgin, judging by the its configure file, which contains echo Build with Tk support......... : $enable_tk
(In reply to qsmodo from comment #2) > > I think that's intentional (although it should be USE=gui now, see https://projects.gentoo.org/qa/policy-guide/use-flags.html#pg0802). > > There is no gui or X flag available for pidgin. > I'm saying it should be changed to gui if Tk in Pidgin doesn't actually support a graphical interface. > > Does Pidgin actually have Tk toolkit/interface/GUI support, or is it just bindings support or something? > > All Tk can offer is a GUI, as far as I can tell. And it wasn't dropped by > Pidgin, judging by the its configure file, which contains > > echo Build with Tk support......... : $enable_tk I don't know if "Tk support" for Pidgin actually means "replace GTK". I don't think I've ever seen Pidgins Tk interface.
> I don't know if "Tk support" for Pidgin actually means "replace GTK". I don't think I've ever seen Pidgins Tk interface. I could only find relevant occurrences of Tk in libpurple/plugins/tcl. Must be related to plugins then, so I think you're right (even though there _is_ a tcl USE flag). The problem with USE flags is that it may be hard to decipher what they actually do...
I did a wee bit of testing on this. With USE="tk -tcl", nothing extra is built (iow, same result as USE="-tcl -tk"). With USE="tcl -tk", an extra tcl.so plugin is built which links to libtcl: $ lddtree pidgin-2.4.10-tcl/usr/lib64/purple-2/tcl.so tcl.so => pidgin-2.4.10-tcl/usr/lib64/purple-2/tcl.so (interpreter => none) libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 libtcl8.6.so => /usr/lib64/libtcl8.6.so libz.so.1 => /lib64/libz.so.1 libm.so.6 => /lib64/libm.so.6 ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 libc.so.6 => /lib64/libc.so.6 $ With USE="tcl tk", an extra tcl.so plugin is built which links to both libtcl and libtk: $ lddtree pidgin-2.4.10-tcltk/usr/lib64/purple-2/tcl.so tcl.so => pidgin-2.4.10-tcltk/usr/lib64/purple-2/tcl.so (interpreter => none) libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 libtcl8.6.so => /usr/lib64/libtcl8.6.so libz.so.1 => /lib64/libz.so.1 libm.so.6 => /lib64/libm.so.6 ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 libtk8.6.so => /usr/lib64/libtk8.6.so libXft.so.2 => /usr/lib64/libXft.so.2 libfreetype.so.6 => /usr/lib64/libfreetype.so.6 libbz2.so.1 => /lib64/libbz2.so.1 libpng16.so.16 => /usr/lib64/libpng16.so.16 libXrender.so.1 => /usr/lib64/libXrender.so.1 libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 libexpat.so.1 => /usr/lib64/libexpat.so.1 libX11.so.6 => /usr/lib64/libX11.so.6 libxcb.so.1 => /usr/lib64/libxcb.so.1 libXau.so.6 => /usr/lib64/libXau.so.6 libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 libc.so.6 => /lib64/libc.so.6 $ Now, what does this plugin do? Not sure yet. Does the one linked to libtcl+libtk do more than the one linked only to libtcl? Not sure yet.
I'm also not sure about the TK/TCL flags. My guess is that it is only for libpurle which supports multiple guis (not just pidgin). I'm working on the pidgin-2.14.13 version bump and would like to introduce the gui flag. But as so many plugins require pidgin to be built with the gtk useflag, I tend to leave both useflags for now and just put a REQUIRED_USE until the plugins are all moved to the "gui" requirement... gtk? ( gui ) gui? ( gtk ) And put a remark within the ebuild like this: # The new gui useflag depends on the gtk useflag, as most pidgin plugins depend # on the gtk flag. As soon as all plugins have been updated to use the new # gui flag, the gtk flag can get removed. I'll ignore the ncurses flag with the gui useflag, as that only provides /usr/bin/finch, which most probably is not what somebody wants from a gui. Is that ok for everybody?