From 7875de73038d70d8775a02b3b0187e9c85317a3f Mon Sep 17 00:00:00 2001 From: "Manuel Amador (Rudd-O)" Date: Thu, 26 Aug 2010 18:58:38 -0700 Subject: [PATCH] Build ISO images for xenserver patches AND Fedora / CentOS packaging fix for the ISO generation. Build ISO images for xenserver patches Fedora / CentOS packaging fix for the ISO generation. --- cloud.spec | 34 +---------------- wscript_build | 101 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 79 insertions(+), 56 deletions(-) diff --git a/cloud.spec b/cloud.spec index a1feac0d697..30f8a0b5588 100644 --- a/cloud.spec +++ b/cloud.spec @@ -481,46 +481,17 @@ fi %doc README.html %doc debian/copyright -%if %{_premium} - %files agent-scripts %defattr(-,root,root,-) %{_libdir}/%{name}/agent/scripts/* %{_libdir}/%{name}/agent/vms/systemvm.zip +%{_libdir}/%{name}/agent/vms/systemvm.iso %doc README %doc INSTALL %doc HACKING %doc README.html %doc debian/copyright -%else - -%files agent-scripts -%defattr(-,root,root,-) -%{_libdir}/%{name}/agent/scripts/installer/* -%{_libdir}/%{name}/agent/scripts/network/domr/*.sh -%{_libdir}/%{name}/agent/scripts/storage/*.sh -%{_libdir}/%{name}/agent/scripts/storage/zfs/* -%{_libdir}/%{name}/agent/scripts/storage/qcow2/* -%{_libdir}/%{name}/agent/scripts/storage/secondary/* -%{_libdir}/%{name}/agent/scripts/util/* -%{_libdir}/%{name}/agent/scripts/vm/*.sh -%{_libdir}/%{name}/agent/scripts/vm/storage/nfs/* -%{_libdir}/%{name}/agent/scripts/vm/storage/iscsi/* -%{_libdir}/%{name}/agent/scripts/vm/network/* -%{_libdir}/%{name}/agent/scripts/vm/hypervisor/*.sh -%{_libdir}/%{name}/agent/scripts/vm/hypervisor/kvm/* -%{_libdir}/%{name}/agent/scripts/vm/hypervisor/xen/* -%{_libdir}/%{name}/agent/vms/systemvm.zip -%{_libdir}/%{name}/agent/scripts/vm/hypervisor/xenserver/* -%doc README -%doc INSTALL -%doc HACKING -%doc README.html -%doc debian/copyright - -%endif - %files daemonize %defattr(-,root,root,-) %attr(755,root,root) %{_bindir}/%{name}-daemonize @@ -724,8 +695,7 @@ fi %{_javadir}/%{name}-server-extras.jar %{_sysconfdir}/%{name}/management/commands-ext.properties %{_sysconfdir}/%{name}/management/components-premium.xml -%{_libdir}/%{name}/agent/scripts/vm/hypervisor/xenserver/* -%{_libdir}/%{name}/agent/vms/systemvm-premium.zip +%{_libdir}/%{name}/agent/vms/systemvm-premium.iso %{_datadir}/%{name}/setup/create-database-premium.sql %{_datadir}/%{name}/setup/create-schema-premium.sql %doc README diff --git a/wscript_build b/wscript_build index a964c9040dd..9d36a3ca81a 100644 --- a/wscript_build +++ b/wscript_build @@ -229,21 +229,22 @@ def tar_up(task): z.close() return 0 -if bld.env.DISTRO != "Windows": - for virttech in [ _basename(x) for x in _glob(_join("patches","*")) ]: - if virttech == "shared": - continue - patchfiles = filelist('patches/%s/** patches/shared/**'%virttech,src=True,bld=True,dir=False,flat=True) - tgen = bld( - rule = tar_up, - source = patchfiles, - target = '%s-patch.tgz'%virttech, - name = '%s-patch_tgz'%virttech, - root = "patches/%s"%virttech, - rename = lambda x: re.sub(".subst$","",x), - after = 'patchsubst', - ) - bld.process_after(tgen) +for virttech in [ _basename(x) for x in _glob(_join("patches","*")) ]: + if virttech == "shared": + continue + patchfiles = filelist('patches/%s/** patches/shared/**'%virttech,src=True,bld=True,dir=False,flat=True) + tgen = bld( + rule = tar_up, + source = patchfiles, + target = '%s-patch.tgz'%virttech, + name = '%s-patch_tgz'%virttech, + root = "patches/%s"%virttech, + rename = lambda x: re.sub(".subst$","",x), + after = 'patchsubst', + ) + bld.process_after(tgen) + if virttech != "xenserver": + # xenserver uses the patch.tgz file later to make an ISO, so we do not need to install it bld.install_as("${AGENTLIBDIR}/scripts/vm/hypervisor/%s/patch.tgz"%virttech, "%s-patch.tgz"%virttech) # ================== End creation of patch.tgz's ==================== @@ -338,6 +339,8 @@ def zip_up(task): z.close() return 0 +bld.path.ensure_dir_node_from_path("target/oss") +bld.path.ensure_dir_node_from_path("target/premium") if bld.env.DISTRO not in ["Windows","Mac"]: tgen = bld( rule = copydeps, @@ -348,30 +351,80 @@ if bld.env.DISTRO not in ["Windows","Mac"]: tgen = bld( rule = zip_up, source = " ".join( [sources,artifacts,deps,systems] ), - target = 'systemvm.zip', + target = 'target/oss/systemvm.zip', name = 'systemvm_zip', - after = 'copydeps getsystemjars runant', + after = 'getsystemjars runant', ) bld.process_after(tgen) + bld.install_files("${AGENTLIBDIR}/vms", "target/oss/systemvm.zip") + if buildpremium: tgen = bld( rule = zip_up, source = " ".join( [premiumsources,premiumartifacts,thirdparties] ), - target = 'systemvm-premium.zip', + target = 'target/premium/systemvm.zip', name = 'systemvm-premium_zip', after = 'runant', ) bld.process_after(tgen) - -if bld.env.DISTRO not in [ "Windows", "Mac"]: - bld.install_files("${AGENTLIBDIR}/vms", "systemvm.zip") - -if buildpremium: - bld.install_files("${AGENTLIBDIR}/vms", "systemvm-premium.zip") + #no need to install the premium one, we have ISOs below + #bld.install_files("${AGENTLIBDIR}/vms", "systemvm-premium.zip") # ================== End systemvm patch creation ==================== +# ================== systemvm ISO creation ==================== + +if bld.env.DISTRO not in ["Windows","Mac"]: # mkisofs only on windows + + def iso_up(task): + tgt = task.outputs[0].bldpath(task.env) + if _exists(tgt): _unlink(tgt) + inps = [] + for inp in task.inputs: + if inp.id&3==Node.BUILD: + src = inp.bldpath(task.env) + srcname = src + srcname = "/".join(srcname.split("/")[1:]) # chop off default/ + else: + src = inp.srcpath(task.env) + srcname = src + srcname = "/".join(srcname.split("/")[1:]) # chop off ../ + # post-process the paths + inps.append(src) + return Utils.exec_command( + [ + #"echo", + "mkisofs", + "-quiet", + "-r", + "-o",tgt, + ] + inps) + + tgen = bld( + rule = iso_up, + source = "xenserver-patch.tgz target/oss/systemvm.zip", + target = 'target/oss/systemvm.iso', + name = 'systemvm_iso', + after = 'systemvm_zip xenserver-patch_tgz', + ) + bld.process_after(tgen) + bld.install_as("${AGENTLIBDIR}/vms/systemvm.iso", "target/oss/systemvm.iso") + + if buildpremium: + tgen = bld( + rule = iso_up, + source = "xenserver-patch.tgz target/premium/systemvm.zip", + target = 'target/premium/systemvm.iso', + name = 'systemvm-premium_iso', + after = 'systemvm-premium_zip xenserver-patch_tgz', + ) + bld.process_after(tgen) + bld.install_as("${AGENTLIBDIR}/vms/systemvm-premium.iso", "target/premium/systemvm.iso") + +# ================== End systemvm ISO creation ==================== + + # =================== Empty directory / symlink creation on install target ==================== # 7. make log and cache dirs (this actually runs first)