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

Return to bug 76542