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 / +112 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
    # this code is mostly duplication from the livecd stage2 module
81
    def pre_build_fs(self):
82
    	try:
83
		if self.settings.has_key("embedded/fs-prepare"):
84
			cmd("/bin/bash "+self.settings["embedded/fs-prepare"], "pre filesystem packaging cause an error in execution")
85
	except CatalystError:
86
		self.unbind()
87
		raise CatalystError, "embedded pre filesystem creation script aborting due to error"
88
89
    def post_build_fs(self):
90
    	try:
91
		if self.settings.has_key("embedded/fs-finish"):
92
			cmd("/bin/bash "+self.settings["embedded/fs-finish"], "pre filesystem packaging cause an error in execution")
93
	except CatalystError:
94
		self.unbind()
95
		raise CatalystError, "embedded post filesystem creation script aborting due to error"
96
97
    def build_kernel(self):
98
        mynames=self.settings["boot/kernel"]
99
        if type(mynames)==types.StringType:
100
            mynames=[mynames]
101
        args=[]
102
        args.append(`len(mynames)`)
103
		
104
        for kname in mynames:
105
            args.append(kname)
106
            args.append(self.settings["boot/kernel/"+kname+"/sources"])
107
            try:
108
                if not os.path.exists(self.settings["boot/kernel/"+kname+"/config"]):
109
                    self.unbind()
110
                    raise CatalystError, "Can't find kernel config: " \
111
                          +self.settings["boot/kernel/"+kname+"/config"]
112
113
            except TypeError:
114
                raise CatalystError, "Required value boot/kernel/config not specified"
115
			
116
            if self.settings.has_key("boot/kernel/"+kname+"/extraversion"):
117
                            args.append(self.settings["boot/kernel/"+kname+"/extraversion"])
118
            else:
119
                args.append("NULL_VALUE")
120
	    if self.settings.has_key("boot/kernel/"+kname+"/gk_action"):
121
	    		args.append(self.settings["boot/kernel/"+kname+"/gk_action"])
122
			
123
            for extra in ["use","packages","gk_kernargs"]:
124
                if self.settings.has_key("boot/kernel/"+kname+"/"+extra):
125
                    myex=self.settings["boot/kernel/"+kname+"/"+extra]
126
                    if type(myex)==types.ListType:
127
                        myex=string.join(myex)
128
                    try:
129
                        myf=open(self.settings["chroot_path"]+"/var/tmp/"+kname+"."+extra,"w")
130
                    except:
131
                        self.unbind()
132
                        raise CatalystError,"Couldn't create file /var/tmp/"+kname+"."+extra+" in chroot."
133
                    if extra=="use":
134
                        myf.write("export USE=\""+myex+"\"\n")
135
                    if extra=="gk_kernargs":
136
                        myf.write("export clst_embedded_gk_kernargs=\""+myex+"\"\n")
137
		    else:
138
                        myf.write(myex+"\n")
139
                    myf.close()
140
            try:
141
                cmd("cp "+self.settings["boot/kernel/"+kname+"/config"]+" "+ \
142
                    self.settings["chroot_path"]+"/var/tmp/"+kname+".config", \
143
                    "Couldn't copy kernel config: "+self.settings["boot/kernel/"+kname+"/config"])
144
		
145
            except CatalystError:
146
                self.unbind()
147
                
148
                # If we need to pass special options to the bootloader
149
                # for this kernel put them into the environment.
150
            if self.settings.has_key("boot/kernel/"+kname+"/kernelopts"):
151
                myopts=self.settings["boot/kernel/"+kname+"/kernelopts"]
152
				
153
                if type(myopts) != types.StringType:
154
                    myopts = string.join(myopts)
155
                os.putenv(kname+"_kernelopts", myopts)
156
157
            else:
158
                os.putenv(kname+"_kernelopts", "")
159
160
                # execute the script that builds the kernel
161
            cmd("/bin/bash "+self.settings["sharedir"]+"/targets/embedded/embedded.sh kernel "+list_bashify(args),
162
                "Runscript kernel build failed")
64
163
65
    def run_local(self):
164
    def run_local(self):
66
	    mypackages=list_bashify(self.settings["embedded/packages"])
165
	    mypackages=list_bashify(self.settings["embedded/packages"])
Lines 70-78 Link Here
70
	    except CatalystError:
169
	    except CatalystError:
71
		    self.unbind()
170
		    self.unbind()
72
		    raise CatalystError, "Embedded build aborted due to error."
171
		    raise CatalystError, "Embedded build aborted due to error."
172
173
            if self.settings.has_key("boot/kernel"):
174
	     	self.build_kernel()
175
73
	    self.unmerge()
176
	    self.unmerge()
74
	    self.clean()
177
	    self.clean()
178
179
	    self.pre_build_fs()
75
            self.build_fs()
180
            self.build_fs()
181
	    self.post_build_fs()
76
182
77
def register(foo):
183
def register(foo):
78
        foo.update({"embedded":embedded_target})
184
        foo.update({"embedded":embedded_target})

Return to bug 76542