Skip to content

Commit 07176e2

Browse files
committed
---
yaml --- r: 123731 b: refs/heads/try c: c460d38 h: refs/heads/master i: 123729: e9b827b 123727: 2603e72 v: v3
1 parent 1720afd commit 07176e2

File tree

33 files changed

+11742
-8134
lines changed

33 files changed

+11742
-8134
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: da4e4e4e0a7778a85748aa4a303b13f603e96b4b
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 8ddd286ea4ba4384a0dc9eae393ed515460a986e
5-
refs/heads/try: 66e1f11ef482d90f2ea3bd284b07cd825315fadd
5+
refs/heads/try: c460d38363e315a3e993649215aa6846ac2b70e3
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/mk/crates.mk

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,17 @@
5151

5252
TARGET_CRATES := libc std green rustuv native flate arena glob term semver \
5353
uuid serialize sync getopts collections num test time rand \
54-
url log regex graphviz core rlibc alloc debug rustrt \
55-
unicode
54+
url log regex graphviz core rlibc alloc debug rustrt
5655
HOST_CRATES := syntax rustc rustdoc fourcc hexfloat regex_macros fmt_macros
5756
CRATES := $(TARGET_CRATES) $(HOST_CRATES)
5857
TOOLS := compiletest rustdoc rustc
5958

6059
DEPS_core :=
6160
DEPS_rlibc :=
62-
DEPS_unicode := core
6361
DEPS_alloc := core libc native:jemalloc
6462
DEPS_debug := std
6563
DEPS_rustrt := alloc core libc collections native:rustrt_native
66-
DEPS_std := core libc rand alloc collections rustrt sync unicode \
64+
DEPS_std := core libc rand alloc collections rustrt sync \
6765
native:rust_builtin native:backtrace
6866
DEPS_graphviz := std
6967
DEPS_green := std native:context_switch
@@ -84,7 +82,7 @@ DEPS_semver := std
8482
DEPS_uuid := std serialize
8583
DEPS_sync := core alloc rustrt collections
8684
DEPS_getopts := std
87-
DEPS_collections := core alloc unicode
85+
DEPS_collections := core alloc
8886
DEPS_fourcc := rustc syntax std
8987
DEPS_hexfloat := rustc syntax std
9088
DEPS_num := std
@@ -110,7 +108,6 @@ ONLY_RLIB_rlibc := 1
110108
ONLY_RLIB_alloc := 1
111109
ONLY_RLIB_rand := 1
112110
ONLY_RLIB_collections := 1
113-
ONLY_RLIB_unicode := 1
114111

115112
################################################################################
116113
# You should not need to edit below this line

branches/try/mk/tests.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515

1616
# The names of crates that must be tested
1717

18-
# libcore/libunicode tests are in a separate crate
18+
# libcore tests are in a separate crate
1919
DEPS_coretest :=
2020
$(eval $(call RUST_CRATE,coretest))
2121

22-
TEST_TARGET_CRATES = $(filter-out core unicode,$(TARGET_CRATES)) coretest
22+
TEST_TARGET_CRATES = $(filter-out core,$(TARGET_CRATES)) coretest
2323
TEST_DOC_CRATES = $(DOC_CRATES)
2424
TEST_HOST_CRATES = $(HOST_CRATES)
2525
TEST_CRATES = $(TEST_TARGET_CRATES) $(TEST_HOST_CRATES)

branches/try/src/etc/install.sh

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,19 @@ then
285285
CFG_LIBDIR_RELATIVE=bin
286286
fi
287287

288+
if [ "$CFG_OSTYPE" = "pc-mingw32" ] || [ "$CFG_OSTYPE" = "w64-mingw32" ]
289+
then
290+
CFG_LD_PATH_VAR=PATH
291+
CFG_OLD_LD_PATH_VAR=$PATH
292+
elif [ "$CFG_OSTYPE" = "Darwin" ]
293+
then
294+
CFG_LD_PATH_VAR=DYLD_LIBRARY_PATH
295+
CFG_OLD_LD_PATH_VAR=$DYLD_LIBRARY_PATH
296+
else
297+
CFG_LD_PATH_VAR=LD_LIBRARY_PATH
298+
CFG_OLD_LD_PATH_VAR=$LD_LIBRARY_PATH
299+
fi
300+
288301
flag uninstall "only uninstall from the installation prefix"
289302
opt verify 1 "verify that the installed binaries run correctly"
290303
valopt prefix "/usr/local" "set installation prefix"
@@ -312,11 +325,13 @@ then
312325
if [ -z "${CFG_UNINSTALL}" ]
313326
then
314327
msg "verifying platform can run binaries"
328+
export $CFG_LD_PATH_VAR="${CFG_SRC_DIR}/lib":$CFG_OLD_LD_PATH_VAR
315329
"${CFG_SRC_DIR}/bin/rustc" --version > /dev/null
316330
if [ $? -ne 0 ]
317331
then
318332
err "can't execute rustc binary on this platform"
319333
fi
334+
export $CFG_LD_PATH_VAR=$CFG_OLD_LD_PATH_VAR
320335
fi
321336
fi
322337

@@ -452,17 +467,31 @@ while read p; do
452467
done < "${CFG_SRC_DIR}/${CFG_LIBDIR_RELATIVE}/rustlib/manifest.in"
453468

454469
# Sanity check: can we run the installed binaries?
470+
#
471+
# As with the verification above, make sure the right LD_LIBRARY_PATH-equivalent
472+
# is in place. Try first without this variable, and if that fails try again with
473+
# the variable. If the second time tries, print a hopefully helpful message to
474+
# add something to the appropriate environment variable.
455475
if [ -z "${CFG_DISABLE_VERIFY}" ]
456476
then
457477
msg "verifying installed binaries are executable"
458-
"${CFG_PREFIX}/bin/rustc" --version > /dev/null
478+
"${CFG_PREFIX}/bin/rustc" --version 2> /dev/null 1> /dev/null
459479
if [ $? -ne 0 ]
460480
then
461-
ERR="can't execute installed rustc binary. "
462-
ERR="${ERR}installation may be broken. "
463-
ERR="${ERR}if this is expected then rerun install.sh with \`--disable-verify\` "
464-
ERR="${ERR}or \`make install\` with \`--disable-verify-install\`"
465-
err "${ERR}"
481+
export $CFG_LD_PATH_VAR="${CFG_PREFIX}/lib":$CFG_OLD_LD_PATH_VAR
482+
"${CFG_PREFIX}/bin/rustc" --version > /dev/null
483+
if [ $? -ne 0 ]
484+
then
485+
ERR="can't execute installed rustc binary. "
486+
ERR="${ERR}installation may be broken. "
487+
ERR="${ERR}if this is expected then rerun install.sh with \`--disable-verify\` "
488+
ERR="${ERR}or \`make install\` with \`--disable-verify-install\`"
489+
err "${ERR}"
490+
else
491+
echo
492+
echo " please ensure '${CFG_PREFIX}/lib' is added to ${CFG_LD_PATH_VAR}"
493+
echo
494+
fi
466495
fi
467496
fi
468497

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
#!/usr/bin/env python2
2+
3+
# Copyright 2014 The Rust Project Developers. See the COPYRIGHT
4+
# file at the top-level directory of this distribution and at
5+
# http://rust-lang.org/COPYRIGHT.
6+
#
7+
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
8+
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
9+
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
10+
# option. This file may not be copied, modified, or distributed
11+
# except according to those terms.
12+
13+
from __future__ import absolute_import, division, print_function
14+
import argparse
15+
from collections import defaultdict
16+
import csv
17+
import datetime
18+
import urllib2
19+
20+
BASE_URL = 'http://www.unicode.org/Public/6.3.0/ucd/'
21+
DATA = 'UnicodeData.txt'
22+
SCRIPTS = 'Scripts.txt'
23+
24+
# Mapping taken from Table 12 from:
25+
# http://www.unicode.org/reports/tr44/#General_Category_Values
26+
expanded_categories = {
27+
'Lu': ['LC', 'L'], 'Ll': ['LC', 'L'], 'Lt': ['LC', 'L'],
28+
'Lm': ['L'], 'Lo': ['L'],
29+
'Mn': ['M'], 'Mc': ['M'], 'Me': ['M'],
30+
'Nd': ['N'], 'Nl': ['N'], 'No': ['No'],
31+
'Pc': ['P'], 'Pd': ['P'], 'Ps': ['P'], 'Pe': ['P'],
32+
'Pi': ['P'], 'Pf': ['P'], 'Po': ['P'],
33+
'Sm': ['S'], 'Sc': ['S'], 'Sk': ['S'], 'So': ['S'],
34+
'Zs': ['Z'], 'Zl': ['Z'], 'Zp': ['Z'],
35+
'Cc': ['C'], 'Cf': ['C'], 'Cs': ['C'], 'Co': ['C'], 'Cn': ['C'],
36+
}
37+
38+
39+
def as_4byte_uni(n):
40+
s = hex(n)[2:]
41+
return '\\U%s%s' % ('0' * (8 - len(s)), s)
42+
43+
44+
def expand_cat(c):
45+
return expanded_categories.get(c, []) + [c]
46+
47+
48+
def is_valid_unicode(n):
49+
return 0 <= n <= 0xD7FF or 0xE000 <= n <= 0x10FFFF
50+
51+
52+
def read_cats(f):
53+
assigned = defaultdict(list)
54+
for row in csv.reader(f, delimiter=';'):
55+
(hex, cats) = (int(row[0], 16), expand_cat(row[2]))
56+
if not is_valid_unicode(hex):
57+
continue
58+
for cat in cats:
59+
assigned[cat].append(hex)
60+
return assigned
61+
62+
63+
def read_scripts(f):
64+
assigned = defaultdict(list)
65+
for line in f:
66+
line = line.strip()
67+
if not line or line.startswith('#'):
68+
continue
69+
hexes, name = map(str.strip, line.split(';'))[:2]
70+
name = name[:name.index('#')].strip()
71+
if '..' not in hexes:
72+
hex = int(hexes, 16)
73+
if is_valid_unicode(hex):
74+
assigned[name].append(hex)
75+
else:
76+
hex1, hex2 = map(lambda s: int(s, 16), hexes.split('..'))
77+
for hex in xrange(hex1, hex2 + 1):
78+
if is_valid_unicode(hex):
79+
assigned[name].append(hex)
80+
return assigned
81+
82+
83+
def group(letters):
84+
letters = sorted(set(letters))
85+
grouped = []
86+
cur_start = letters.pop(0)
87+
cur_end = cur_start
88+
for letter in letters:
89+
assert letter > cur_end, \
90+
'cur_end: %s, letter: %s' % (hex(cur_end), hex(letter))
91+
92+
if letter == cur_end + 1:
93+
cur_end = letter
94+
else:
95+
grouped.append((cur_start, cur_end))
96+
cur_start, cur_end = letter, letter
97+
grouped.append((cur_start, cur_end))
98+
return grouped
99+
100+
101+
def ranges_to_rust(rs):
102+
rs = ("('%s', '%s')" % (as_4byte_uni(s), as_4byte_uni(e)) for s, e in rs)
103+
return ',\n '.join(rs)
104+
105+
106+
def groups_to_rust(groups):
107+
rust_groups = []
108+
for group_name in sorted(groups):
109+
rust_groups.append('("%s", &[\n %s\n ]),'
110+
% (group_name, ranges_to_rust(groups[group_name])))
111+
return '\n'.join(rust_groups)
112+
113+
114+
if __name__ == '__main__':
115+
parser = argparse.ArgumentParser(
116+
description='Generate Unicode character class tables.')
117+
aa = parser.add_argument
118+
aa('--local', action='store_true',
119+
help='When set, Scripts.txt and UnicodeData.txt will be read from '
120+
'the CWD.')
121+
aa('--base-url', type=str, default=BASE_URL,
122+
help='The base URL to use for downloading Unicode data files.')
123+
args = parser.parse_args()
124+
125+
if args.local:
126+
cats = read_cats(open(DATA))
127+
scripts = read_scripts(open(SCRIPTS))
128+
else:
129+
cats = read_cats(urllib2.urlopen(args.base_url + '/' + DATA))
130+
scripts = read_scripts(urllib2.urlopen(args.base_url + '/' + SCRIPTS))
131+
132+
# Get Rust code for all Unicode general categories and scripts.
133+
combined = dict(cats, **scripts)
134+
unigroups = groups_to_rust({k: group(letters)
135+
for k, letters in combined.items()})
136+
137+
# Now get Perl character classes that are Unicode friendly.
138+
perld = range(ord('0'), ord('9') + 1)
139+
dgroups = ranges_to_rust(group(perld + cats['Nd'][:]))
140+
141+
perls = map(ord, ['\t', '\n', '\x0C', '\r', ' '])
142+
sgroups = ranges_to_rust(group(perls + cats['Z'][:]))
143+
144+
low, up = (range(ord('a'), ord('z') + 1), range(ord('A'), ord('Z') + 1))
145+
perlw = [ord('_')] + perld + low + up
146+
wgroups = ranges_to_rust(group(perlw + cats['L'][:]))
147+
148+
tpl = '''// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
149+
// file at the top-level directory of this distribution and at
150+
// http://rust-lang.org/COPYRIGHT.
151+
//
152+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
153+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
154+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
155+
// option. This file may not be copied, modified, or distributed
156+
// except according to those terms.
157+
158+
// DO NOT EDIT. Automatically generated by 'src/etc/regexp-unicode-tables'
159+
// on {date}.
160+
161+
use parse::{{Class, NamedClasses}};
162+
163+
pub static UNICODE_CLASSES: NamedClasses = &[
164+
165+
{groups}
166+
167+
];
168+
169+
pub static PERLD: Class = &[
170+
{dgroups}
171+
];
172+
173+
pub static PERLS: Class = &[
174+
{sgroups}
175+
];
176+
177+
pub static PERLW: Class = &[
178+
{wgroups}
179+
];
180+
'''
181+
now = datetime.datetime.now()
182+
print(tpl.format(date=str(now), groups=unigroups,
183+
dgroups=dgroups, sgroups=sgroups, wgroups=wgroups))

0 commit comments

Comments
 (0)