Skip to content

Commit

Permalink
Making nvidia 96.x build on linux 3.4. I took patches from AUR.
Browse files Browse the repository at this point in the history
git-svn-id: https://nixos.org/repos/nix/nixpkgs/trunk@34552 70bd8c7a-acb8-0310-9f0d-9cc1c95dcdbb
  • Loading branch information
viric committed Jun 18, 2012
1 parent 2f62528 commit 1c00e3a
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 0 deletions.
27 changes: 27 additions & 0 deletions pkgs/os-specific/linux/nvidia-x11/acpixf.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
diff -pur 96.43.20/conftest.sh 96.43.20-3.4/conftest.sh
--- 96.43.20/conftest.sh 2011-07-18 10:51:11.000000000 +0400
+++ 96.43.20-3.4/conftest.sh 2012-06-16 00:04:22.870746239 +0400
@@ -908,6 +908,7 @@ compile_test() {
#
echo "$CONFTEST_PREAMBLE
#include <acpi/acpi.h>
+ #include <acpi/acpixf.h>
void conftest_acpi_walk_namespace(void) {
acpi_walk_namespace();
}" > conftest$$.c
@@ -923,6 +924,7 @@ compile_test() {

echo "$CONFTEST_PREAMBLE
#include <acpi/acpi.h>
+ #include <acpi/acpixf.h>
void conftest_acpi_walk_namespace(void) {
acpi_walk_namespace(0, NULL, 0, NULL, NULL, NULL, NULL);
}" > conftest$$.c
@@ -939,6 +941,7 @@ compile_test() {

echo "$CONFTEST_PREAMBLE
#include <acpi/acpi.h>
+ #include <acpi/acpixf.h>
void conftest_acpi_walk_namespace(void) {
acpi_walk_namespace(0, NULL, 0, NULL, NULL, NULL);
}" > conftest$$.c
6 changes: 6 additions & 0 deletions pkgs/os-specific/linux/nvidia-x11/builder-legacy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ buildPhase() {

cd usr/src/nv/

shopt -s nullglob

for a in $kpatches; do
patch -p1 < $a
done

# Workaround: get it to build on kernels that have CONFIG_XEN
# set. Disable the test, apply a patch to disable the Xen
# functionality.
Expand Down
12 changes: 12 additions & 0 deletions pkgs/os-specific/linux/nvidia-x11/generated.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -pur 173.14.31/conftest.sh 173.14.31-3.3/conftest.sh
--- 173.14.31/conftest.sh 2011-07-18 09:49:58.000000000 +0400
+++ 173.14.31-3.3/conftest.sh 2012-04-09 19:33:34.407928432 +0400
@@ -123,7 +123,7 @@ build_cflags() {
CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS"

if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
- CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include"
+ CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$SOURCES/arch/x86/include/generated"
fi
if [ -n "$BUILD_PARAMS" ]; then
CFLAGS="$CFLAGS -D$BUILD_PARAMS"
10 changes: 10 additions & 0 deletions pkgs/os-specific/linux/nvidia-x11/legacy96.nix
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ stdenv.mkDerivation {

inherit versionNumber kernel;

# Only for kernels 3.4 and over
# Patches taken from arch linux AUR
# https://aur.archlinux.org/packages.php?ID=57698
kpatches = stdenv.lib.optionals (stdenv.lib.strings.versionOlder "3.4" kernel.version)
[ ./acpixf.patch
./generated.patch
./patchlevel.patch
./switch_to.patch
];

dontStrip = true;

glPath = stdenv.lib.makeLibraryPath [xlibs.libXext xlibs.libX11 xlibs.libXrandr];
Expand Down
59 changes: 59 additions & 0 deletions pkgs/os-specific/linux/nvidia-x11/patchlevel.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
diff -pur 96.43.20-t1/conftest.sh 96.43.20-t2/conftest.sh
--- 96.43.20-t1/conftest.sh 2012-06-16 17:14:47.206589267 +0400
+++ 96.43.20-t2/conftest.sh 2012-06-16 15:35:45.049203248 +0400
@@ -1303,10 +1303,14 @@ case "$5" in
MAKEFILE=$HEADERS/../Makefile

if [ -f $MAKEFILE ]; then
+ VERSION=$(grep "^VERSION =" $MAKEFILE | cut -d " " -f 3)
PATCHLEVEL=$(grep "^PATCHLEVEL =" $MAKEFILE | cut -d " " -f 3)

- if [ -z "$PATCHLEVEL" ]; then
+ if [ -z "$PATCHLEVEL" -o -z "$VERSION" ]; then
exit 1
+ elif [ "$VERSION" = '3' ]; then
+ echo 6
+ exit 0
else
echo $PATCHLEVEL
exit 0
@@ -1426,10 +1430,11 @@ case "$5" in
# kernel older than 2.6.6, that's all we require to
# build the module.
#
+ VERSION=$(grep "^VERSION =" $MAKEFILE | cut -d " " -f 3)
PATCHLEVEL=$(grep "^PATCHLEVEL =" $MAKEFILE | cut -d " " -f 3)
SUBLEVEL=$(grep "^SUBLEVEL =" $MAKEFILE | cut -d " " -f 3)

- if [ -n "$PATCHLEVEL" -a $PATCHLEVEL -ge 6 \
+ if [ "$VERSION" = '2' -a -n "$PATCHLEVEL" -a $PATCHLEVEL -ge 6 \
-a -n "$SUBLEVEL" -a $SUBLEVEL -le 5 ]; then
SELECTED_MAKEFILE=Makefile.kbuild
RET=0
@@ -1525,11 +1530,12 @@ case "$5" in
# This source tree is not configured, but includes
# the top-level Makefile.
#
+ VERSION=$(grep "^VERSION =" $MAKEFILE | cut -d " " -f 3)
PATCHLEVEL=$(grep "^PATCHLEVEL =" $MAKEFILE | cut -d " " -f 3)
SUBLEVEL=$(grep "^SUBLEVEL =" $MAKEFILE | cut -d " " -f 3)

- if [ -n "$PATCHLEVEL" -a -n "$SUBLEVEL" ]; then
- echo 2.$PATCHLEVEL.$SUBLEVEL
+ if [ -n "$VERSION" -a -n "$PATCHLEVEL" -a -n "$SUBLEVEL" ]; then
+ echo $VERSION.$PATCHLEVEL.$SUBLEVEL
RET=0
fi
fi
diff -pur 96.43.20-t1/Makefile.kbuild 96.43.20-t2/Makefile.kbuild
--- 96.43.20-t1/Makefile.kbuild 2011-07-18 10:51:11.000000000 +0400
+++ 96.43.20-t2/Makefile.kbuild 2012-06-16 17:08:11.694605133 +0400
@@ -132,7 +132,7 @@ MODULE_ROOT := /lib/modules/$(KERNEL_UNA
#

TOPDIR ?= $(KERNEL_SOURCES)
-PATCHLEVEL ?= $(shell $(CONFTEST) kernel_patch_level)
+PATCHLEVEL := $(shell $(CONFTEST) kernel_patch_level)

#
# Linux 2.4 uses the .o module extension. Linux 2.6, however, uses the .ko
24 changes: 24 additions & 0 deletions pkgs/os-specific/linux/nvidia-x11/switch_to.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
diff -pur 173.14.31-3.3/conftest.sh 173.14.31-3.4/conftest.sh
--- 173.14.31-3.3/conftest.sh 2012-04-09 19:33:34.407928432 +0400
+++ 173.14.31-3.4/conftest.sh 2012-04-10 19:50:36.052346728 +0400
@@ -465,7 +465,7 @@ compile_test() {
# and if it as an 'event' member.
#
echo "$CONFTEST_PREAMBLE
- #include <asm/system.h>
+ #include <asm/switch_to.h>
#include <linux/pm.h>
void conftest_pm_message_t(pm_message_t state) {
pm_message_t *p = &state;
diff -pur 173.14.31-3.3/nv-linux.h 173.14.31-3.4/nv-linux.h
--- 173.14.31-3.3/nv-linux.h 2011-07-18 09:49:58.000000000 +0400
+++ 173.14.31-3.4/nv-linux.h 2012-04-10 19:53:04.853776013 +0400
@@ -92,7 +92,7 @@
#include <linux/timer.h>

#include <asm/div64.h> /* do_div() */
-#include <asm/system.h> /* cli, sli, save_flags */
+#include <asm/switch_to.h> /* cli, sli, save_flags */
#include <asm/io.h> /* ioremap, virt_to_phys */
#include <asm/uaccess.h> /* access_ok */
#include <asm/page.h> /* PAGE_OFFSET */

0 comments on commit 1c00e3a

Please sign in to comment.