From 76967a008be228e96a48c92effabebcbab2ea881 Mon Sep 17 00:00:00 2001 From: Jan Niklas Hasse Date: Sun, 12 Jan 2014 02:31:33 +0100 Subject: [PATCH 1/2] Support linking of rlib files in rustpkg --- src/librustpkg/path_util.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/librustpkg/path_util.rs b/src/librustpkg/path_util.rs index 78ff748c3b9..460a9eb807f 100644 --- a/src/librustpkg/path_util.rs +++ b/src/librustpkg/path_util.rs @@ -226,10 +226,13 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti }; debug!("dir has {:?} entries", dir_contents.len()); - let lib_prefix = format!("{}{}", os::consts::DLL_PREFIX, short_name); - let lib_filetype = os::consts::DLL_EXTENSION; + let dll_prefix = format!("{}{}", os::consts::DLL_PREFIX, short_name); + let dll_filetype = os::consts::DLL_EXTENSION; + let rlib_prefix = format!("{}{}", "lib", short_name); + let rlib_filetype = "rlib"; - debug!("lib_prefix = {} and lib_filetype = {}", lib_prefix, lib_filetype); + debug!("dll_prefix = {} and dll_filetype = {}", dll_prefix, dll_filetype); + debug!("rlib_prefix = {} and rlib_filetype = {}", rlib_prefix, rlib_filetype); // Find a filename that matches the pattern: // (lib_prefix)-hash-(version)(lib_suffix) @@ -238,7 +241,7 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti debug!("p = {}, p's extension is {:?}", p.display(), extension); match extension { None => false, - Some(ref s) => lib_filetype == *s + Some(ref s) => dll_filetype == *s || rlib_filetype == *s, } }); @@ -261,8 +264,12 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti Some(ref found_vers) if version == found_vers => { match f_name.slice(0, i).rfind('-') { Some(j) => { - debug!("Maybe {} equals {}", f_name.slice(0, j), lib_prefix); - if f_name.slice(0, j) == lib_prefix { + let lib_prefix = match p_path.extension_str() { + Some(ref s) if dll_filetype == *s => &dll_prefix, + _ => &rlib_prefix, + }; + debug!("Maybe {} equals {}", f_name.slice(0, j), *lib_prefix); + if f_name.slice(0, j) == *lib_prefix { result_filename = Some(p_path.clone()); } break; From 6ccc1e88b7bdfde84df408eb559197ba786dbb22 Mon Sep 17 00:00:00 2001 From: Jan Niklas Hasse Date: Sun, 12 Jan 2014 02:36:29 +0100 Subject: [PATCH 2/2] Fix indention --- src/librustpkg/path_util.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/librustpkg/path_util.rs b/src/librustpkg/path_util.rs index 460a9eb807f..3c91e660784 100644 --- a/src/librustpkg/path_util.rs +++ b/src/librustpkg/path_util.rs @@ -261,21 +261,21 @@ fn library_in(short_name: &str, version: &Version, dir_to_search: &Path) -> Opti Some(i) => { debug!("Maybe {} is a version", f_name.slice(i + 1, f_name.len())); match try_parsing_version(f_name.slice(i + 1, f_name.len())) { - Some(ref found_vers) if version == found_vers => { - match f_name.slice(0, i).rfind('-') { - Some(j) => { + Some(ref found_vers) if version == found_vers => { + match f_name.slice(0, i).rfind('-') { + Some(j) => { let lib_prefix = match p_path.extension_str() { Some(ref s) if dll_filetype == *s => &dll_prefix, _ => &rlib_prefix, }; debug!("Maybe {} equals {}", f_name.slice(0, j), *lib_prefix); if f_name.slice(0, j) == *lib_prefix { - result_filename = Some(p_path.clone()); - } - break; - } - None => break - } + result_filename = Some(p_path.clone()); + } + break; + } + None => break + } } _ => { f_name = f_name.slice(0, i); }