Index: modules/netboot2_target.py =================================================================== --- modules/netboot2_target.py (revision 1224) +++ modules/netboot2_target.py (working copy) @@ -10,42 +10,20 @@ class netboot2_target(generic_stage_target): def __init__(self,spec,addlargs): self.required_values=[ - "boot/kernel", - "netboot2/builddate", - "netboot2/packages", - "netboot2/use" + "boot/kernel" ] self.valid_values=self.required_values[:] - self.valid_values.extend(self.required_values) - self.valid_values.extend(["netboot2/extra_files"]) + self.valid_values.extend([ + "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) 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): self.settings["target_path"]=normpath(self.settings["storedir"]+"/builds/"+\ self.settings["target_subpath"]+"/") @@ -71,25 +49,12 @@ and os.path.exists(self.settings["autoresume_path"]+"copy_files_to_image"): print "Resume point detected, skipping target path setup operation..." else: - if self.settings.has_key("netboot2/packages"): - if type(self.settings["netboot2/packages"]) == types.StringType: - loopy=[self.settings["netboot2/packages"]] + if self.settings.has_key("netboot2/packages/files"): + if type(self.settings["netboot2/packages/files"]) == types.ListType: + myfiles.extend(self.settings["netboot2/packages/files"]) else: - loopy=self.settings["netboot2/packages"] - - 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"]) + myfiles.append([self.settings["netboot2/packages/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: cmd("/bin/bash "+self.settings["controller_file"]+\ " image " + list_bashify(myfiles),env=self.env) @@ -99,6 +64,17 @@ 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): # we're done, move the kernels to builds/* @@ -112,13 +88,41 @@ self.unbind() 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): self.settings["action_sequence"]=["unpack","unpack_snapshot","config_profile_link", "setup_confdir","bind","chroot_setup",\ "setup_environment","build_packages","root_overlay",\ - "copy_files_to_image","build_kernel","move_kernels",\ - "unbind","clean","clear_autoresume"] + "copy_files_to_image","setup_overlay","build_kernel","move_kernels",\ + "remove","empty","unbind","clean","clear_autoresume"] def register(foo): foo.update({"netboot2":netboot2_target}) Index: targets/netboot2/netboot2-copyfile.sh =================================================================== --- targets/netboot2/netboot2-copyfile.sh (revision 1224) +++ targets/netboot2/netboot2-copyfile.sh (working copy) @@ -18,4 +18,3 @@ fi fi done -echo "" Index: targets/support/pre-kmerge.sh =================================================================== --- targets/support/pre-kmerge.sh (revision 1224) +++ targets/support/pre-kmerge.sh (working copy) @@ -29,17 +29,19 @@ # Set the netboot builddate/hostname in linuxrc and copy to proper arch # 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" \ - ${clst_root_path}usr/share/genkernel/netboot/linuxrc.x \ - > ${clst_root_path}usr/share/genkernel/${clst_hostarch}/linuxrc + /usr/share/genkernel/netboot/linuxrc.x \ + > /usr/share/genkernel/${clst_hostarch}/linuxrc 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} echo ">>> Copying busybox config ..." - cp -f ${clst_root_path}usr/share/genkernel/${clst_hostarch}/nb-busybox.cf \ - ${clst_root_path}usr/share/genkernel/${clst_hostarch}/busy-config + cp -f /usr/share/genkernel/${clst_hostarch}/nb-busybox.cf \ + /usr/share/genkernel/${clst_hostarch}/busy-config ;; esac