View previous topic :: View next topic |
Author |
Message |
egrep n00b
Joined: 16 Jul 2020 Posts: 49
|
Posted: Sun Jul 19, 2020 11:01 am Post subject: [SOLVED] Failed to emerge mail-client/thunderbird-68.10.0 |
|
|
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 |
|
|
Whissi Retired Dev
Joined: 12 Jan 2011 Posts: 222
|
Posted: Sun Jul 19, 2020 2:02 pm Post subject: |
|
|
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 |
|
|
egrep n00b
Joined: 16 Jul 2020 Posts: 49
|
|
Back to top |
|
|
Whissi Retired Dev
Joined: 12 Jan 2011 Posts: 222
|
Posted: Sun Jul 19, 2020 3:52 pm Post subject: |
|
|
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
to switch to <1.45 to emerge thunderbird. _________________ Regards,
Whissi |
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 21835
|
Posted: Sun Jul 19, 2020 4:35 pm Post subject: |
|
|
Shouldn't the Thunderbird build automatically use the Rust version it needs, since that version is installed? |
|
Back to top |
|
|
egrep n00b
Joined: 16 Jul 2020 Posts: 49
|
Posted: Sun Jul 19, 2020 4:37 pm Post subject: |
|
|
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 |
|
|
Whissi Retired Dev
Joined: 12 Jan 2011 Posts: 222
|
Posted: Sun Jul 19, 2020 5:53 pm Post subject: |
|
|
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 , same you do for GCC with
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 |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 21835
|
Posted: Sun Jul 19, 2020 8:07 pm Post subject: |
|
|
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 |
|
|
Whissi Retired Dev
Joined: 12 Jan 2011 Posts: 222
|
Posted: Mon Jul 20, 2020 2:17 pm Post subject: |
|
|
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 |
|
|
Ionen Developer
Joined: 06 Dec 2018 Posts: 2732
|
Posted: Wed Jul 22, 2020 8:48 am Post subject: |
|
|
@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 |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 21835
|
Posted: Thu Jul 23, 2020 2:03 am Post subject: |
|
|
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 |
|
|
Ionen Developer
Joined: 06 Dec 2018 Posts: 2732
|
Posted: Thu Jul 23, 2020 3:17 am Post subject: |
|
|
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 |
|
|
Whissi Retired Dev
Joined: 12 Jan 2011 Posts: 222
|
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 21835
|
Posted: Fri Jul 24, 2020 2:31 am Post subject: |
|
|
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 |
|
|
lefsha Veteran
Joined: 30 Aug 2004 Posts: 1234 Location: Burgas, Bulgaria
|
Posted: Fri Jul 24, 2020 7:26 am Post subject: |
|
|
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 |
|
|
egrep n00b
Joined: 16 Jul 2020 Posts: 49
|
|
Back to top |
|
|
|