Skip to content

Revert non-license changes as part of 0ebe112b #12173

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 11, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
228 changes: 115 additions & 113 deletions src/etc/snapshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,21 @@
import re, os, sys, glob, tarfile, shutil, subprocess, tempfile, distutils.spawn

try:
import hashlib
sha_func = hashlib.sha1
import hashlib
sha_func = hashlib.sha1
except ImportError:
import sha
sha_func = sha.new
import sha
sha_func = sha.new

def scrub(b):
if sys.version_info >= (3,) and type(b) == bytes:
return b.decode('ascii')
else:
return b
if sys.version_info >= (3,) and type(b) == bytes:
return b.decode('ascii')
else:
return b

src_dir = scrub(os.getenv("CFG_SRC_DIR"))
if not src_dir:
raise Exception("missing env var CFG_SRC_DIR")
raise Exception("missing env var CFG_SRC_DIR")

snapshotfile = os.path.join(src_dir, "src", "snapshots.txt")
download_url_base = "http://static.rust-lang.org/stage0-snapshots"
Expand All @@ -39,36 +39,37 @@ def scrub(b):
"freebsd": ["bin/rustc"],
}

winnt_runtime_deps = ["libgcc_s_dw2-1.dll", "libstdc++-6.dll"]
winnt_runtime_deps = ["libgcc_s_dw2-1.dll",
"libstdc++-6.dll"]

def parse_line(n, line):
global snapshotfile
global snapshotfile

if re.match(r"\s*$", line): return None
if re.match(r"\s*$", line): return None

if re.match(r"^T\s*$", line): return None
if re.match(r"^T\s*$", line): return None

match = re.match(r"\s+([\w_-]+) ([a-fA-F\d]{40})\s*$", line)
if match:
return { "type": "file",
"platform": match.group(1),
"hash": match.group(2).lower() }
match = re.match(r"\s+([\w_-]+) ([a-fA-F\d]{40})\s*$", line)
if match:
return { "type": "file",
"platform": match.group(1),
"hash": match.group(2).lower() }

match = re.match(r"([ST]) (\d{4}-\d{2}-\d{2}) ([a-fA-F\d]+)\s*$", line);
if not match:
raise Exception("%s:%d:E syntax error: " % (snapshotfile, n))
return { "type": "snapshot",
"date": match.group(2),
"rev": match.group(3) }
match = re.match(r"([ST]) (\d{4}-\d{2}-\d{2}) ([a-fA-F\d]+)\s*$", line);
if (not match):
raise Exception("%s:%d:E syntax error: " % (snapshotfile, n))
return {"type": "snapshot",
"date": match.group(2),
"rev": match.group(3)}


def partial_snapshot_name(date, rev, platform):
return ("rust-stage0-%s-%s-%s.tar.bz2"
% (date, rev, platform))
return ("rust-stage0-%s-%s-%s.tar.bz2"
% (date, rev, platform))

def full_snapshot_name(date, rev, platform, hsh):
return ("rust-stage0-%s-%s-%s-%s.tar.bz2"
% (date, rev, platform, hsh))
return ("rust-stage0-%s-%s-%s-%s.tar.bz2"
% (date, rev, platform, hsh))


def get_kernel(triple):
Expand All @@ -85,22 +86,23 @@ def get_kernel(triple):
def get_cpu(triple):
arch = triple.split('-')[0]
if arch == "i686":
return "i386"
return "i386"
return arch

def get_platform(triple):
return "%s-%s" % (get_kernel(triple), get_cpu(triple))
return "%s-%s" % (get_kernel(triple), get_cpu(triple))


def cmd_out(cmdline):
p = subprocess.Popen(cmdline, stdout=subprocess.PIPE)
p = subprocess.Popen(cmdline,
stdout=subprocess.PIPE)
return scrub(p.communicate()[0].strip())


def local_rev_info(field):
return cmd_out(["git", "--git-dir=" + os.path.join(src_dir, ".git"),
"log", "-n", "1",
"--format=%%%s" % field, "HEAD"])
"log", "-n", "1",
"--format=%%%s" % field, "HEAD"])


def local_rev_full_sha():
Expand Down Expand Up @@ -133,10 +135,10 @@ def get_url_to_file(u,f):
os.rename(tmpf, f)

def snap_filename_hash_part(snap):
match = re.match(r".*([a-fA-F\d]{40}).tar.bz2$", snap)
if not match:
raise Exception("unable to find hash in filename: " + snap)
return match.group(1)
match = re.match(r".*([a-fA-F\d]{40}).tar.bz2$", snap)
if not match:
raise Exception("unable to find hash in filename: " + snap)
return match.group(1)

def hash_file(x):
h = sha_func()
Expand All @@ -148,13 +150,13 @@ def get_winnt_runtime_deps():
runtime_deps = []
path_dirs = os.environ["PATH"].split(';')
for name in winnt_runtime_deps:
for dir in path_dirs:
matches = glob.glob(os.path.join(dir, name))
if matches:
runtime_deps.append(matches[0])
break
else:
raise Exception("Could not find runtime dependency: %s" % name)
for dir in path_dirs:
matches = glob.glob(os.path.join(dir, name))
if matches:
runtime_deps.append(matches[0])
break
else:
raise Exception("Could not find runtime dependency: %s" % name)
return runtime_deps

def make_snapshot(stage, triple):
Expand All @@ -166,31 +168,31 @@ def make_snapshot(stage, triple):
file0 = partial_snapshot_name(date, rev, platform)

def in_tar_name(fn):
cs = re.split(r"[\\/]", fn)
if len(cs) >= 2:
return os.sep.join(cs[-2:])
cs = re.split(r"[\\/]", fn)
if len(cs) >= 2:
return os.sep.join(cs[-2:])

tar = tarfile.open(file0, "w:bz2")

for name in snapshot_files[kernel]:
dir = stage
if stage == "stage1" and re.match(r"^lib/(lib)?std.*", name):
dir = "stage0"
fn_glob = os.path.join(triple, dir, name)
matches = glob.glob(fn_glob)
if not matches:
raise Exception("Not found file with name like " + fn_glob)
if len(matches) == 1:
tar.add(matches[0], "rust-stage0/" + in_tar_name(matches[0]))
else:
raise Exception("Found stale files: \n %s\n"
"Please make a clean build." % "\n ".join(matches))
dir = stage
if stage == "stage1" and re.match(r"^lib/(lib)?std.*", name):
dir = "stage0"
fn_glob = os.path.join(triple, dir, name)
matches = glob.glob(fn_glob)
if not matches:
raise Exception("Not found file with name like " + fn_glob)
if len(matches) == 1:
tar.add(matches[0], "rust-stage0/" + in_tar_name(matches[0]))
else:
raise Exception("Found stale files: \n %s\n"
"Please make a clean build." % "\n ".join(matches))

if kernel=="winnt":
for path in get_winnt_runtime_deps():
tar.add(path, "rust-stage0/bin/" + os.path.basename(path))
tar.add(os.path.join(os.path.dirname(__file__), "third-party"),
"rust-stage0/bin/third-party")
for path in get_winnt_runtime_deps():
tar.add(path, "rust-stage0/bin/" + os.path.basename(path))
tar.add(os.path.join(os.path.dirname(__file__), "third-party"),
"rust-stage0/bin/third-party")

tar.close()

Expand All @@ -202,59 +204,59 @@ def in_tar_name(fn):
return file1

def curr_snapshot_rev():
i = 0
found_snap = False
date = None
rev = None
i = 0
found_snap = False
date = None
rev = None

f = open(snapshotfile)
for line in f.readlines():
i += 1
parsed = parse_line(i, line)
if (not parsed): continue
f = open(snapshotfile)
for line in f.readlines():
i += 1
parsed = parse_line(i, line)
if (not parsed): continue

if parsed["type"] == "snapshot":
date = parsed["date"]
rev = parsed["rev"]
found_snap = True
break
if parsed["type"] == "snapshot":
date = parsed["date"]
rev = parsed["rev"]
found_snap = True
break

if not found_snap:
raise Exception("no snapshot entries in file")
if not found_snap:
raise Exception("no snapshot entries in file")

return (date, rev)
return (date, rev)

def determine_curr_snapshot(triple):
i = 0
platform = get_platform(triple)

found_file = False
found_snap = False
hsh = None
date = None
rev = None

f = open(snapshotfile)
for line in f.readlines():
i += 1
parsed = parse_line(i, line)
if (not parsed): continue

if found_snap and parsed["type"] == "file":
if parsed["platform"] == platform:
hsh = parsed["hash"]
found_file = True
break;
elif parsed["type"] == "snapshot":
date = parsed["date"]
rev = parsed["rev"]
found_snap = True

if not found_snap:
raise Exception("no snapshot entries in file")

if not found_file:
raise Exception("no snapshot file found for platform %s, rev %s" %
(platform, rev))

return full_snapshot_name(date, rev, platform, hsh)
i = 0
platform = get_platform(triple)

found_file = False
found_snap = False
hsh = None
date = None
rev = None

f = open(snapshotfile)
for line in f.readlines():
i += 1
parsed = parse_line(i, line)
if (not parsed): continue

if found_snap and parsed["type"] == "file":
if parsed["platform"] == platform:
hsh = parsed["hash"]
found_file = True
break;
elif parsed["type"] == "snapshot":
date = parsed["date"]
rev = parsed["rev"]
found_snap = True

if not found_snap:
raise Exception("no snapshot entries in file")

if not found_file:
raise Exception("no snapshot file found for platform %s, rev %s" %
(platform, rev))

return full_snapshot_name(date, rev, platform, hsh)