[koji] add patch to move builder workdir to /var/tmp

Dennis Gilmore ausil at fedoraproject.org
Thu Jun 12 18:27:36 UTC 2014


commit 4736a75e98602853c2fecd3430cd7120d18c0e15
Author: Dennis Gilmore <dennis at ausil.us>
Date:   Thu Jun 12 13:27:33 2014 -0500

    add patch to move builder workdir to /var/tmp
    
    - add support for making raw.xz images

 ...ove-workdir-from-tmp-koji-to-var-tmp-koji.patch |   28 +++++
 0002-image-support-xz-compressed-raw-files.patch   |  119 ++++++++++++++++++++
 koji.spec                                          |   10 ++-
 3 files changed, 156 insertions(+), 1 deletions(-)
---
diff --git a/0001-move-workdir-from-tmp-koji-to-var-tmp-koji.patch b/0001-move-workdir-from-tmp-koji-to-var-tmp-koji.patch
new file mode 100644
index 0000000..e3b5ec8
--- /dev/null
+++ b/0001-move-workdir-from-tmp-koji-to-var-tmp-koji.patch
@@ -0,0 +1,28 @@
+From 28b685087b620946c81ea72c04a018a174b1362f Mon Sep 17 00:00:00 2001
+From: Dennis Gilmore <dennis at ausil.us>
+Date: Thu, 29 May 2014 21:39:44 -0500
+Subject: [PATCH 1/2] move workdir from /tmp/koji/ to /var/tmp/koji/
+
+moving the workdir is needed as /tmp can be quite small with /tmp on tmpfs
+
+Signed-off-by: Dennis Gilmore <dennis at ausil.us>
+---
+ builder/kojid | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/builder/kojid b/builder/kojid
+index f101e0f..14309bb 100755
+--- a/builder/kojid
++++ b/builder/kojid
+@@ -3657,7 +3657,7 @@ def get_options():
+                 'log_level': None,
+                 'topdir': '/mnt/koji',
+                 'topurl': None,
+-                'workdir': '/tmp/koji',
++                'workdir': '/var/tmp/koji',
+                 'pluginpath': '/usr/lib/koji-builder-plugins',
+                 'mockdir': '/var/lib/mock',
+                 'mockuser': 'kojibuilder',
+-- 
+2.0.0
+
diff --git a/0002-image-support-xz-compressed-raw-files.patch b/0002-image-support-xz-compressed-raw-files.patch
new file mode 100644
index 0000000..60a8f63
--- /dev/null
+++ b/0002-image-support-xz-compressed-raw-files.patch
@@ -0,0 +1,119 @@
+From ce89836df875f17ba94c9d47144e89fda22612ce Mon Sep 17 00:00:00 2001
+From: Dennis Gilmore <dennis at ausil.us>
+Date: Thu, 29 May 2014 23:05:07 -0500
+Subject: [PATCH 2/2] image: support xz compressed raw files
+
+as we publish the raw files on the mirrors we want to be able to request
+xz compressed versions of theraw image.
+
+Signed-off-by: Dennis Gilmore <dennis at ausil.us>
+---
+ builder/kojid                    | 25 ++++++++++++++++++++++++-
+ cli/koji                         |  4 ++--
+ docs/schema-upgrade-1.9-next.sql |  9 +++++++++
+ docs/schema.sql                  |  1 +
+ 4 files changed, 36 insertions(+), 3 deletions(-)
+ create mode 100644 docs/schema-upgrade-1.9-next.sql
+
+diff --git a/builder/kojid b/builder/kojid
+index 14309bb..34c62d8 100755
+--- a/builder/kojid
++++ b/builder/kojid
+@@ -2737,7 +2737,7 @@ class BaseImageTask(OzImageTask):
+         we have to do this. rhevm-ova requires rhevm, but if the user did not
+         request it, we should not pass it back up.
+         """
+-        supported = ('raw', 'vmdk', 'qcow', 'qcow2', 'vdi', 'rhevm-ova', 'vsphere-ova', 'docker')
++        supported = ('raw', 'raw-xz', 'vmdk', 'qcow', 'qcow2', 'vdi', 'rhevm-ova', 'vsphere-ova', 'docker')
+         for f in formats:
+             if f not in supported:
+                 raise koji.ApplianceError('Invalid format: %s' % f)
+@@ -2863,6 +2863,27 @@ class BaseImageTask(OzImageTask):
+                 base.base_image.parameters['libvirt_xml'])
+             images[format] = {'image': newimg, 'libvirt': lxml}
+ 
++        # xz compress the raw disk image if asked for
++        for format in ('raw-xz',):
++            if format not in self.formats:
++                continue
++            newimg = os.path.join(self.workdir, imgname + 'raw.xz')
++            rawimg = os.path.join(self.workdir, imgname + 'raw')
++            cmd = ['/bin/cp', base.base_image.data, rawimg]
++            conlog = os.path.join(self.workdir,
++                'xz-cp-%s-%s.log' % (format, arch))
++            log_output(self.session, cmd[0], cmd, conlog,
++                self.getUploadDir(), logerror=1)
++            cmd = ['/usr/bin/xz', '-z', rawimg]
++            conlog = os.path.join(self.workdir,
++                'xz-%s-%s.log' % (format, arch))
++            log_output(self.session, cmd[0], cmd, conlog,
++                self.getUploadDir(), logerror=1)
++            lxml = self.fixImageXML(format, imgname,
++                'libvirt-%s-%s.xml' % (format, arch),
++                base.base_image.parameters['libvirt_xml'])
++            images[format] = {'image': newimg, 'libvirt': lxml}
++
+         return images
+ 
+     def handler(self, name, version, release, arch, target_info, build_tag, repo_info, inst_tree, opts=None):
+@@ -2954,6 +2975,8 @@ class BaseImageTask(OzImageTask):
+                 newname = imgname + '.' + format.replace('-', '.')
+             elif format == 'docker':
+                 newname = imgname + '.' + 'tar.gz'
++            elif format == 'raw-xz':
++                newname = imgname + '.' + 'raw.xz'
+             else:
+                 newname = imgname + '.' + format
+             if format != 'docker':
+diff --git a/cli/koji b/cli/koji
+index 504b4ba..1ba273f 100755
+--- a/cli/koji
++++ b/cli/koji
+@@ -4981,7 +4981,7 @@ def handle_spin_appliance(options, session, args):
+         help=_("Set the number of virtual cpus in the appliance, " +
+                "default is 1"))
+     parser.add_option("--format", metavar="DISK_FORMAT", default='raw',
+-        help=_("Disk format, default is raw. Other options are qcow, " +
++        help=_("Disk format, default is raw. Other options are raw-xz, qcow, " +
+                "qcow2, and vmx."))
+ 
+     (task_options, args) = parser.parse_args(args)
+@@ -4998,7 +4998,7 @@ def handle_spin_appliance(options, session, args):
+ def handle_image_build(options, session, args):
+     """Create a disk image given an install tree"""
+     formats = ('vmdk', 'qcow', 'qcow2', 'vdi', 'rhevm-ova', 'vsphere-ova',
+-               'docker')
++               'docker', 'raw-xz')
+     usage = _("usage: %prog image-build [options] <name> <version> " +
+               "<target> <install-tree-url> <arch> [<arch>...]")
+     usage += _("\n       %prog image-build --config FILE")
+diff --git a/docs/schema-upgrade-1.9-next.sql b/docs/schema-upgrade-1.9-next.sql
+new file mode 100644
+index 0000000..7d45e91
+--- /dev/null
++++ b/docs/schema-upgrade-1.9-next.sql
+@@ -0,0 +1,9 @@
++-- schema migration from version 1.9 to next
++-- note: this update will require additional steps, please see the migration doc
++
++BEGIN;
++
++-- new archive types
++insert into archivetypes (name, description, extensions) values ('raw-xz', 'xz compressed raw disk image', 'raw.xz');
++
++COMMIT;
+diff --git a/docs/schema.sql b/docs/schema.sql
+index 56418c9..91bcfd2 100644
+--- a/docs/schema.sql
++++ b/docs/schema.sql
+@@ -713,6 +713,7 @@ insert into archivetypes (name, description, extensions) values ('pdb', 'Windows
+ insert into archivetypes (name, description, extensions) values ('oem', 'Windows driver oem file', 'oem');
+ insert into archivetypes (name, description, extensions) values ('iso', 'CD/DVD Image', 'iso');
+ insert into archivetypes (name, description, extensions) values ('raw', 'Raw disk image', 'raw');
++insert into archivetypes (name, description, extensions) values ('raw-xz', 'xz compressed raw disk image', 'raw.xz');
+ insert into archivetypes (name, description, extensions) values ('qcow', 'QCOW image', 'qcow');
+ insert into archivetypes (name, description, extensions) values ('qcow2', 'QCOW2 image', 'qcow2');
+ insert into archivetypes (name, description, extensions) values ('vmdk', 'vSphere image', 'vmdk');
+-- 
+2.0.0
+
diff --git a/koji.spec b/koji.spec
index 1e4cfa4..88b9d10 100644
--- a/koji.spec
+++ b/koji.spec
@@ -2,13 +2,15 @@
 
 Name: koji
 Version: 1.9.0
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: LGPLv2 and GPLv2+
 # koji.ssl libs (from plague) are GPLv2+
 Summary: Build system tools
 Group: Applications/System
 URL: http://fedorahosted.org/koji
 Patch0: fedora-config.patch
+Patch1: 0001-move-workdir-from-tmp-koji-to-var-tmp-koji.patch
+Patch2: 0002-image-support-xz-compressed-raw-files.patch
 
 Source: https://fedorahosted.org/released/koji/koji-%{version}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -122,6 +124,8 @@ koji-web is a web UI to the Koji system.
 %prep
 %setup -q
 %patch0 -p1 -b .orig
+%patch1 -p1
+%patch2 -p1
 
 %build
 
@@ -225,6 +229,10 @@ if [ $1 = 0 ]; then
 fi
 
 %changelog
+* Thu Jun 12 2014 Dennis Gilmore <dennis at ausil.us> - 1.9.0-3
+- add patch to move builder workdir to /var/tmp
+- add support for making raw.xz images
+
 * Sun Jun 08 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.9.0-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
 


More information about the scm-commits mailing list