Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 524038 - sys-apps/portage-2.2.14_rc1: glibc binpkg fails in pkg_setup and error message does not show in the build log (elog works correctly though)
Summary: sys-apps/portage-2.2.14_rc1: glibc binpkg fails in pkg_setup and error messag...
Status: RESOLVED OBSOLETE
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Binary packages support (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
: 523964 523968 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-09-29 15:33 UTC by Vadim A. Misbakh-Soloviov (mva)
Modified: 2022-12-29 00:41 UTC (History)
1 user (show)

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


Attachments
emerge --info (file_524038.txt,22.77 KB, text/plain)
2014-09-29 15:33 UTC, Vadim A. Misbakh-Soloviov (mva)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vadim A. Misbakh-Soloviov (mva) gentoo-dev 2014-09-29 15:33:50 UTC
Created attachment 385742 [details]
emerge --info

Hi there! I've found that after some of the updates my portage refuse to install new glibc binpkg on some hosts (while it previously installed it fine on some another, but now it refuses too (so, I can't fully catch the source of that portage behaviour)).

When I type:
> emerge -Ok glibc
I see:

> [binary   R    ] sys-libs/glibc-2.19-r1:2.2  USE="gd* nscd* -debug (-hardened) (-multilib) -profile (-selinux) -suid -systemtap -vanilla" 0 KiB
>
> Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 KiB
>
>
> >>> Emerging binary (1 of 1) sys-libs/glibc-2.19-r1::gentoo
>  * glibc-2.19-r1.tbz2 MD5 SHA1 size ;-) ...                              [ ok ]
> >>> Extracting info
> 
> >>> Failed to emerge sys-libs/glibc-2.19-r1, Log file:
> 
> >>>  '/var/log/portage/build/sys-libs/glibc-2.19-r1:20140928-144132.log'
> *
> * The following package has failed to build or install:
> *
> *  (sys-libs/glibc-2.19-r1:2.2/2.2::gentoo, binary scheduled for merge), Log file:
>  *   '/var/log/portage/build/sys-libs/glibc-2.19-r1:20140928-144132.log'
>  *
> emerge -Ok glibc  5,37s user 0,98s system 58% cpu 10,890 total

But log, actually, is even less informative:
> >>> Extracting info
> * Package:    sys-libs/glibc-2.19-r1
> * Repository: gentoo
> * USE:        x86 abi_x86_32 kernel_linux gd elibc_glibc nscd userland_GNU
> * FEATURES:   ccache preserve-libs sandbox userpriv usersandbox

(that's all).


Although, I just found that in emails from portage (custom elog, see emerge info):

> Call stack:
>               ebuild.sh, line   93:  Called pkg_setup
>             environment, line 2868:  Called eblit-run 'pkg_setup'
>             environment, line  985:  Called eblit-glibc-pkg_setup
>             environment, line  841:  Called glibc_run_test '#include <pwd.h>
> int main(){return getpwuid(0)==0;}
> '
>             environment, line 2083:  Called glibc_compile_test '' '#include <pwd.h>
> int main(){return getpwuid(0)==0;}
> '
>            environment, line 1996:  Called nonfatal 'emake' '-s' 'glibc-test'
>  isolated-functions.sh, line   92:  Called die
> The specific snippet of code:
>                die "$FUNCNAME() not supported in this EAPI"
>
> If you need support, post the output of `emerge --info '=sys-libs/glibc-2.19-r1::gentoo'`,
> the complete build log and the output of `emerge -pqv '=sys-libs/glibc-2.19-r1::gentoo'`.
> The complete build log is located at '/var/log/portage/build/sys-libs/glibc-2.19-r1:20140928-195608.log'.
> For convenience, a symlink to the build log is located at '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp/build.log'.
> The ebuild environment file is located at '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp/environment'.
> Working directory: '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp'
> S: '/var/tmp/portage/sys-libs/glibc-2.19-r1/work/glibc-2.19'

Dunno, why portage don't point me in terminal on that log's saved file...
Comment 1 Andreas K. Hüttel archtester gentoo-dev 2014-09-29 15:53:43 UTC
Looks like this is related to bug 523332
Comment 2 Vadim A. Misbakh-Soloviov (mva) gentoo-dev 2014-10-05 06:11:02 UTC
*** Bug 523968 has been marked as a duplicate of this bug. ***
Comment 3 Vadim A. Misbakh-Soloviov (mva) gentoo-dev 2014-10-05 06:13:01 UTC
*** Bug 523964 has been marked as a duplicate of this bug. ***
Comment 4 Zac Medico gentoo-dev 2014-10-07 00:54:13 UTC
I'm unable to reproduce the problem, using a minimal test ebuild that calls nonfatal in pkg_setup as follows:

pkg_setup() {
	[[ $EMERGE_FROM == binary ]] && nonfatal echo "test binpkg failure"
}

Can you reproduce the problem if you try to install the same binary package again?
Comment 5 Vadim A. Misbakh-Soloviov (mva) gentoo-dev 2014-10-07 11:32:39 UTC
(In reply to Zac Medico from comment #4)
> I'm unable to reproduce the problem, using a minimal test ebuild that calls
> nonfatal in pkg_setup as follows:
> 
> pkg_setup() {
> 	[[ $EMERGE_FROM == binary ]] && nonfatal echo "test binpkg failure"
> }
> 
> Can you reproduce the problem if you try to install the same binary package
> again?

I was, until I manually removed nonfatal from eblit and rebuilt glibc once again.

Although, I can try to restore eblit's original state and rebuild glibc once more (to get "broken" binpackage)...
Comment 6 Alexander Tsoy 2014-10-07 13:00:53 UTC
(In reply to Zac Medico from comment #4)

The problem is reproducible, at least with portage-2.2.8-r2:


vm2450 ~ # emerge -1avk glibc

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

Calculating dependencies... done!
[binary   R    ] sys-libs/glibc-2.19-r1:2.2  USE="hardened (multilib) -debug -gd -nscd -profile (-selinux) -suid -systemtap -vanilla" 0 kB

Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No] y

>>> Emerging binary (1 of 1) sys-libs/glibc-2.19-r1
 * glibc-2.19-r1.tbz2 MD5 SHA1 size ;-) ...                              [ ok ]
>>> Extracting info

>>> Failed to emerge sys-libs/glibc-2.19-r1, Log file:

>>>  '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp/build.log'

 * Messages for package sys-libs/glibc-2.19-r1:

 * ERROR: sys-libs/glibc-2.19-r1::gentoo failed (setup phase):
 *   nonfatal() not supported in this EAPI
 * 
 * Call stack:
 *               ebuild.sh, line   93:  Called pkg_setup
 *             environment, line 2855:  Called eblit-run 'pkg_setup'
 *             environment, line  972:  Called eblit-glibc-pkg_setup
 *             environment, line  828:  Called glibc_run_test '#include <pwd.h>
 * int main(){return getpwuid(0)==0;}
 * '
 *             environment, line 2070:  Called glibc_compile_test '' '#include <pwd.h>
 * int main(){return getpwuid(0)==0;}
 * '
 *             environment, line 1983:  Called nonfatal 'emake' '-s' 'glibc-test'
 *   isolated-functions.sh, line   92:  Called die
 * The specific snippet of code:
 *              die "$FUNCNAME() not supported in this EAPI"
 * 
 * If you need support, post the output of `emerge --info '=sys-libs/glibc-2.19-r1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=sys-libs/glibc-2.19-r1::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp/environment'.
 * Working directory: '/var/tmp/portage/sys-libs/glibc-2.19-r1/temp'
 * S: '/var/tmp/portage/sys-libs/glibc-2.19-r1/work/glibc-2.19'


And right after this:

vm2450 ~ # cat /var/tmp/portage/sys-libs/glibc-2.19-r1/temp/build.log
>>> Extracting info
 * Package:    sys-libs/glibc-2.19-r1
 * Repository: gentoo
 * USE:        hardened amd64 elibc_glibc abi_x86_64 userland_GNU kernel_linux multilib
 * FEATURES:   preserve-libs sandbox userpriv usersandbox
vm2450 ~ #
Comment 7 Zac Medico gentoo-dev 2014-10-09 07:06:22 UTC
(In reply to Alexander Tsoy from comment #6)
Please post your emerge --info so that we can check your configurations for similarities.

(In reply to Vadim A. Misbakh-Soloviov (mva) from comment #0)
> Created attachment 385742 [details]
> emerge --info

I wonder if the QEMU virtual machine has anything to do with it. Alexander's host name is vm2450, so I wonder if that's also a virtual machine.
Comment 8 Alexander Tsoy 2014-10-09 08:11:17 UTC
I have the same issue on my desktop. Note that I can't reproduce it with minimal test from comment 4 - build.log contains all errors.


home ~ $ emerge --info
Portage 2.2.8-r2 (hardened/linux/amd64, gcc-4.8.3, glibc-2.19-r1, 3.14.20-hardened x86_64)
=================================================================
System uname: Linux-3.14.20-hardened-x86_64-AMD_Opteron-tm-_Processor_4332_HE-with-gentoo-2.2
KiB Mem:    16411772 total,  12687668 free
KiB Swap:   16777212 total,  16777212 free
Timestamp of tree: Thu, 09 Oct 2014 00:45:01 +0000
ld GNU ld (Gentoo 2.23.2 p1.0) 2.23.2
app-shells/bash:          4.2_p53
dev-java/java-config:     2.2.0
dev-lang/perl:            5.18.2-r1
dev-lang/python:          2.7.7, 3.3.5-r1
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.6, 1.13.4
sys-devel/binutils:       2.23.2
sys-devel/gcc:            4.8.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2-r1
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.13 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo puleglot local
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=bdver2 -mtune=bdver2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/easy-rsa /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 /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=bdver2 -mtune=bdver2 -pipe"
DISTDIR="/var/cache/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps=y --binpkg-respect-use=y --ask-enter-invalid"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs buildsyspkg config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync webrsync-gpg xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/ ftp://mirror.yandex.ru/gentoo-distfiles/"
LANG="ru_RU.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j6"
PKGDIR="/var/cache/portage/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"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/var/cache/portage/tree"
PORTDIR_OVERLAY="/var/lib/layman/puleglot-overlay /usr/local/portage"
SYNC=""
USE="X aac acl acpi aio alsa amd64 amr ape asyncns avahi avx bash-completion berkdb bluetooth bluray branding bzip2 cairo caps cdda cddb cdparanoia cdr cli colord cracklib crypt cryptsetup cups cxx dbus dconf device-mapper djvu dri dts dvd dvdr eds egl evo examples exif faac faad ffmpeg flac fma fontconfig fuse gdbm gif gnome gnome-keyring gnome-online-accounts gpm gstreamer gtk gtk3 hardened iconv icu idn ieee1394 introspection ipv6 jpeg jpeg2k justify libass libnotify libsamplerate libsecret lz4 lzma mac mad maildir mms mmx mmxext modules mp3 mp4 multilib musepack musicbrainz nautilus ncurses networkmanager nls nptl nptlonly ogg openal opengl openmp opus pam pax_kernel pcre perl pmu png policykit postscript pulseaudio python raw readline samba sasl session socialweb speex sse sse2 sse3 sse4 sse4_1 sse4a ssl ssse3 startup-notification svg systemd tcpd theora tiff tls truetype udev unicode upnp-av urandom usb vdpau vim-syntax vorbis vpx wavpack webp x264 xattr xfs xtpax xv xvid xz zlib" ABI_X86="64 32" 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="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="*" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="pc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en ru" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" QEMU_SOFTMMU_TARGETS="aarch64 arm i386 mips mips64 mips64el mipsel ppc ppc64 ppcemb x86_64" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="radeon radeonsi modesetting vesa v4l" 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:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 9 SpanKY gentoo-dev 2014-10-20 17:20:54 UTC
you have to create an EAPI=0 ebuild that stubs out nonfatal(), and uses `nonfatal` in one of the pkg_* funcs.  portage will filter out the nonfatal from the environment file when building the binpkg which then causes it to use portage's nonfatal which aborts because it's in EAPI=0 context.

*** This bug has been marked as a duplicate of bug 523332 ***
Comment 10 Alexander Tsoy 2014-10-20 22:13:13 UTC
(In reply to SpanKY from comment #9)

Mike, this bug is about logging issue.


(In reply to Zac Medico from comment #4)
> I'm unable to reproduce the problem, using a minimal test ebuild that calls
> nonfatal in pkg_setup as follows:
> 
> pkg_setup() {
> 	[[ $EMERGE_FROM == binary ]] && nonfatal echo "test binpkg failure"
> }
> 
> Can you reproduce the problem if you try to install the same binary package
> again?

Zac, if you look at pkg_setup.eblit, you will find the following line:

glibc_compile_test "" "$@" 2>/dev/null || return 0

So you need to redirect the output of a function which calls nonfatal. Reduced testcase:


_nonfatal() {
        nonfatal echo "test binpkg failure"
}

pkg_setup() {
        [[ $EMERGE_FROM == binary ]] && _nonfatal 2>/dev/null
}
Comment 11 Zac Medico gentoo-dev 2014-10-20 22:38:20 UTC
(In reply to Alexander Tsoy from comment #10)
>
> Zac, if you look at pkg_setup.eblit, you will find the following line:
> 
> glibc_compile_test "" "$@" 2>/dev/null || return 0
> 
> So you need to redirect the output of a function which calls nonfatal.
> Reduced testcase:
> 
> 
> _nonfatal() {
>         nonfatal echo "test binpkg failure"
> }
> 
> pkg_setup() {
>         [[ $EMERGE_FROM == binary ]] && _nonfatal 2>/dev/null
> }

Thanks, it all makes sense now. So, we could fix this by redirecting output of the die function so that it goes directly to the pty device that portage uses for logging of stdio.
Comment 12 Vadim A. Misbakh-Soloviov (mva) gentoo-dev 2020-12-11 06:20:23 UTC
ping?
Comment 13 Zac Medico gentoo-dev 2020-12-11 18:42:39 UTC
I guess the simplest approach will be for portage to export a variable referring to the pty device. I suppose we could also support a named pipe, in case there are no pty devices available for any reason.