-class DockerTarget(LinuxTarget):
- """Build in a docker container"""
- def __init__(self, distro, version, bits, directory=None):
- super(DockerTarget, self).__init__(distro, version, bits, directory)
-
- def build(self, project, checkout):
- ch = ''
- if checkout is not None:
- ch = '-c %s' % checkout
- target = '%s-%s-%s' % (self.distro, self.version, self.bits)
- container = command_and_read('%s run -itd %s /bin/bash' % (config.docker(), target)).read().strip()
- command('%s exec -t %s /bin/bash -c "cdist -p %s -t %s -d %s build -w /cdist"' % (config.docker(), container, project, target, ch))
- command('%s kill %s' % (config.docker(), container))
-
- def package(self, project, checkout, output_dir):
- ch = ''
- if checkout is not None:
- ch = '-c %s' % checkout
- target = '%s-%s-%s' % (self.distro, self.version, self.bits)
- container = command_and_read('%s run -itd %s /bin/bash' % (config.docker(), target)).read().strip()
- command('%s exec -t %s /bin/bash -c "cdist -p %s -t %s -d %s package -w /cdist"' % (config.docker(), container, project, target, ch))
- # I can't get wildcards to work with docker cp
- debs = command_and_read('%s exec -t %s ls -1 /%s' % (config.docker(), container, target)).read().split('\n')
- for d in debs:
- d = d.strip()
- if len(d) > 0:
- command('%s cp %s:/%s/%s %s' % (config.docker(), container, target, d, self.directory))
- copyfile('%s/%s' % (self.directory, d), output_dir)
- command('%s kill %s' % (config.docker(), container))
-
-class DirectTarget(LinuxTarget):
- """Build directly in the current environment"""
- def __init__(self, distro, version, bits, directory=None):
- super(DirectTarget, self).__init__(distro, version, bits, directory)