Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 408607

Summary: app-emulation/virtualbox - make --disable-vmmraw optional
Product: Gentoo Linux Reporter: tot-to <bugs.gentoo.org.list>
Component: Current packagesAssignee: Lars Wendler (Polynomial-C) (RETIRED) <polynomial-c>
Status: RESOLVED FIXED    
Severity: minor CC: bj.rn, bkohler, patrick, proxy-maint, pyxlcy, swapon
Priority: Normal    
Version: unspecified   
Hardware: AMD64   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: /usr/tmp/portage/app-emulation/virtualbox-4.1.8-r1/work/VirtualBox-4.1.8_OSE/configure.log
emerge --info

Description tot-to 2012-03-17 17:44:22 UTC
Please add use flag to virtualbox in order to pass --disable-vmmraw option to the compiller.
Actually while emerging virtualbox I recieve this error:
Checking for 32-bit support: 
  Cannot execute 32-bit applications! Either enable 32-bit support in the
  kernel configuration or use --disable-vmmraw to disable 32-bit guests.
Check /usr/tmp/portage/app-emulation/virtualbox-4.1.8-r1/work/VirtualBox-4.1.8_OSE/configure.log for details

and emerge fails.
Also, I will be good, if some information about which kernel parameter user should enable to use 32-bit guests will be added.

Reproducible: Always
Comment 1 tot-to 2012-03-17 17:48:32 UTC
Created attachment 305727 [details]
/usr/tmp/portage/app-emulation/virtualbox-4.1.8-r1/work/VirtualBox-4.1.8_OSE/configure.log
Comment 2 tot-to 2012-03-17 17:49:06 UTC
Created attachment 305729 [details]
emerge --info
Comment 3 tot-to 2012-03-17 17:51:41 UTC
Also, It will be good, if some information about which kernel parameter user should enable to use 32-bit guests will be added.
(I can't find a way to edit own comments)
Comment 4 Richard Grenville 2012-03-18 04:09:38 UTC
Isn't the required kernel option mentioned in Gentoo amd64 handbook?
http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?part=1&chap=7
> Executable file formats / Emulations  --->
>   [*] IA32 Emulation
Comment 5 tot-to 2012-03-18 05:32:07 UTC
Yes, it is that kernel parameter.
Then I think the link to hankbook should be added to error message.
Comment 6 Björn Busse 2013-02-26 21:43:35 UTC
Adding CONFIG_IA32_EMULATION=y to my kernel config did not help. I still get:

Checking for 32-bit support: 
  Cannot execute 32-bit applications! Either enable 32-bit support in the
  kernel configuration or use --disable-vmmraw to disable 32-bit guests.

This is with app-emulation/virtualbox-4.1.24 and hardened-sources (3.7.9)

Any hints?
Comment 7 Richard Grenville 2013-02-27 00:27:08 UTC
(In reply to comment #6)
> Adding CONFIG_IA32_EMULATION=y to my kernel config did not help. I still get:
> 
> Checking for 32-bit support: 
>   Cannot execute 32-bit applications! Either enable 32-bit support in the
>   kernel configuration or use --disable-vmmraw to disable 32-bit guests.
> 
> This is with app-emulation/virtualbox-4.1.24 and hardened-sources (3.7.9)
> 
> Any hints?

Huh, could you please check VirtualBox's configure log? For app-emulation/virtualbox-4.1.24 it might be /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/configure.log . Normally, the last section should resemble:

> ***** Checking 32-bit support *****
> compiling the following source file:
> #include <stdint.h>
> int main(void)
> {
>   return 0;
> }
> using the following command line:
> x86_64-pc-linux-gnu-gcc -m32 -O -Wall -o /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_out /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_src.c
> executing the binary
Comment 8 Björn Busse 2013-02-27 03:16:14 UTC
configure.log:

***** Checking compiler.h *****
compiler.h not found


***** Checking 32-bit support *****
compiling the following source file:
#include <stdint.h>
int main(void)
{
  return 0;
}
using the following command line:
x86_64-pc-linux-gnu-gcc -m32 -O -Wall -o /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_out /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_src.c
executing the binary
./configure: line 1764: /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_out: No such file or directory
Comment 9 Richard Grenville 2013-02-27 09:20:56 UTC
(In reply to comment #8)
> configure.log:
> 
> ***** Checking compiler.h *****
> compiler.h not found
> 
> 
> ***** Checking 32-bit support *****
> compiling the following source file:
> #include <stdint.h>
> int main(void)
> {
>   return 0;
> }
> using the following command line:
> x86_64-pc-linux-gnu-gcc -m32 -O -Wall -o
> /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.
> tmp_out
> /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.
> tmp_src.c
> executing the binary
> ./configure: line 1764:
> /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.
> tmp_out: No such file or directory

Huh, sorry, I really don't have an idea what could cause this... Just some wild guesses:

1. You could try to execute the commands manually in a root shell and see what happens:

----
cat > /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_src.c << EOF
#include <stdint.h>
int main(void)
{
  return 0;
}
EOF
x86_64-pc-linux-gnu-gcc -m32 -O -Wall -o /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_out /var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_src.c
/var/tmp/portage/app-emulation/virtualbox-4.1.24/work/VirtualBox-4.1.24/.tmp_out
----

2. You have not touched sandbox settings or compiler settings, right? You may try compiling without sandbox (but with userpriv).

3. Do you have any unusual configuration on your /var/tmp/portage, e.g. a tmpfs?

4. Does this problem occur when compiling other packages, especially those using autoconf?

5. Have you tried newer versions of app-emulation/virtualbox (e.g. 4.2.6-r1)?

6. Would you mind showing us your emerge --info?
Comment 10 Ben Kohler gentoo-dev 2017-08-31 18:33:34 UTC
    if use amd64 && ! has_multilib_profile ; then
        myconf+=( --disable-vmmraw )
    fi