1. 14 5月, 2014 1 次提交
    • L
      Get rid of the android-cross-path flag to rustc. · d0d800f1
      Luqman Aden 提交于
      There's no need to include this specific flag just for android. We can
      already deal with what it tries to solve by using -C linker=/path/to/cc
      and -C ar=/path/to/ar. The Makefiles for rustc already set this up when
      we're crosscompiling.
      
      I did add the flag to compiletest though so it can find gdb. Though, I'm
      pretty sure we don't run debuginfo tests on android anyways right now.
      
      [breaking-change]
      d0d800f1
  2. 12 5月, 2014 1 次提交
  3. 11 5月, 2014 1 次提交
    • D
      add back jemalloc to the tree · 1b1ca6d5
      Daniel Micay 提交于
      This adds a `std::rt::heap` module with a nice allocator API. It's a
      step towards fixing #13094 and is a starting point for working on a
      generic allocator trait.
      
      The revision used for the jemalloc submodule is the stable 3.6.0 release.
      
      Closes #11807
      1b1ca6d5
  4. 08 5月, 2014 1 次提交
  5. 04 5月, 2014 1 次提交
  6. 29 4月, 2014 2 次提交
    • A
      mk: Depend on regex_macros for tests appropriately · 7b3650da
      Alex Crichton 提交于
      There is currently not much precedent for target crates requiring syntax
      extensions to compile their test versions. This dependency is possible, but
      can't be encoded through the normal means of DEPS_regex because it is a
      test-only dependency and it must be a *host* dependency (it's a syntax
      extension).
      
      Closes #13844
      7b3650da
    • A
      test: Add a compile-fail-fulldeps test suite · 7b2a89fa
      Alex Crichton 提交于
      Compile-fail tests for syntax extensions belong in this suite which has correct
      dependencies on all artifacts rather than just the target artifacts.
      
      Closes #13818
      7b2a89fa
  7. 24 4月, 2014 1 次提交
    • D
      Enable use of syntax extensions when cross compiling. · 4ac89cd2
      Douglas Young 提交于
      This adds the target triple to the crate metadata.
      When searching for a crate the phase (link, syntax) is taken into account.
      During link phase only crates matching the target triple are considered.
      During syntax phase, either the target or host triple will be accepted, unless
      the crate defines a macro_registrar, in which case only the host triple will
      match.
      4ac89cd2
  8. 18 4月, 2014 1 次提交
  9. 07 4月, 2014 2 次提交
  10. 06 4月, 2014 1 次提交
    • F
      Fix android problems with newly fixed rpass-full variable definition. · 4edf7b8c
      Felix S. Klock II 提交于
      First, documented the existing `CTEST_DISABLE_$(TEST_GROUP)` pattern
      for conditionally disabling tests based on missing host features.
      
      Added variant of above, `CTEST_DISABLE_NONSELFHOST_$(TEST_GROUP)`,
      which is only queried in contexts where the target is not on the
      CFG_HOST list (which I interpret as the list of targets that our host
      can compatibly emulate; e.g. the example that i686 and x86_64 can in
      theory run each others' tests).
      
      Driveby fix: Remove redundant copy of
      check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec dependency declaration.
      4edf7b8c
  11. 04 4月, 2014 1 次提交
    • A
      std: Document builtin syntax extensions · 78937b97
      Alex Crichton 提交于
      These syntax extensions need a place to be documented, and this starts passing a
      `--cfg dox` parameter to `rustdoc` when building and testing documentation in
      order to document macros so that they have no effect on the compiled crate, but
      only documentation.
      
      Closes #5605
      78937b97
  12. 02 4月, 2014 1 次提交
    • F
      Two fixes to get `make check-stage1` working. · 3cbd98e4
      Felix S. Klock II 提交于
      1. Fix a long-standing typo in the makefile: the relevant
         CTEST_NAME here is `rpass-full` (with a dash), not
         `rpass_full`.
      
      2. The rpass-full tests depend on the complete set of target
         libraries.  Therefore, the rpass-full tests need to use
         the dependencies held in the CSREQ-prefixed variable, not
         the TLIBRUSTC_DEFAULT-prefixed variable.
      3cbd98e4
  13. 26 3月, 2014 2 次提交
  14. 13 3月, 2014 1 次提交
    • A
      Add basic backtrace functionality · 829df69f
      Alex Crichton 提交于
      Whenever a failure happens, if a program is run with
      `RUST_LOG=std::rt::backtrace` a backtrace will be printed to the task's stderr
      handle. Stack traces are uncondtionally printed on double-failure and
      rtabort!().
      
      This ended up having a nontrivial implementation, and here's some highlights of
      it:
      
      * We're bundling libbacktrace for everything but OSX and Windows
      * We use libgcc_s and its libunwind apis to get a backtrace of instruction
        pointers
      * On OSX we use dladdr() to go from an instruction pointer to a symbol
      * On unix that isn't OSX, we use libbacktrace to get symbols
      * Windows, as usual, has an entirely separate implementation
      
      Lots more fun details and comments can be found in the source itself.
      
      Closes #10128
      829df69f
  15. 09 3月, 2014 2 次提交
    • H
      mk: rename `check-...-doc-<crate>` to `check-...-doc-crate-<crate>`. · 3c4ff1b8
      Huon Wilson 提交于
      E.g. this stops check-...-doc rules for `rustdoc.md` and `librustdoc`
      from stamping on each other, so that they are correctly built and
      tested. (Previously only the rustdoc crate was tested.)
      3c4ff1b8
    • H
      mk: rewrite the documentation handling. · f7833215
      Huon Wilson 提交于
      This converts it to be very similar to crates.mk, with a single list of
      the documentation items creating all the necessary bits and pieces.
      
      Changes include:
      - rustdoc is used to render HTML & test standalone docs
      - documentation building now obeys NO_REBUILD=1
      - testing standalone docs now obeys NO_REBUILD=1
      - L10N is slightly less broken (in particular, it shares dependencies
        and code with the rest of the code)
      - PDFs can be built for all documentation items, not just tutorial and
        manual
      - removes the obsolete & unused extract-tests.py script
      - adjust the CSS for standalone docs to use the rustdoc syntax
        highlighting
      f7833215
  16. 22 2月, 2014 2 次提交
    • H
      mk: restore check-notidy. · abde5ed0
      Huon Wilson 提交于
      tidy has some limitations (e.g. the "checked in binaries" check doesn't
      and can't actually check git), and so it's useful to run tests without
      running tidy occasionally.
      abde5ed0
    • A
      mk: Get "make check" passing with --disable-rpath · e26ba360
      Alex Crichton 提交于
      This involves passing through LD_LIBRARY_PATH through more places, specifically
      in the compiletest, run-make, and doctest runners.
      e26ba360
  17. 20 2月, 2014 1 次提交
    • A
      Tweak how preference factors into linkage · 35c6e22f
      Alex Crichton 提交于
      The new methodology can be found in the re-worded comment, but the gist of it is
      that -C prefer-dynamic doesn't turn off static linkage. The error messages
      should also be a little more sane now.
      
      Closes #12133
      35c6e22f
  18. 18 2月, 2014 1 次提交
  19. 16 2月, 2014 1 次提交
  20. 15 2月, 2014 2 次提交
  21. 14 2月, 2014 2 次提交
    • L
      mk: Fix non-android cross builds. · ffdda22a
      Luqman Aden 提交于
      ffdda22a
    • H
      mk: make NO_REBUILD more forceful and more general. · 44e6883d
      Huon Wilson 提交于
      Previously crates like `green` and `native` would still depend on their
      parents when running `make check-stage2-green NO_REBUILD=1`, this
      ensures that they only depend on their source files.
      
      Also, apply NO_REBUILD to the crate doc tests, so, for example,
      `check-stage2-doc-std` will use an already compiled `rustdoc` directly.
      44e6883d
  22. 12 2月, 2014 2 次提交
  23. 10 2月, 2014 1 次提交
    • A
      Consolidate codegen-related compiler flags · 071ee962
      Alex Crichton 提交于
      Move them all behind a new -C switch. This migrates some -Z flags and some
      top-level flags behind this -C codegen option.
      
      The -C flag takes values of the form "-C name=value" where the "=value" is
      optional for some flags.
      
      Flags affected:
      
      * --llvm-args           => -C llvm-args
      * --passes              => -C passes
      * --ar                  => -C ar
      * --linker              => -C linker
      * --link-args           => -C link-args
      * --target-cpu          => -C target-cpu
      * --target-feature      => -C target-fature
      * --android-cross-path  => -C android-cross-path
      * --save-temps          => -C save-temps
      * --no-rpath            => -C no-rpath
      * -Z no-prepopulate     => -C no-prepopulate-passes
      * -Z no-vectorize-loops => -C no-vectorize-loops
      * -Z no-vectorize-slp   => -C no-vectorize-slp
      * -Z soft-float         => -C soft-float
      * -Z gen-crate-map      => -C gen-crate-map
      * -Z prefer-dynamic     => -C prefer-dynamic
      * -Z no-integrated-as   => -C no-integrated-as
      
      As a bonus, this also promotes the -Z extra-debug-info flag to a first class -g
      or --debuginfo flag.
      
      * -Z debug-info         => removed
      * -Z extra-debug-info   => -g or --debuginfo
      
      Closes #9770
      Closes #12000
      071ee962
  24. 09 2月, 2014 1 次提交
  25. 08 2月, 2014 2 次提交
  26. 07 2月, 2014 2 次提交
    • A
      Remove std::condition · 454882dc
      Alex Crichton 提交于
      This has been a long time coming. Conditions in rust were initially envisioned
      as being a good alternative to error code return pattern. The idea is that all
      errors are fatal-by-default, and you can opt-in to handling the error by
      registering an error handler.
      
      While sounding nice, conditions ended up having some unforseen shortcomings:
      
      * Actually handling an error has some very awkward syntax:
      
          let mut result = None;
          let mut answer = None;
          io::io_error::cond.trap(|e| { result = Some(e) }).inside(|| {
              answer = Some(some_io_operation());
          });
          match result {
              Some(err) => { /* hit an I/O error */ }
              None => {
                  let answer = answer.unwrap();
                  /* deal with the result of I/O */
              }
          }
      
        This pattern can certainly use functions like io::result, but at its core
        actually handling conditions is fairly difficult
      
      * The "zero value" of a function is often confusing. One of the main ideas
        behind using conditions was to change the signature of I/O functions. Instead
        of read_be_u32() returning a result, it returned a u32. Errors were notified
        via a condition, and if you caught the condition you understood that the "zero
        value" returned is actually a garbage value. These zero values are often
        difficult to understand, however.
      
        One case of this is the read_bytes() function. The function takes an integer
        length of the amount of bytes to read, and returns an array of that size. The
        array may actually be shorter, however, if an error occurred.
      
        Another case is fs::stat(). The theoretical "zero value" is a blank stat
        struct, but it's a little awkward to create and return a zero'd out stat
        struct on a call to stat().
      
        In general, the return value of functions that can raise error are much more
        natural when using a Result as opposed to an always-usable zero-value.
      
      * Conditions impose a necessary runtime requirement on *all* I/O. In theory I/O
        is as simple as calling read() and write(), but using conditions imposed the
        restriction that a rust local task was required if you wanted to catch errors
        with I/O. While certainly an surmountable difficulty, this was always a bit of
        a thorn in the side of conditions.
      
      * Functions raising conditions are not always clear that they are raising
        conditions. This suffers a similar problem to exceptions where you don't
        actually know whether a function raises a condition or not. The documentation
        likely explains, but if someone retroactively adds a condition to a function
        there's nothing forcing upstream users to acknowledge a new point of task
        failure.
      
      * Libaries using I/O are not guaranteed to correctly raise on conditions when an
        error occurs. In developing various I/O libraries, it's much easier to just
        return `None` from a read rather than raising an error. The silent contract of
        "don't raise on EOF" was a little difficult to understand and threw a wrench
        into the answer of the question "when do I raise a condition?"
      
      Many of these difficulties can be overcome through documentation, examples, and
      general practice. In the end, all of these difficulties added together ended up
      being too overwhelming and improving various aspects didn't end up helping that
      much.
      
      A result-based I/O error handling strategy also has shortcomings, but the
      cognitive burden is much smaller. The tooling necessary to make this strategy as
      usable as conditions were is much smaller than the tooling necessary for
      conditions.
      
      Perhaps conditions may manifest themselves as a future entity, but for now
      we're going to remove them from the standard library.
      
      Closes #9795
      Closes #8968
      454882dc
    • A
      Redesign output flags for rustc · 6e7968b1
      Alex Crichton 提交于
      This commit removes the -c, --emit-llvm, -s, --rlib, --dylib, --staticlib,
      --lib, and --bin flags from rustc, adding the following flags:
      
      * --emit=[asm,ir,bc,obj,link]
      * --crate-type=[dylib,rlib,staticlib,bin,lib]
      
      The -o option has also been redefined to be used for *all* flavors of outputs.
      This means that we no longer ignore it for libraries. The --out-dir remains the
      same as before.
      
      The new logic for files that rustc emits is as follows:
      
      1. Output types are dictated by the --emit flag. The default value is
         --emit=link, and this option can be passed multiple times and have all
         options stacked on one another.
      2. Crate types are dictated by the --crate-type flag and the #[crate_type]
         attribute. The flags can be passed many times and stack with the crate
         attribute.
      3. If the -o flag is specified, and only one output type is specified, the
         output will be emitted at this location. If more than one output type is
         specified, then the filename of -o is ignored, and all output goes in the
         directory that -o specifies. The -o option always ignores the --out-dir
         option.
      4. If the --out-dir flag is specified, all output goes in this directory.
      5. If -o and --out-dir are both not present, all output goes in the current
         directory of the process.
      6. When multiple output types are specified, the filestem of all output is the
         same as the name of the CrateId (derived from a crate attribute or from the
         filestem of the crate file).
      
      Closes #7791
      Closes #11056
      Closes #11667
      6e7968b1
  27. 05 2月, 2014 1 次提交
    • A
      Run all target crate tests on the windows/try bots · 50bdeb9a
      Alex Crichton 提交于
      Previously, the check-fast and check-lite test suites weren't picking up all
      target crates, rather just std/extra. In order to ensure that all of our crates
      work on windows, I've modified these rules to build the test suites for all
      TARGET_CRATES members. Note that this still excludes rustc/syntax/rustdoc.
      50bdeb9a
  28. 03 2月, 2014 1 次提交
  29. 02 2月, 2014 1 次提交
  30. 29 1月, 2014 1 次提交
    • A
      Fix android test deps · 55280598
      Alex Crichton 提交于
      This changes android testing to upload *all* target crates rather than just a
      select subset. This should unblock #11867 which is introducing a libglob
      dependency in testing.
      55280598