diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2009-11-12 20:22:50 -0800 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2009-11-12 20:22:50 -0800 |
commit | 4d997a43b8e377a20967a09a132a3d23e469b0d3 (patch) | |
tree | 2f6c1a7c22529c17c4db4bcef2bdeaf6a897090a | |
parent | afb3d24898c705126752db77cdad76c99c90074d (diff) |
173.14.22173.14.22
-rw-r--r-- | DRIVER_VERSION | 2 | ||||
-rw-r--r-- | files.c | 25 | ||||
-rw-r--r-- | kernel.c | 53 | ||||
-rw-r--r-- | nvidia-installer.c | 7 | ||||
-rw-r--r-- | nvidia-installer.h | 3 | ||||
-rw-r--r-- | option_table.h | 10 |
6 files changed, 64 insertions, 36 deletions
diff --git a/DRIVER_VERSION b/DRIVER_VERSION index 9784975..b9728b8 100644 --- a/DRIVER_VERSION +++ b/DRIVER_VERSION @@ -1 +1 @@ -173.14.20 +173.14.22 @@ -1922,9 +1922,6 @@ void get_default_prefixes_and_paths(Options *op) } #if defined(NV_X86_64) - if (op->distro == DEBIAN && !op->compat32_chroot) - op->compat32_chroot = DEBIAN_DEFAULT_COMPAT32_CHROOT; - if (!op->compat32_prefix) op->compat32_prefix = DEFAULT_OPENGL_PREFIX; @@ -1936,6 +1933,28 @@ void get_default_prefixes_and_paths(Options *op) op->compat32_libdir = DEFAULT_LIBDIR; } } + + if (op->distro == DEBIAN && !op->compat32_chroot) { + /* + * Newer versions of Debian have moved to the Ubuntu style of compat32 + * path, so use that if it exists. + */ + char *default_path = nvstrcat(op->compat32_prefix, "/" + UBUNTU_DEFAULT_COMPAT32_LIBDIR, NULL); + struct stat buf; + if (lstat(default_path, &buf) < 0 || S_ISLNK(buf.st_mode)) { + /* + * Path doesn't exist or is a symbolic link. Use the compat32 + * chroot path instead. + */ + op->compat32_chroot = DEBIAN_DEFAULT_COMPAT32_CHROOT; + } else { + /* <prefix>/lib32 exists, so use that */ + op->compat32_libdir = UBUNTU_DEFAULT_COMPAT32_LIBDIR; + } + nvfree(default_path); + } + #endif if (!op->utility_prefix) @@ -2,7 +2,7 @@ * nvidia-installer: A tool for installing NVIDIA software packages on * Unix and Linux systems. * - * Copyright (C) 2003 NVIDIA Corporation + * Copyright (C) 2003-2009 NVIDIA Corporation * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -994,22 +994,15 @@ int find_precompiled_kernel_interface(Options *op, Package *p) * if we should try to download one. */ - if (!info && !op->no_network) { - if (ui_yes_no(op, TRUE, "No precompiled kernel interface was " - "found to match " - "your kernel; would you like the installer to attempt " - "to download a kernel interface for your kernel from " - "the NVIDIA ftp site (%s)?", op->ftp_site)) { - - info = download_updated_kernel_interface(op, p, - proc_version_string); - if (!info) { - ui_message(op, "No matching precompiled kernel interface was " - "found on the NVIDIA ftp site; this means that the " - "installer will need to compile a kernel interface " - "for your kernel."); - return FALSE; - } + if (!info && !op->no_network && op->precompiled_kernel_interfaces_url) { + info = download_updated_kernel_interface(op, p, + proc_version_string); + if (!info) { + ui_message(op, "No matching precompiled kernel interface was " + "found at '%s'; this means that the installer will need " + "to compile a kernel interface for your kernel.", + op->precompiled_kernel_interfaces_url); + return FALSE; } } @@ -1033,10 +1026,12 @@ int find_precompiled_kernel_interface(Options *op, Package *p) failed: - ui_message(op, "No precompiled kernel interface was found to match " - "your kernel; this means that the installer will need to " - "compile a new kernel interface."); - + if (op->expert) { + ui_message(op, "No precompiled kernel interface was found to match " + "your kernel; this means that the installer will need to " + "compile a new kernel interface."); + } + return FALSE; } /* find_precompiled_kernel_interface() */ @@ -1313,10 +1308,10 @@ download_updated_kernel_interface(Options *op, Package *p, /* initialize the tmpfile and url strings */ tmpfile = nvstrcat(op->tmpdir, "/nv-updates-XXXXXX", NULL); - url = nvstrcat(op->ftp_site, "/XFree86/", INSTALLER_OS, "-", - INSTALLER_ARCH, "/", p->version, - "/updates/updates.txt", NULL); - + url = nvstrcat(op->precompiled_kernel_interfaces_url, "/", INSTALLER_OS, + "-", INSTALLER_ARCH, "/", p->version, "/updates/updates.txt", + NULL); + /* * create a temporary file in which to write the list of available * updates @@ -1376,10 +1371,10 @@ download_updated_kernel_interface(Options *op, Package *p, /* build the new url and dstfile strings */ nvfree(url); - url = nvstrcat(op->ftp_site, "/XFree86/", - INSTALLER_OS, "-", INSTALLER_ARCH, "/", - p->version, "/updates/", buf, NULL); - + url = nvstrcat(op->precompiled_kernel_interfaces_url, "/", + INSTALLER_OS, "-", INSTALLER_ARCH, "/", p->version, + "/updates/", buf, NULL); + dstfile = nvstrcat(p->precompiled_kernel_interface_directory, "/", buf, NULL); diff --git a/nvidia-installer.c b/nvidia-installer.c index b21143f..4e91c16 100644 --- a/nvidia-installer.c +++ b/nvidia-installer.c @@ -2,7 +2,7 @@ * nvidia-installer: A tool for installing NVIDIA software packages on * Unix and Linux systems. * - * Copyright (C) 2003 NVIDIA Corporation + * Copyright (C) 2003-2009 NVIDIA Corporation * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -78,7 +78,7 @@ static void print_version(void) "The NVIDIA Accelerated Graphics Driver Set for %s-%s.", INSTALLER_OS, INSTALLER_ARCH); fmtout(""); - fmtoutp(TAB, "Copyright (C) 2003 NVIDIA Corporation."); + fmtoutp(TAB, "Copyright (C) 2003 - 2009 NVIDIA Corporation."); fmtout(""); } @@ -395,6 +395,9 @@ Options *parse_commandline(int argc, char *argv[]) case PRECOMPILED_KERNEL_INTERFACES_PATH_OPTION: op->precompiled_kernel_interfaces_path = optarg; break; + case PRECOMPILED_KERNEL_INTERFACES_URL_OPTION: + op->precompiled_kernel_interfaces_url = optarg; + break; case NO_ABI_NOTE_OPTION: op->no_abi_note = TRUE; break; diff --git a/nvidia-installer.h b/nvidia-installer.h index a292f1f..d627467 100644 --- a/nvidia-installer.h +++ b/nvidia-installer.h @@ -2,7 +2,7 @@ * nvidia-installer: A tool for installing NVIDIA software packages on * Unix and Linux systems. * - * Copyright (C) 2003 NVIDIA Corporation + * Copyright (C) 2003-2009 NVIDIA Corporation * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -186,6 +186,7 @@ typedef struct __options { char *kernel_name; char *rpm_file_list; char *precompiled_kernel_interfaces_path; + char *precompiled_kernel_interfaces_url; const char *selinux_chcon_type; Distribution distro; diff --git a/option_table.h b/option_table.h index 0ee356a..8463e49 100644 --- a/option_table.h +++ b/option_table.h @@ -33,6 +33,7 @@ enum { RPM_FILE_LIST_OPTION, NO_RUNLEVEL_CHECK_OPTION, PRECOMPILED_KERNEL_INTERFACES_PATH_OPTION, + PRECOMPILED_KERNEL_INTERFACES_URL_OPTION, NO_ABI_NOTE_OPTION, KERNEL_SOURCE_PATH_OPTION, NO_RPMS_OPTION, @@ -382,6 +383,15 @@ static const NVOption __options[] = { "Before searching for a precompiled kernel interface in the " ".run file, search in the specified directory." }, + { "precompiled-kernel-interfaces-url", + PRECOMPILED_KERNEL_INTERFACES_URL_OPTION, NVOPT_HAS_ARGUMENT, + "If no precompiled kernel interfaces are found within the driver package " + "or provided on the file system by the Linux distribution, check the " + "specified URL for updates. NVIDIA does not intend to provide updated " + "precompiled kernel interfaces, but system administrators might use this " + "for distributing precompiled kernel interfaces in a local area " + "network." }, + { "run-nvidia-xconfig", 'X', 0, "nvidia-installer can optionally invoke the nvidia-xconfig utility. " "This will update the system X configuration file so that the NVIDIA X " |