def pre(self, command, output_dir, vars): """register catogory, and roll in common,""" if not 'with_ploneproduct_paasync' in vars: vars['with_ploneproduct_paasync'] = False if not 'with_ploneproduct_fss' in vars: vars['with_ploneproduct_fss'] = False #if vars['with_ploneproduct_ploneappblob']: # vars['with_ploneproduct_fss'] = False vars['plonesite'] = common.SPECIALCHARS.sub('', vars['project']) vars['major'] = int(vars['plone_version'][0]) vars['sources_url'] = self.get_sources_url(vars) #vars['versions_url'] = self.get_versions_url(vars) #vars['zope2_url'] = self.get_zope2_url(vars) #vars['ztk_url'] = self.get_ztk_url(vars) if not vars.get('ztk_url', None): vars['ztk_url'] = False vars['sane_name'] = common.SPECIALCHARS.sub('', vars['project']) vars['category'] = 'zope' vars['includesdirs'] = '' vars['hr'] = '#' * 120 common.Template.pre(self, command, output_dir, vars) vars['mode'] = vars['mode'].lower().strip() # transforming eggs requirements as lists for var in self.sections_mappings: if var in vars: vars[var] = [a.strip() for a in vars[var].split(',')] vars['autocheckout'] = [] for var in vars: if var.startswith('with_autocheckout') and vars[var]: vn = var.replace('with_autocheckout_', '') vars['autocheckout'].append( self.plone_sources[vn]['name'] ) for var in self.plone_sources: if self.plone_sources[var].get('autocheckout', '') == 'y': if not self.plone_sources[var]['name'] in vars['autocheckout']: if ((True in [vars.get(o, False) for o in self.plone_sources[var]['options']]) and (self.plone_sources[var]['name'] not in vars['autocheckout'])): vars['autocheckout'].append( self.plone_sources[var]['name'] ) lps = copy.deepcopy(self.plone_sources) for item in self.plone_sources: col = self.plone_sources[item] found = False for option in col['options']: if vars.get(option, False): found = True break if not found: del lps[item] vars['plone_sources'] = lps # ZODB3 from egg if vars['major'] < 4: vars['additional_eggs'].append('#ZODB3 is installed as an EGG!') vars['additional_eggs'].append('ZODB3') # plone system dependencies if vars['inside_minitage']: for i in ['libxml2', 'libxslt', 'pil-1', 'libiconv']: vars['opt_deps'] += ' %s' % search_latest('%s.*' % i, vars['minilays']) # databases minitage_dbs = ['mysql', 'postgresql'] for db in minitage_dbs: if vars['with_database_%s' % db] and vars['inside_minitage']: vars['opt_deps'] += ' %s' % search_latest('%s-\d\.\d*'% db, vars['minilays']) # databases if vars['with_binding_mapscript'] and vars['inside_minitage']: vars['opt_deps'] += ' %s' % search_latest('mapserver-\d\.\d*', vars['minilays']) # collective.geo if 'with_ploneproduct_cgeo' in vars: if vars['with_ploneproduct_cgeo'] and vars['inside_minitage']: for i in ('geos-\d\.\d*','gdal-\d\.\d*'): vars['opt_deps'] += ' %s' % search_latest(i, vars['minilays']) # tesseact if vars['with_binding_tesseract'] and vars['inside_minitage']: for i in ('tesseract-\d','leptonica-\d'): vars['opt_deps'] += ' %s' % search_latest(i, vars['minilays']) # pyqt vars['pyqt'] = '' if vars['with_binding_pyqt'] and vars['inside_minitage']: vars['opt_deps'] += ' %s' % search_latest('swiglib-\d\.\d+', vars['minilays']) for i in ('pyqt-\d\.\d+','sip-\d\.\d+'): vars['opt_deps'] += ' %s' % search_latest(i, vars['minilays']) vars['pyqt'] += '\n %s' % ( '${buildout:directory}/../../' 'eggs/%s/parts' '/site-packages-%s/site-packages-%s' % ( search_latest(i, vars['minilays']), vars['pyver'], vars['pyver'], ) ) # openldap if vars['with_binding_ldap'] and vars['inside_minitage']: cs = search_latest('cyrus-sasl-\d\.\d*', vars['minilays']) vars['opt_deps'] += ' %s %s %s' % ( search_latest('openldap-\d\.\d*', vars['minilays']), search_latest('openssl-1', vars['minilays']), cs ) vars['includesdirs'] = '\n %s'% os.path.join( vars['mt'], 'dependencies', cs, 'parts', 'part', 'include', 'sasl' ) # haproxy if vars['with_haproxy'] and vars['inside_minitage']: vars['opt_deps'] += ' %s' % search_latest('haproxy-\d\.\d*', vars['minilays']) # htmldoc if vars['with_ploneproduct_awspdfbook'] and vars['inside_minitage']: vars['opt_deps'] += ' %s' % search_latest('htmldoc-\d\.\d*', vars['minilays']) # relstorage if 'relstorage' in vars['mode']: vars['additional_eggs'].append('#Relstorage') vars['additional_eggs'].append('Relstorage') for db in [var.replace('with_database_', '') for var in vars if 'with_database_' in var]: if db in vars['relstorage_type']: vars['additional_eggs'].extend( [a for a in eggs_mappings['with_database_%s'%db] if not a in vars['additional_eggs'] ] ) if db in minitage_dbs and vars['inside_minitage']: vars['opt_deps'] += ' %s' % search_latest('%s-\d\.\d*'% db, vars['minilays']) # do we need some pinned version vars['plone_versions'] = [] pin_added = [] for var in self.versions_mappings: vars['plone_versions'].append(('# %s' % var, '',)) vmap = self.versions_mappings[var] vmap.sort() for pin in vmap: if not pin in pin_added: pin_added.append(pin) vars['plone_versions'].append(pin) if vars["with_checked_versions"]: for var in self.checked_versions_mappings: if vars.get(var, False): vars['plone_versions'].append(('# %s' % var, '',)) vmap = self.checked_versions_mappings[var].keys() vmap.sort() for kpin in vmap: pin = (kpin, self.checked_versions_mappings[var][kpin]) if not pin in pin_added: pin_added.append(pin) vars['plone_versions'].append(pin) if not vars['mode'] in ['zodb', 'relstorage', 'zeo']: raise Exception('Invalid mode (not in zeo, zodb, relstorage') if not os.path.exists(self.output_dir): os.makedirs(self.output_dir) for section in self.sections_mappings: for var in [k for k in self.sections_mappings[ section] if vars.get(k, '')]: # skip plone products which are already in the product 's setup.py if vars['with_generic'] and section == 'additional_eggs': continue if not section == 'plone_zcml': vars[section].append('#%s'%var) for item in self.sections_mappings[section][var]: if section == 'plone_zcml': item = '-'.join(item) if not '%s\n' % item in vars[section]: if not item in vars[section]: vars[section].append(item) package_slug_re = re.compile('(.*)-(meta|configure|overrides)', common.reflags) def zcmlsort(obja, objb): obja = re.sub('^#', '', obja).strip() objb = re.sub('^#', '', objb).strip() ma, mb = package_slug_re.match(obja), package_slug_re.match(objb) if not obja: return 1 if not objb: return -1 apackage, aslug = (obja, 'configure') if ma: apackage, aslug = ma.groups() bpackage, bslug = (objb, 'configure') if mb: bpackage, bslug = mb.groups() aorder = self.zcml_loading_order.get((apackage, aslug), 50000) border = self.zcml_loading_order.get((bpackage, bslug), 50000) return aorder - border # order zcml vars["plone_zcml"].sort(zcmlsort) vars["plone_zcml"] = [a for a in vars["plone_zcml"] if a.strip()] # add option marker for option in self.zcml_mappings: for p in self.zcml_mappings[option]: id = '-'.join(p) if id in vars['plone_zcml']: i = vars['plone_zcml'].index(id) vars['plone_zcml'][i:i] = ['#%s' % option] vars['plone_zcml'][0:0] = [''] cwd = os.getcwd() if not os.path.exists(self.output_dir): self.makedirs(self.output_dir) # install also the official template from ZopeSkel, setting its variables vars['plone_products_install'] = '' vars['zope2_install'] = '' vars['debug_mode'] = 'off' vars['verbose_security'] = 'off' # running default template (like plone3_buildout) and getting stuff from it. ep = None try: if not getattr(self, 'default_template_package', None): raise NoDefaultTemplateError('') epk = pkg_resources.load_entry_point( self.default_template_package, self.default_template_epn, self.default_template_templaten ) ep = epk(self) coo = command.options.overwrite command.options.overwrite = True def null(a, b, c): pass ep.post = null ep.check_vars(vars, command) ep.run(command, vars['path'], vars) command.options.overwrite = coo except NoDefaultTemplateError, e: pass
def pre(self, command, output_dir, vars): """register catogory, and roll in common,""" vars['category'] = 'django' common.Template.pre(self, command, output_dir, vars) minitage_dbs = ['mysql', 'postgresql', 'sqlite'] minilays = os.path.join(self.output_dir, 'minilays') cwd = os.getcwd() if not os.path.exists(self.output_dir): self.makedirs(self.output_dir) if vars['inside_minitage']: deps = [ 'zlib-1.*', 'freetype-2', 'libxml2-2.*', 'libiconv.*', 'libxslt-1.*', 'fontconfig-2.\d*', ] #if vars['with_database_mysql']: # deps.extend(['mysql-\d.\d*'],) #if vars['with_database_postgresql']: # deps.extend(['postgresql-\d.\d'],) #if (vars['with_database_sqlite'] # or ( # not vars['with_database_postgresql'] # and not vars['with_database_mysql']) # ): # deps.extend(['sqlite-\d.\d',]) ## openldap #if vars['with_binding_ldap']: # cs = search_latest('cyrus-sasl-\d\.\d*', vars['minilays']) # deps.extend(['openldap-\d\.\d*', cs]) # vars['includesdirs'] = '\n %s'% os.path.join( # vars['mt'], 'dependencies', cs, 'parts', 'part', 'include', 'sasl' # ) # haproxy #if vars['with_haproxy']: # deps.extend(['haproxy-\d\.\d*']) #if vars["with_binding_lxml"]: # deps.extend(['libxml2-\d.\d*', 'libxslt-1.\d*']) #if vars["with_gis_gdal"]: # vars['opt_deps'] += ' gdal-1' # deps.extend(['pixman-0\d*',]) #if vars["with_gis_pgrouting"]: # deps.extend(['pgrouting-1.\d*',]) #if vars["with_gis_mapnik"]: # #deps.extend(['py-mapnik-\d.\d*', 'mapnik-\d.\d*',]) # deps.extend(['mapnik-\d.\d*',]) # deps.extend(['boost-python-.*',]) #if vars["with_binding_cairo"]: # vars['opt_deps'] += ' cairo-1.12 cairomm-1' #if vars["with_binding_pil"]: # vars['opt_deps'] += ' libpng-1' # deps.extend(['pil-\d.\d.\d*', ]) #if vars['with_gis_mapscript']: # deps.extend(['mapserver-\d\.\d*',]) #if vars["with_binding_memcache"]: # deps.extend(['libmemcache-\d.\d*',]) for dep in deps: vars['opt_deps'] += ' %s' % search_latest(dep, vars['minilays']) vars['sane_name'] = common.SPECIALCHARS.sub('', vars['project']) vars['includesdirs'] = '' vars['hr'] = '#' * 120 # transforming eggs requirements as lists for var in self.sections_mappings: if var in vars: vars[var] = [a.strip() for a in vars[var].split(',')] #vars['autocheckout'] = [] #for var in vars: # if var.startswith('with_autocheckout') and vars[var]: # vn = var.replace('with_autocheckout_', '') # vars['autocheckout'].append( # self.plone_sources[vn]['name'] # ) # #for var in self.plone_sources: # if self.plone_sources[var].get('autocheckout', '') == 'y': # if not self.plone_sources[var]['name'] in vars['autocheckout']: # if ((True in [vars.get(o, False) # for o in self.plone_sources[var]['options']]) # and (self.plone_sources[var]['name'] not in vars['autocheckout'])): # vars['autocheckout'].append( # self.plone_sources[var]['name'] # ) # #lps = copy.deepcopy(self.plone_sources) #for item in self.plone_sources: # col = self.plone_sources[item] # found = False # for option in col['options']: # if vars.get(option, False): # found = True # break # if not found: # del lps[item] #vars['plone_sources'] = lps # Django core eggs vars['additional_eggs'].append('#Django') vars['additional_eggs'].extend(base_django_eggs) # databases #for db in [var.replace('with_database_', '') # for var in vars # if 'with_database_' in var # and vars[var]]: # if not db in ['sqlite',]: # vars['additional_eggs'].extend( # [a # for a in eggs_mappings['with_database_%s'%db] # if not a in vars['additional_eggs'] # ] # ) # pyqt #vars['pyqt'] = '' #if vars['with_binding_pyqt'] and vars['inside_minitage']: # vars['opt_deps'] += ' %s' % search_latest('swiglib-\d\.\d+', vars['minilays']) # for i in ('pyqt-\d\.\d+','sip-\d\.\d+'): # vars['opt_deps'] += ' %s' % search_latest(i, vars['minilays']) # vars['pyqt'] += '\n %s' % ( # '${buildout:directory}/../../' # 'eggs/%s/parts' # '/site-packages-%s/site-packages-%s' % ( # search_latest(i, vars['minilays']), # vars['pyver'], # vars['pyver'], # ) # ) ## openldap #if vars['with_binding_ldap'] and vars['inside_minitage']: # cs = search_latest('cyrus-sasl-\d\.\d*', vars['minilays']) # vars['opt_deps'] += ' %s %s' % ( # search_latest('openldap-\d\.\d*', vars['minilays']), # cs # ) # vars['includesdirs'] = '\n %s'% os.path.join( # vars['mt'], 'dependencies', cs, 'parts', 'part', 'include', 'sasl' # ) # do we need some pinned version #vars['plone_versions'] = [] #for var in self.versions_mappings: # vars['plone_versions'].append(('# %s' % var, '',)) # for pin in self.versions_mappings[var]: # vars['plone_versions'].append(pin) #if vars["with_checked_versions"]: # for var in self.checked_versions_mappings: # if vars.get(var, False): # vars['plone_versions'].append(('# %s' % var, '',)) # for pin in self.checked_versions_mappings[var]: # vars['plone_versions'].append((pin, self.checked_versions_mappings[var][pin])) if not os.path.exists(self.output_dir): os.makedirs(self.output_dir) vars['framework_apps'] = [] for section in self.sections_mappings: for var in [k for k in self.sections_mappings[section] if vars.get(k, '')]: vars[section].append('#%s'%var) for item in self.sections_mappings[section][var]: if not '%s\n' % item in vars[section]: if not item in vars[section]: vars[section].append(item) # be sure our special python is in priority vars['opt_deps'] = re.sub('\s*%s\s*' % self.python, ' ', vars['opt_deps']) vars['opt_deps'] += " %s" % self.python vars['opt_deps'] += " %s" % self.python opt_deps, popt_deps = [], vars['opt_deps'].split() for i in popt_deps: if not i in opt_deps: opt_deps.append(i) vars['opt_deps'] = ' '.join(opt_deps) # http serverS ports vars['http_port1'] = int(vars['http_port']) + 1 vars['http_port2'] = int(vars['http_port']) + 2 vars['http_port3'] = int(vars['http_port']) + 3 vars['http_port4'] = int(vars['http_port']) + 4 vars['http_port5'] = int(vars['http_port']) + 5 vars['http_port6'] = int(vars['http_port']) + 6 vars['http_port7'] = int(vars['http_port']) + 7 vars['http_port8'] = int(vars['http_port']) + 8 vars['http_port9'] = int(vars['http_port']) + 9 vars['http_port10'] = int(vars['http_port']) + 10 vars['http_port11'] = int(vars['http_port']) + 11 vars['http_port12'] = int(vars['http_port']) + 12 vars['http_port13'] = int(vars['http_port']) + 13 vars['running_user'] = common.running_user vars['instances_description'] = common.INSTANCES_DESCRIPTION % vars #if not vars['reverseproxy_aliases']: # vars['reverseproxy_aliases'] = '' #vars['sreverseproxy_aliases'] = vars['reverseproxy_aliases'].split(',') vars['ndot'] = '.' for i in ['rabbitmq', 'mysql', 'mongo']: if vars['with_django_%s'%i]: vars['%s_comment'%i] = '' else: vars['%s_comment'%i] = '#'
def pre(self, command, output_dir, vars): common.Template.pre(self, command, output_dir, vars) vars['sharp'] = '#' vars['linux'] = 'linux' in sys.platform if not 'opt_deps' in vars: vars['opt_deps'] = '' if vars['inside_minitage']: if not self.special_output_dir: vars['path'] = os.path.join( self.output_dir, vars['category'], vars['project'], ) else: vars['path'] = self.output_dir else: vars['category'] = '' if not self.special_output_dir: vars['path'] = os.path.join(self.output_dir, vars['project']) else: vars['path'] = self.output_dir if not self.special_output_dir: vars['project_dir'] = vars['project'] vars['category_dir'] = vars['category'] else: vars['project_dir'] = '' vars['category_dir'] = '' interpreter, pyver = None, None pythons = { 'python2.4': '2.4', 'python2.5': '2.5', 'python2.6': '2.6', 'python2.7': '2.7', 'python3.0': '3.0', 'python3.1': '3.1', 'python3.2': '3.2', } python = getattr(self, 'python', None) if vars['inside_minitage']: latest_python = None dsearch_latest = {'py-libxslt.*': 'xslt', 'py-libxml2.*': 'xml2', 'python-\d.\d': 'latest_python'} vars['minilays'] = minilays = os.path.join(vars['mt'], 'minilays') xml2, xslt = [search_latest(a, minilays) for a in ( 'py-libxml2-.', 'py-libxslt-.*', #'py-mapnik-.*' )] for regex in dsearch_latest.keys(): minibuild = search_latest(regex, minilays) stmt = '%s=\'%s\'' % (dsearch_latest[regex], minibuild) exec stmt del dsearch_latest[regex] if (not python) and latest_python: python = latest_python pyver = pythons[python.replace('-', '')] else: if not python: python = vars['python'] else: python = python.replace('-', '') pyver = pythons[python] interpreter = which(python) executable_version = os.popen( '%s -c "%s"' % ( interpreter, 'import sys;print sys.version[:3]' ) ).read().replace('\n', '') executable_prefix = os.path.abspath( subprocess.Popen( [interpreter, '-c', 'import sys;print sys.prefix'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True).stdout.read().replace('\n', '') ) if pyver and (executable_version != pyver): try: interpreter = which('python%s' % pyver) executable_version = os.popen( '%s -c "%s"' % ( interpreter, 'import sys;print sys.version[:3]' ) ).read().replace('\n', '') executable_prefix = os.path.abspath( subprocess.Popen( [interpreter, '-c', 'import sys;print sys.prefix'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True).stdout.read().replace('\n', '') ) except: print 'Cant find a python %s installation, you didnt give a %s python to paster' % (pyver, pyver) raise if pyver and (executable_version != pyver): print 'Cant find a python %s installation, you didnt give a %s python to paster' % (pyver, pyver) raise Exception('Incompatible python') if vars['inside_minitage']: interpreter = os.path.join( '${buildout:directory}', '..', '..', 'dependencies', python, 'parts', 'part', 'bin', 'python') executable_prefix = os.path.join( vars['mt'], 'dependencies', 'python-%s' % pyver, 'parts', 'part') executable_version = pyver vars['opt_deps'] = '%s %s %s' % (xml2, xslt, 'python-%s' % pyver) vars['xml2'] = os.path.join('${minitage:location}', 'eggs', xml2, 'parts', 'site-packages-%s' % pyver) #vars['mapnik'] = os.path.join('${minitage:location}', # 'eggs', mapnik, # 'parts', 'site-packages-%s' % pyver, # 'lib', 'python%s' % pyver, 'site-packages') vars['xslt'] = os.path.join('${minitage:location}', 'eggs', xslt, 'parts', 'site-packages-%s' % pyver) vars['mt'] = '${buildout:directory}/../..' else: vars['xml2'] = os.path.join(executable_prefix, 'lib', 'python%s' % executable_version, 'site-packages') vars['xslt'] = os.path.join(executable_prefix, 'lib', 'python%s' % executable_version, 'site-packages') #vars['mapnik'] = os.path.join(executable_prefix, 'lib', 'python%s' % executable_version, 'site-packages') vars['opt_deps'] = '' # minitage needs python. if not interpreter and (not vars['inside_minitage']): raise Exception('Python interpreter not found') vars['python'] = interpreter vars['python26'] = re.sub('(2|3)\..', '2.6', interpreter) vars['python_minibuild'] = 'python-%s' % pyver vars['python_minibuild'] = 'python-%s' % pyver vars['pyver'] = pyver vars['libpyver'] = pyver.replace('.', '') vars['python_version'] = executable_version vars['executable_site_packages'] = os.path.join( executable_prefix, 'lib', 'python%s'%executable_version, 'site-packages') vars['executable_prefix'] = executable_prefix
def pre(self, command, output_dir, vars): common.Template.pre(self, command, output_dir, vars) vars["sharp"] = "#" vars["linux"] = "linux" in sys.platform if not "opt_deps" in vars: vars["opt_deps"] = "" if vars["inside_minitage"]: if not self.special_output_dir: vars["path"] = os.path.join(self.output_dir, vars["category"], vars["project"]) else: vars["path"] = self.output_dir else: vars["category"] = "" if not self.special_output_dir: vars["path"] = os.path.join(self.output_dir, vars["project"]) else: vars["path"] = self.output_dir if not self.special_output_dir: vars["project_dir"] = vars["project"] vars["category_dir"] = vars["category"] else: vars["project_dir"] = "" vars["category_dir"] = "" interpreter, pyver = None, None pythons = { "python2.4": "2.4", "python2.5": "2.5", "python2.6": "2.6", "python2.7": "2.7", "python3.0": "3.0", "python3.1": "3.1", "python3.2": "3.2", } python = getattr(self, "python", None) if vars["inside_minitage"]: latest_python = None dsearch_latest = {"py-libxslt.*": "xslt", "py-libxml2.*": "xml2", "python-\d.\d": "latest_python"} vars["minilays"] = minilays = os.path.join(vars["mt"], "minilays") xml2, xslt = [ search_latest(a, minilays) for a in ( "py-libxml2-.", "py-libxslt-.*", #'py-mapnik-.*' ) ] for regex in dsearch_latest.keys(): minibuild = search_latest(regex, minilays) stmt = "%s='%s'" % (dsearch_latest[regex], minibuild) exec stmt del dsearch_latest[regex] if (not python) and latest_python: python = latest_python pyver = pythons[python.replace("-", "")] else: if not python: python = vars["python"] else: python = python.replace("-", "") pyver = pythons[python] interpreter = which(python) executable_version = ( os.popen('%s -c "%s"' % (interpreter, "import sys;print sys.version[:3]")).read().replace("\n", "") ) executable_prefix = os.path.abspath( subprocess.Popen( [interpreter, "-c", "import sys;print sys.prefix"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True, ) .stdout.read() .replace("\n", "") ) if pyver and (executable_version != pyver): try: interpreter = which("python%s" % pyver) executable_version = ( os.popen('%s -c "%s"' % (interpreter, "import sys;print sys.version[:3]")) .read() .replace("\n", "") ) executable_prefix = os.path.abspath( subprocess.Popen( [interpreter, "-c", "import sys;print sys.prefix"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True, ) .stdout.read() .replace("\n", "") ) except: print "Cant find a python %s installation, you didnt give a %s python to paster" % (pyver, pyver) raise if pyver and (executable_version != pyver): print "Cant find a python %s installation, you didnt give a %s python to paster" % (pyver, pyver) raise Exception("Incompatible python") if vars["inside_minitage"]: interpreter = os.path.join( "${buildout:directory}", "..", "..", "dependencies", python, "parts", "part", "bin", "python" ) executable_prefix = os.path.join(vars["mt"], "dependencies", "python-%s" % pyver, "parts", "part") executable_version = pyver vars["opt_deps"] = "%s %s %s" % (xml2, xslt, "python-%s" % pyver) vars["xml2"] = os.path.join("${minitage:location}", "eggs", xml2, "parts", "site-packages-%s" % pyver) # vars['mapnik'] = os.path.join('${minitage:location}', # 'eggs', mapnik, # 'parts', 'site-packages-%s' % pyver, # 'lib', 'python%s' % pyver, 'site-packages') vars["xslt"] = os.path.join("${minitage:location}", "eggs", xslt, "parts", "site-packages-%s" % pyver) vars["mt"] = "${buildout:directory}/../.." else: vars["xml2"] = os.path.join(executable_prefix, "lib", "python%s" % executable_version, "site-packages") vars["xslt"] = os.path.join(executable_prefix, "lib", "python%s" % executable_version, "site-packages") # vars['mapnik'] = os.path.join(executable_prefix, 'lib', 'python%s' % executable_version, 'site-packages') vars["opt_deps"] = "" # minitage needs python. if not interpreter and (not vars["inside_minitage"]): raise Exception("Python interpreter not found") vars["python"] = interpreter vars["python26"] = re.sub("(2|3)\..", "2.6", interpreter) vars["python_minibuild"] = "python-%s" % pyver vars["python_minibuild"] = "python-%s" % pyver vars["pyver"] = pyver vars["libpyver"] = pyver.replace(".", "") vars["python_version"] = executable_version vars["executable_site_packages"] = os.path.join( executable_prefix, "lib", "python%s" % executable_version, "site-packages" ) vars["executable_prefix"] = executable_prefix
def pre(self, command, output_dir, vars): """register catogory, and roll in common,""" vars["category"] = "pyramid" common.Template.pre(self, command, output_dir, vars) minitage_dbs = ["mysql", "postgresql", "sqlite"] minilays = os.path.join(self.output_dir, "minilays") cwd = os.getcwd() if not os.path.exists(self.output_dir): self.makedirs(self.output_dir) if vars["inside_minitage"]: deps = ["zlib-1.*", "freetype-2", "libxml2-2.*", "libiconv.*", "libxslt-1.*", "fontconfig-2.\d*"] if vars["with_database_mysql"]: deps.extend(["mysql-\d.\d*"]) if vars["with_database_postgresql"]: deps.extend(["postgresql-\d.\d"]) if vars["with_database_sqlite"] or ( not vars["with_database_postgresql"] and not vars["with_database_mysql"] ): deps.extend(["sqlite-\d.\d"]) # openldap if vars["with_binding_ldap"]: cs = search_latest("cyrus-sasl-\d\.\d*", vars["minilays"]) deps.extend(["openldap-\d\.\d*", cs]) vars["includesdirs"] = "\n %s" % os.path.join( vars["mt"], "dependencies", cs, "parts", "part", "include", "sasl" ) # haproxy if vars["with_haproxy"]: deps.extend(["haproxy-\d\.\d*"]) if vars["with_binding_lxml"]: deps.extend(["libxml2-\d.\d*", "libxslt-1.\d*"]) if vars["with_gis_gdal"]: deps.extend(["gdal-\d.\d*", "pixman-0\d*"]) if vars["with_gis_pgrouting"]: deps.extend(["pgrouting-1.\d*"]) if vars["with_gis_mapnik"]: # deps.extend(['py-mapnik-\d.\d*', 'mapnik-\d.\d*',]) deps.extend(["mapnik-\d.\d*"]) deps.extend(["boost-python-.*"]) if vars["with_binding_cairo"]: deps.extend(["cairo-1.\d*"]) if vars["with_binding_pil"]: deps.extend(["libpng-1.\d*", "pil-\d.\d.\d*"]) if vars["with_gis_mapscript"]: deps.extend(["mapserver-\d\.\d*"]) if vars["with_binding_memcache"]: deps.extend(["libmemcache-\d.\d*"]) for dep in deps: vars["opt_deps"] += " %s" % search_latest(dep, vars["minilays"]) vars["sane_name"] = common.SPECIALCHARS.sub("", vars["project"]) vars["includesdirs"] = "" vars["hr"] = "#" * 120 # transforming eggs requirements as lists for var in self.sections_mappings: if var in vars: vars[var] = [a.strip() for a in vars[var].split(",")] vars["autocheckout"] = [] for var in vars: if var.startswith("with_autocheckout") and vars[var]: vn = var.replace("with_autocheckout_", "") vars["autocheckout"].append(self.plone_sources[vn]["name"]) for var in self.plone_sources: if self.plone_sources[var].get("autocheckout", "") == "y": if not self.plone_sources[var]["name"] in vars["autocheckout"]: if (True in [vars.get(o, False) for o in self.plone_sources[var]["options"]]) and ( self.plone_sources[var]["name"] not in vars["autocheckout"] ): vars["autocheckout"].append(self.plone_sources[var]["name"]) lps = copy.deepcopy(self.plone_sources) for item in self.plone_sources: col = self.plone_sources[item] found = False for option in col["options"]: if vars.get(option, False): found = True break if not found: del lps[item] vars["plone_sources"] = lps # Django core eggs vars["additional_eggs"].append("#Pyramid") vars["additional_eggs"].extend(base_pyramid_eggs) # databases for db in [var.replace("with_database_", "") for var in vars if "with_database_" in var and vars[var]]: if not db in ["sqlite"]: vars["additional_eggs"].extend( [a for a in eggs_mappings["with_database_%s" % db] if not a in vars["additional_eggs"]] ) # pyqt vars["pyqt"] = "" if vars["with_binding_pyqt"] and vars["inside_minitage"]: vars["opt_deps"] += " %s" % search_latest("swiglib-\d\.\d+", vars["minilays"]) for i in ("pyqt-\d\.\d+", "sip-\d\.\d+"): vars["opt_deps"] += " %s" % search_latest(i, vars["minilays"]) vars["pyqt"] += "\n %s" % ( "${buildout:directory}/../../" "eggs/%s/parts" "/site-packages-%s/site-packages-%s" % (search_latest(i, vars["minilays"]), vars["pyver"], vars["pyver"]) ) # openldap if vars["with_binding_ldap"] and vars["inside_minitage"]: cs = search_latest("cyrus-sasl-\d\.\d*", vars["minilays"]) vars["opt_deps"] += " %s %s" % (search_latest("openldap-\d\.\d*", vars["minilays"]), cs) vars["includesdirs"] = "\n %s" % os.path.join( vars["mt"], "dependencies", cs, "parts", "part", "include", "sasl" ) # do we need some pinned version vars["plone_versions"] = [] for var in self.versions_mappings: vars["plone_versions"].append(("# %s" % var, "")) for pin in self.versions_mappings[var]: vars["plone_versions"].append(pin) if vars["with_checked_versions"]: for var in self.checked_versions_mappings: if vars.get(var, False): vars["plone_versions"].append(("# %s" % var, "")) for pin in self.checked_versions_mappings[var]: vars["plone_versions"].append((pin, self.checked_versions_mappings[var][pin])) if not os.path.exists(self.output_dir): os.makedirs(self.output_dir) vars["framework_apps"] = [] for section in self.sections_mappings: for var in [k for k in self.sections_mappings[section] if vars.get(k, "")]: vars[section].append("#%s" % var) for item in self.sections_mappings[section][var]: if not "%s\n" % item in vars[section]: if not item in vars[section]: vars[section].append(item) # be sure our special python is in priority vars["opt_deps"] = re.sub("\s*%s\s*" % self.python, " ", vars["opt_deps"]) vars["opt_deps"] += " %s" % self.python # http serverS ports vars["http_port1"] = int(vars["http_port"]) + 1 vars["http_port2"] = int(vars["http_port"]) + 2 vars["http_port3"] = int(vars["http_port"]) + 3 vars["http_port4"] = int(vars["http_port"]) + 4 vars["http_port5"] = int(vars["http_port"]) + 5 vars["http_port6"] = int(vars["http_port"]) + 6 vars["http_port7"] = int(vars["http_port"]) + 7 vars["running_user"] = common.running_user vars["instances_description"] = common.INSTANCES_DESCRIPTION % vars if not vars["reverseproxy_aliases"]: vars["reverseproxy_aliases"] = "" vars["sreverseproxy_aliases"] = vars["reverseproxy_aliases"].split(",")