Index: sitescripts/extensions/bin/createNightlies.py |
=================================================================== |
--- a/sitescripts/extensions/bin/createNightlies.py |
+++ b/sitescripts/extensions/bin/createNightlies.py |
@@ -81,18 +81,20 @@ class NightlyBuild(object): |
if change: |
date, author, revision, description = change.split('\0') |
yield {'date': date, 'author': author, 'revision': revision, 'description': description} |
def copyRepository(self): |
''' |
Create a repository copy in a temporary directory |
''' |
+ # We cannot use hg archive here due to |
+ # http://bz.selenic.com/show_bug.cgi?id=3747, have to clone properly :-( |
self.tempdir = tempfile.mkdtemp(prefix=self.config.repositoryName) |
- command = ['hg', 'archive', '-R', self.config.repository, '-r', 'default', self.tempdir] |
+ command = ['hg', 'clone', '-q', self.config.repository, '-u', 'default', self.tempdir] |
Felix Dahlke
2013/01/02 07:47:33
Are you sure "-u default" is necessary? Don't thin
Wladimir Palant
2013/01/02 08:13:04
Yes, it is absolutely necessary - otherwise Mercur
|
subprocess.Popen(command).communicate() |
def writeChangelog(self, changes): |
""" |
write the changelog file into the cloned repository |
""" |
baseDir = os.path.join(self.config.nightliesDirectory, self.basename) |
if not os.path.exists(baseDir): |
@@ -144,45 +146,42 @@ class NightlyBuild(object): |
self.version = '%s.%s' % (self.version, self.revision) |
usesSdk = manifest.getElementsByTagName('uses-sdk')[0] |
self.minSdkVersion = usesSdk.attributes["android:minSdkVersion"].value |
self.basename = os.path.basename(self.config.repository) |
def readChromeMetadata(self): |
""" |
- Read Chrome-specific metadata from manifest.json file. It will also |
+ Read Chrome-specific metadata from metadata file. This will also |
calculate extension ID from the private key. |
""" |
# Calculate extension ID from public key |
# (see http://supercollider.dk/2010/01/calculating-chrome-extension-id-from-your-private-key-233) |
import buildtools.packagerChrome as packager |
Felix Dahlke
2013/01/02 07:47:33
Shouldn't this be "buildtools.packagerPorts" or so
Wladimir Palant
2013/01/02 08:13:04
No, not really. I doubt that we will ever have the
|
publicKey = packager.getPublicKey(self.config.keyFile) |
hash = hashlib.sha256() |
hash.update(publicKey) |
self.extensionID = hash.hexdigest()[0:32] |
self.extensionID = ''.join(map(lambda c: chr(97 + int(c, 16)), self.extensionID)) |
- # Now read manifest.json |
- manifestFile = open(os.path.join(self.tempdir, 'manifest.json'), 'rb') |
- manifest = json.load(manifestFile) |
- manifestFile.close() |
- |
- self.version = manifest['version'] |
+ # Now read metadata file |
+ metadata = packager.readMetadata(self.tempdir) |
+ self.version = metadata.get("general", "version") |
while self.version.count('.') < 2: |
self.version += '.0' |
self.version = '%s.%s' % (self.version, self.revision) |
- self.basename = os.path.basename(self.config.repository) |
+ self.basename = metadata.get("general", "basename") |
if self.config.experimental: |
self.basename += '-experimental' |
self.compat = [] |
- if 'minimum_chrome_version' in manifest: |
- self.compat.append({'id': 'chrome', 'minVersion': manifest['minimum_chrome_version']}) |
+ if metadata.has_section('compat') and metadata.has_option('compat', 'chrome'): |
+ self.compat.append({'id': 'chrome', 'minVersion': metadata.get('compat', 'chrome')}) |
def writeUpdateManifest(self): |
""" |
Writes update.rdf file for the current build |
""" |
baseDir = os.path.join(self.config.nightliesDirectory, self.basename) |
if not os.path.exists(baseDir): |
os.makedirs(baseDir) |