]> git.lizzy.rs Git - rust.git/commitdiff
Add default 'package_id' link meta for crates (with value equal to 'name')
authorAndrei Formiga <archimedes_siracusa@hotmail.com>
Fri, 8 Nov 2013 02:00:23 +0000 (23:00 -0300)
committerAndrei Formiga <archimedes_siracusa@hotmail.com>
Fri, 8 Nov 2013 20:42:46 +0000 (17:42 -0300)
src/librustc/back/link.rs

index 5b0f424360b1ebb6398d91ad9f68f672c89bc419..ab0763aac9e513a0811b59c221019c105e1f8c3a 100644 (file)
@@ -634,6 +634,26 @@ fn crate_meta_vers(sess: Session, opt_vers: Option<@str>) -> @str {
         }
     }
 
+    fn crate_meta_pkgid(sess: Session, output: &Path, opt_pkg_id: Option<@str>)
+        -> @str {
+        match opt_pkg_id {
+            Some(v) if !v.is_empty() => v,
+            _ => {
+                let pkg_id = session::expect(sess,
+                                             output.filestem_str(),
+                                             || format!("output file name `{}` doesn't\
+                                                      appear to have a stem",
+                                                     output.display())).to_managed();
+                if pkg_id.is_empty() {
+                    sess.fatal("missing crate link meta `package_id`, and the \
+                                inferred name is blank");
+                }
+                warn_missing(sess, "package_id", pkg_id);
+                pkg_id
+            }
+        }
+    }
+
     let ProvidedMetas {
         name: opt_name,
         vers: opt_vers,
@@ -642,15 +662,16 @@ fn crate_meta_vers(sess: Session, opt_vers: Option<@str>) -> @str {
     } = provided_link_metas(sess, c);
     let name = crate_meta_name(sess, output, opt_name);
     let vers = crate_meta_vers(sess, opt_vers);
+    let pkg_id = crate_meta_pkgid(sess, output, opt_pkg_id);
     let dep_hashes = cstore::get_dep_hashes(sess.cstore);
     let extras_hash =
         crate_meta_extras_hash(symbol_hasher, cmh_items,
-                               dep_hashes, opt_pkg_id);
+                               dep_hashes, Some(pkg_id));
 
     LinkMeta {
         name: name,
         vers: vers,
-        package_id: opt_pkg_id,
+        package_id: Some(pkg_id),
         extras_hash: extras_hash
     }
 }