Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 835624 - net-im/pidgin: No GUI built with tk USE flag.
Summary: net-im/pidgin: No GUI built with tk USE flag.
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Andreas Schürch
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-03-19 13:38 UTC by qsmodo
Modified: 2024-03-03 17:04 UTC (History)
3 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description qsmodo 2022-03-19 13:38:49 UTC
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
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-03-19 13:44:29 UTC
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?
Comment 2 qsmodo 2022-03-19 14:41:15 UTC
> 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
Comment 3 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-03-19 14:54:36 UTC
(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.
Comment 4 qsmodo 2022-03-19 15:11:47 UTC
> 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...
Comment 5 Ben Kohler gentoo-dev 2023-01-12 21:37:08 UTC
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.
Comment 6 Andreas Schürch gentoo-dev 2024-03-03 17:04:25 UTC
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?