From e64cd4140ca12e2150bf44b5ba696c6ef730ab98 Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Wed, 13 Feb 2008 10:20:39 -0800 Subject: 169.07 --- DRIVER_VERSION | 2 +- Makefile | 2 +- command-list.c | 22 ++++++++++++++-------- files.c | 13 +++++++++++++ install-from-cwd.c | 6 ++++++ nvidia-installer.h | 23 +++++++++++++++++------ rtld_test_Linux-x86 | Bin 3136 -> 3056 bytes rtld_test_Linux-x86_64 | Bin 4536 -> 4688 bytes 8 files changed, 52 insertions(+), 16 deletions(-) diff --git a/DRIVER_VERSION b/DRIVER_VERSION index 2d04672..764fb50 100644 --- a/DRIVER_VERSION +++ b/DRIVER_VERSION @@ -1 +1 @@ -169.04 +169.07 diff --git a/Makefile b/Makefile index 1db1be2..10eff53 100644 --- a/Makefile +++ b/Makefile @@ -278,7 +278,7 @@ tls_test: tls_test.c # nvidia-installer to simplify x86-64 builds. rebuild_rtld_test: rtld_test.c - gcc -Wall -O2 -fomit-frame-pointer -o $(RTLD_TEST) -lGL -lcuda -lpthread -lstdc++ $< + gcc -Wall -O2 -fomit-frame-pointer -o $(RTLD_TEST) -lGL $< strip $(RTLD_TEST) # dummy rule to override implicit rule that builds dls_test from diff --git a/command-list.c b/command-list.c index e02b018..d98b2e0 100644 --- a/command-list.c +++ b/command-list.c @@ -214,6 +214,16 @@ CommandList *build_command_list(Options *op, Package *p) /* Add all the installable files to the list */ for (i = 0; i < p->num_entries; i++) { + if (op->selinux_enabled && + (op->utils[EXECSTACK] != NULL) && + ((p->entries[i].flags & FILE_TYPE_SHARED_LIB) || + (p->entries[i].flags & FILE_TYPE_XMODULE_SHARED_LIB))) { + tmp = nvstrcat(op->utils[EXECSTACK], " -c ", + p->entries[i].file, NULL); + add_command(c, RUN_CMD, tmp); + nvfree(tmp); + } + if (p->entries[i].flags & installable_files) { add_command(c, INSTALL_CMD, p->entries[i].file, @@ -231,20 +241,14 @@ CommandList *build_command_list(Options *op, Package *p) add_command(c, DELETE_CMD, p->entries[i].file); } - - if (op->selinux_enabled && + + if (op->selinux_enabled && ((p->entries[i].flags & FILE_TYPE_SHARED_LIB) || (p->entries[i].flags & FILE_TYPE_XMODULE_SHARED_LIB))) { tmp = nvstrcat(op->utils[CHCON], " -t ", op->selinux_chcon_type, " ", p->entries[i].dst, NULL); add_command(c, RUN_CMD, tmp); nvfree(tmp); - if (op->utils[EXECSTACK] != NULL) { - tmp = nvstrcat(op->utils[EXECSTACK], " -c ", p->entries[i].dst, - NULL); - add_command(c, RUN_CMD, tmp); - nvfree(tmp); - } } } @@ -521,6 +525,7 @@ static ConflictingFileInfo __xfree86_libs[] = { { "libXvMCNVIDIA", 13 /* strlen("libXvMCNVIDIA") */ }, { "libnvidia-cfg.", 14 /* strlen("libnvidia-cfg.") */ }, { "nvidia_drv.", 11 /* strlen("nvidia_drv.") */ }, + { "libcuda.", 8 /* strlen("libcuda.") */ }, { NULL, 0 } }; @@ -564,6 +569,7 @@ static ConflictingFileInfo __opengl_libs[] = { { "libnvidia-tls.", 14 /* strlen("libnvidia-tls.") */ }, { "libGLwrapper.", 13 /* strlen("libGLwrapper.") */ }, { "libnvidia-cfg.", 14 /* strlen("libnvidia-cfg.") */ }, + { "libcuda.", 8 /* strlen("libcuda.") */ }, { NULL, 0 } }; diff --git a/files.c b/files.c index 62ec6d4..4b78619 100644 --- a/files.c +++ b/files.c @@ -512,6 +512,18 @@ int set_destinations(Options *op, Package *p) } path = ""; break; + + case FILE_TYPE_CUDA_LIB: + case FILE_TYPE_CUDA_SYMLINK: + if (p->entries[i].flags & FILE_CLASS_COMPAT32) { + prefix = op->compat32_prefix; + dir = op->compat32_libdir; + } else { + prefix = op->opengl_prefix; + dir = op->opengl_libdir; + } + path = ""; + break; case FILE_TYPE_XLIB_SHARED_LIB: case FILE_TYPE_XLIB_STATIC_LIB: @@ -566,6 +578,7 @@ int set_destinations(Options *op, Package *p) */ case FILE_TYPE_OPENGL_HEADER: + case FILE_TYPE_CUDA_HEADER: prefix = op->opengl_prefix; dir = op->opengl_incdir; path = p->entries[i].path; diff --git a/install-from-cwd.c b/install-from-cwd.c index 2d28b89..b4dd070 100644 --- a/install-from-cwd.c +++ b/install-from-cwd.c @@ -654,8 +654,12 @@ static Package *parse_manifest (Options *op) p->entries[n].flags |= FILE_TYPE_KERNEL_MODULE_CMD; else if (strcmp(flag, "OPENGL_HEADER") == 0) p->entries[n].flags |= FILE_TYPE_OPENGL_HEADER; + else if (strcmp(flag, "CUDA_HEADER") == 0) + p->entries[n].flags |= FILE_TYPE_CUDA_HEADER; else if (strcmp(flag, "OPENGL_LIB") == 0) p->entries[n].flags |= FILE_TYPE_OPENGL_LIB; + else if (strcmp(flag, "CUDA_LIB") == 0) + p->entries[n].flags |= FILE_TYPE_CUDA_LIB; else if (strcmp(flag, "LIBGL_LA") == 0) p->entries[n].flags |= FILE_TYPE_LIBGL_LA; else if (strcmp(flag, "XLIB_STATIC_LIB") == 0) @@ -672,6 +676,8 @@ static Package *parse_manifest (Options *op) p->entries[n].flags |= FILE_TYPE_MANPAGE; else if (strcmp(flag, "OPENGL_SYMLINK") == 0) p->entries[n].flags |= FILE_TYPE_OPENGL_SYMLINK; + else if (strcmp(flag, "CUDA_SYMLINK") == 0) + p->entries[n].flags |= FILE_TYPE_CUDA_SYMLINK; else if (strcmp(flag, "XLIB_SYMLINK") == 0) p->entries[n].flags |= FILE_TYPE_XLIB_SYMLINK; else if (strcmp(flag, "TLS_SYMLINK") == 0) diff --git a/nvidia-installer.h b/nvidia-installer.h index 023b739..30c9599 100644 --- a/nvidia-installer.h +++ b/nvidia-installer.h @@ -288,7 +288,7 @@ typedef struct { /* file types */ -#define FILE_TYPE_MASK 0x00ffffff +#define FILE_TYPE_MASK 0x01ffffff #define FILE_TYPE_KERNEL_MODULE_SRC 0x00000001 #define FILE_TYPE_KERNEL_MODULE_CMD 0x00000002 @@ -313,15 +313,18 @@ typedef struct { /* Create a symlink only if the file doesn't exist */ #define FILE_TYPE_XMODULE_NEWSYM 0x00100000 #define FILE_TYPE_MANPAGE 0x00200000 +#define FILE_TYPE_CUDA_HEADER 0x00400000 +#define FILE_TYPE_CUDA_LIB 0x00800000 +#define FILE_TYPE_CUDA_SYMLINK 0x01000000 /* file class: this is used to distinguish OpenGL libraries */ -#define FILE_CLASS_MASK 0xff000000 +#define FILE_CLASS_MASK 0xfe000000 -#define FILE_CLASS_NEW_TLS 0x01000000 -#define FILE_CLASS_CLASSIC_TLS 0x02000000 -#define FILE_CLASS_NATIVE 0x04000000 -#define FILE_CLASS_COMPAT32 0x08000000 +#define FILE_CLASS_NEW_TLS 0x02000000 +#define FILE_CLASS_CLASSIC_TLS 0x04000000 +#define FILE_CLASS_NATIVE 0x08000000 +#define FILE_CLASS_COMPAT32 0x10000000 #define FILE_TYPE_XLIB_LIB (FILE_TYPE_XLIB_STATIC_LIB | \ FILE_TYPE_XLIB_SHARED_LIB) @@ -329,12 +332,14 @@ typedef struct { #define FILE_TYPE_XMODULE_LIB (FILE_TYPE_XMODULE_SHARED_LIB) #define FILE_TYPE_INSTALLABLE_FILE (FILE_TYPE_OPENGL_LIB | \ + FILE_TYPE_CUDA_LIB | \ FILE_TYPE_XLIB_LIB | \ FILE_TYPE_TLS_LIB | \ FILE_TYPE_UTILITY_LIB | \ FILE_TYPE_DOCUMENTATION | \ FILE_TYPE_MANPAGE | \ FILE_TYPE_OPENGL_HEADER | \ + FILE_TYPE_CUDA_HEADER | \ FILE_TYPE_KERNEL_MODULE | \ FILE_TYPE_INSTALLER_BINARY | \ FILE_TYPE_UTILITY_BINARY | \ @@ -347,13 +352,16 @@ typedef struct { FILE_TYPE_XMODULE_NEWSYM | \ FILE_TYPE_MANPAGE | \ FILE_TYPE_OPENGL_HEADER | \ + FILE_TYPE_CUDA_HEADER | \ FILE_TYPE_TLS_LIB | \ FILE_TYPE_TLS_SYMLINK | \ FILE_TYPE_DOT_DESKTOP | \ FILE_TYPE_DOCUMENTATION) #define FILE_TYPE_HAVE_ARCH (FILE_TYPE_OPENGL_LIB | \ + FILE_TYPE_CUDA_LIB | \ FILE_TYPE_OPENGL_SYMLINK | \ + FILE_TYPE_CUDA_SYMLINK | \ FILE_TYPE_LIBGL_LA | \ FILE_TYPE_TLS_LIB | \ FILE_TYPE_TLS_SYMLINK) @@ -362,6 +370,7 @@ typedef struct { FILE_TYPE_TLS_SYMLINK) #define FILE_TYPE_SYMLINK (FILE_TYPE_OPENGL_SYMLINK | \ + FILE_TYPE_CUDA_SYMLINK | \ FILE_TYPE_XLIB_SYMLINK | \ FILE_TYPE_TLS_SYMLINK | \ FILE_TYPE_XMODULE_SYMLINK | \ @@ -376,6 +385,7 @@ typedef struct { FILE_TYPE_TLS_LIB) #define FILE_TYPE_SHARED_LIB (FILE_TYPE_OPENGL_LIB | \ + FILE_TYPE_CUDA_LIB | \ FILE_TYPE_XLIB_SHARED_LIB | \ FILE_TYPE_TLS_LIB | \ FILE_TYPE_XMODULE_SHARED_LIB | \ @@ -405,6 +415,7 @@ typedef struct { * command line. */ #define DEFAULT_OPENGL_PREFIX "/usr" +#define DEFAULT_CUDA_PREFEIX "/usr" #define DEFAULT_X_PREFIX "/usr/X11R6" #define DEFAULT_UTILITY_PREFIX "/usr" #define DEFAULT_DOCUMENTATION_PREFIX "/usr" diff --git a/rtld_test_Linux-x86 b/rtld_test_Linux-x86 index 8b4087f..b60ea47 100755 Binary files a/rtld_test_Linux-x86 and b/rtld_test_Linux-x86 differ diff --git a/rtld_test_Linux-x86_64 b/rtld_test_Linux-x86_64 index 3995dd2..be5e874 100755 Binary files a/rtld_test_Linux-x86_64 and b/rtld_test_Linux-x86_64 differ -- cgit v1.2.3