Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 47624 Details for
Bug 70663
Separate specific target logic out of the generic targets modules
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Separation of class logic - making catalyst more modular
modular.patch (text/plain), 15.41 KB, created by
Eric Edgar (RETIRED)
on 2005-01-04 11:03:45 UTC
(
hide
)
Description:
Separation of class logic - making catalyst more modular
Filename:
MIME Type:
Creator:
Eric Edgar (RETIRED)
Created:
2005-01-04 11:03:45 UTC
Size:
15.41 KB
patch
obsolete
>diff -urN catalyst.orig/modules/embedded_target.py catalyst/modules/embedded_target.py >--- catalyst.orig/modules/embedded_target.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/embedded_target.py 2005-01-04 10:28:24.228338380 -0600 >@@ -74,6 +74,15 @@ > self.clean() > self.build_fs() > >+ def set_action_sequence(self): >+ self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ >+ "setup_environment","run_local","unbind","capture"] >+ >+ def set_use(self): >+ self.settings["use"]=self.settings["embedded/use"] >+ def set_stage_path(self): >+ self.settings["stage_path"]=self.settings["chroot_path"]+"/tmp/mergeroot" >+ print "embedded stage path is "+self.settings["stage_path"] > def register(foo): > foo.update({"embedded":embedded_target}) > return foo >diff -urN catalyst.orig/modules/generic_stage_target.py catalyst/modules/generic_stage_target.py >--- catalyst.orig/modules/generic_stage_target.py 2004-12-29 09:25:46.000000000 -0600 >+++ catalyst/modules/generic_stage_target.py 2005-01-04 10:28:24.232337779 -0600 >@@ -98,31 +98,16 @@ > self.settings[envvar] = os.environ[envvar] > > # define all of our core variables >- self.settings["target_profile"]=self.settings["profile"] >- self.settings["target_subpath"]=self.settings["rel_type"]+"/"+self.settings["target"]+\ >- "-"+self.settings["subarch"]+"-"+self.settings["version_stamp"] >- >- st=self.settings["storedir"] >- self.settings["snapshot_path"]=st+"/snapshots/portage-"+self.settings["snapshot"]+".tar.bz2" >- if self.settings["target"] in ["grp","tinderbox"]: >- # grp creates a directory of packages and sources rather than a compressed tarball >- self.settings["target_path"]=st+"/builds/"+self.settings["target_subpath"] >- self.settings["source_path"]=st+"/builds/"+self.settings["source_subpath"]+".tar.bz2" >- >- elif self.settings["target"] == "livecd-stage2": >- self.settings["source_path"]=st+"/tmp/"+self.settings["source_subpath"] >- self.settings["cdroot_path"]=st+"/builds/"+self.settings["target_subpath"] >- >- elif self.settings["target"] == "netboot": >- self.settings["target_path"]=st+"/builds/"+self.settings["target_subpath"] >- self.settings["source_path"]=st+"/builds/"+self.settings["source_subpath"]+".tar.bz2" >- >- else: >- self.settings["target_path"]=st+"/builds/"+self.settings["target_subpath"]+".tar.bz2" >- self.settings["source_path"]=st+"/builds/"+self.settings["source_subpath"]+".tar.bz2" >- >- self.settings["chroot_path"]=st+"/tmp/"+self.settings["target_subpath"] >- >+ self.set_target_profile() >+ self.set_target_subpath() >+ self.set_snapshot_path() >+ self.set_target_path() >+ self.set_source_path() >+ self.set_chroot_path() >+ self.set_action_sequence() >+ self.set_use() >+ self.set_stage_path() >+ > # this next line checks to make sure that the specified variables exist on disk. > file_locate(self.settings,["source_path","snapshot_path","distdir"],expand=0) > >@@ -134,14 +119,11 @@ > self.mounts=[ "/proc","/dev","/dev/pts","/usr/portage/distfiles" ] > self.mountmap={"/proc":"/proc", "/dev":"/dev", "/dev/pts":"/dev/pts",\ > "/usr/portage/distfiles":self.settings["distdir"]} >- >- if self.settings["target"]=="grp": >- self.mounts.append("/tmp/grp") >- self.mountmap["/tmp/grp"]=self.settings["target_path"] >+ self.set_mounts() > > # configure any user specified options (either in catalyst.conf or on the cmdline) > if self.settings.has_key("PKGCACHE"): >- self.settings["pkgcache_path"]=st+"/packages/"+self.settings["target_subpath"] >+ self.settings["pkgcache_path"]=self.settings["storedir"]+"/packages/"+self.settings["target_subpath"] > self.mounts.append("/usr/portage/packages") > self.mountmap["/usr/portage/packages"]=self.settings["pkgcache_path"] > >@@ -158,7 +140,39 @@ > self.mountmap["/var/tmp/ccache"]=ccdir > # for the chroot: > os.environ["CCACHE_DIR"]="/var/tmp/ccache" >- >+ >+ def set_target_profile(self): >+ self.settings["target_profile"]=self.settings["profile"] >+ >+ def set_target_subpath(self): >+ self.settings["target_subpath"]=self.settings["rel_type"]+"/"+self.settings["target"]+\ >+ "-"+self.settings["subarch"]+"-"+self.settings["version_stamp"] >+ >+ def set_target_path(self): >+ self.settings["target_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+".tar.bz2" >+ >+ def set_source_path(self): >+ self.settings["source_path"]=self.settings["storedir"]+"/builds/"+self.settings["source_subpath"]+".tar.bz2" >+ >+ def set_snapshot_path(self): >+ self.settings["snapshot_path"]=self.settings["storedir"]+"/snapshots/portage-"+self.settings["snapshot"]+".tar.bz2" >+ >+ def set_chroot_path(self): >+ self.settings["chroot_path"]=self.settings["storedir"]+"/tmp/"+self.settings["target_subpath"] >+ >+ def set_action_sequence(self): >+ #Default action sequence for run method >+ self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ >+ "setup_environment","run_local","preclean","unbind","clean","capture"] >+ >+ def set_use(self): >+ pass >+ >+ def set_stage_path(self): >+ self.settings["stage_path"]=self.settings["chroot_path"] >+ def set_mounts(self): >+ pass >+ > def mount_safety_check(self): > mypath=self.settings["chroot_path"] > >@@ -193,7 +207,7 @@ > print "Setting up directories..." > self.mount_safety_check() > >- if not self.settings["target"] == "livecd-stage2": >+ if os.path.exists(self.settings["chroot_path"]): > cmd("rm -rf "+self.settings["chroot_path"],\ > "Could not remove existing directory: "+self.settings["chroot_path"]) > >@@ -301,36 +315,22 @@ > myf.write("# Please consult /etc/make.conf.example for a more detailed example\n") > myf.write('CFLAGS="'+self.settings["CFLAGS"]+'"\n') > myf.write('CHOST="'+self.settings["CHOST"]+'"\n') >- > # figure out what our USE vars are for building > myusevars=[] > if self.settings.has_key("HOSTUSE"): > myusevars.extend(self.settings["HOSTUSE"]) >- >- if self.settings["target"]=="grp": >- myusevars.append("bindist") >- myusevars.extend(self.settings["grp/use"]) >- myf.write('USE="'+string.join(myusevars)+'"\n') >- >- elif self.settings["target"]=="tinderbox": >- myusevars.extend(self.settings["tinderbox/use"]) >- myf.write('USE="'+string.join(myusevars)+'"\n') >- >- elif self.settings["target"]=="livecd-stage1": >- myusevars.extend(self.settings["livecd/use"]) >- myf.write('USE="'+string.join(myusevars)+'"\n') >- >- elif self.settings["target"]=="embedded": >- myusevars.extend(self.settings["embedded/use"]) >+ >+ if self.settings.has_key("use"): >+ myusevars.extend(self.settings["use"]) > myf.write('USE="'+string.join(myusevars)+'"\n') >- >+ > if self.settings.has_key("CXXFLAGS"): > myf.write('CXXFLAGS="'+self.settings["CXXFLAGS"]+'"\n') > > else: > myf.write('CXXFLAGS="${CFLAGS}"\n') > myf.close() >- >+ > def clean(self): > destpath=self.settings["chroot_path"] > >@@ -381,17 +381,8 @@ > > print "Creating stage tarball..." > >- if self.settings["target"]=="stage1": >- cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["chroot_path"]+\ >- "/tmp/stage1root .","Couldn't create stage tarball") >- >- elif self.settings["target"]=="embedded": >- cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["chroot_path"]+\ >- "/tmp/mergeroot .","Couldn't create stage tarball") >- >- else: >- cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["chroot_path"]+\ >- " .","Couldn't create stage tarball") >+ cmd("tar cjf "+self.settings["target_path"]+" -C "+self.settings["stage_path"]+\ >+ " .","Couldn't create stage tarball") > > def run_local(self): > try: >@@ -401,17 +392,8 @@ > except CatalystError: > self.unbind() > raise CatalystError,"Stage build aborting due to error." >- >- def run(self): >- self.dir_setup() >- self.unpack_and_bind() >- try: >- self.chroot_setup() >- >- except: >- self.unbind() >- raise >- >+ >+ def setup_environment(self): > # modify the current environment. This is an ugly hack that should be fixed. We need this > # to use the os.system() call since we can't specify our own environ: > for x in self.settings.keys(): >@@ -423,24 +405,16 @@ > os.environ[varname]=self.settings[x] > elif type(self.settings[x])==types.ListType: > os.environ[varname]=string.join(self.settings[x]) >- >- self.run_local() >- if self.settings["target"] in ["stage1","stage2","stage3","livecd-stage1","livecd-stage2"]: >- self.preclean() >- >- if self.settings["target"] in ["livecd-stage2"]: >- self.unmerge() >- >- # unbind everything here so that we can clean() >- self.unbind() >- >- if self.settings["target"] in ["stage1","stage2","stage3","livecd-stage1","livecd-stage2"]: >- # clean is for removing things after bind-mounts are >- # unmounted (general file removal and cleanup) >- self.clean() >- >- if self.settings["target"] in ["stage1","stage2","stage3","embedded"]: >- self.capture() >+ >+ def run(self): > >- if self.settings["target"] in ["livecd-stage2"]: >- self.cdroot_setup() >+ for x in self.settings["action_sequence"]: >+ print "Running action sequence: "+x >+ if x == 'chroot_setup': >+ try: >+ self.chroot_setup() >+ except: >+ self.unbind() >+ raise >+ else: >+ apply(getattr(self,x)) >diff -urN catalyst.orig/modules/grp_target.py catalyst/modules/grp_target.py >--- catalyst.orig/modules/grp_target.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/grp_target.py 2005-01-04 10:28:24.234337479 -0600 >@@ -28,7 +28,10 @@ > self.required_values.append("grp/"+x+"/type") > > generic_stage_target.__init__(self,spec,addlargs) >- >+ >+ def set_target_path(self): >+ self.settings["target_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"] >+ > def run_local(self): > for pkgset in self.settings["grp"]: > # example call: "grp.sh run pkgset cd1 xmms vim sys-apps/gleep" >@@ -42,6 +45,18 @@ > self.unbind() > raise CatalystError,"GRP build aborting due to error." > >+ def set_action_sequence(self): >+ self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ >+ "setup_environment","run_local","unbind"] >+ >+ def set_use(self): >+ self.settings["use"]=self.settings["grp/use"] >+ self.settings["use"].append("bindlist") >+ >+ def set_mounts(self): >+ self.mounts.append("/tmp/grp") >+ self.mountmap["/tmp/grp"]=self.settings["target_path"] >+ > def register(foo): > foo.update({"grp":grp_target}) > return foo >diff -urN catalyst.orig/modules/livecd_stage1_target.py catalyst/modules/livecd_stage1_target.py >--- catalyst.orig/modules/livecd_stage1_target.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/livecd_stage1_target.py 2005-01-04 10:29:26.413003707 -0600 >@@ -24,6 +24,12 @@ > except CatalystError: > self.unbind() > raise CatalystError,"LiveCD stage1 build aborting due to error." >+ def set_action_sequence(self): >+ self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ >+ "setup_environment","run_local","preclean","unbind","clean"] >+ >+ def set_use(self): >+ self.settings["use"]=self.settings["livecd/use"] > > def register(foo): > foo.update({"livecd-stage1":livecd_stage1_target}) >diff -urN catalyst.orig/modules/livecd_stage2_target.py catalyst/modules/livecd_stage2_target.py >--- catalyst.orig/modules/livecd_stage2_target.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/livecd_stage2_target.py 2005-01-04 10:28:24.238336879 -0600 >@@ -43,6 +43,7 @@ > "gamecd/conf"]) > > generic_stage_target.__init__(self,spec,addlargs) >+ self.set_cdroot_path() > file_locate(self.settings, ["livecd/cdtar","livecd/archscript","livecd/runscript"]) > if self.settings.has_key("portage_confdir"): > file_locate(self.settings,["portage_confdir"],expand=0) >@@ -85,7 +86,31 @@ > if retval!=0: > self.unbind() > raise CatalystError,"Couldn't bind mount "+src >- >+ >+ def set_target_path(self): >+ pass >+ #self.settings["target_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"] >+ >+ def set_source_path(self): >+ self.settings["source_path"]=self.settings["storedir"]+"/tmp/"+self.settings["source_subpath"] >+ >+ def set_cdroot_path(self): >+ self.settings["cdroot_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"] >+ >+ def dir_setup(self): >+ print "Setting up directories..." >+ self.mount_safety_check() >+ >+ if not os.path.exists(self.settings["chroot_path"]+"/tmp"): >+ os.makedirs(self.settings["chroot_path"]+"/tmp") >+ >+ if not os.path.exists(self.settings["chroot_path"]): >+ os.makedirs(self.settings["chroot_path"]) >+ >+ if self.settings.has_key("PKGCACHE"): >+ if not os.path.exists(self.settings["pkgcache_path"]): >+ os.makedirs(self.settings["pkgcache_path"]) >+ > def unmerge(self): > if self.settings.has_key("AUTORESUME") \ > and os.path.exists(self.settings["chroot_path"]+"/tmp/.clst_unmerge"): >@@ -300,6 +325,10 @@ > if self.settings.has_key("livecd/root_overlay"): > cmd("rsync -a "+self.settings["livecd/root_overlay"]+"/* "+\ > self.settings["chroot_path"], "livecd/root_overlay copy failed.") >+ def set_action_sequence(self): >+ self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ >+ "setup_environment","run_local","preclean","unmerge",\ >+ "unbind","clean","cdroot_setup"] > > def register(foo): > foo.update({"livecd-stage2":livecd_stage2_target}) >diff -urN catalyst.orig/modules/netboot.py catalyst/modules/netboot.py >--- catalyst.orig/modules/netboot.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/netboot.py 2005-01-04 10:28:24.240336579 -0600 >@@ -53,6 +53,9 @@ > if not os.environ.has_key(envvar) and not addlargs.has_key(envvar): > self.settings[envvar] = "-Os -pipe" > >+ def set_target_path(self): >+ self.settings["target_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"] >+ > def run_local(self): > # setup our chroot > try: >@@ -139,6 +142,10 @@ > print "netboot: build finished !" > > >+ def set_action_sequence(self): >+ self.settings["action_sequence"]=["dir_setup","unpack_and_bind","chroot_setup",\ >+ "setup_environment","run_local","unbind"] >+ > def register(foo): > foo.update({"netboot":netboot_target}) > return foo >diff -urN catalyst.orig/modules/stage1_target.py catalyst/modules/stage1_target.py >--- catalyst.orig/modules/stage1_target.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/stage1_target.py 2005-01-04 10:28:24.241336429 -0600 >@@ -14,6 +14,10 @@ > self.required_values=[] > self.valid_values=[] > generic_stage_target.__init__(self,spec,addlargs) >+ >+ def set_stage_path(self): >+ self.settings["stage_path"]=self.settings["chroot_path"]+"/tmp/stage1root" >+ print "stage1 stage path is "+self.settings["stage_path"] > > def register(foo): > foo.update({"stage1":stage1_target}) >diff -urN catalyst.orig/modules/tinderbox_target.py catalyst/modules/tinderbox_target.py >--- catalyst.orig/modules/tinderbox_target.py 2004-12-17 15:18:06.000000000 -0600 >+++ catalyst/modules/tinderbox_target.py 2005-01-04 10:28:24.242336279 -0600 >@@ -26,7 +26,11 @@ > except CatalystError: > self.unbind() > raise CatalystError,"Tinderbox aborting due to error." >- >+ >+ def set_target_path(self): >+ self.settings["target_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"] >+ def set_use(self): >+ self.settings["use"]=self.settings["tinderbox/use"] > def register(foo): > foo.update({"tinderbox":tinderbox_target}) > return foo
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 70663
:
43653
|
43654
|
43655
|
43662
|
43664
|
43729
|
47598
| 47624