Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 76542 | Differences between
and this patch

Collapse All | Expand All

(-)embedded_target.py (-5 / +93 lines)
Lines 1-6 Link Here
1
# Copyright 1999-2004 Gentoo Foundation
1
# Distributed under the GNU General Public License version 2
2
# Distributed under the terms of the GNU General Public License v2
2
# Copyright 2003-2004 Gentoo Technologies, Inc.
3
# $Header: /var/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.6 2004/12/17 21:18:06 wolf31o2 Exp $
3
# $Header: /home/cvsroot/gentoo/src/catalyst/modules/embedded_target.py,v 1.1 2004/05/17 01:21:17 zhen Exp $
4
4
5
"""
5
"""
6
This class works like a 'stage3'.  A stage2 tarball is unpacked, but instead
6
This class works like a 'stage3'.  A stage2 tarball is unpacked, but instead
Lines 22-32 Link Here
22
    def __init__(self,spec,addlargs):
21
    def __init__(self,spec,addlargs):
23
        self.required_values=[]
22
        self.required_values=[]
24
        self.valid_values=[]
23
        self.valid_values=[]
25
        self.valid_values.extend(["embedded/empty","embedded/rm","embedded/unmerge","embedded/runscript","embedded/mergeroot","embedded/packages","embedded/use","embedded/fs-type"])
24
        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"])
26
25
27
        if addlargs.has_key("embedded/fs-type"):
26
        if addlargs.has_key("embedded/fs-type"):
28
            self.valid_values.append("embedded/fs-ops")
27
            self.valid_values.append("embedded/fs-ops")
29
28
29
        # this kernel code is also from livecd stage2
30
31
        if addlargs.has_key("boot/kernel"):
32
            if type(addlargs["boot/kernel"]) == types.StringType:
33
	       	loopy=[addlargs["boot/kernel"]]
34
            else:
35
	       	loopy=addlargs["boot/kernel"]
36
		
37
                for x in loopy:
38
                    self.required_values.append("boot/kernel/"+x+"/sources")
39
                    self.required_values.append("boot/kernel/"+x+"/config")
40
                    self.valid_values.append("boot/kernel/"+x+"/extraversion")
41
                    self.valid_values.append("boot/kernel/"+x+"/packages")
42
                    self.valid_values.append("boot/kernel/"+x+"/use")
43
                    self.valid_values.append("boot/kernel/"+x+"/gk_kernargs")
44
		    self.valid_values.append("boot/kernel/"+x+"/gk_action")
45
30
        generic_stage_target.__init__(self,spec,addlargs)
46
        generic_stage_target.__init__(self,spec,addlargs)
31
	self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image"	
47
	self.settings["image_path"]=self.settings["storedir"]+"/builds/"+self.settings["target_subpath"]+"/image"	
32
               
48
               
Lines 59-66 Link Here
59
                cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed")
75
                cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh package","filesystem packaging failed")
60
        except CatalystError:
76
        except CatalystError:
61
                self.unbind()
77
                self.unbind()
62
                raise CatalystError, "embedded filesystem created aborting due to error."
78
                raise CatalystError, "embedded filesystem creation aborting due to error."
63
79
80
    def build_kernel(self):
81
        mynames=self.settings["boot/kernel"]
82
        if type(mynames)==types.StringType:
83
            mynames=[mynames]
84
        args=[]
85
        args.append(`len(mynames)`)
86
		
87
        for kname in mynames:
88
            args.append(kname)
89
            args.append(self.settings["boot/kernel/"+kname+"/sources"])
90
            try:
91
                if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]):
92
                    self.unbind()
93
                    raise CatalystError, "Can't find kernel config: " \
94
                          +self.settings["boot/kernel/"+kname+"/config"]
95
96
            except TypeError:
97
                raise CatalystError, "Required value boot/kernel/config not specified"
98
			
99
            if self.settings.has_key("boot/kernel/"+kname+"/extraversion"):
100
                            args.append(self.settings["boot/kernel/"+kname+"/extraversion"])
101
            else:
102
                args.append("NULL_VALUE")
103
	    if self.settings.has_key("boot/kernel/"+kname+"/gk_action"):
104
	    		args.append(self.settings["boot/kernel/"+kname+"/gk_action"])
105
			
106
            for extra in ["use","packages","gk_kernargs"]:
107
                if self.settings.has_key("boot/kernel/"+kname+"/"+extra):
108
                    myex=self.settings["boot/kernel/"+kname+"/"+extra]
109
                    if type(myex)==types.ListType:
110
                        myex=string.join(myex)
111
                    try:
112
                        myf=open(self.settings["chroot_path"]+"/var/tmp/"+kname+"."+extra,"w")
113
                    except:
114
                        self.unbind()
115
                        raise CatalystError,"Couldn't create file /var/tmp/"+kname+"."+extra+" in chroot."
116
                    if extra=="use":
117
                        myf.write("export USE=\""+myex+"\"\n")
118
                    if extra=="gk_kernargs":
119
                        myf.write("export clst_embedded_gk_kernargs=\""+myex+"\"\n")
120
		    else:
121
                        myf.write(myex+"\n")
122
                    myf.close()
123
            try:
124
                cmd("cp "+self.settings["boot/kernel/"+kname+"/config"]+" "+ \
125
                    self.settings["chroot_path"]+"/var/tmp/"+kname+".config", \
126
                    "Couldn't copy kernel config: "+self.settings["boot/kernel/"+kname+"/config"])
127
		
128
            except CatalystError:
129
                self.unbind()
130
                
131
                # If we need to pass special options to the bootloader
132
                # for this kernel put them into the environment.
133
            if self.settings.has_key("boot/kernel/"+kname+"/kernelopts"):
134
                myopts=self.settings["boot/kernel/"+kname+"/kernelopts"]
135
				
136
                if type(myopts) != types.StringType:
137
                    myopts = string.join(myopts)
138
                os.putenv(kname+"_kernelopts", myopts)
139
140
            else:
141
                os.putenv(kname+"_kernelopts", "")
142
143
                # execute the script that builds the kernel
144
            cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh kernel "+list_bashify(args),
145
                "Runscript kernel build failed")
64
146
65
    def run_local(self):
147
    def run_local(self):
66
	    mypackages=list_bashify(self.settings["embedded/packages"])
148
	    mypackages=list_bashify(self.settings["embedded/packages"])
Lines 70-77 Link Here
70
	    except CatalystError:
152
	    except CatalystError:
71
		    self.unbind()
153
		    self.unbind()
72
		    raise CatalystError, "Embedded build aborted due to error."
154
		    raise CatalystError, "Embedded build aborted due to error."
155
156
            if self.settings.has_key("boot/kernel"):
157
	     	self.build_kernel()
158
73
	    self.unmerge()
159
	    self.unmerge()
74
	    self.clean()
160
	    self.clean()
161
75
            self.build_fs()
162
            self.build_fs()
76
163
77
def register(foo):
164
def register(foo):

Return to bug 76542