Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 47534 Details for
Bug 76542
Add kernel/genkernel building support to embedded target
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
One Patch to rule them all
embedded-everything.patch (text/plain), 7.19 KB, created by
David Bryson (RETIRED)
on 2005-01-03 16:36:14 UTC
(
hide
)
Description:
One Patch to rule them all
Filename:
MIME Type:
Creator:
David Bryson (RETIRED)
Created:
2005-01-03 16:36:14 UTC
Size:
7.19 KB
patch
obsolete
>Index: embedded_target.py >=================================================================== >RCS file: /var/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v >retrieving revision 1.6 >diff -u -B -r1.6 embedded_target.py >--- embedded_target.py 17 Dec 2004 21:18:06 -0000 1.6 >+++ embedded_target.py 4 Jan 2005 00:34:07 -0000 >@@ -1,6 +1,6 @@ >-# Copyright 1999-2004 Gentoo Foundation >-# Distributed under the terms of the GNU General Public License v2 >-# $Header: /var/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.6 2004/12/17 21:18:06 wolf31o2 Exp $ >+# Distributed under the GNU General Public License version 2 >+# Copyright 2003-2004 Gentoo Technologies, Inc. >+# $Header: /home/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.1 2004/05/17 01:21:17 zhen Exp $ > > """ > This class works like a 'stage3'. A stage2 tarball is unpacked, but instead >@@ -22,11 +21,28 @@ > def __init__(self,spec,addlargs): > self.required_values=[] > self.valid_values=[] >- self.valid_values.extend(["embedded/empty","embedded/rm","embedded/unmerge","embedded/runscript","embedded/mergeroot","embedded/packages","embedded/use","embedded/fs-type"]) >+ self.valid_values.extend(["embedded/empty","embedded/rm","embedded/unmerge","embedded/fs-prepare","embedded/fs-finish","embedded/mergeroot","embedded/packages","embedded/use","embedded/fs-type","boot/kernel"]) > > if addlargs.has_key("embedded/fs-type"): > self.valid_values.append("embedded/fs-ops") > >+ # this kernel code is also from livecd stage2 >+ >+ if addlargs.has_key("boot/kernel"): >+ if type(addlargs["boot/kernel"]) == types.StringType: >+ loopy=[addlargs["boot/kernel"]] >+ else: >+ loopy=addlargs["boot/kernel"] >+ >+ for x in loopy: >+ self.required_values.append("boot/kernel/"+x+"/sources") >+ self.required_values.append("boot/kernel/"+x+"/config") >+ self.valid_values.append("boot/kernel/"+x+"/extraversion") >+ self.valid_values.append("boot/kernel/"+x+"/packages") >+ self.valid_values.append("boot/kernel/"+x+"/use") >+ self.valid_values.append("boot/kernel/"+x+"/gk_kernargs") >+ self.valid_values.append("boot/kernel/"+x+"/gk_action") >+ > generic_stage_target.__init__(self,spec,addlargs) > self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image" > >@@ -59,8 +75,91 @@ > cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed") > except CatalystError: > self.unbind() >- raise CatalystError, "embedded filesystem created aborting due to error." >+ raise CatalystError, "embedded filesystem creation aborting due to error." > >+ # this code is mostly duplication from the livecd stage2 module >+ def pre_build_fs(self): >+ try: >+ if self.settings.has_key("embedded/fs-prepare"): >+ cmd("/bin/bash "+self.settings["embedded/fs-prepare"], "pre filesystem packaging cause an error in execution") >+ except CatalystError: >+ self.unbind() >+ raise CatalystError, "embedded pre filesystem creation script aborting due to error" >+ >+ def post_build_fs(self): >+ try: >+ if self.settings.has_key("embedded/fs-finish"): >+ cmd("/bin/bash "+self.settings["embedded/fs-finish"], "pre filesystem packaging cause an error in execution") >+ except CatalystError: >+ self.unbind() >+ raise CatalystError, "embedded post filesystem creation script aborting due to error" >+ >+ def build_kernel(self): >+ mynames=self.settings["boot/kernel"] >+ if type(mynames)==types.StringType: >+ mynames=[mynames] >+ args=[] >+ args.append(`len(mynames)`) >+ >+ for kname in mynames: >+ args.append(kname) >+ args.append(self.settings["boot/kernel/"+kname+"/sources"]) >+ try: >+ if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]): >+ self.unbind() >+ raise CatalystError, "Can't find kernel config: " \ >+ +self.settings["boot/kernel/"+kname+"/config"] >+ >+ except TypeError: >+ raise CatalystError, "Required value boot/kernel/config not specified" >+ >+ if self.settings.has_key("boot/kernel/"+kname+"/extraversion"): >+ args.append(self.settings["boot/kernel/"+kname+"/extraversion"]) >+ else: >+ args.append("NULL_VALUE") >+ if self.settings.has_key("boot/kernel/"+kname+"/gk_action"): >+ args.append(self.settings["boot/kernel/"+kname+"/gk_action"]) >+ >+ for extra in ["use","packages","gk_kernargs"]: >+ if self.settings.has_key("boot/kernel/"+kname+"/"+extra): >+ myex=self.settings["boot/kernel/"+kname+"/"+extra] >+ if type(myex)==types.ListType: >+ myex=string.join(myex) >+ try: >+ myf=open(self.settings["chroot_path"]+"/var/tmp/"+kname+"."+extra,"w") >+ except: >+ self.unbind() >+ raise CatalystError,"Couldn't create file /var/tmp/"+kname+"."+extra+" in chroot." >+ if extra=="use": >+ myf.write("export USE=\""+myex+"\"\n") >+ if extra=="gk_kernargs": >+ myf.write("export clst_embedded_gk_kernargs=\""+myex+"\"\n") >+ else: >+ myf.write(myex+"\n") >+ myf.close() >+ try: >+ cmd("cp "+self.settings["boot/kernel/"+kname+"/config"]+" "+ \ >+ self.settings["chroot_path"]+"/var/tmp/"+kname+".config", \ >+ "Couldn't copy kernel config: "+self.settings["boot/kernel/"+kname+"/config"]) >+ >+ except CatalystError: >+ self.unbind() >+ >+ # If we need to pass special options to the bootloader >+ # for this kernel put them into the environment. >+ if self.settings.has_key("boot/kernel/"+kname+"/kernelopts"): >+ myopts=self.settings["boot/kernel/"+kname+"/kernelopts"] >+ >+ if type(myopts) != types.StringType: >+ myopts = string.join(myopts) >+ os.putenv(kname+"_kernelopts", myopts) >+ >+ else: >+ os.putenv(kname+"_kernelopts", "") >+ >+ # execute the script that builds the kernel >+ cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh kernel "+list_bashify(args), >+ "Runscript kernel build failed") > > def run_local(self): > mypackages=list_bashify(self.settings["embedded/packages"]) >@@ -70,9 +169,16 @@ > except CatalystError: > self.unbind() > raise CatalystError, "Embedded build aborted due to error." >+ >+ if self.settings.has_key("boot/kernel"): >+ self.build_kernel() >+ > self.unmerge() > self.clean() >+ >+ self.pre_build_fs() > self.build_fs() >+ self.post_build_fs() > > def register(foo): > foo.update({"embedded":embedded_target})
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 76542
:
47504
|
47505
|
47506
|
47534
|
48237