From 2eea40f42a09b58411d35bcd171eb6fba55d5908 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Sat, 26 Jun 2010 22:47:45 -0400 Subject: [PATCH] support architecture and repo substitution --- configurations.yaml | 19 ++-- kickstart.py | 255 ---------------------------------------------------- kickstart.tmpl | 3 +- kickstarter.py | 18 +++- repos.yaml | 6 +- 5 files changed, 32 insertions(+), 269 deletions(-) delete mode 100644 kickstart.py diff --git a/configurations.yaml b/configurations.yaml index 2bbdd16..9404e94 100644 --- a/configurations.yaml +++ b/configurations.yaml @@ -23,8 +23,6 @@ CORE: - cleanup Repos: - meego-core-1.0 - Kernel: kernel-netbook - NETBOOK: PartSize: 1900 BootloaderAppend: "quiet" @@ -49,21 +47,28 @@ NETBOOK: - gdb - flash-plugin - adobe-release + Architecture: ia32 Configurations: - Name: MeeGo Core 1.0 Active: True Baseline: 1.0 Platform: CORE - FileName: core + FileName: core-ia32 + Kernel: kernel-netbook + Architecture: ia32 + - Name: MeeGo Core 1.0 N900 + Active: True + Baseline: 1.0 + Platform: CORE + FileName: core-armv7l-n900 + Kernel: kernel-n900 Desktop: + Architecture: armv7l - Name: MeeGo Netbook/Nettop 1.0 Active: True Baseline: 1.0 Platform: NETBOOK Desktop: meego - FileName: netbook + FileName: netbook-ia32-default Groups: - MeeGo Netbook Desktop - Repos: - - meego-core-1.0 - - meego-netbook-1.0 diff --git a/kickstart.py b/kickstart.py deleted file mode 100644 index a9af541..0000000 --- a/kickstart.py +++ /dev/null @@ -1,255 +0,0 @@ -#!/usr/bin/env python - - - - -################################################## -## DEPENDENCIES -import sys -import os -import os.path -import __builtin__ -from os.path import getmtime, exists -import time -import types -from Cheetah.Version import MinCompatibleVersion as RequiredCheetahVersion -from Cheetah.Version import MinCompatibleVersionTuple as RequiredCheetahVersionTuple -from Cheetah.Template import Template -from Cheetah.DummyTransaction import * -from Cheetah.NameMapper import NotFound, valueForName, valueFromSearchList, valueFromFrameOrSearchList -from Cheetah.CacheRegion import CacheRegion -import Cheetah.Filters as Filters -import Cheetah.ErrorCatchers as ErrorCatchers - -################################################## -## MODULE CONSTANTS -VFFSL=valueFromFrameOrSearchList -VFSL=valueFromSearchList -VFN=valueForName -currentTime=time.time -__CHEETAH_version__ = '2.2.2' -__CHEETAH_versionTuple__ = (2, 2, 2, 'final', 0) -__CHEETAH_genTime__ = 1273202421.2641661 -__CHEETAH_genTimestamp__ = 'Thu May 6 23:20:21 2010' -__CHEETAH_src__ = 'kickstart.tmpl' -__CHEETAH_srcLastModified__ = 'Thu May 6 22:51:32 2010' -__CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine' - -if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple: - raise AssertionError( - 'This template was compiled with Cheetah version' - ' %s. Templates compiled before version %s must be recompiled.'%( - __CHEETAH_version__, RequiredCheetahVersion)) - -################################################## -## CLASSES - -class kickstart(Template): - - ################################################## - ## CHEETAH GENERATED METHODS - - - def __init__(self, *args, **KWs): - - super(kickstart, self).__init__(*args, **KWs) - if not self._CHEETAH__instanceInitialized: - cheetahKWArgs = {} - allowedKWs = 'searchList namespaces filter filtersLib errorCatcher'.split() - for k,v in KWs.items(): - if k in allowedKWs: cheetahKWArgs[k] = v - self._initCheetahInstance(**cheetahKWArgs) - - - def respond(self, trans=None): - - - - ## CHEETAH: main method generated for this template - if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)): - trans = self.transaction # is None unless self.awake() was called - if not trans: - trans = DummyTransaction() - _dummyTrans = True - else: _dummyTrans = False - write = trans.response().write - SL = self._CHEETAH__searchList - _filter = self._CHEETAH__currentFilter - - ######################################## - ## START - generated method body - - write(u'''# -# Do not Edit! Generated by: -# kickstarter.py -# - -lang ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Language",True) # u'${metadata.Language}' on line 6, col 6 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Language}')) # from line 6, col 6. - write(u''' -keyboard ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Keyboard",True) # u'${metadata.Keyboard}' on line 7, col 10 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Keyboard}')) # from line 7, col 10. - write(u''' -timezone --utc ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Timezone",True) # u'${metadata.Timezone}' on line 8, col 16 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Timezone}')) # from line 8, col 16. - write(u''' -auth --useshadow --enablemd5 -''') - if VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Part",True) == "": # generated from line 10, col 1 - write(u'''part / --size ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.PartSize",True) # u'${metadata.PartSize}' on line 11, col 15 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.PartSize}')) # from line 11, col 15. - write(u''' --ondisk sda --fstype=ext3 -''') - else: # generated from line 12, col 1 - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Part",True) # u'${metadata.Part}' on line 13, col 1 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Part}')) # from line 13, col 1. - write(u''' -''') - write(u'''rootpw ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.RootPass",True) # u'${metadata.RootPass}' on line 15, col 8 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.RootPass}')) # from line 15, col 8. - write(u''' -xconfig --startxonboot -bootloader --timeout=''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.BootloaderTimeout",True) # u'${metadata.BootloaderTimeout}' on line 17, col 22 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.BootloaderTimeout}')) # from line 17, col 22. - write(u''' --append="''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.BootloaderAppend",True) # u'${metadata.BootloaderAppend}' on line 17, col 62 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.BootloaderAppend}')) # from line 17, col 62. - write(u'''" -desktop --autologinuser=''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.DefaultUser",True) # u'${metadata.DefaultUser}' on line 18, col 25 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.DefaultUser}')) # from line 18, col 25. - write(u''' --defaultdesktop=''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Desktop",True) # u'${metadata.Desktop}' on line 18, col 67 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Desktop}')) # from line 18, col 67. - write(u''' -user --name ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.DefaultUser",True) # u'${metadata.DefaultUser}' on line 19, col 13 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.DefaultUser}')) # from line 19, col 13. - write(u''' --groups audio,video --password ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.DefaultUserPass",True) # u'${metadata.DefaultUserPass}' on line 19, col 70 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.DefaultUserPass}')) # from line 19, col 70. - write(u''' - -''') - save = "" - if VFSL([locals()]+SL+[globals(), __builtin__],"metadata.SaveRepos",True): # generated from line 22, col 1 - save = "--save" - for r in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Repos",True): # generated from line 25, col 1 - for rr in VFSL([locals()]+SL+[globals(), __builtin__],"repos",True): # generated from line 26, col 1 - if VFSL([locals()]+SL+[globals(), __builtin__],"rr.Name",True) == VFSL([locals()]+SL+[globals(), __builtin__],"r",True): # generated from line 27, col 1 - write(u'''repo --name=''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"r",True) # u'${r}' on line 28, col 15 - if _v is not None: write(_filter(_v, rawExpr=u'${r}')) # from line 28, col 15. - write(u''' --baseurl=''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"rr.Url",True) # u'${rr.Url}' on line 28, col 30 - if _v is not None: write(_filter(_v, rawExpr=u'${rr.Url}')) # from line 28, col 30. - write(u''' ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"save",True) # u'${save}' on line 28, col 40 - if _v is not None: write(_filter(_v, rawExpr=u'${save}')) # from line 28, col 40. - write(u''' -''') - write(u''' - -''') - if VFSL([locals()]+SL+[globals(), __builtin__],"metadata.PackageArgs",True) != "": # generated from line 34, col 1 - write(u'''%packages ''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.PackageArgs",True) # u'${metadata.PackageArgs}' on line 35, col 11 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.PackageArgs}')) # from line 35, col 11. - write(u''' -''') - else: # generated from line 36, col 1 - write(u'''%packages -''') - write(u''' -''') - for g in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Groups",True): # generated from line 40, col 1 - write(u'''@''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"g",True) # u'${g}' on line 41, col 2 - if _v is not None: write(_filter(_v, rawExpr=u'${g}')) # from line 41, col 2. - write(u''' -''') - write(u''' - -''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Kernel",True) # u'$metadata.Kernel' on line 45, col 1 - if _v is not None: write(_filter(_v, rawExpr=u'$metadata.Kernel')) # from line 45, col 1. - write(u''' - -''') - for e in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.ExtraPackages",True): # generated from line 47, col 1 - _v = VFSL([locals()]+SL+[globals(), __builtin__],"e",True) # u'${e}' on line 48, col 1 - if _v is not None: write(_filter(_v, rawExpr=u'${e}')) # from line 48, col 1. - write(u''' -''') - for e in VFSL([locals()]+SL+[globals(), __builtin__],"metadata.RemovePackages",True): # generated from line 50, col 1 - write(u'''-''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"e",True) # u'${e}' on line 51, col 2 - if _v is not None: write(_filter(_v, rawExpr=u'${e}')) # from line 51, col 2. - write(u''' -''') - write(u'''%end - -%post -''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.Post",True) # u'${metadata.Post}' on line 56, col 1 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.Post}')) # from line 56, col 1. - write(u''' -%end - -%post --nochroot -''') - _v = VFSL([locals()]+SL+[globals(), __builtin__],"metadata.NoChroot",True) # u'${metadata.NoChroot}' on line 60, col 1 - if _v is not None: write(_filter(_v, rawExpr=u'${metadata.NoChroot}')) # from line 60, col 1. - write(u''' -%end -''') - - ######################################## - ## END - generated method body - - return _dummyTrans and trans.response().getvalue() or "" - - ################################################## - ## CHEETAH GENERATED ATTRIBUTES - - - _CHEETAH__instanceInitialized = False - - _CHEETAH_version = __CHEETAH_version__ - - _CHEETAH_versionTuple = __CHEETAH_versionTuple__ - - _CHEETAH_genTime = __CHEETAH_genTime__ - - _CHEETAH_genTimestamp = __CHEETAH_genTimestamp__ - - _CHEETAH_src = __CHEETAH_src__ - - _CHEETAH_srcLastModified = __CHEETAH_srcLastModified__ - - _mainCheetahMethod_for_kickstart= 'respond' - -## END CLASS DEFINITION - -if not hasattr(kickstart, '_initCheetahAttributes'): - templateAPIClass = getattr(kickstart, '_CHEETAH_templateClass', Template) - templateAPIClass._addCheetahPlumbingCodeToClass(kickstart) - - -# CHEETAH was developed by Tavis Rudd and Mike Orr -# with code, advice and input from many other volunteers. -# For more information visit http://www.CheetahTemplate.org/ - -################################################## -## if run from command line: -if __name__ == '__main__': - from Cheetah.TemplateCmdLineIface import CmdLineIface - CmdLineIface(templateObj=kickstart()).run() - - diff --git a/kickstart.tmpl b/kickstart.tmpl index 8a6fed3..12a4cfc 100644 --- a/kickstart.tmpl +++ b/kickstart.tmpl @@ -6,7 +6,6 @@ lang ${metadata.Language} keyboard ${metadata.Keyboard} timezone --utc ${metadata.Timezone} -auth --useshadow --enablemd5 #if $metadata.Part == "" part / --size ${metadata.PartSize} --ondisk sda --fstype=ext3 #else @@ -15,7 +14,9 @@ ${metadata.Part} rootpw ${metadata.RootPass} xconfig --startxonboot bootloader --timeout=${metadata.BootloaderTimeout} --append="${metadata.BootloaderAppend}" +#if $metadata.has_key("Desktop") desktop --autologinuser=${metadata.DefaultUser} --defaultdesktop=${metadata.Desktop} +#end if user --name ${metadata.DefaultUser} --groups audio,video --password ${metadata.DefaultUserPass} #set $save = "" diff --git a/kickstarter.py b/kickstarter.py index b1cad01..92890c5 100644 --- a/kickstarter.py +++ b/kickstarter.py @@ -41,7 +41,7 @@ class KSWriter(): if plat.has_key(l) and plat[l]: full = full + plat[l] if img.has_key(l) and img[l]: - full = full + img[l] + fll = full + img[l] lvald[l] = set(full) #print full conf.update(lvald) @@ -71,8 +71,20 @@ class KSWriter(): conf['NoChroot'] = nochrootscript return conf - def process_files(self, meta, r): - nameSpace = {'metadata': meta, 'repos': r} + def process_files(self, meta, repos): + new_repos = [] + #print repos + #print meta + if meta.has_key("Architecture") and meta['Architecture']: + for repo in repos: + r = {} + r['Name'] = repo['Name'] + r['Url'] = repo['Url'].replace("@ARCH@", meta['Architecture']) + new_repos.append(r) + else: + new_repos = repos + + nameSpace = {'metadata': meta, 'repos': new_repos} t = kickstart(searchList=[nameSpace]) a = str(t) if meta.has_key('FileName') and meta['FileName']: diff --git a/repos.yaml b/repos.yaml index f73b0ed..1346242 100644 --- a/repos.yaml +++ b/repos.yaml @@ -1,9 +1,9 @@ Repositories: - Name: meego-core-1.0 - Url: http://repo.meego.com/MeeGo/releases/1.0/core/repos/ia32/packages + Url: http://repo.meego.com/MeeGo/releases/1.0/core/repos/@ARCH@/packages - Name: meego-extra-1.0 - Url: http://repo.meego.com/MeeGo/releases/1.0/extra/repos/ia32/packages + Url: http://repo.meego.com/MeeGo/releases/1.0/extra/repos/@ARCH@/packages - Name: meego-netbook-1.0 - Url: http://repo.meego.com/MeeGo/releases/1.0/netbook/repos/ia32/packages + Url: http://repo.meego.com/MeeGo/releases/1.0/netbook/repos/@ARCH@/packages - Name: adobe Url: http://linuxdownload.adobe.com/linux/i386/ -- 2.7.4