@@ -634,6 +634,26 @@ pub fn build_link_meta(sess: Session,
634
634
}
635
635
}
636
636
637
+ fn crate_meta_pkgid ( sess : Session , output : & Path , opt_pkg_id : Option < @str > )
638
+ -> @str {
639
+ match opt_pkg_id {
640
+ Some ( v) if !v. is_empty ( ) => v,
641
+ _ => {
642
+ let pkg_id = session:: expect ( sess,
643
+ output. filestem_str ( ) ,
644
+ || format ! ( "output file name `{}` doesn't\
645
+ appear to have a stem",
646
+ output. display( ) ) ) . to_managed ( ) ;
647
+ if pkg_id. is_empty ( ) {
648
+ sess. fatal ( "missing crate link meta `package_id`, and the \
649
+ inferred name is blank") ;
650
+ }
651
+ warn_missing ( sess, "package_id" , pkg_id) ;
652
+ pkg_id
653
+ }
654
+ }
655
+ }
656
+
637
657
let ProvidedMetas {
638
658
name : opt_name,
639
659
vers : opt_vers,
@@ -642,15 +662,16 @@ pub fn build_link_meta(sess: Session,
642
662
} = provided_link_metas ( sess, c) ;
643
663
let name = crate_meta_name ( sess, output, opt_name) ;
644
664
let vers = crate_meta_vers ( sess, opt_vers) ;
665
+ let pkg_id = crate_meta_pkgid ( sess, output, opt_pkg_id) ;
645
666
let dep_hashes = cstore:: get_dep_hashes ( sess. cstore ) ;
646
667
let extras_hash =
647
668
crate_meta_extras_hash ( symbol_hasher, cmh_items,
648
- dep_hashes, opt_pkg_id ) ;
669
+ dep_hashes, Some ( pkg_id ) ) ;
649
670
650
671
LinkMeta {
651
672
name : name,
652
673
vers : vers,
653
- package_id : opt_pkg_id ,
674
+ package_id : Some ( pkg_id ) ,
654
675
extras_hash : extras_hash
655
676
}
656
677
}
0 commit comments