Skip to content

Commit d9506db

Browse files
committed
---
yaml --- r: 106395 b: refs/heads/auto c: d878df0 h: refs/heads/master i: 106393: 1764ef1 106391: e9b306d v: v3
1 parent 6dfa9a1 commit d9506db

File tree

383 files changed

+2498
-6442
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

383 files changed

+2498
-6442
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: 63b233c25d45f4dc792fa864ddf710ce9ddd0224
16+
refs/heads/auto: d878df05ad589d1ae3f4e087bbc8abba1b459703
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*.h rust
66
*.rs rust
77
src/etc/pkg/rust-logo.ico binary
8+
src/etc/pkg/rust-logo.png binary
89
src/rt/msvc/* -whitespace
910
src/rt/vg/* -whitespace
1011
src/rt/jemalloc/**/* -whitespace

branches/auto/configure

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ need_ok() {
2727
}
2828

2929
need_cmd() {
30-
if which $1 >/dev/null 2>&1
30+
if command -v $1 >/dev/null 2>&1
3131
then msg "found $1"
3232
else err "need $1"
3333
fi
@@ -83,7 +83,7 @@ probe() {
8383
local T
8484
for P
8585
do
86-
T=$(which $P 2>&1)
86+
T=$(command -v $P 2>&1)
8787
if [ $? -eq 0 ]
8888
then
8989
VER0=$($P --version 2>/dev/null | head -1 \
@@ -384,6 +384,7 @@ opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX-
384384
opt inject-std-version 1 "inject the current compiler version of libstd into programs"
385385
opt rpath 1 "build rpaths into rustc itself"
386386
opt nightly 0 "build nightly packages"
387+
opt verify-install 1 "verify installed binaries work"
387388
valopt prefix "/usr/local" "set installation prefix"
388389
valopt local-rust-root "/usr/local" "set prefix for local rust binary"
389390
valopt llvm-root "" "set LLVM root"

branches/auto/mk/dist.mk

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,27 @@ dist-prepare-osx-$(1): PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD)
160160
dist-prepare-osx-$(1): PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD)
161161
dist-prepare-osx-$(1): prepare-base-osx-$(1)
162162

163-
dist/$(PKG_NAME)-$(1).pkg: $(S)src/etc/pkg/Distribution.xml LICENSE.txt dist-prepare-osx-$(1)
163+
dist/$(PKG_NAME)-$(1).pkg: $(S)src/etc/pkg/Distribution.xml LICENSE.txt \
164+
dist-prepare-osx-$(1) \
165+
tmp/dist/pkgres-$(1)/LICENSE.txt \
166+
tmp/dist/pkgres-$(1)/welcome.rtf \
167+
tmp/dist/pkgres-$(1)/rust-logo.png
164168
@$$(call E, making OS X pkg)
165169
$(Q)pkgbuild --identifier org.rust-lang.rust --root tmp/dist/pkgroot-$(1) rust.pkg
166-
$(Q)productbuild --distribution $(S)src/etc/pkg/Distribution.xml --resources . dist/$(PKG_NAME)-$(1).pkg
170+
$(Q)productbuild --distribution $(S)src/etc/pkg/Distribution.xml \
171+
--resources tmp/dist/pkgres-$(1) dist/$(PKG_NAME)-$(1).pkg
167172
$(Q)rm -rf tmp rust.pkg
168173

174+
tmp/dist/pkgres-$(1)/LICENSE.txt: $(S)/LICENSE.txt
175+
@$$(call E,pkg resource LICENSE.txt)
176+
$(Q)mkdir -p $$(@D)
177+
$(Q)cp $$< $$@
178+
179+
tmp/dist/pkgres-$(1)/%: $(S)src/etc/pkg/%
180+
@$$(call E,pkg resource $$*)
181+
$(Q)mkdir -p $$(@D)
182+
$(Q)cp -r $$< $$@
183+
169184
endef
170185

171186
$(foreach host,$(CFG_HOST),$(eval $(call DEF_OSX_PKG,$(host))))

branches/auto/mk/docs.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ ifeq ($(CFG_LLNEXTGEN),)
232232
else
233233
.PHONY: verify-grammar
234234

235-
doc/rust.g: rust.md $(S)src/etc/extract_grammar.py
235+
doc/rust.g: $(D)/rust.md $(S)src/etc/extract_grammar.py
236236
@$(call E, extract_grammar: $@)
237237
$(Q)$(CFG_PYTHON) $(S)src/etc/extract_grammar.py $< >$@
238238

branches/auto/mk/install.mk

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,21 @@
88
# option. This file may not be copied, modified, or distributed
99
# except according to those terms.
1010

11+
ifdef CFG_DISABLE_VERIFY_INSTALL
12+
MAYBE_DISABLE_VERIFY=--disable-verify
13+
else
14+
MAYBE_DISABLE_VERIFY=
15+
endif
1116

1217
install: dist-install-dir-$(CFG_BUILD)
13-
$(Q)sh tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(CFG_PREFIX)" --libdir="$(CFG_LIBDIR)" --mandir="$(CFG_MANDIR)"
18+
$(Q)sh tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)"
1419
# Remove tmp files while we can because they may have been created under sudo
1520
$(Q)rm -R tmp/dist/$(PKG_NAME)-$(CFG_BUILD)
1621

1722
uninstall: dist-install-dir-$(CFG_BUILD)
18-
$(Q)sh tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(CFG_PREFIX)" --libdir="$(CFG_LIBDIR)" --mandir="$(CFG_MANDIR)"
23+
$(Q)sh tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
24+
# Remove tmp files while we can because they may have been created under sudo
25+
$(Q)rm -R tmp/dist/$(PKG_NAME)-$(CFG_BUILD)
1926

2027

2128
######################################################################

branches/auto/src/compiletest/compiletest.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
#[crate_type = "bin"];
12-
#[feature(phase)];
11+
#![crate_type = "bin"]
12+
#![feature(phase)]
1313

14-
#[allow(non_camel_case_types)];
15-
#[deny(warnings)];
14+
#![allow(non_camel_case_types)]
15+
#![deny(warnings)]
1616

1717
extern crate test;
1818
extern crate getopts;

branches/auto/src/doc/rust.md

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ Some productions are defined by exclusion of particular Unicode characters:
153153
~~~~ {.notrust .ebnf .gram}
154154
comment : block_comment | line_comment ;
155155
block_comment : "/*" block_comment_body * '*' + '/' ;
156-
block_comment_body : (block_comment | character) * ;
156+
block_comment_body : [block_comment | character] * ;
157157
line_comment : "//" non_eol * ;
158158
~~~~
159159

@@ -205,6 +205,7 @@ The keywords are the following strings:
205205
~~~~ {.notrust .keyword}
206206
as
207207
break
208+
crate
208209
do
209210
else enum extern
210211
false fn for
@@ -496,16 +497,16 @@ All of the above extensions are expressions with values.
496497
## Macros
497498

498499
~~~~ {.notrust .ebnf .gram}
499-
expr_macro_rules : "macro_rules" '!' ident '(' macro_rule * ')'
500-
macro_rule : '(' matcher * ')' "=>" '(' transcriber * ')' ';'
500+
expr_macro_rules : "macro_rules" '!' ident '(' macro_rule * ')' ;
501+
macro_rule : '(' matcher * ')' "=>" '(' transcriber * ')' ';' ;
501502
matcher : '(' matcher * ')' | '[' matcher * ']'
502503
| '{' matcher * '}' | '$' ident ':' ident
503504
| '$' '(' matcher * ')' sep_token? [ '*' | '+' ]
504-
| non_special_token
505+
| non_special_token ;
505506
transcriber : '(' transcriber * ')' | '[' transcriber * ']'
506507
| '{' transcriber * '}' | '$' ident
507508
| '$' '(' transcriber * ')' sep_token? [ '*' | '+' ]
508-
| non_special_token
509+
| non_special_token ;
509510
~~~~
510511

511512
User-defined syntax extensions are called "macros",
@@ -802,7 +803,7 @@ use_decl : "pub" ? "use" ident [ '=' path
802803
803804
path_glob : ident [ "::" path_glob ] ?
804805
| '*'
805-
| '{' ident [ ',' ident ] * '}'
806+
| '{' ident [ ',' ident ] * '}' ;
806807
~~~~
807808

808809
A _use declaration_ creates one or more local name bindings synonymous
@@ -1457,7 +1458,7 @@ impl Seq<bool> for u32 {
14571458
### External blocks
14581459

14591460
~~~~ {.notrust .ebnf .gram}
1460-
extern_block_item : "extern" '{' extern_block '} ;
1461+
extern_block_item : "extern" '{' extern_block '}' ;
14611462
extern_block : [ foreign_fn ] * ;
14621463
~~~~
14631464

@@ -1683,7 +1684,7 @@ import public items from their destination, not private items.
16831684

16841685
~~~~ {.notrust .ebnf .gram}
16851686
attribute : '#' '[' attr_list ']' ;
1686-
attr_list : attr [ ',' attr_list ]*
1687+
attr_list : attr [ ',' attr_list ]* ;
16871688
attr : ident [ '=' literal
16881689
| '(' attr_list ')' ] ? ;
16891690
~~~~
@@ -2331,7 +2332,7 @@ struct_expr : expr_path '{' ident ':' expr
23312332
[ ".." expr ] '}' |
23322333
expr_path '(' expr
23332334
[ ',' expr ] * ')' |
2334-
expr_path
2335+
expr_path ;
23352336
~~~~
23362337

23372338
There are several forms of structure expressions.
@@ -2382,7 +2383,7 @@ Point3d {y: 0, z: 10, .. base};
23822383
~~~~ {.notrust .ebnf .gram}
23832384
block_expr : '{' [ view_item ] *
23842385
[ stmt ';' | item ] *
2385-
[ expr ] '}'
2386+
[ expr ] '}' ;
23862387
~~~~
23872388

23882389
A _block expression_ is similar to a module in terms of the declarations that
@@ -2409,7 +2410,7 @@ or dynamically dispatching if the left-hand-side expression is an indirect [obje
24092410
### Field expressions
24102411

24112412
~~~~ {.notrust .ebnf .gram}
2412-
field_expr : expr '.' ident
2413+
field_expr : expr '.' ident ;
24132414
~~~~
24142415

24152416
A _field expression_ consists of an expression followed by a single dot and an identifier,
@@ -2431,9 +2432,9 @@ it is automatically dereferenced to make the field access possible.
24312432
### Vector expressions
24322433

24332434
~~~~ {.notrust .ebnf .gram}
2434-
vec_expr : '[' "mut" ? vec_elems? ']'
2435+
vec_expr : '[' "mut" ? vec_elems? ']' ;
24352436
2436-
vec_elems : [expr [',' expr]*] | [expr ',' ".." expr]
2437+
vec_elems : [expr [',' expr]*] | [expr ',' ".." expr] ;
24372438
~~~~
24382439

24392440
A [_vector_](#vector-types) _expression_ is written by enclosing zero or
@@ -2453,7 +2454,7 @@ as a [literal](#literals) or a [static item](#static-items).
24532454
### Index expressions
24542455

24552456
~~~~ {.notrust .ebnf .gram}
2456-
idx_expr : expr '[' expr ']'
2457+
idx_expr : expr '[' expr ']' ;
24572458
~~~~
24582459

24592460
[Vector](#vector-types)-typed expressions can be indexed by writing a
@@ -2875,7 +2876,7 @@ then any `else` block is executed.
28752876
~~~~ {.notrust .ebnf .gram}
28762877
match_expr : "match" expr '{' match_arm [ '|' match_arm ] * '}' ;
28772878
2878-
match_arm : match_pat '=>' [ expr "," | '{' block '}' ] ;
2879+
match_arm : match_pat "=>" [ expr "," | '{' block '}' ] ;
28792880
28802881
match_pat : pat [ ".." pat ] ? [ "if" expr ] ;
28812882
~~~~

branches/auto/src/etc/install.sh

Lines changed: 68 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,16 @@ validate_opt () {
189189
done
190190
}
191191

192+
absolutify() {
193+
FILE_PATH="${1}"
194+
FILE_PATH_DIRNAME="$(dirname ${FILE_PATH})"
195+
FILE_PATH_BASENAME="$(basename ${FILE_PATH})"
196+
FILE_ABS_PATH="$(cd ${FILE_PATH_DIRNAME} && pwd)"
197+
FILE_PATH="${FILE_ABS_PATH}/${FILE_PATH_BASENAME}"
198+
# This is the return value
199+
ABSOLUTIFIED="${FILE_PATH}"
200+
}
201+
192202
CFG_SRC_DIR="$(cd $(dirname $0) && pwd)/"
193203
CFG_SELF="$0"
194204
CFG_ARGS="$@"
@@ -212,6 +222,7 @@ BOOL_OPTIONS=""
212222
VAL_OPTIONS=""
213223

214224
flag uninstall "only uninstall from the installation prefix"
225+
opt verify 1 "verify that the installed binaries run correctly"
215226
valopt prefix "/usr/local" "set installation prefix"
216227
# NB This isn't quite the same definition as in `configure`.
217228
# just using 'lib' instead of CFG_LIBDIR_RELATIVE
@@ -230,28 +241,50 @@ validate_opt
230241

231242
# OK, let's get installing ...
232243

244+
# Sanity check: can we run the binaries?
245+
if [ -z "${CFG_DISABLE_VERIFY}" ]
246+
then
247+
# Don't do this if uninstalling. Failure here won't help in any way.
248+
if [ -z "${CFG_UNINSTALL}" ]
249+
then
250+
msg "verifying platform can run binaries"
251+
"${CFG_SRC_DIR}/bin/rustc" --version > /dev/null
252+
if [ $? -ne 0 ]
253+
then
254+
err "can't execute rustc binary on this platform"
255+
fi
256+
fi
257+
fi
258+
233259
# Sanity check: can we can write to the destination?
260+
msg "verifying destination is writable"
234261
umask 022 && mkdir -p "${CFG_LIBDIR}"
235-
need_ok "can't write to destination. consider 'sudo'."
236-
touch "${CFG_LIBDIR}/rust-install-probe" 2> /dev/null
262+
need_ok "can't write to destination. consider \`sudo\`."
263+
touch "${CFG_LIBDIR}/rust-install-probe" > /dev/null
237264
if [ $? -ne 0 ]
238265
then
239-
err "can't write to destination. consider 'sudo'."
266+
err "can't write to destination. consider \`sudo\`."
240267
fi
241-
rm "${CFG_LIBDIR}/rust-install-probe"
268+
rm -f "${CFG_LIBDIR}/rust-install-probe"
242269
need_ok "failed to remove install probe"
243270

244271
# Sanity check: don't install to the directory containing the installer.
245272
# That would surely cause chaos.
273+
msg "verifying destination is not the same as source"
246274
INSTALLER_DIR="$(cd $(dirname $0) && pwd)"
247275
PREFIX_DIR="$(cd ${CFG_PREFIX} && pwd)"
248276
if [ "${INSTALLER_DIR}" = "${PREFIX_DIR}" ]
249277
then
250278
err "can't install to same directory as installer"
251279
fi
252280

281+
# Using an absolute path to libdir in a few places so that the status
282+
# messages are consistently using absolute paths.
283+
absolutify "${CFG_LIBDIR}"
284+
ABS_LIBDIR="${ABSOLUTIFIED}"
285+
253286
# The file name of the manifest we're going to create during install
254-
INSTALLED_MANIFEST="${CFG_LIBDIR}/rustlib/manifest"
287+
INSTALLED_MANIFEST="${ABS_LIBDIR}/rustlib/manifest"
255288

256289
# First, uninstall from the installation prefix.
257290
# Errors are warnings - try to rm everything in the manifest even if some fail.
@@ -263,7 +296,7 @@ then
263296
msg "removing $p"
264297
if [ -f "$p" ]
265298
then
266-
rm "$p"
299+
rm -f "$p"
267300
if [ $? -ne 0 ]
268301
then
269302
warn "failed to remove $p"
@@ -273,8 +306,16 @@ then
273306
fi
274307
done < "${INSTALLED_MANIFEST}"
275308

309+
# If we fail to remove rustlib below, then the installed manifest will
310+
# still be full; the installed manifest needs to be empty before install.
311+
msg "removing ${INSTALLED_MANIFEST}"
312+
rm -f "${INSTALLED_MANIFEST}"
313+
# For the above reason, this is a hard error
314+
need_ok "failed to remove installed manifest"
315+
276316
# Remove 'rustlib' directory
277-
rm -r "${CFG_LIBDIR}/rustlib"
317+
msg "removing ${ABS_LIBDIR}/rustlib"
318+
rm -Rf "${ABS_LIBDIR}/rustlib"
278319
if [ $? -ne 0 ]
279320
then
280321
warn "failed to remove rustlib"
@@ -298,7 +339,9 @@ fi
298339

299340
# Create the installed manifest, which we will fill in with absolute file paths
300341
mkdir -p "${CFG_LIBDIR}/rustlib"
342+
need_ok "failed to create rustlib"
301343
touch "${INSTALLED_MANIFEST}"
344+
need_ok "failed to create installed manifest"
302345

303346
# Now install, iterate through the new manifest and copy files
304347
while read p; do
@@ -324,10 +367,8 @@ while read p; do
324367

325368
# Make the path absolute so we can uninstall it later without
326369
# starting from the installation cwd
327-
FILE_INSTALL_PATH_DIRNAME="$(dirname ${FILE_INSTALL_PATH})"
328-
FILE_INSTALL_PATH_BASENAME="$(basename ${FILE_INSTALL_PATH})"
329-
FILE_INSTALL_ABS_PATH="$(cd ${FILE_INSTALL_PATH_DIRNAME} && pwd)"
330-
FILE_INSTALL_PATH="${FILE_INSTALL_ABS_PATH}/${FILE_INSTALL_PATH_BASENAME}"
370+
absolutify "${FILE_INSTALL_PATH}"
371+
FILE_INSTALL_PATH="${ABSOLUTIFIED}"
331372

332373
# Install the file
333374
msg "${FILE_INSTALL_PATH}"
@@ -346,6 +387,22 @@ while read p; do
346387
# The manifest lists all files to install
347388
done < "${CFG_SRC_DIR}/lib/rustlib/manifest.in"
348389

390+
# Sanity check: can we run the installed binaries?
391+
if [ -z "${CFG_DISABLE_VERIFY}" ]
392+
then
393+
msg "verifying installed binaries are executable"
394+
"${CFG_PREFIX}/bin/rustc" --version > /dev/null
395+
if [ $? -ne 0 ]
396+
then
397+
ERR="can't execute installed rustc binary. "
398+
ERR="${ERR}installation may be broken. "
399+
ERR="${ERR}if this is expected then rerun install.sh with \`--disable-verify\` "
400+
ERR="${ERR}or \`make install\` with \`--disable-verify-install\`"
401+
err "${ERR}"
402+
fi
403+
fi
404+
405+
349406
echo
350407
echo " Rust is ready to roll."
351408
echo

0 commit comments

Comments
 (0)