[Pkg-mozext-commits] [adblock-plus] 356/464: Use different metadata files for different platform types to allow different builds from the same repository - e.g. metadata.gecko and metadata.chrome

David Prévot taffit at moszumanska.debian.org
Tue Jul 22 20:44:33 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository adblock-plus.

commit d113240626cb9a74f3ff1dcde6b2d1112b62cc7c
Author: Wladimir Palant <trev at adblockplus.org>
Date:   Fri Jan 25 08:08:32 2013 +0100

    Use different metadata files for different platform types to allow different builds from the same repository - e.g. metadata.gecko and metadata.chrome
---
 build.py          | 52 +++++++++++++++++++++++++++++++++++++++++++++++-----
 packager.py       |  8 ++++----
 packagerChrome.py |  9 ++++++++-
 packagerGecko.py  |  9 ++++++++-
 4 files changed, 67 insertions(+), 11 deletions(-)

diff --git a/build.py b/build.py
index d0937dd..971c121 100644
--- a/build.py
+++ b/build.py
@@ -18,6 +18,8 @@
 import os, sys, re, subprocess, buildtools
 from getopt import getopt, GetoptError
 
+knownTypes = ('gecko', 'chrome')
+
 class Command(object):
   name = property(lambda self: self._name)
   shortDescription = property(lambda self: self._shortDescription,
@@ -111,18 +113,19 @@ def usage(scriptName, type, commandName=None):
         continue
       commandText = ('%s %s' % (command.name, command.params)).ljust(39)
       descriptionParts = splitByLength(command.shortDescription, 29)
-      descriptions.append('  %s %s %s' % (scriptName, commandText, descriptionParts[0]))
+      descriptions.append('  %s [-t %s] %s %s' % (scriptName, type, commandText, descriptionParts[0]))
       for part in descriptionParts[1:]:
-        descriptions.append('  %s %s %s' % (' ' * len(scriptName), ' ' * len(commandText), part))
+        descriptions.append('  %s     %s  %s %s' % (' ' * len(scriptName), ' ' * len(type), ' ' * len(commandText), part))
     print '''Usage:
 
 %(descriptions)s
 
 For details on a command run:
 
-  %(scriptName)s <command> --help
+  %(scriptName)s [-t %(type)s] <command> --help
 ''' % {
     'scriptName': scriptName,
+    'type': type,
     'descriptions': '\n'.join(descriptions)
   }
   else:
@@ -149,7 +152,7 @@ For details on a command run:
       options.append('  %s %s %s' % (shortText.ljust(11), longText.ljust(19), descrParts[0]))
       for part in descrParts[1:]:
         options.append('  %s %s %s' % (' ' * 11, ' ' * 19, part))
-    print '''%(scriptName)s %(name)s %(params)s
+    print '''%(scriptName)s [-t %(type)s] %(name)s %(params)s
 
 %(description)s
 
@@ -157,6 +160,7 @@ Options:
 %(options)s
 ''' % {
       'scriptName': scriptName,
+      'type': type,
       'name': command.name,
       'params': command.params,
       'description': description,
@@ -502,11 +506,49 @@ with addCommand(updatePSL, 'updatepsl') as command:
   command.description = 'Downloads Public Suffix List (see http://publicsuffix.org/) and generates lib/publicSuffixList.js from it.'
   command.supportedTypes = ('chrome')
 
-def processArgs(baseDir, args, type='gecko'):
+def getType(baseDir, scriptName, args):
+  # Look for an explicit type parameter (has to be the first parameter)
+  if len(args) >= 2 and args[0] == '-t':
+    type = args[1]
+    del args[1]
+    del args[0]
+    if type not in knownTypes:
+      print '''
+Unknown type %s specified, supported types are: %s
+''' % (type, ', '.join(knownTypes))
+      return None
+    return type
+
+  # Try to guess repository type
+  types = []
+  for t in knownTypes:
+    if os.path.exists(os.path.join(baseDir, 'metadata.%s' % t)):
+      types.append(t)
+
+  if len(types) == 1:
+    return types[0]
+  elif len(types) > 1:
+    print '''
+Ambiguous repository type, please specify -t parameter explicitly, e.g.
+%s -t %s build
+''' % (scriptName, types[0])
+    return None
+  else:
+    print '''
+No metadata file found in this repository, a metadata file like
+metadata.%s is required.
+''' % knownTypes[0]
+    return None
+
+def processArgs(baseDir, args):
   global commands
 
   scriptName = os.path.basename(args[0])
   args = args[1:]
+  type = getType(baseDir, scriptName, args)
+  if type == None:
+    return
+
   if len(args) == 0:
     args = ['build']
     print '''
diff --git a/packager.py b/packager.py
index dda8205..3f7e447 100644
--- a/packager.py
+++ b/packager.py
@@ -27,11 +27,11 @@ import buildtools
 def getDefaultFileName(baseDir, metadata, version, ext):
   return os.path.join(baseDir, '%s-%s.%s' % (metadata.get('general', 'basename'), version, ext))
 
-def getMetadataPath(baseDir):
-  return os.path.join(baseDir, 'metadata')
+def getMetadataPath(baseDir, type):
+  return os.path.join(baseDir, 'metadata.%s' % type)
 
-def readMetadata(baseDir):
-  return ChainedConfigParser(getMetadataPath(baseDir))
+def readMetadata(baseDir, type):
+  return ChainedConfigParser(getMetadataPath(baseDir, type))
 
 def getBuildNum(baseDir):
   try:
diff --git a/packagerChrome.py b/packagerChrome.py
index 3779b1a..69ec5e8 100644
--- a/packagerChrome.py
+++ b/packagerChrome.py
@@ -18,10 +18,17 @@
 import sys, os, re, json, struct
 from StringIO import StringIO
 
-from packager import getDefaultFileName, readMetadata, getBuildVersion, getTemplate, Files
+import packager
+from packager import getDefaultFileName, getBuildVersion, getTemplate, Files
 
 defaultLocale = 'en_US'
 
+def getMetadataPath(baseDir):
+  return packager.getMetadataPath(baseDir, 'chrome')
+
+def readMetadata(baseDir):
+  return packager.readMetadata(baseDir, 'chrome')
+
 def getIgnoredFiles(params):
   return set(('store.description',))
 
diff --git a/packagerGecko.py b/packagerGecko.py
index 22efff7..5fc87fd 100644
--- a/packagerGecko.py
+++ b/packagerGecko.py
@@ -21,7 +21,8 @@ from StringIO import StringIO
 import xml.dom.minidom as minidom
 import buildtools.localeTools as localeTools
 
-from packager import getDefaultFileName, readMetadata, getBuildVersion, getTemplate, Files
+import packager
+from packager import getDefaultFileName, getBuildVersion, getTemplate, Files
 
 KNOWN_APPS = {
   'conkeror':   '{a79fe89b-6662-4ff4-8e88-09950ad4dfde}',
@@ -39,6 +40,12 @@ KNOWN_APPS = {
 
 defaultLocale = 'en-US'
 
+def getMetadataPath(baseDir):
+  return packager.getMetadataPath(baseDir, 'gecko')
+
+def readMetadata(baseDir):
+  return packager.readMetadata(baseDir, 'gecko')
+
 def getChromeDir(baseDir):
   return os.path.join(baseDir, 'chrome')
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git



More information about the Pkg-mozext-commits mailing list