Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 458974 - app-emulation/xen-4.2.1-r2 build dies with USE=-efi
Summary: app-emulation/xen-4.2.1-r2 build dies with USE=-efi
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Ian Delaney (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-02-24 12:33 UTC by Another Mortal
Modified: 2013-03-08 10:35 UTC (History)
3 users (show)

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


Attachments
Error Log (build.log,343.79 KB, text/plain)
2013-02-25 16:42 UTC, Silvio
Details
A patch for the xen-4.2.1-r2.ebuild that fixes the boolean statement (xen-4.2.1.ebuild.patch,504 bytes, patch)
2013-02-27 02:23 UTC, Daniel Kuehn (RETIRED)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Another Mortal 2013-02-24 12:33:11 UTC
Classical 'a && b || c' mistake.
Hint: 'c' will be invoked when 'a' is false.
Comment 1 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-02-24 12:44:28 UTC
Which line are you talking about? Runs fine all the way up to the compile phase and the construct you are talking about doesn't appear in any later phases.
Comment 2 Silvio 2013-02-24 19:43:11 UTC
I confirm this bug, without USE=efi the emerge exits with the following message:


   /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/.xen-syms.1.o -o /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen-syms
rm -f /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/.xen-syms.[0-9]*
./boot/mkelf32 /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen-syms /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen 0x100000 \
`nm -nr /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen-syms | head -n 1 | sed -e 's/^\([^ ]*\).*/0x\1/'`
make[2]: Leaving directory `/var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/arch/x86'
gzip -f -9 < /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen > /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen.gz.new
mv /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen.gz.new /var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen/xen.gz
make[1]: Leaving directory `/var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen'
make: Leaving directory `/var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1/xen'
>>> Source compiled.
>>> Test phase [not enabled]: app-emulation/xen-4.2.1-r2

>>> Install xen-4.2.1-r2 into /var/tmp/portage/app-emulation/xen-4.2.1-r2/image/ category app-emulation
 * ERROR: app-emulation/xen-4.2.1-r2 failed (install phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line  93:  Called src_install
 *   environment, line 2922:  Called die
 * The specific snippet of code:
 *       use efi && mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR} || die;
 * 
 * If you need support, post the output of `emerge --info '=app-emulation/xen-4.2.1-r2'`,
 * the complete build log and the output of `emerge -pqv '=app-emulation/xen-4.2.1-r2'`.
 * The complete build log is located at '/var/tmp/portage/app-emulation/xen-4.2.1-r2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/app-emulation/xen-4.2.1-r2/temp/environment'.
 * Working directory: '/var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1'
 * S: '/var/tmp/portage/app-emulation/xen-4.2.1-r2/work/xen-4.2.1'

I'm compiling now with "efi" use. I'll let you know
Comment 3 Silvio 2013-02-24 20:00:15 UTC
I confirm, with USE=efi it compiles well.

my emerge --info:
emerge --info
Portage 2.1.11.52 (default/linux/amd64/13.0/desktop/kde, gcc-4.6.3, glibc-2.16.0, 3.7.8-gentoo x86_64)
=================================================================
System uname: Linux-3.7.8-gentoo-x86_64-Intel-R-_Core-TM-_i7-2630QM_CPU_@_2.00GHz-with-gentoo-2.2
KiB Mem:    16444608 total,   7783800 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Sun, 24 Feb 2013 11:15:01 +0000
ld ld di GNU (GNU Binutils) 2.23.1
distcc 3.1 x86_64-pc-linux-gnu [disabled]
ccache version 3.1.9 [enabled]
app-shells/bash:          4.2_p42
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.3-r3, 3.2.3-r2
dev-util/ccache:          3.1.9
dev-util/cmake:           2.8.10.2-r1
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.6
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.11.6, 1.12.6, 1.13.1
sys-devel/binutils:       2.23.1
sys-devel/gcc:            4.6.3
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.7 (virtual/os-headers)
sys-libs/glibc:           2.16.0
Repositories: gentoo bangert yarik-overlay belak sunrise amielke-overlay maggu2810-overlay gamerlay nikai zugaina voyageur pentoo luman manual bibletime
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.0/conf /usr/share/polkit-1/actions /var/lib/hsqldb"
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 -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs ccache config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS=" http://mirror.ovh.net/gentoo-distfiles/ http://ftp.heanet.ie/pub/gentoo/ http://mirror.ovh.net/gentoo-distfiles/ http://www.die.unipd.it/pub/Linux/distributions/gentoo-sources/ rsync://rsync3.it.gentoo.org/gentoo-sources/ ftp://ftp.unina.it/pub/linux/distributions/gentoo/"
LANG="it_IT.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j9"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/bangert /var/lib/layman/yarik-overlay /var/lib/layman/belak /var/lib/layman/sunrise /var/lib/layman/amielke-overlay /var/lib/layman/maggu2810-overlay /var/lib/layman/gamerlay /var/lib/layman/nikai /var/lib/layman/zugaina /var/lib/layman/voyageur /var/lib/layman/pentoo /var/lib/layman/luman /usr/portage/local/manual /var/lib/layman/bibletime"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="3ds 64bit X a52 aac aalib acl acpi aiglx akode alias alsa amd64 amr ao apache apm apng audiofile autoreplace autotrace avahi avi bash-completion berkdb bitmap-fonts bluetooth bluray bmp branding browserplugin bzip bzip2 cairo cdaudio cdda cdr cli clucene connectionstatus consolekit contactnotes cracklib crypt cuda cups cvd cvs cxx dbus declarative dia dialup djvu dri dtmf dts dv dvd dvdr dvdread dvi dynamicplugin ebook emboss encode ethereal exif fam farstream fat ffmpeg firefox flac fluidsynth fontconfig foomaticdb fortran freetds frei0r gbm gdbm geolocation gif gimp git glib glitz gphoto2 gpm gps gpu groupwise gstreamer gtk gtk3 h323 highlight history hvm i8x0 iconv icu ieee1394 imagemagick innodb ios iphone ipod ipv6 irc ithreads jack java javascript jingle jpeg jpeg2k kde kdenlive kdepim kerberos kipi kontact kqemu lame laptop lcms ldap libkms libnotify lm_sensors lucene m4a mad marble mbrola mdb mdnsresponder-compat mercurial midi mime minizip mmx mmxext mng modules moonlight mozilla mp3 mp4 mpeg mpeg2 mplayer msn mssql mudflap multilib musepack musicbrainz mysql ncurses netmeeting nls nowlistening npt1 nptl nptlonly nsplugin ntfs nvidia odbc ogg openal openexr opengl openipmi openmp oss pam pango pcmcia pcre pda pdf perl phonon plasma pmu png policykit portaudio postgres ppds python python3 qemu qt qt3support qt4 quicktime rar raw rdesktop rdp readline reiserfs reports samba sametime sane scanner sdl semantic-desktop session sip sipim skype smp sms soundtouch speex spell sqlite sse sse2 ssh ssl ssse3 startup-notification subtitles subversion svg tcpd texteffect texteffects theora tidy tiff timidity tordns translator truetype truetype-fonts twolame type1-fonts udev udisks unicode upower usb utempter v4l v4l2 vcd vdpau video virtualbox vnc vorbis wav wavpack webkit webpresence wicd wifi win64 winetriks winpopup wlm wmf wxwidgets wxwindows x264 xcb xcomposite xen xetex xine xinerama xml xscreensaver xv xvid xvmc yahoo zeroconf zlib" ABI_X86="64" ALSA_CARDS="snd_hda_intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="canon" 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 ubx" INPUT_DEVICES="keyboard mouse evdev joystick synaptics wacom" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="it en it_IT" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="nvidia nv vesa nouveau v4l v4l2" 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, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 4 Tom Wijsman (TomWij) (RETIRED) gentoo-dev 2013-02-24 20:23:34 UTC
I see...

use efi && mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR} || die
Comment 5 Another Mortal 2013-02-25 11:01:09 UTC
(In reply to comment #0)
> Classical 'a && b || c' mistake.
> Hint: 'c' will be invoked when 'a' is false.

Fix: a && { b || c; }
Comment 6 Silvio 2013-02-25 16:42:52 UTC
Created attachment 340094 [details]
Error Log

The situation is worse now. It doesn't compile at all. Not just give error in installing.
Comment 7 Ian Delaney (RETIRED) gentoo-dev 2013-02-25 18:29:33 UTC
Oh groan

from the log.

x86_64-pc-linux-gnu-ld: opzione "--subsystem=10" non riconosciuta

It's like you went straight from building xen with efi to building it with -efi,  but WITHOUT undoing what it took to buld with USE efi.

Surely you got to read all of Bug 458160.

Now let's go over this again.  The efi build wants binutils{miltitarget] to build efi, which was the trigger for the Bug 458160.  The point being binutils regular, i.e. binutils[-multitarget], does not have the -m feature builtin from the build and consequently harmlessly skips over all things efi.  You have gone and emerged binutils with multitarget and presumably set the -m option for LDFLAGS which now sets a build of xen tuned for efi.  It may surpise some that I actually spent hours in extensive testing of all this.  I predicted this fiasco in the final comment.

My attempt to account for this wasn't 'right'.  While I got quick responses to point out, oh groan that's wrong, I am still awaiting someone to say how to do it right. The faulty attempt is now deleted and needs a substitute. 

Never mind about "Hint: 'c' will be invoked when 'a' is false."
The use efi in the line in src_install only has an a and b anyway.  It's presence is apt only install for +efi. It is after all in src_install.  Accounting for -efi in src_install is closing the gate hours after the horse has bolted.

What it needs is accounting for in DEPEND, (actually not RDEPEND)
plus the syntax I'm yet to decipher, something close to 
!efi? ( >=sys-devel/binutils-2.22[-multitarget] ).

However, key points; 
1) reset LDFLAGS as they were with something sane like -wl,--hash-style=gnu and 2) emerge binutils -multitarget, the likely state prior to the making of an efi capable build.

The build pulled a weird stunt of bailing out when LDFLAGS was added to rather than subsituted with -mx86_64pep. Yet another xen type mystery.
Comment 8 Another Mortal 2013-02-26 19:09:59 UTC
(In reply to comment #7)

> Never mind about "Hint: 'c' will be invoked when 'a' is false."
> The use efi in the line in src_install only has an a and b anyway.  It's
> presence is apt only install for +efi. It is after all in src_install. 
> Accounting for -efi in src_install is closing the gate hours after the horse
> has bolted.

There may be multiple breakage here..  I don't know.
The one problem I was trying to report (although, I
realize I should've been much more clear about this)
was, in fact, that simple mistake

use efi && mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR} || die

(a="use efi", b="mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR}",
 c="die", which will *die* as commanded whenever "use efi" is false),
instead of (the likely intended):

use efi && { mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR} || die; }

This broke the build on my box in the install phase.
Having fixed that, everything builds fine with USE=-efi.
I haven't tried building with USE=efi, since this box has a legacy BIOS only...
Comment 9 Daniel Kuehn (RETIRED) gentoo-dev 2013-02-27 02:23:17 UTC
Created attachment 340248 [details, diff]
A patch for the xen-4.2.1-r2.ebuild that fixes the boolean statement

With the help of Zorry I made a patch for the ebuild that changes the boolean logic into a if statement.

This way it test for a positive case instead of trying to determine +/-efi in USE.
Comment 10 Ian Delaney (RETIRED) gentoo-dev 2013-02-27 08:27:14 UTC
(In reply to comment #8)
> 
> use efi && mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR} || die
> 
> (a="use efi", b="mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR}",
>  c="die", which will *die* as commanded whenever "use efi" is false),
> instead of (the likely intended):
> 
> use efi && { mkdir -p "${D}"${EFI_MOUNTPOINT}/efi/${EFI_VENDOR} || die; }
> 
> This broke the build on my box in the install phase.

ok, fair comment, thx. That's the cut down form which has that weakness.

(In reply to comment #8)
>
> With the help of Zorry I made a patch for the ebuild that changes the
> boolean logic into a if statement.
> 
> This way it test for a positive case instead of trying to determine +/-efi
> in USE.

ditto, even better, thx, that indeed is the more bullet proof form, committed.  Ooops I forget to change RDEP to DEP, nm, needs one more step anyway which is; What I'd really like is your and Zorry's take on -

DEPEND="efi? ( >=sys-devel/binutils-2.22[multitarget] )
        !efi ( >=sys-devel/binutils-2.22[-multitarget] )"
RDEPEND=""
PDEPEND="~app-emulation/xen-tools-${PV}"

This makes us all shudder.  It should be DEP, not  RDEP, it's a build issue.
This case of USE=-efi has these 2 holes to fill;

1. Why does the valid -Wl,--hash-style=gnu make the build bail out if -mx86_64pep is added to LDFLAGS? Why does it demand substituting it?  I suspect Zorry has already picked the key, the build uses an alternate syntax to -Wl.
Why or how one is better than the other I neither know nor care, they just need to be made to get along, to be made confluent!

2. The deps.  Simply, for -efi or !efi, binutils need be built -multitarget, otherwise you get Bug 458160.

thx to all who have contributed.
Comment 11 Paul Freeman 2013-03-07 19:34:29 UTC
RDEPEND="efi? ( >=sys-devel/binutils-2.22[multitarget] )
         !efi? ( >=sys-devel/binutils-2.22[-multitarget] )"

seems to have the desired effect...

I merged binutils with USE=multitarget and then asked to merge xen with USE=-efi

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

Calculating dependencies... done!
[ebuild   R    ] sys-devel/binutils-2.22-r1  USE="cxx nls zlib -multislot -multitarget* -static-libs {-test} -vanilla" 0 kB
[ebuild  N    ~] app-emulation/xen-4.2.1-r3::noc4  USE="pae -custom-cflags -debug -efi -flask -xsm" PYTHON_SINGLE_TARGET="python2_7 -python2_6" PYTHON_TARGETS="python2_7 -python2_6" 0 kB

Total: 2 packages (1 new, 1 reinstall), Size of downloads: 0 kB

The following USE changes are necessary to proceed:
#required by app-emulation/xen-4.2.1-r3[-efi], required by xen (argument)
=sys-devel/binutils-2.22-r1 -multitarget


and vice versa:

I merged binutils with USE=-multitarget and then asked to merge xen with USE=efi

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

Calculating dependencies... done!
[ebuild   R    ] sys-devel/binutils-2.22-r1  USE="cxx multitarget* nls zlib -multislot -static-libs {-test} -vanilla" 0 kB
[ebuild  N    ~] app-emulation/xen-4.2.1-r3::noc4  USE="efi pae -custom-cflags -debug -flask -xsm" PYTHON_SINGLE_TARGET="python2_7 -python2_6" PYTHON_TARGETS="python2_7 -python2_6" 0 kB

Total: 2 packages (1 new, 1 reinstall), Size of downloads: 0 kB

The following USE changes are necessary to proceed:
#required by app-emulation/xen-4.2.1-r3[efi], required by xen (argument)
=sys-devel/binutils-2.22-r1 multitarget
Comment 12 Paul Freeman 2013-03-08 09:58:29 UTC
(In reply to comment #11)
> RDEPEND="efi? ( >=sys-devel/binutils-2.22[multitarget] )
>          !efi? ( >=sys-devel/binutils-2.22[-multitarget] )"
> 

make that:

DEPEND="efi? ( >=sys-devel/binutils-2.22[multitarget] )
         !efi? ( >=sys-devel/binutils-2.22[-multitarget] )"

actually :)
Comment 13 Ian Delaney (RETIRED) gentoo-dev 2013-03-08 10:35:38 UTC
  08 Mar 2013; Ian Delaney <idella4@gentoo.org> xen-4.2.0-r2.ebuild,
  xen-4.2.1-r1.ebuild, xen-4.2.1-r2.ebuild:
  Deps fixed addressing IUSE efi, fixes Bug #458947 by a.m!, tested by Paul
  Freeman