From c460d38363e315a3e993649215aa6846ac2b70e3 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 9 Jul 2014 07:44:49 -0700 Subject: [PATCH 1/2] etc: Fix install script for rpath removal This adds detection of the relevant LD_LIBRARY_PATH-like environment variable and appropriately sets it when testing whether binaries can run or not. Additionally, the installation prints a recommended value if one is necessary. --- src/etc/install.sh | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/etc/install.sh b/src/etc/install.sh index 2ed7a9dd6c2..a89b616edf0 100644 --- a/src/etc/install.sh +++ b/src/etc/install.sh @@ -285,6 +285,19 @@ then CFG_LIBDIR_RELATIVE=bin fi +if [ "$CFG_OSTYPE" = "pc-mingw32" ] || [ "$CFG_OSTYPE" = "w64-mingw32" ] +then + CFG_LD_PATH_VAR=PATH + CFG_OLD_LD_PATH_VAR=$PATH +elif [ "$CFG_OSTYPE" = "Darwin" ] +then + CFG_LD_PATH_VAR=DYLD_LIBRARY_PATH + CFG_OLD_LD_PATH_VAR=$DYLD_LIBRARY_PATH +else + CFG_LD_PATH_VAR=LD_LIBRARY_PATH + CFG_OLD_LD_PATH_VAR=$LD_LIBRARY_PATH +fi + flag uninstall "only uninstall from the installation prefix" opt verify 1 "verify that the installed binaries run correctly" valopt prefix "/usr/local" "set installation prefix" @@ -312,11 +325,13 @@ then if [ -z "${CFG_UNINSTALL}" ] then msg "verifying platform can run binaries" + export $CFG_LD_PATH_VAR="${CFG_SRC_DIR}/lib":$CFG_OLD_LD_PATH_VAR "${CFG_SRC_DIR}/bin/rustc" --version > /dev/null if [ $? -ne 0 ] then err "can't execute rustc binary on this platform" fi + export $CFG_LD_PATH_VAR=$CFG_OLD_LD_PATH_VAR fi fi @@ -452,17 +467,31 @@ while read p; do done < "${CFG_SRC_DIR}/${CFG_LIBDIR_RELATIVE}/rustlib/manifest.in" # Sanity check: can we run the installed binaries? +# +# As with the verification above, make sure the right LD_LIBRARY_PATH-equivalent +# is in place. Try first without this variable, and if that fails try again with +# the variable. If the second time tries, print a hopefully helpful message to +# add something to the appropriate environment variable. if [ -z "${CFG_DISABLE_VERIFY}" ] then msg "verifying installed binaries are executable" - "${CFG_PREFIX}/bin/rustc" --version > /dev/null + "${CFG_PREFIX}/bin/rustc" --version 2> /dev/null 1> /dev/null if [ $? -ne 0 ] then - ERR="can't execute installed rustc binary. " - ERR="${ERR}installation may be broken. " - ERR="${ERR}if this is expected then rerun install.sh with \`--disable-verify\` " - ERR="${ERR}or \`make install\` with \`--disable-verify-install\`" - err "${ERR}" + export $CFG_LD_PATH_VAR="${CFG_PREFIX}/lib":$CFG_OLD_LD_PATH_VAR + "${CFG_PREFIX}/bin/rustc" --version > /dev/null + if [ $? -ne 0 ] + then + ERR="can't execute installed rustc binary. " + ERR="${ERR}installation may be broken. " + ERR="${ERR}if this is expected then rerun install.sh with \`--disable-verify\` " + ERR="${ERR}or \`make install\` with \`--disable-verify-install\`" + err "${ERR}" + else + echo + echo " please ensure '${CFG_PREFIX}/lib' is added to ${CFG_LD_PATH_VAR}" + echo + fi fi fi From 6f8b6c8c3650e8d73be07f119b6a435cad6db438 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 9 Jul 2014 14:44:40 -0700 Subject: [PATCH 2/2] syntax: De-doc comment to fix nightlies This reverts the promotion from line-comment to doc-comment in 4989a56 to fix the compiler-docs target. Closes #15553 --- src/libsyntax/ast.rs | 100 +++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index ebfc45d22ce..778f77ac7a8 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -561,56 +561,56 @@ pub enum TokenTree { TTNonterminal(Span, Ident) } -/// Matchers are nodes defined-by and recognized-by the main rust parser and -/// language, but they're only ever found inside syntax-extension invocations; -/// indeed, the only thing that ever _activates_ the rules in the rust parser -/// for parsing a matcher is a matcher looking for the 'matchers' nonterminal -/// itself. Matchers represent a small sub-language for pattern-matching -/// token-trees, and are thus primarily used by the macro-defining extension -/// itself. -/// -/// MatchTok -/// -------- -/// -/// A matcher that matches a single token, denoted by the token itself. So -/// long as there's no $ involved. -/// -/// -/// MatchSeq -/// -------- -/// -/// A matcher that matches a sequence of sub-matchers, denoted various -/// possible ways: -/// -/// $(M)* zero or more Ms -/// $(M)+ one or more Ms -/// $(M),+ one or more comma-separated Ms -/// $(A B C);* zero or more semi-separated 'A B C' seqs -/// -/// -/// MatchNonterminal -/// ----------------- -/// -/// A matcher that matches one of a few interesting named rust -/// nonterminals, such as types, expressions, items, or raw token-trees. A -/// black-box matcher on expr, for example, binds an expr to a given ident, -/// and that ident can re-occur as an interpolation in the RHS of a -/// macro-by-example rule. For example: -/// -/// $foo:expr => 1 + $foo // interpolate an expr -/// $foo:tt => $foo // interpolate a token-tree -/// $foo:tt => bar! $foo // only other valid interpolation -/// // is in arg position for another -/// // macro -/// -/// As a final, horrifying aside, note that macro-by-example's input is -/// also matched by one of these matchers. Holy self-referential! It is matched -/// by a MatchSeq, specifically this one: -/// -/// $( $lhs:matchers => $rhs:tt );+ -/// -/// If you understand that, you have closed the loop and understand the whole -/// macro system. Congratulations. +// Matchers are nodes defined-by and recognized-by the main rust parser and +// language, but they're only ever found inside syntax-extension invocations; +// indeed, the only thing that ever _activates_ the rules in the rust parser +// for parsing a matcher is a matcher looking for the 'matchers' nonterminal +// itself. Matchers represent a small sub-language for pattern-matching +// token-trees, and are thus primarily used by the macro-defining extension +// itself. +// +// MatchTok +// -------- +// +// A matcher that matches a single token, denoted by the token itself. So +// long as there's no $ involved. +// +// +// MatchSeq +// -------- +// +// A matcher that matches a sequence of sub-matchers, denoted various +// possible ways: +// +// $(M)* zero or more Ms +// $(M)+ one or more Ms +// $(M),+ one or more comma-separated Ms +// $(A B C);* zero or more semi-separated 'A B C' seqs +// +// +// MatchNonterminal +// ----------------- +// +// A matcher that matches one of a few interesting named rust +// nonterminals, such as types, expressions, items, or raw token-trees. A +// black-box matcher on expr, for example, binds an expr to a given ident, +// and that ident can re-occur as an interpolation in the RHS of a +// macro-by-example rule. For example: +// +// $foo:expr => 1 + $foo // interpolate an expr +// $foo:tt => $foo // interpolate a token-tree +// $foo:tt => bar! $foo // only other valid interpolation +// // is in arg position for another +// // macro +// +// As a final, horrifying aside, note that macro-by-example's input is +// also matched by one of these matchers. Holy self-referential! It is matched +// by a MatchSeq, specifically this one: +// +// $( $lhs:matchers => $rhs:tt );+ +// +// If you understand that, you have closed the loop and understand the whole +// macro system. Congratulations. pub type Matcher = Spanned; #[deriving(Clone, PartialEq, Eq, Encodable, Decodable, Hash)]