View | Details | Raw Unified
Collapse All | Expand All

(-) modules/netboot2_target.py (-49 / +53 lines)
 Lines 10-51    Link Here 
class netboot2_target(generic_stage_target):
class netboot2_target(generic_stage_target):
	def __init__(self,spec,addlargs):
	def __init__(self,spec,addlargs):
		self.required_values=[
		self.required_values=[
			"boot/kernel",
			"boot/kernel"
			"netboot2/builddate",
			"netboot2/packages",			
			"netboot2/use"			
		]
		]
		self.valid_values=self.required_values[:]
		self.valid_values=self.required_values[:]
		self.valid_values.extend(self.required_values)
		self.valid_values.extend([
		self.valid_values.extend(["netboot2/extra_files"])
			"netboot2/packages",
			"netboot2/use",
			"netboot2/packages/files",
			"netboot2/overlay"
		])
			
			
		try:
			if addlargs.has_key("netboot2/packages"):
				if type(addlargs["netboot2/packages"]) == types.StringType:
					loopy=[addlargs["netboot2/packages"]]
				else:
					loopy=addlargs["netboot2/packages"]
				for x in loopy:
					self.valid_values.append("netboot2/packages/"+x+"/files")
		except:
			raise CatalystError,"configuration error in netboot2/packages."
		
		
		generic_stage_target.__init__(self,spec,addlargs)
		generic_stage_target.__init__(self,spec,addlargs)
		self.set_build_kernel_vars()
		self.set_build_kernel_vars()
		self.settings["merge_path"]=normpath("/tmp/image/")
		# Merge packages into the buildroot, and pick out certain files to place in
		# /tmp/image
		self.settings["merge_path"]=normpath("/tmp/image")
	def set_dest_path(self):
		if self.settings.has_key("merge_path"):
			self.settings["destpath"]=normpath(self.settings["chroot_path"]+self.settings["merge_path"])
		else:
			self.settings["destpath"]=normpath(self.settings["chroot_path"])
	def set_target_path(self):
	def set_target_path(self):
		self.settings["target_path"]=normpath(self.settings["storedir"]+"/builds/"+\
		self.settings["target_path"]=normpath(self.settings["storedir"]+"/builds/"+\
			self.settings["target_subpath"]+"/")
			self.settings["target_subpath"]+"/")
 Lines 71-95    Link Here 
			and os.path.exists(self.settings["autoresume_path"]+"copy_files_to_image"):
			and os.path.exists(self.settings["autoresume_path"]+"copy_files_to_image"):
				print "Resume point detected, skipping target path setup operation..."
				print "Resume point detected, skipping target path setup operation..."
		else:
		else:
			if self.settings.has_key("netboot2/packages"):
			if self.settings.has_key("netboot2/packages/files"):
				if type(self.settings["netboot2/packages"]) == types.StringType:
				if type(self.settings["netboot2/packages/files"]) == types.ListType:
					loopy=[self.settings["netboot2/packages"]]
					myfiles.extend(self.settings["netboot2/packages/files"])
				else:
				else:
					loopy=self.settings["netboot2/packages"]
					myfiles.append([self.settings["netboot2/packages/files"]])
		
			for x in loopy:
				if self.settings.has_key("netboot2/packages/"+x+"/files"):
				    if type(self.settings["netboot2/packages/"+x+"/files"]) == types.ListType:
					    myfiles.extend(self.settings["netboot2/packages/"+x+"/files"])
				    else:
					    myfiles.append(self.settings["netboot2/packages/"+x+"/files"])
			if self.settings.has_key("netboot2/extra_files"):
				if type(self.settings["netboot2/extra_files"]) == types.ListType:
					myfiles.extend(self.settings["netboot2/extra_files"])
				else:
					myfiles.append(self.settings["netboot2/extra_files"])
			try:
			try:
				cmd("/bin/bash "+self.settings["controller_file"]+\
				cmd("/bin/bash "+self.settings["controller_file"]+\
					" image " + list_bashify(myfiles),env=self.env)
					" image " + list_bashify(myfiles),env=self.env)
 Lines 99-104    Link Here 
			touch(self.settings["autoresume_path"]+"copy_files_to_image")
			touch(self.settings["autoresume_path"]+"copy_files_to_image")
	def setup_overlay(self):	
		if self.settings.has_key("AUTORESUME") \
		and os.path.exists(self.settings["autoresume_path"]+"setup_overlay"):
			print "Resume point detected, skipping setup_overlay operation..."
		else:
			if self.settings.has_key("netboot2/overlay"):
				for x in self.settings["netboot2/overlay"]: 
					if os.path.exists(x):
						cmd("rsync -a "+x+"/ "+\
							self.settings["chroot_path"], "netboot2/overlay: "+x+" copy failed.",env=self.env)
				touch(self.settings["autoresume_path"]+"setup_overlay")
	def move_kernels(self):
	def move_kernels(self):
		# we're done, move the kernels to builds/*
		# we're done, move the kernels to builds/*
 Lines 112-124    Link Here 
			self.unbind()
			self.unbind()
			raise CatalystError,"Failed to move kernel images!"
			raise CatalystError,"Failed to move kernel images!"
	def remove(self):
		if self.settings.has_key("AUTORESUME") \
			and os.path.exists(self.settings["autoresume_path"]+"remove"):
			print "Resume point detected, skipping remove operation..."
		else:
			if self.settings.has_key(self.settings["spec_prefix"]+"/rm"):
				for x in self.settings[self.settings["spec_prefix"]+"/rm"]:
					# we're going to shell out for all these cleaning operations,
					# so we get easy glob handling
					print "netboot2: removing " + x
					os.system("rm -rf " + self.settings["chroot_path"] + self.settings["merge_path"] + x)
	def empty(self):		
		if self.settings.has_key("AUTORESUME") \
			and os.path.exists(self.settings["autoresume_path"]+"empty"):
			print "Resume point detected, skipping empty operation..."
		else:
			if self.settings.has_key("netboot2/empty"):
				if type(self.settings["netboot2/empty"])==types.StringType:
					self.settings["netboot2/empty"]=self.settings["netboot2/empty"].split()
				for x in self.settings["netboot2/empty"]:
					myemp=self.settings["chroot_path"] + self.settings["merge_path"] + x
					if not os.path.isdir(myemp):
						print x,"not a directory or does not exist, skipping 'empty' operation."
						continue
					print "Emptying directory", x
					os.system("rm -rf " + self.settings["chroot_path"] + self.settings["merge_path"] + x + "/*")
		touch(self.settings["autoresume_path"]+"empty")
	def set_action_sequence(self):
	def set_action_sequence(self):
	    self.settings["action_sequence"]=["unpack","unpack_snapshot","config_profile_link",
	    self.settings["action_sequence"]=["unpack","unpack_snapshot","config_profile_link",
	    				"setup_confdir","bind","chroot_setup",\
	    				"setup_confdir","bind","chroot_setup",\
					"setup_environment","build_packages","root_overlay",\
					"setup_environment","build_packages","root_overlay",\
					"copy_files_to_image","build_kernel","move_kernels",\
					"copy_files_to_image","setup_overlay","build_kernel","move_kernels",\
					"unbind","clean","clear_autoresume"]
					"remove","empty","unbind","clean","clear_autoresume"]
def register(foo):
def register(foo):
	foo.update({"netboot2":netboot2_target})
	foo.update({"netboot2":netboot2_target})
(-) targets/netboot2/netboot2-copyfile.sh (-1 lines)
 Lines 18-21    Link Here 
		fi
		fi
	fi
	fi
done
done
echo ""
(-) targets/support/pre-kmerge.sh (-6 / +6 lines)
 Lines 29-45    Link Here 
		# Set the netboot builddate/hostname in linuxrc and copy to proper arch
		# Set the netboot builddate/hostname in linuxrc and copy to proper arch
		# directory in genkernel
		# directory in genkernel
		sed -e "s/@@MYDATE@@/${clst_netboot2_builddate}/g" \
		sed -e "s/@@MYDATE@@/$(date '+%Y%m%d')/g" \
		    -e "s/@@RELVER@@/${clst_version_stamp}/g" \
		    -e "s/@@RELVER@@/${clst_version_stamp}/g" \
			${clst_root_path}usr/share/genkernel/netboot/linuxrc.x \
			/usr/share/genkernel/netboot/linuxrc.x \
				> ${clst_root_path}usr/share/genkernel/${clst_hostarch}/linuxrc
			> /usr/share/genkernel/${clst_hostarch}/linuxrc
		echo ">>> Copying support files to ${clst_root_path} ..."
		echo ">>> Copying support files to ${clst_root_path} ..."
		cp -pPRf ${clst_root_path}usr/share/genkernel/netboot/misc/* \
		cp -pPRf /usr/share/genkernel/netboot/misc/* \
			${clst_merge_path}
			${clst_merge_path}
		echo ">>> Copying busybox config ..."
		echo ">>> Copying busybox config ..."
		cp -f ${clst_root_path}usr/share/genkernel/${clst_hostarch}/nb-busybox.cf \
		cp -f /usr/share/genkernel/${clst_hostarch}/nb-busybox.cf \
			${clst_root_path}usr/share/genkernel/${clst_hostarch}/busy-config
			/usr/share/genkernel/${clst_hostarch}/busy-config
	;;
	;;
esac
esac