Skip to content

Instantly share code, notes, and snippets.

@rail
Created January 12, 2012 19:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rail/1602475 to your computer and use it in GitHub Desktop.
Save rail/1602475 to your computer and use it in GitHub Desktop.
diff -u b/lib/python/release/download.py b/lib/python/release/download.py
--- b/lib/python/release/download.py
+++ b/lib/python/release/download.py
@@ -65,21 +65,22 @@
url = '/'.join([p.strip('/') for p in [
candidatesDir, 'update', platformDir, locale, fileName]])
log.info("Downloading %s to %s", url, destFileName)
+ remote_f = urlopen(url)
+ local_f = open(destFileName, "wb")
+ local_f.write(remote_f.read())
+ local_f.close()
+ return destFileName
+
+def downloadUpdateIgnore404(*args, **kwargs):
try:
- remote_f = urlopen(url)
- local_f = open(destFileName, "wb")
- local_f.write(remote_f.read())
- local_f.close()
+ return downloadUpdate(*args, **kwargs)
except HTTPError, e:
if e.code == 404:
# New locale
- log.warning('Skipping %s: got 404 for %s' % locale, url)
+ log.warning('Got 404. Skipping %s' % e.geturl())
return None
else:
raise
- return destFileName
-
-
def expectedFiles(unsignedDir, locale, platform, signedPlatforms,
firstLocale='en-US'):
@@ -118,17 +119,14 @@
-def downloadChecksums(productName, version, buildNumber, stageServer,
- stageUserName, stageSshKey, target):
- candidatesDir = makeCandidatesDir(productName, version, buildNumber)
+def rsyncFilesByPattern(server, userName, sshKey, source_dir, target_dir,
+ pattern):
cmd = ['rsync', '-e',
- 'ssh -l %s -oIdentityFile=%s' % (stageUserName, stageSshKey),
- '-av', '--include=*.checksums', '--include=*/', '--exclude=*',
- '%s:%s' % (stageServer, candidatesDir), target]
+ 'ssh -l %s -oIdentityFile=%s' % (userName, sshKey),
+ '-av', '--include=%s' % pattern, '--include=*/', '--exclude=*',
+ '%s:%s' % (server, source_dir), target_dir]
run_cmd(cmd)
-def uploadChecksums(productName, version, buildNumber, stageServer,
- stageUserName, stageSshKey, files):
- candidatesDir = makeCandidatesDir(productName, version, buildNumber)
+def rsyncFiles(files, server, userName, sshKey, target_dir):
cmd = ['rsync', '-e',
- 'ssh -l %s -oIdentityFile=%s' % (stageUserName, stageSshKey),
- '-av'] + files + ['%s:%s' % (stageServer, candidatesDir)]
+ 'ssh -l %s -oIdentityFile=%s' % (userName, sshKey),
+ '-av'] + files + ['%s:%s' % (server, target_dir)]
run_cmd(cmd)
diff -u b/scripts/l10n/create-release-repacks.py b/scripts/l10n/create-release-repacks.py
--- b/scripts/l10n/create-release-repacks.py
+++ b/scripts/l10n/create-release-repacks.py
@@ -11,7 +11,7 @@
from build.l10n import repackLocale, l10nRepackPrep
import build.misc
from build.upload import postUploadCmdPrefix
-from release.download import downloadReleaseBuilds, downloadUpdate
+from release.download import downloadReleaseBuilds, downloadUpdateIgnore404
from release.info import readReleaseConfig, readBranchConfig
from release.l10n import getReleaseLocalesForChunk
from util.hg import mercurial, update, make_hg_url
@@ -75,7 +75,7 @@
prevMar = None
if generatePartials:
prevMar = retry(
- downloadUpdate,
+ downloadUpdateIgnore404,
args=(stageServer, product, oldVersion, oldBuildNumber,
platform, l)
)
@@ -102,7 +102,6 @@
"productName", "version", "buildNumber")
def validate(options, args):
- err = False
if not options.configfile:
log.info("Must pass --configfile")
sys.exit(1)
@@ -121,8 +120,7 @@
"locale option cannot be used when chunking"
else:
if len(options.locales) < 1:
- err = True
- log.error("Need at least one locale to repack")
+ raise Exception('Need at least one locale to repack')
releaseConfig = readReleaseConfig(releaseConfigFile,
required=REQUIRED_RELEASE_CONFIG)
diff -u b/scripts/l10n/release_repacks.sh b/scripts/l10n/release_repacks.sh
--- b/scripts/l10n/release_repacks.sh
+++ b/scripts/l10n/release_repacks.sh
@@ -19,7 +19,7 @@
chunks=$3
thisChunk=$4
generatePartials=$5
-if [ "x$generatePartials" != "x" ]; then
+if [ "$generatePartials" = "generatePartials" ]; then
generatePartials="--generate-partials"
fi
diff -u b/scripts/l10n/standalone_repacks.sh b/scripts/l10n/standalone_repacks.sh
--- b/scripts/l10n/standalone_repacks.sh
+++ b/scripts/l10n/standalone_repacks.sh
@@ -17,7 +17,7 @@
platform=$1
branchConfig=$2
generatePartials=$3
-if [ "x$generatePartials" != "x" ]; then
+if [ "$generatePartials" = "generatePartials" ]; then
generatePartials="--generate-partials"
fi
diff -u b/scripts/release/generate-sums.py b/scripts/release/generate-sums.py
--- b/scripts/release/generate-sums.py
+++ b/scripts/release/generate-sums.py
@@ -13,8 +13,9 @@
from release.info import readReleaseConfig, readBranchConfig
from util.hg import update, mercurial, make_hg_url
-from release.download import downloadChecksums, uploadChecksums
+from release.download import rsyncFilesByPattern, rsyncFiles
from release.signing import generateChecksums, signFiles
+from release.paths import makeCandidatesDir
DEFAULT_BUILDBOT_CONFIGS_REPO = make_hg_url('hg.mozilla.org',
'build/buildbot-configs')
@@ -75,10 +76,12 @@
- downloadChecksums(productName, version, buildNumber, stageServer,
- stageUsername, stageSshKey, target='temp/')
+ candidatesDir = makeCandidatesDir(productName, version, buildNumber)
+ rsyncFilesByPattern(server=stageServer, userName=stageUsername,
+ sshKey=stageSshKey, source_dir=candidatesDir,
+ target_dir='temp/', pattern='*.checksums')
types = {'sha1': 'SHA1SUMS', 'md5': 'MD5SUMS', 'sha512': 'SHA512SUMS'}
generateChecksums('temp', types)
files = types.values()
signFiles(files)
upload_files = files + ['%s.asc' % x for x in files] + \
[path.join(path.dirname(__file__), 'KEY')]
- uploadChecksums(productName, version, buildNumber, stageServer,
- stageUsername, stageSshKey, upload_files)
+ rsyncFiles(files=upload_files, server=stageServer, userName=stageUsername,
+ sshKey=stageSshKey, target_dir=candidatesDir)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment