Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 486366 - genkernel --virtio fails to compile prepare target
Summary: genkernel --virtio fails to compile prepare target
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Hosted Projects
Classification: Unclassified
Component: genkernel (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Genkernel Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-09-28 19:50 UTC by Jochen Klein
Modified: 2016-05-16 06:18 UTC (History)
4 users (show)

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


Attachments
Genkernel VirtIO 3.10.32 (genkernel-virtio.txt,8.13 KB, text/plain)
2014-04-17 10:44 UTC, Stephan Wehr
Details
/var/log/genkernel.log (failing --virtio all) (genkernel.log,4.03 KB, text/plain)
2015-05-21 11:03 UTC, Michael Kainer
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jochen Klein 2013-09-28 19:50:51 UTC
Trying to build a kernel with genkernel 3.4.47 and option --virtio fails to compile the prepare target. I see two issues:

- kernel config lacks symbols when the code in gen_configkernel.sh to enable VIRTIO_* is run:
  after "make oldconfig" only VIRTIO_PCI and VIRTIO_MMIO exist (both not set),
  thus only those two are enabled, and the subsequent make prepare asks for further options
  I don't know how this was meant to work but to me it looks like this either needs another
  iteration of "yes '' | make oldconfig" + gen_configkernel.sh or the symbols have to be put
  in place actively instead of just replacing them

- /usr/share/genkernel/gen_configkernel.sh contains ambigous regex:
  the rule to enable VIRTIO_MMIO also replaces VIRTIO_MMIO_CMDLINE_DEVICES,
  then, VIRTIO_MMIO is enabled twice but the other is missing,
  therefore the process fails even when a complete configuration is supplied in /etc/kernels/

It seems that the only way (without modifying genkernel) to build a virtio-enabled kernel
is to configure it manually and not use --virtio.
Comment 1 Stephan Wehr 2014-04-17 10:44:33 UTC
Created attachment 375138 [details]
Genkernel VirtIO 3.10.32
Comment 2 Stephan Wehr 2014-04-17 10:46:56 UTC
# emerge --info
Portage 2.2.8-r1 (default/linux/amd64/13.0, gcc-4.7.3, glibc-2.17, 3.10.32-gentoo-zfs-lxc x86_64)
=================================================================
System uname: Linux-3.10.32-gentoo-zfs-lxc-x86_64-AMD_Opteron_62xx_-Gen_4_Class_Opteron-with-gentoo-2.2
KiB Mem:     8170236 total,   5864956 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Tue, 15 Apr 2014 14:45:01 +0000
ld GNU ld (GNU Binutils) 2.23.2
distcc 3.1 x86_64-pc-linux-gnu [enabled]
ccache version 3.1.9 [enabled]
app-shells/bash:          4.2_p45
dev-lang/python:          2.7.5-r3, 3.3.3
dev-util/ccache:          3.1.9-r3
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.69
sys-devel/automake:       1.13.4
sys-devel/binutils:       2.23.2
sys-devel/gcc:            4.7.3-r1
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.9 (virtual/os-headers)
sys-libs/glibc:           2.17
Repositories: gentoo
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs ccache config-protect-if-modified distcc 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"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="   ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/   http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/   http://ftp.uni-erlangen.de/pub/mirrors/gentoo/ "
LANG="de_DE.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j12"
PKGDIR="/usr/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="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="acl amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri fortran gdbm iconv ipv6 mmx modules multilib ncurses nls nptl openmp pam pcre readline session sse sse2 ssl tcpd unicode zlib" ABI_X86="64" 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="ptp2" 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" INPUT_DEVICES="evdev keyboard mouse vmmouse" 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="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="fbdev modesetting vesa vga" 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


Can't compile kernel 3.10.32 with the --virtio option.

Please see attachment: Genkernel VirtIO 3.10.32
Comment 3 Michael Kainer 2015-05-21 11:02:43 UTC
Building a kernel using

  genkernel --virtio all

is still failing with

  * ERROR: Failed to compile the "prepare" target...

I have attached the /var/log/genkernel.log - it contains all relevant version numbers. (current ~amd64 genkernel)
Comment 4 Michael Kainer 2015-05-21 11:03:21 UTC
Created attachment 403714 [details]
/var/log/genkernel.log (failing --virtio all)
Comment 5 André Erdmann 2016-04-04 16:22:07 UTC
I can confirm this issue. It occurs when trying to build a kernel >= 3.5 using genkernel's default kernel configuration.

The relevant lines in genkernel.log:

> scripts/kconfig/conf --silentoldconfig Kconfig
> [...]
> Platform bus driver for memory mapped virtio devices (VIRTIO_MMIO) [Y/n/m/?] y
>   Memory mapped virtio devices parameter parsing (VIRTIO_MMIO_CMDLINE_DEVICES) [N/y/?] (NEW) aborted!
> 
> Console input/output is redirected. Run 'make oldconfig' to update configuration.
> 
> scripts/kconfig/Makefile:36: recipe for target 'silentoldconfig' failed

Rationale:
(a) VIRTIO_MMIO_CMDLINE_DEVICES ("V_M_C_D") depends on VIRTIO_MMIO ("V_M")
(b) genkernel's defaults/kernel-generic-config does not set V_M
(and neither does the arch-specific config, x86_64 in my case)
(c) when genkernel runs "make oldconfig", V_M_C_D is hidden and therefore does not get set
(d) genkernel sets V_M to y (in config_kernel()), but not V_M_C_D. V_M_C_D is now visible, but undefined.
(e) genkernel runs silentoldconfig via "make prepare", which detects that V_M_C_D needs to be set -- "aborted!"


Adding VIRTIO_MMIO_CMDLINE_DEVICES to the list of "--virtio"-controlled config options (in gen_configkernel.sh->config_kernel(), "# VirtIO" block) would fix this bug.
Comment 6 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2016-05-16 06:09:54 UTC
[master 3322296] gen_configkernel: bug #486366, fix virtio kconfig.
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 7 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2016-05-16 06:18:52 UTC
Sorry, wrong paste:
[master c31abf3] gen_configkernel: bug #486366, fix virtio kconfig options.
 2 files changed, 17 insertions(+), 3 deletions(-)