From cdfdc1eb6b9ff58b4a264d1c112dfcbf6e9187ae Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 24 Jan 2014 21:00:31 -0800 Subject: [PATCH] Move extra::flate to libflate This is hopefully the beginning of the long-awaited dissolution of libextra. Using the newly created build infrastructure for building libraries, I decided to move the first module out of libextra. While not being a particularly meaty module in and of itself, the flate module is required by rustc and additionally has a native C dependency. I was able to very easily split out the C dependency from rustrt, update librustc, and magically everything gets installed to the right locations and built automatically. This is meant to be a proof-of-concept commit to how easy it is to remove modules from libextra now. I didn't put any effort into modernizing the interface of libflate or updating it other than to remove the one glob import it had. --- doc/index.md | 6 ++++-- mk/crates.mk | 5 +++-- mk/rt.mk | 4 ++-- mk/tests.mk | 6 ++++-- src/libextra/lib.rs | 1 - src/{libextra/flate.rs => libflate/lib.rs} | 8 ++++++-- src/librustc/lib.rs | 1 + src/librustc/metadata/loader.rs | 2 +- src/librustc/middle/trans/base.rs | 2 +- src/librustdoc/html/markdown.rs | 4 +++- 10 files changed, 25 insertions(+), 14 deletions(-) rename src/{libextra/flate.rs => libflate/lib.rs} (95%) diff --git a/doc/index.md b/doc/index.md index 53ad4217145..16c6db3859c 100644 --- a/doc/index.md +++ b/doc/index.md @@ -37,6 +37,8 @@ li {list-style-type: none; } * [The Rust parser, `libsyntax`](syntax/index.html) * [The Rust compiler, `librustc`](rustc/index.html) +* [The `flate` compression library](flate/index.html) + # Tooling * [The `rustdoc` manual](rustdoc.html) @@ -47,11 +49,11 @@ li {list-style-type: none; } * [Language FAQ](complement-lang-faq.html) * [Project FAQ](complement-project-faq.html) * [Usage FAQ](complement-usage-faq.html) -* [Code cheatsheet](complement-cheatsheet.html) - "How do I do X?" +* [Code cheatsheet](complement-cheatsheet.html) - "How do I do X?" * [How to submit a bug report](complement-bugreport.html) # External resources -* The Rust [IRC channel](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust) - `#rust` on irc.mozilla.org +* The Rust [IRC channel](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust) - `#rust` on irc.mozilla.org * The Rust community on [Reddit](http://reddit.com/r/rust) * The Rust [wiki](http://github.com/mozilla/rust/wiki) diff --git a/mk/crates.mk b/mk/crates.mk index 8bf36b0e4c6..dc374549dad 100644 --- a/mk/crates.mk +++ b/mk/crates.mk @@ -49,7 +49,7 @@ # automatically generated for all stage/host/target combinations. ################################################################################ -TARGET_CRATES := std extra green rustuv native +TARGET_CRATES := std extra green rustuv native flate HOST_CRATES := syntax rustc rustdoc rustpkg CRATES := $(TARGET_CRATES) $(HOST_CRATES) TOOLS := compiletest rustpkg rustdoc rustc @@ -60,9 +60,10 @@ DEPS_green := std DEPS_rustuv := std native:uv native:uv_support DEPS_native := std DEPS_syntax := std extra -DEPS_rustc := syntax native:rustllvm +DEPS_rustc := syntax native:rustllvm flate DEPS_rustdoc := rustc native:sundown DEPS_rustpkg := rustc +DEPS_flate := std native:miniz TOOL_DEPS_compiletest := extra green rustuv TOOL_DEPS_rustpkg := rustpkg green rustuv diff --git a/mk/rt.mk b/mk/rt.mk index 2ea5c362536..269491649bb 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -35,7 +35,7 @@ # that's per-target so you're allowed to conditionally add files based on the # target. ################################################################################ -NATIVE_LIBS := rustrt sundown uv_support morestack +NATIVE_LIBS := rustrt sundown uv_support morestack miniz # $(1) is the target triple define NATIVE_LIBRARIES @@ -49,8 +49,8 @@ NATIVE_DEPS_sundown_$(1) := sundown/src/autolink.c \ sundown/html/html_smartypants.c \ sundown/html/html.c NATIVE_DEPS_uv_support_$(1) := rust_uv.c +NATIVE_DEPS_miniz_$(1) = miniz.c NATIVE_DEPS_rustrt_$(1) := rust_builtin.c \ - miniz.c \ rust_android_dummy.c \ rust_test_helpers.c \ rust_try.ll \ diff --git a/mk/tests.mk b/mk/tests.mk index 98def60307c..b8d3c126d5a 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -855,14 +855,16 @@ $$(TLIB2_T_$(2)_H_$(3))/$$(FT_LIB): \ tmp/$$(FT).rc \ $$(SREQ2_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) - $$(STAGE2_T_$(2)_H_$(3)) --lib -o $$@ $$< + $$(STAGE2_T_$(2)_H_$(3)) --lib -o $$@ $$< \ + -L "$$(RT_OUTPUT_DIR_$(2))" $(3)/test/$$(FT_DRIVER)-$(2)$$(X_$(2)): \ tmp/$$(FT_DRIVER).rs \ $$(TLIB2_T_$(2)_H_$(3))/$$(FT_LIB) \ $$(SREQ2_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@ $$<) - $$(STAGE2_T_$(2)_H_$(3)) -o $$@ $$< + $$(STAGE2_T_$(2)_H_$(3)) -o $$@ $$< \ + -L "$$(RT_OUTPUT_DIR_$(2))" $(3)/test/$$(FT_DRIVER)-$(2).out: \ $(3)/test/$$(FT_DRIVER)-$(2)$$(X_$(2)) \ diff --git a/src/libextra/lib.rs b/src/libextra/lib.rs index fc0cc045175..5a4fedd2b2a 100644 --- a/src/libextra/lib.rs +++ b/src/libextra/lib.rs @@ -82,7 +82,6 @@ pub mod complex; pub mod stats; pub mod semver; -pub mod flate; pub mod hex; pub mod uuid; diff --git a/src/libextra/flate.rs b/src/libflate/lib.rs similarity index 95% rename from src/libextra/flate.rs rename to src/libflate/lib.rs index faceb17af47..f746fe4ec32 100644 --- a/src/libextra/flate.rs +++ b/src/libflate/lib.rs @@ -14,6 +14,10 @@ */ +#[crate_id = "flate#0.10-pre"]; +#[crate_type = "rlib"]; +#[crate_type = "dylib"]; +#[license = "MIT/ASL2"]; #[allow(missing_doc)]; use std::libc::{c_void, size_t, c_int}; @@ -23,7 +27,7 @@ pub mod rustrt { use std::libc::{c_int, c_void, size_t}; - #[link(name = "rustrt", kind = "static")] + #[link(name = "miniz", kind = "static")] extern { pub fn tdefl_compress_mem_to_heap(psrc_buf: *c_void, src_buf_len: size_t, @@ -91,7 +95,7 @@ pub fn inflate_bytes_zlib(bytes: &[u8]) -> ~[u8] { #[cfg(test)] mod tests { - use super::*; + use super::{inflate_bytes, deflate_bytes}; use std::rand; use std::rand::Rng; diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index f7ee736f144..62232360c33 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -30,6 +30,7 @@ #[feature(macro_rules, globs, struct_variant, managed_boxes)]; extern mod extra; +extern mod flate; extern mod syntax; use back::link; diff --git a/src/librustc/metadata/loader.rs b/src/librustc/metadata/loader.rs index 72f2e1baddd..8b7da1f8310 100644 --- a/src/librustc/metadata/loader.rs +++ b/src/librustc/metadata/loader.rs @@ -33,7 +33,7 @@ use std::ptr; use std::str; use std::vec; -use extra::flate; +use flate; pub enum Os { OsMacos, diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 5b246daa6c5..9744c395b7c 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -2683,7 +2683,7 @@ pub fn crate_ctxt_to_encode_parms<'r>(cx: &'r CrateContext, ie: encoder::encode_ } pub fn write_metadata(cx: &CrateContext, crate: &ast::Crate) -> ~[u8] { - use extra::flate; + use flate; if !cx.sess.building_library.get() { return ~[] diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 5d0728c8cdf..d53adb78a30 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -16,7 +16,9 @@ //! functionality through a unit-struct, `Markdown`, which has an implementation //! of `fmt::Default`. Example usage: //! -//! ```rust +//! ```rust,ignore +//! use rustdoc::html::markdown::Markdown; +//! //! let s = "My *markdown* _text_"; //! let html = format!("{}", Markdown(s)); //! // ... something using html -- GitLab