# nvidia-drivers compilation fails due to missing genksyms

## Jerle

I've re-installed Gentoo after taking a break for a few months, and ran into a strange problem trying to compile the nvidia-driver's package.  The emerge keeps failing whiel trying to execue genksysms.

```

>>> Emerging (1 of 1) x11-drivers/nvidia-drivers-100.14.09 to /

 * NVIDIA-Linux-x86_64-100.14.09-pkg2.run RMD160 ;-) ...                  [ ok ]

 * NVIDIA-Linux-x86_64-100.14.09-pkg2.run SHA1 ;-) ...                    [ ok ]

 * NVIDIA-Linux-x86_64-100.14.09-pkg2.run SHA256 ;-) ...                  [ ok ]

 * NVIDIA-Linux-x86_64-100.14.09-pkg2.run size ;-) ...                    [ ok ]

 * checking ebuild checksums ;-) ...                                      [ ok ]

 * checking auxfile checksums ;-) ...                                     [ ok ]

 * checking miscfile checksums ;-) ...                                    [ ok ]

 * checking NVIDIA-Linux-x86_64-100.14.09-pkg2.run ;-) ...                [ ok ]

 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Found kernel object directory:

 *     /lib/modules/2.6.22-gentoo-r5/build

 * Found sources for kernel version:

 *     2.6.22-gentoo-r5

 * Checking for MTRR support ...                                          [ ok ]

>>> Unpacking source...

Creating directory NVIDIA-Linux-x86_64-100.14.09-pkg2

Verifying archive integrity... OK

Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 100.14.09.....................................................................................................................................

 * Applying NVIDIA_glx-defines.patch ...                                  [ ok ]

 * Applying NVIDIA_glx-glheader.patch ...                                 [ ok ]

 * Applying NVIDIA_i2c-hwmon.patch ...                                    [ ok ]

 * Converting Makefile.kbuild to use M= instead of SUBDIRS= ...           [ ok ]

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv ...

 * Preparing nvidia module

sh ./conftest.sh "x86_64-pc-linux-gnu-gcc" "x86_64-pc-linux-gnu-gcc" /usr/src/linux /lib/modules/2.6.22-gentoo-r5/build cc_sanity_check full_output

rm -f Makefile

sh ./conftest.sh "x86_64-pc-linux-gnu-gcc" "x86_64-pc-linux-gnu-gcc" /usr/src/linux /lib/modules/2.6.22-gentoo-r5/build select_makefile full_output

make --no-print-directory -f Makefile module

NVIDIA: calling KBUILD...

make CC=x86_64-pc-linux-gnu-gcc KBUILD_OUTPUT=/lib/modules/2.6.22-gentoo-r5/build KBUILD_VERBOSE=1 -C /usr/src/linux M=/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv modules

make[2]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.

make -C /lib/modules/2.6.22-gentoo-r5/build \

        KBUILD_SRC=/usr/src/linux-2.6.22-gentoo-r5 \

        KBUILD_EXTMOD="/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv" -f /usr/src/linux-2.6.22-gentoo-r5/Makefile modules

test -e include/linux/autoconf.h -a -e include/config/auto.conf || (           \

        echo;                                                           \

        echo "  ERROR: Kernel configuration is invalid.";               \

        echo "         include/linux/autoconf.h or include/config/auto.conf are missing.";      \

        echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \

        echo;                                                           \

        /bin/false)

mkdir -p /var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/.tmp_versions

rm -f /var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/.tmp_versions/*

make -f /usr/src/linux-2.6.22-gentoo-r5/scripts/Makefile.build obj=/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv

echo \#define NV_COMPILER \"`x86_64-pc-linux-gnu-gcc -v 2>&1 | tail -n 1`\" > /var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/nv_compiler.h

  x86_64-pc-linux-gnu-gcc -Wp,-MD,/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/.nv.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/include -D__KERNEL__ -Iinclude -Iinclude2 -I/usr/src/linux-2.6.22-gentoo-r5/include -include include/linux/autoconf.h  -I/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -m64 -mno-red-zone -mcmodel=kernel -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -fomit-frame-pointer -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign  -I/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wno-multichar -Werror -O -fno-common -msoft-float -mcmodel=kernel -mno-red-zone -MD -Wno-cast-qual -Wno-error -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"100.14.09\" -UDEBUG -U_DEBUG -DNDEBUG -DNV_SIGNAL_STRUCT_RLIM -DNV_MULTIPLE_BRIDGE_AGPGART_PRESENT -DNV_PCI_GET_CLASS_PRESENT -DNV_SYSCTL_MAX_MAP_COUNT_PRESENT -DNV_PM_MESSAGE_T_PRESENT -DNV_PCI_CHOOSE_STATE_PRESENT -DNV_VM_INSERT_PAGE_PRESENT -DNV_OLD_MM_KGDB_BREAKPOINT_PRESENT -DNV_REMAP_PFN_RANGE_PRESENT -DNV_CHANGE_PAGE_ATTR_PRESENT -DNV_ACQUIRE_CONSOLE_SEM_PRESENT -DNV_VMAP_4_PRESENT -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(nv)"  -D"KBUILD_MODNAME=KBUILD_STR(nvidia)" -c -o /var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/.tmp_nv.o /var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/nv.c

/bin/sh: scripts/genksyms/genksyms: No such file or directory

make[4]: *** [/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv/nv.o] Error 1

make[3]: *** [_module_/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/work/NVIDIA-Linux-x86_64-100.14.09-pkg2/usr/src/nv] Error 2

make[2]: *** [modules] Error 2

NVIDIA: left KBUILD.

nvidia.ko failed to build!

make[1]: *** [module] Error 1

make: *** [module] Error 2

 * 

 * ERROR: x11-drivers/nvidia-drivers-100.14.09 failed.

 * Call stack:

 *   ebuild.sh, line 1654:   Called dyn_compile

 *   ebuild.sh, line 990:   Called qa_call 'src_compile'

 *   ebuild.sh, line 44:   Called src_compile

 *   nvidia-drivers-100.14.09.ebuild, line 212:   Called linux-mod_src_compile

 *   linux-mod.eclass, line 516:   Called die

 * 

 * Unable to make  IGNORE_CC_MISMATCH=yes V=1 SYSSRC=/usr/src/linux SYSOUT=/lib/modules/2.6.22-gentoo-r5/build clean module.

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/temp/build.log'.

 * 

 * Messages for package x11-drivers/nvidia-drivers-100.14.09:

 * 

 * ERROR: x11-drivers/nvidia-drivers-100.14.09 failed.

 * Call stack:

 *   ebuild.sh, line 1654:   Called dyn_compile

 *   ebuild.sh, line 990:   Called qa_call 'src_compile'

 *   ebuild.sh, line 44:   Called src_compile

 *   nvidia-drivers-100.14.09.ebuild, line 212:   Called linux-mod_src_compile

 *   linux-mod.eclass, line 516:   Called die

 * 

 * Unable to make  IGNORE_CC_MISMATCH=yes V=1 SYSSRC=/usr/src/linux SYSOUT=/lib/modules/2.6.22-gentoo-r5/build clean module.

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/tmp/portage/x11-drivers/nvidia-drivers-100.14.09/temp/build.log'.

```

I tried copying /sbin/genksyms into the kernel source directory where it seemed to want it, but then the error was something about invalid option -a

I'm using amd64, and the latest gentoo-sources (compiled with genkernel) for my kernel.

Anyone have ideas on how to correct this?

----------

## didymos

Are you sure that kernel source directory has a valid .config in it and that genkernel didn't clean up after it was finished?  Don't manually copy genksyms either. It's not normally supposed to be built anyway. Also follow the advice from the error:

```

        echo;                                                           \

        echo "  ERROR: Kernel configuration is invalid.";               \

        echo "         include/linux/autoconf.h or include/config/auto.conf are missing.";      \

        echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \

        echo;                                                           \ 

```

----------

## Jerle

Running those make commands again as the kernel suggested had no effect.  The commands ran and complete fine, but there's still the same error.

I'll have to try again with a manual kernel compile I guess.

----------

## Mgiese

same error here, amd64x2 fresh install, evl. genkernel destroyed something.. i will try it out

edit : make modules did not remove that error  

```
  echo;                                                           \

        echo "  ERROR: Kernel configuration is invalid.";               \

        echo "         include/linux/autoconf.h or include/config/auto.conf are missing.";      \

        echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \

        echo;      
```

 but at last i could compile my driver  :Wink: 

----------

