1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-02-23 02:32:13 +01:00

Add support for livebuild buildtype

This commit allows for 'osc build' to do local builds of type livebuild.
Debian livebuild is the native Debian live image building system.

Signed-off-by: Jan Blunck <jblunck@infradead.org>
This commit is contained in:
Jan Blunck 2014-07-08 21:18:01 +02:00
parent b2ad3ebabc
commit 475d2a298d
2 changed files with 13 additions and 6 deletions

View File

@ -116,6 +116,8 @@ class Buildinfo:
self.pacsuffix = 'deb' self.pacsuffix = 'deb'
if self.buildtype == 'arch': if self.buildtype == 'arch':
self.pacsuffix = 'arch' self.pacsuffix = 'arch'
if self.buildtype == 'livebuild':
self.pacsuffix = 'deb'
self.buildarch = root.find('arch').text self.buildarch = root.find('arch').text
if root.find('hostarch') != None: if root.find('hostarch') != None:
@ -278,6 +280,11 @@ def get_built_files(pacdir, buildtype):
'-name', '*.pkg.tar*'], '-name', '*.pkg.tar*'],
stdout=subprocess.PIPE).stdout.read().strip() stdout=subprocess.PIPE).stdout.read().strip()
s_built = '' s_built = ''
elif buildtype == 'livebuild':
b_built = subprocess.Popen(['find', os.path.join(pacdir, 'OTHER'),
'-name', '*.iso*'],
stdout=subprocess.PIPE).stdout.read().strip()
s_built = ''
else: else:
print('WARNING: Unknown package type \'%s\'.' % buildtype, file=sys.stderr) print('WARNING: Unknown package type \'%s\'.' % buildtype, file=sys.stderr)
b_built = '' b_built = ''
@ -406,9 +413,9 @@ def main(apiurl, opts, argv):
build_type = os.path.splitext(build_descr)[1][1:] build_type = os.path.splitext(build_descr)[1][1:]
if os.path.basename(build_descr) == 'PKGBUILD': if os.path.basename(build_descr) == 'PKGBUILD':
build_type = 'arch' build_type = 'arch'
if build_type not in ['spec', 'dsc', 'kiwi', 'arch']: if build_type not in ['spec', 'dsc', 'kiwi', 'arch', 'livebuild']:
raise oscerr.WrongArgs( raise oscerr.WrongArgs(
'Unknown build type: \'%s\'. Build description should end in .spec, .dsc or .kiwi.' \ 'Unknown build type: \'%s\'. Build description should end in .spec, .dsc, .kiwi or .livebuild.' \
% build_type) % build_type)
if not os.path.isfile(build_descr): if not os.path.isfile(build_descr):
raise oscerr.WrongArgs('Error: build description file named \'%s\' does not exist.' % build_descr) raise oscerr.WrongArgs('Error: build description file named \'%s\' does not exist.' % build_descr)

View File

@ -5377,7 +5377,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
for subarch in osc.build.can_also_build.get(mainarch): for subarch in osc.build.can_also_build.get(mainarch):
all_archs.append(subarch) all_archs.append(subarch)
for arg in args: for arg in args:
if arg.endswith('.spec') or arg.endswith('.dsc') or arg.endswith('.kiwi') or arg == 'PKGBUILD': if arg.endswith('.spec') or arg.endswith('.dsc') or arg.endswith('.kiwi') or arg.endswith('.livebuild') or arg == 'PKGBUILD':
arg_descr = arg arg_descr = arg
else: else:
if (arg == osc.build.hostarch or arg in all_archs) and arg_arch is None: if (arg == osc.build.hostarch or arg in all_archs) and arg_arch is None:
@ -5434,7 +5434,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
# can be implemented using # can be implemented using
# reduce(lambda x, y: x + y, (glob.glob(x) for x in ('*.spec', '*.dsc', '*.kiwi'))) # reduce(lambda x, y: x + y, (glob.glob(x) for x in ('*.spec', '*.dsc', '*.kiwi')))
# but be a bit more readable :) # but be a bit more readable :)
descr = glob.glob('*.spec') + glob.glob('*.dsc') + glob.glob('*.kiwi') + glob.glob('PKGBUILD') descr = glob.glob('*.spec') + glob.glob('*.dsc') + glob.glob('*.kiwi') + glob.glob('*.livebuild') + glob.glob('PKGBUILD')
# FIXME: # FIXME:
# * request repos from server and select by build type. # * request repos from server and select by build type.
@ -5449,7 +5449,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
pac = os.path.basename(os.getcwd()) pac = os.path.basename(os.getcwd())
if is_package_dir(os.getcwd()): if is_package_dir(os.getcwd()):
pac = store_read_package(os.getcwd()) pac = store_read_package(os.getcwd())
extensions = ['spec', 'dsc', 'kiwi'] extensions = ['spec', 'dsc', 'kiwi', 'livebuild']
cands = [i for i in descr for ext in extensions if i == '%s-%s.%s' % (pac, arg_repository, ext)] cands = [i for i in descr for ext in extensions if i == '%s-%s.%s' % (pac, arg_repository, ext)]
if len(cands) == 1: if len(cands) == 1:
arg_descr = cands[0] arg_descr = cands[0]
@ -5460,7 +5460,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if not arg_descr: if not arg_descr:
msg = 'Multiple build description files found: %s' % ', '.join(descr) msg = 'Multiple build description files found: %s' % ', '.join(descr)
elif not ignore_descr: elif not ignore_descr:
msg = 'Missing argument: build description (spec, dsc or kiwi file)' msg = 'Missing argument: build description (spec, dsc, kiwi or livebuild file)'
try: try:
p = Package('.') p = Package('.')
if p.islink() and not p.isexpanded(): if p.islink() and not p.isexpanded():