Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED] Failed to emerge mail-client/thunderbird-68.10.0
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
egrep
n00b
n00b


Joined: 16 Jul 2020
Posts: 49

PostPosted: Sun Jul 19, 2020 11:01 am    Post subject: [SOLVED] Failed to emerge mail-client/thunderbird-68.10.0 Reply with quote

Hello,

While emerging Thunderbird I get compilation errors. Below are the steps I took:

Code:

$ sudo emerge --ask mail-client/thunderbird
Password:

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

Calculating dependencies... done!
[ebuild  N     ] dev-lang/rust-bin-1.44.1  USE="-clippy -doc -rustfmt" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2"
[ebuild     UD ] virtual/rust-1.44.1 [1.45.0]
[ebuild  N     ] mail-client/thunderbird-68.10.0  USE="dbus gmp-autoupdate pulseaudio startup-notification system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-sqlite system-webp -bindist -clang -custom-cflags -custom-optimization -debug -eme-free -hardened -jack -lightning -lto (-pgo) (-selinux) -system-libvpx -test -wayland -wifi" CPU_FLAGS_X86="-avx2" L10N="-ar -ast -be -bg -br -ca -cak -cs -cy -da -de -dsb -el -en-GB -es-AR -es-ES -et -eu -fi -fr -fy -ga -gd -gl -he -hr -hsb -hu -hy -id -is -it -ja -ka -kab -kk -ko -lt -ms -nb -nl -nn -pl -pt-BR -pt-PT -rm -ro -ru -si -sk -sl -sq -sr -sv -tr -uk -uz -vi -zh-CN -zh-TW"


First of all I have no idea why it wants to downgrade rust.

The compilation error is:
Code:

13:09.59 gmake[4]: Leaving directory '/var/tmp/portage/mail-client/thunderbird-68.10.0/work/thunderbird-68.10.0/tbird/ipc/ipdl'
13:09.59 gmake[2]: *** [/var/tmp/portage/mail-client/thunderbird-68.10.0/work/thunderbird-68.10.0/config/recurse.mk:34: compile] Error 2
13:09.59 gmake[1]: *** [/var/tmp/portage/mail-client/thunderbird-68.10.0/work/thunderbird-68.10.0/config/rules.mk:413: default] Error 2
13:09.59 gmake: *** [client.mk:125: build] Error 2
13:09.62 19 compiler warnings present.
 * ERROR: mail-client/thunderbird-68.10.0::gentoo failed (compile phase):
 *   (no error message)
 *
 * Call stack:
 *     ebuild.sh, line 125:  Called src_compile
 *   environment, line 5251:  Called die
 * The specific snippet of code:
 *       GDK_BACKEND=x11 MOZ_MAKE_FLAGS="${MAKEOPTS} -O" SHELL="${SHELL:-${EPREFIX}/bin/bash}" MOZ_NOSPAM=1 ${_virtx} ./mach build --verbose || die
 *
 * If you need support, post the output of `emerge --info '=mail-client/thunderbird-68.10.0::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=mail-client/thunderbird-68.10.0::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/mail-client/thunderbird-68.10.0/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/mail-client/thunderbird-68.10.0/temp/environment'.
 * Working directory: '/var/tmp/portage/mail-client/thunderbird-68.10.0/work/thunderbird-68.10.0'
 * S: '/var/tmp/portage/mail-client/thunderbird-68.10.0/work/thunderbird-68.10.0'



emerge --info '=mail-client/thunderbird-68.10.0::gentoo'


Code:

Portage 3.0.0 (python 3.7.8-final-0, default/linux/amd64/17.1/desktop/gnome/systemd, gcc-10.1.0, glibc-2.31-r6, 5.7.9-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.7.9-gentoo-x86_64-Intel-R-_Core-TM-_i7-7700HQ_CPU_@_2.80GHz-with-gentoo-2.7
KiB Mem:    16271704 total,   6724844 free
KiB Swap:   16777212 total,  16776188 free
Timestamp of repository gentoo: Sun, 19 Jul 2020 08:00:01 +0000
Head commit of repository gentoo: f08aae011ddd3e7611975a50d1e6a269fc295354
sh bash 5.0_p18
ld GNU ld (Gentoo 2.34 p4) 2.34.0
app-shells/bash:          5.0_p18::gentoo
dev-lang/perl:            5.30.3-r1::gentoo
dev-lang/python:          2.7.18-r1::gentoo, 3.7.8-r2::gentoo, 3.8.4-r1::gentoo, 3.9.0_beta4-r1::gentoo
dev-util/cmake:           3.17.3::gentoo
sys-apps/baselayout:      2.7::gentoo
sys-apps/sandbox:         2.20::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo
sys-devel/automake:       1.16.2::gentoo
sys-devel/binutils:       2.34-r1::gentoo
sys-devel/gcc:            10.1.0-r2::gentoo
sys-devel/gcc-config:     2.3.1::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.7::gentoo (virtual/os-headers)
sys-libs/glibc:           2.31-r6::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 1
    sync-rsync-extra-opts:
    sync-rsync-verify-metamanifest: yes

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=skylake -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=skylake -O2 -pipe"
DISTDIR="/var/cache/distfiles"
ENV_UNSET="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=skylake -O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs 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 strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=skylake -O2 -pipe"
GENTOO_MIRRORS="http://ftp.romnet.org/gentoo/ http://mirrors.xservers.ro/gentoo/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j8"
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"
USE="X a52 aac acl acpi alsa amd64 berkdb bluetooth branding bzip2 cairo cdda cdr cli colord crypt cups dbus dri dts dvd dvdr eds emboss encode evo exif fat flac fortran gdbm gif gnome gnome-keyring gnome-online-accounts gpm gstreamer gtk gtk3 hfs iconv icu introspection ipv6 jpeg lcms ldap libnotify libsecret libtirpc mad mng mp3 mp4 mpeg multilib nautilus ncurses networkmanager nls nptl ntfs ogg opengl openmp pam pango pcre pdf png policykit ppds pulseaudio qt5 readline sdl seccomp spell split-usr ssl startup-notification svg systemd tcpd tiff tracker truetype udev udisks unicode upower usb vorbis wxwidgets x264 xattr xcb xml xv xvid zlib" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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 synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python3_7" RUBY_TARGETS="ruby27" USERLAND="GNU" VIDEO_CARDS="intel i965 iris" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS


emerge -pqv '=mail-client/thunderbird-68.10.0::gentoo'

Code:

[ebuild  N    ] mail-client/thunderbird-68.10.0  USE="dbus gmp-autoupdate pulseaudio startup-notification system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-sqlite system-webp -bindist -clang -custom-cflags -custom-optimization -debug -eme-free -hardened -jack -lightning -lto (-pgo) (-selinux) -system-libvpx -test -wayland -wifi" CPU_FLAGS_X86="-avx2" L10N="-ar -ast -be -bg -br -ca -cak -cs -cy -da -de -dsb -el -en-GB -es-AR -es-ES -et -eu -fi -fr -fy -ga -gd -gl -he -hr -hsb -hu -hy -id -is -it -ja -ka -kab -kk -ko -lt -ms -nb -nl -nn -pl -pt-BR -pt-PT -rm -ro -ru -si -sk -sl -sq -sr -sv -tr -uk -uz -vi -zh-CN -zh-TW"


Last edited by egrep on Sat Jul 25, 2020 11:51 am; edited 1 time in total
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Sun Jul 19, 2020 2:02 pm    Post subject: Reply with quote

PM will downgrade rust because of https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f5cb899dbdec54bff414db104ce7507cecd6bdcb which also applies to thunderbird-68.10.

Please show full build.log so we don't need to speculate because the quoted error message is not the real error which triggered the build failure.

Best guess: You now have multiple rust implementations installed but still trying to merge thunderbird with rust-1.45 which doesn't work.
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
egrep
n00b
n00b


Joined: 16 Jul 2020
Posts: 49

PostPosted: Sun Jul 19, 2020 3:02 pm    Post subject: Reply with quote

Here are build logs (16 MB) https://u.pcloud.link/publink/show?code=XZV1NNkZo7SJDxjR9X4PyePF2jpb5f67yixX
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Sun Jul 19, 2020 3:52 pm    Post subject: Reply with quote

Quote:
checking rustc version... 1.45.0

So yes, like speculated: I guess you now have two rust implementations installed (bin and non-bin) so you have to use
Code:
eselect rust

to switch to <1.45 to emerge thunderbird.
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 21835

PostPosted: Sun Jul 19, 2020 4:35 pm    Post subject: Reply with quote

Shouldn't the Thunderbird build automatically use the Rust version it needs, since that version is installed?
Back to top
View user's profile Send private message
egrep
n00b
n00b


Joined: 16 Jul 2020
Posts: 49

PostPosted: Sun Jul 19, 2020 4:37 pm    Post subject: Reply with quote

I just downgraded rust by masked it in /etc/portage/package.mask:

Code:

>dev-lang/rust-1.44.99


Everything is OK now. Thank you Whissi!
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Sun Jul 19, 2020 5:53 pm    Post subject: Reply with quote

Hu wrote:
Shouldn't the Thunderbird build automatically use the Rust version it needs, since that version is installed?

We do that via https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1b1172ffe9d3b9ae3d0110588c7db55354acbda0

With rust you don't have slots like in GCC but you can end up with multiple versions requiring use of
Code:
eselect rust
, same you do for GCC with
Code:
gcc-config

but you have to switch on your own.

If this would be GCC, I would check version using functions like gcc-major-version and die in pkg_setup phase but they don't exist for rust (yet).
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 21835

PostPosted: Sun Jul 19, 2020 8:07 pm    Post subject: Reply with quote

That commit appears to be just the dependency data to ensure that a capable version is installed, not that it is used. I know a few ebuilds have tests for specific gcc versions, but I thought it was generally the case that
  • the ebuild would warn if the active compiler version was wrong
  • requiring specific versions was considered a bug, to be fixed by patching the source to work with all the supported versions of the compiler
I don't see in that ebuild any messaging to the user to warn about incorrect Rust versions, and the experience here suggests the ebuild doesn't apply any necessary patches either. I take it from your last comment that it's not even possible to check the Rust version from an ebuild. Is that right?

Am I wrong, and it is not policy to treat such overly strict requirements as a bug?

This general flow seems like a way to make the Rust experience even more miserable than it already is (and thanks to some bad decisions by upstream, it's already pretty miserable).
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Mon Jul 20, 2020 2:17 pm    Post subject: Reply with quote

Hu wrote:
I don't see in that ebuild any messaging to the user to warn about incorrect Rust versions, and the experience here suggests the ebuild doesn't apply any necessary patches either. I take it from your last comment that it's not even possible to check the Rust version from an ebuild. Is that right?
Yes, there is no eclass like toolchain-funcs.eclass which provides gcc-major-version for rust.

However, due to this bug report I noticed that emerge will pull in dev-lang/rust-bin to satisfy <virtual/rust-1.45.0 when dev-lang/rust-1.45.0 is already installed (until this bug report I assumed that emerge would downgrade dev-lang/rust). So after speaking with rust project I decided to add an own version check for rustc via https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dcf68147d38b237eb9d852beafa4a7aa1b0543ca

I hope this will address all concerns.
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
Ionen
Developer
Developer


Joined: 06 Dec 2018
Posts: 2732

PostPosted: Wed Jul 22, 2020 8:48 am    Post subject: Reply with quote

@Whissi

That solution has a problem, if rust isn't installed "yet" (as in, it's about to be installed alongside thunderbird/firefox), eselect --brief rust show will fail as it is run early in pretend phase, and then lead to this thread. And I don't think there's a sane way to tell which version is about to be installed from pretend.
Back to top
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 21835

PostPosted: Thu Jul 23, 2020 2:03 am    Post subject: Reply with quote

Perhaps I am being naive, but why not just explicitly run the right version of Rust, instead of insisting that the user update the bare name rust to be a compatible version? Then the detection of exactly what version is available to run could be deferred to src_prepare, which would set a shell variable to the qualified path of a compatible Rust, which would be installed by that point, even if it was not available during pkg_pretend. Does the build system have hardcoded calls to the bare name rust, with no ready way to tell it that it should use some other name? That seems like a serious upstream defect if it can't be given a name/path to use. We have had CC / CXX for the C/C++ compiler name for far longer than Rust has existed, so it seems really weird to me that there would not be a RUSTC or RUSTCC or such variable to specify the desired name (with optional version).
Back to top
View user's profile Send private message
Ionen
Developer
Developer


Joined: 06 Dec 2018
Posts: 2732

PostPosted: Thu Jul 23, 2020 3:17 am    Post subject: Reply with quote

This starts to be a lot of things for an ebuild to do (check min max version, sanity checks, set variables for likely multiple parts of the toolchain, etc...) and better belong in an eclass. Also ebuilds I seen that need specific versions of gcc (like gcc8-only) seem to tell users to use gcc-config as well.

In this case, it may be simpler to just add the rust 1.45.0 fix rather than limit versions unless there's more problems that I don't know of (it looked rather simple on firefox 78's ebuild, "thought" didn't bother for 68 given 78 is the next ESR and rust 1.45.0 isn't stable anyway. Not famliar with thunderbird's situation though).
Edit: well, looks like there is indeed more to it, ah well :(


Last edited by Ionen on Fri Jul 24, 2020 1:53 pm; edited 2 times in total
Back to top
View user's profile Send private message
Whissi
Retired Dev
Retired Dev


Joined: 12 Jan 2011
Posts: 222

PostPosted: Fri Jul 24, 2020 1:04 am    Post subject: Reply with quote

Hrm. https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1632545a561002c8d2b743f6130bbd25b5a7a742 is all we can do here.

Switching rust implementation on our own in ebuild is not allowed.
_________________
Regards,
Whissi
Back to top
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 21835

PostPosted: Fri Jul 24, 2020 2:31 am    Post subject: Reply with quote

I am not suggesting that the ebuild use eselect to change the system Rust compiler version. I am suggesting that the ebuild export RUSTC=/usr/bin/rust-1.44 (or such other version as the user has and can use), and that the upstream build system recognize this variable and react by using that path instead of the bare name rust. I say this expecting that, as I noted above, the upstream build system should understand this, since the tradition of having a well-known variable that points to the compiler predates the existence of rust.

As an alternative that is ugly, but might work: dynamically write a trivial shell script, named rust, placed in $PATH ahead of the system paths. This script would have a body such as:
Code:
#!/bin/sh

exec /usr/bin/rust-1.44 "$@"
Anything that calls a bare rust would find this in the path, run it, and this would redirect the call to the viable Rust version.
Back to top
View user's profile Send private message
lefsha
Veteran
Veteran


Joined: 30 Aug 2004
Posts: 1234
Location: Burgas, Bulgaria

PostPosted: Fri Jul 24, 2020 7:26 am    Post subject: Reply with quote

PLEASE! DO NOT DOWNGRADE RUST.

RUST 1.45 works well. Both Thunderbird and Firefox can be compiled with that. Both work afterwards.

The only change one need to perform is add

RUSTFLAGS="-C embed-bitcode" to /etc/portage/make.conf


Please mark the thread as solved as long portage will be updated. Thx
_________________
Lefsha
Back to top
View user's profile Send private message
egrep
n00b
n00b


Joined: 16 Jul 2020
Posts: 49

PostPosted: Tue Jul 28, 2020 2:08 pm    Post subject: Reply with quote

As I can see this is fixed in thunderbird-68.11.0.ebuild:

https://gitweb.gentoo.org/repo/gentoo.git/commit/mail-client/thunderbird/thunderbird-68.11.0.ebuild?id=dc49a022d556049fe511b65256f7afa79ca4f7bb
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