Skip to content

pkgid -> crate_id #11041

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 19, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/etc/combine-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def scrub(b):
c.write(
"""
// AUTO-GENERATED FILE: DO NOT EDIT
#[crate_id=\"run_pass_stage2#0.1\"];
#[pkgid=\"run_pass_stage2#0.1\"];
#[link(name=\"run_pass_stage2\", vers=\"0.1\")];
#[feature(globs, macro_rules, struct_variant, managed_boxes)];
Expand Down
2 changes: 2 additions & 0 deletions src/libextra/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ Rust extras are part of the standard Rust distribution.

*/

// NOTE: remove after snapshot
#[pkgid = "extra#0.9-pre"];
#[crate_id = "extra#0.9-pre"];
#[comment = "Rust extras"];
#[license = "MIT/ASL2"];
#[crate_type = "rlib"];
Expand Down
22 changes: 14 additions & 8 deletions src/librustc/back/link.rs
Original file line number Diff line number Diff line change
Expand Up @@ -753,14 +753,10 @@ fn is_writeable(p: &Path) -> bool {
}
}

fn link_binary_output(sess: Session,
trans: &CrateTranslation,
output: session::OutputStyle,
obj_filename: &Path,
out_filename: &Path,
lm: &LinkMeta) -> Path {
pub fn filename_for_input(sess: &Session, output: session::OutputStyle, lm: &LinkMeta,
out_filename: &Path) -> Path {
let libname = output_lib_filename(lm);
let out_filename = match output {
match output {
session::OutputRlib => {
out_filename.with_filename(format!("lib{}.rlib", libname))
}
Expand All @@ -778,7 +774,17 @@ fn link_binary_output(sess: Session,
out_filename.with_filename(format!("lib{}.a", libname))
}
session::OutputExecutable => out_filename.clone(),
};
}

}

fn link_binary_output(sess: Session,
trans: &CrateTranslation,
output: session::OutputStyle,
obj_filename: &Path,
out_filename: &Path,
lm: &LinkMeta) -> Path {
let out_filename = filename_for_input(&sess, output, lm, out_filename);

// Make sure the output and obj_filename are both writeable.
// Mac, FreeBSD, and Windows system linkers check this already --
Expand Down
48 changes: 46 additions & 2 deletions src/librustc/driver/driver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -446,13 +446,49 @@ pub fn compile_input(sess: Session, cfg: ast::CrateConfig, input: &input,
let (outputs, trans) = {
let expanded_crate = {
let crate = phase_1_parse_input(sess, cfg.clone(), input);
let (crate_id, crate_name, crate_file_name) = sess.opts.print_metas;
// these nasty nested conditions are to avoid doing extra work
if crate_id || crate_name || crate_file_name {
let t_outputs = build_output_filenames(input, outdir, output, crate.attrs, sess);
if crate_id || crate_name {
let pkgid = match attr::find_pkgid(crate.attrs) {
Some(pkgid) => pkgid,
None => fail!("No crate_id and --crate-id or --crate-name requested")
};
if crate_id {
println(pkgid.to_str());
}
if crate_name {
println(pkgid.name);
}
}

if crate_file_name {
let lm = link::build_link_meta(sess, &crate, &t_outputs.obj_filename,
&mut ::util::sha2::Sha256::new());
// if the vector is empty we default to OutputExecutable.
let style = sess.opts.outputs.get_opt(0).unwrap_or(&OutputExecutable);
let fname = link::filename_for_input(&sess, *style, &lm,
&t_outputs.out_filename);
println!("{}", fname.display());

// we already maybe printed the first one, so skip it
for style in sess.opts.outputs.iter().skip(1) {
let fname = link::filename_for_input(&sess, *style, &lm,
&t_outputs.out_filename);
println!("{}", fname.display());
}
}

return;
}
if stop_after_phase_1(sess) { return; }
phase_2_configure_and_expand(sess, cfg, crate)
};
let analysis = phase_3_run_analysis_passes(sess, &expanded_crate);
if stop_after_phase_3(sess) { return; }
let outputs = build_output_filenames(input, outdir, output,
expanded_crate.attrs, sess);
let analysis = phase_3_run_analysis_passes(sess, &expanded_crate);
if stop_after_phase_3(sess) { return; }
let trans = phase_4_translate_to_llvm(sess, expanded_crate,
&analysis, outputs);
(outputs, trans)
Expand Down Expand Up @@ -789,6 +825,9 @@ pub fn build_session_options(binary: @str,
}).collect()
}
};
let print_metas = (matches.opt_present("crate-id"),
matches.opt_present("crate-name"),
matches.opt_present("crate-file-name"));

let sopts = @session::options {
outputs: outputs,
Expand Down Expand Up @@ -817,6 +856,7 @@ pub fn build_session_options(binary: @str,
debugging_opts: debugging_opts,
android_cross_path: android_cross_path,
write_dependency_info: write_dependency_info,
print_metas: print_metas,
};
return sopts;
}
Expand Down Expand Up @@ -897,6 +937,10 @@ pub fn optgroups() -> ~[getopts::groups::OptGroup] {
optflag("", "dylib", "Compile a dynamic library crate"),
optopt("", "linker", "Program to use for linking instead of the default.", "LINKER"),
optopt("", "ar", "Program to use for managing archives instead of the default.", "AR"),
optflag("", "crate-id", "Output the crate id and exit"),
optflag("", "crate-name", "Output the crate name and exit"),
optflag("", "crate-file-name", "Output the file(s) that would be written if compilation \
continued and exit"),
optmulti("", "link-args", "FLAGS is a space-separated list of flags
passed to the linker", "FLAGS"),
optflag("", "ls", "List the symbols defined by a library crate"),
Expand Down
5 changes: 4 additions & 1 deletion src/librustc/driver/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,10 @@ pub struct options {
no_trans: bool,
debugging_opts: uint,
android_cross_path: Option<~str>,
// Whether to write .d dependency files
/// Whether to write .d dependency files
write_dependency_info: bool,
/// Crate id-related things to maybe print. It's (crate_id, crate_name, crate_file_name).
print_metas: (bool, bool, bool),
}

pub struct crate_metadata {
Expand Down Expand Up @@ -396,6 +398,7 @@ pub fn basic_options() -> @options {
debugging_opts: 0u,
android_cross_path: None,
write_dependency_info: false,
print_metas: (false, false, false),
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/librustc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// NOTE: remove after snapshot
#[pkgid = "rustc#0.9-pre"];
#[crate_id = "rustc#0.9-pre"];
#[comment = "The Rust compiler"];
#[license = "MIT/ASL2"];
#[crate_type = "dylib"];
Expand Down
4 changes: 2 additions & 2 deletions src/librustc/metadata/encoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1499,13 +1499,13 @@ fn synthesize_crate_attrs(ecx: &EncodeContext,

attr::mk_attr(
attr::mk_name_value_item_str(
@"pkgid",
@"crate_id",
ecx.link_meta.pkgid.to_str().to_managed()))
}

let mut attrs = ~[];
for attr in crate.attrs.iter() {
if "pkgid" != attr.name() {
if "crate_id" != attr.name() {
attrs.push(*attr);
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/librustc/middle/lint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -832,7 +832,8 @@ fn check_heap_item(cx: &Context, it: &ast::item) {
}

static crate_attrs: &'static [&'static str] = &[
"crate_type", "feature", "no_uv", "no_main", "no_std", "pkgid",
// NOTE: remove pkgid after snapshot
"crate_type", "feature", "no_uv", "no_main", "no_std", "pkgid", "crate_id",
"desc", "comment", "license", "copyright", // not used in rustc now
];

Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/clean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ impl Clean<Crate> for visit_ast::RustdocVisitor {
Crate {
name: match find_pkgid(self.attrs) {
Some(n) => n.name,
None => fail!("rustdoc requires a `pkgid` crate attribute"),
None => fail!("rustdoc requires a `crate_id` crate attribute"),
},
module: Some(self.module.clean()),
externs: externs,
Expand Down
2 changes: 2 additions & 0 deletions src/librustdoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// NOTE: remove after snapshot
#[pkgid = "rustdoc#0.9-pre"];
#[crate_id = "rustdoc#0.9-pre"];
#[desc = "rustdoc, the Rust documentation extractor"];
#[license = "MIT/ASL2"];
#[crate_type = "dylib"];
Expand Down
2 changes: 2 additions & 0 deletions src/librustpkg/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@

// rustpkg - a package manager and build system for Rust

// NOTE: remove after snapshot
#[pkgid = "rustpkg#0.9-pre"];
#[crate_id = "rustpkg#0.9-pre"];
#[license = "MIT/ASL2"];
#[crate_type = "dylib"];

Expand Down
6 changes: 3 additions & 3 deletions src/librustpkg/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1892,9 +1892,9 @@ fn pkgid_pointing_to_subdir() {
fs::mkdir_recursive(&foo_dir, io::UserRWX);
fs::mkdir_recursive(&bar_dir, io::UserRWX);
writeFile(&foo_dir.join("lib.rs"),
"#[pkgid=\"mockgithub.com/mozilla/some_repo/extras/foo\"]; pub fn f() {}");
"#[crate_id=\"mockgithub.com/mozilla/some_repo/extras/foo\"]; pub fn f() {}");
writeFile(&bar_dir.join("lib.rs"),
"#[pkgid=\"mockgithub.com/mozilla/some_repo/extras/bar\"]; pub fn g() {}");
"#[crate_id=\"mockgithub.com/mozilla/some_repo/extras/bar\"]; pub fn g() {}");

debug!("Creating a file in {}", workspace.display());
let testpkg_dir = workspace.join_many(["src", "testpkg-0.0"]);
Expand Down Expand Up @@ -2316,7 +2316,7 @@ fn find_sources_in_cwd() {
let source_dir = temp_dir.join("foo");
fs::mkdir_recursive(&source_dir, io::UserRWX);
writeFile(&source_dir.join("main.rs"),
"fn main() { let _x = (); }");
r#"#[crate_id="foo"]; fn main() { let _x = (); }"#);
command_line_test([~"install", ~"foo"], &source_dir);
assert_executable_exists(&source_dir.join(".rust"), "foo");
}
Expand Down
4 changes: 2 additions & 2 deletions src/librustpkg/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,10 +291,10 @@ pub fn compile_input(context: &BuildContext,
});

// Inject the pkgid attribute so we get the right package name and version
if !attr::contains_name(crate.attrs, "pkgid") {
if !attr::contains_name(crate.attrs, "crate_id") {
// FIXME (#9639): This needs to handle non-utf8 paths
let pkgid_attr =
attr::mk_name_value_item_str(@"pkgid",
attr::mk_name_value_item_str(@"crate_id",
format!("{}\\#{}",
pkg_id.path.as_str().unwrap(),
pkg_id.version.to_str()).to_managed());
Expand Down
2 changes: 2 additions & 0 deletions src/librustuv/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ via `close` and `delete` methods.

*/

// NOTE: remove after snapshot
#[pkgid = "rustuv#0.9-pre"];
#[crate_id = "rustuv#0.9-pre"];
#[license = "MIT/ASL2"];
#[crate_type = "rlib"];
#[crate_type = "dylib"];
Expand Down
2 changes: 2 additions & 0 deletions src/libstd/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@
//!
//! use std::prelude::*;

// NOTE: remove after snapshot
#[pkgid = "std#0.9-pre"];
#[crate_id = "std#0.9-pre"];
#[comment = "The Rust standard library"];
#[license = "MIT/ASL2"];
#[crate_type = "rlib"];
Expand Down
2 changes: 1 addition & 1 deletion src/libsyntax/attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ pub fn find_linkage_metas(attrs: &[Attribute]) -> ~[@MetaItem] {
}

pub fn find_pkgid(attrs: &[Attribute]) -> Option<PkgId> {
match first_attr_value_str_by_name(attrs, "pkgid") {
match first_attr_value_str_by_name(attrs, "crate_id") {
None => None,
Some(id) => from_str::<PkgId>(id),
}
Expand Down
2 changes: 2 additions & 0 deletions src/libsyntax/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
* macros.
*/

// NOTE: remove pkgid after snapshot
#[pkgid = "syntax#0.9-pre"];
#[crate_id = "syntax#0.9-pre"];
#[license = "MIT/ASL2"];
#[crate_type = "dylib"];
#[crate_type = "rlib"];
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/anon-extern-mod-cross-crate-1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="anonexternmod#0.1"];
#[crate_id="anonexternmod#0.1"];

use std::libc;

Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/cci_impl_lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="cci_impl_lib"];
#[crate_id="cci_impl_lib"];
// NOTE: remove after the next snapshot
#[link(name="cci_impl_lib", vers="0.0")];

Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/cci_iter_lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="cci_iter_lib"];
#[crate_id="cci_iter_lib"];
// NOTE: remove after the next snapshot
#[link(name="cci_iter_lib", vers="0.0")];

Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/cci_no_inline_lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="cci_no_inline_lib"];
#[crate_id="cci_no_inline_lib"];
// NOTE: remove after the next snapshot
#[link(name="cci_no_inline_lib", vers="0.0")];

Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crate-method-reexport-grrrrrrr2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// except according to those terms.

#[feature(managed_boxes)];
#[pkgid="crate_method_reexport_grrrrrrr2"];
#[crate_id="crate_method_reexport_grrrrrrr2"];
// NOTE: remove after the next snapshot
#[link(name = "crate_method_reexport_grrrrrrr2")];

Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crateresolve1-1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="crateresolve1#0.1"];
#[crate_id="crateresolve1#0.1"];
// NOTE: remove after the next snapshot
#[link(name = "crateresolve1",
vers = "0.1")];
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crateresolve1-2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="crateresolve1#0.2"];
#[crate_id="crateresolve1#0.2"];
// NOTE: remove after the next snapshot
#[link(name = "crateresolve1",
vers = "0.2")];
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crateresolve1-3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="crateresolve1#0.3"];
#[crate_id="crateresolve1#0.3"];
// NOTE: remove after the next snapshot
#[link(name = "crateresolve1",
vers = "0.3")];
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crateresolve2-1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="crateresolve2#0.1"];
#[crate_id="crateresolve2#0.1"];
// NOTE: remove after the next snapshot
#[link(name = "crateresolve2",
vers = "0.1")];
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crateresolve2-2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="crateresolve2#0.2"];
#[crate_id="crateresolve2#0.2"];
// NOTE: remove after the next snapshot
#[link(name = "crateresolve2",
vers = "0.2")];
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/crateresolve2-3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#[pkgid="crateresolve2#0.3"];
#[crate_id="crateresolve2#0.3"];
// NOTE: remove after the next snapshot
#[link(name = "crateresolve2",
vers = "0.3")];
Expand Down
Loading