mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-01 14:35:29 +00:00
[#1229] hammer: added support for building kea on alpine 3.11
This commit is contained in:
45
hammer.py
45
hammer.py
@@ -33,10 +33,6 @@ except:
|
|||||||
from urlparse import urljoin
|
from urlparse import urljoin
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
# TODO:
|
|
||||||
# - add docker provider
|
|
||||||
# https://developer.fedoraproject.org/tools/docker/docker-installation.html
|
|
||||||
|
|
||||||
|
|
||||||
SYSTEMS = {
|
SYSTEMS = {
|
||||||
'fedora': [
|
'fedora': [
|
||||||
@@ -60,7 +56,10 @@ SYSTEMS = {
|
|||||||
'10'],
|
'10'],
|
||||||
'freebsd': ['11.2',
|
'freebsd': ['11.2',
|
||||||
'12.0'],
|
'12.0'],
|
||||||
'alpine': ['3.10']
|
'alpine': [
|
||||||
|
'3.10',
|
||||||
|
'3.11'
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
# pylint: disable=C0326
|
# pylint: disable=C0326
|
||||||
@@ -101,14 +100,22 @@ IMAGE_TEMPLATES = {
|
|||||||
'freebsd-11.2-virtualbox': {'bare': 'generic/freebsd11', 'kea': 'godfryd/kea-freebsd-11.2'},
|
'freebsd-11.2-virtualbox': {'bare': 'generic/freebsd11', 'kea': 'godfryd/kea-freebsd-11.2'},
|
||||||
'freebsd-12.0-virtualbox': {'bare': 'generic/freebsd12', 'kea': 'godfryd/kea-freebsd-12.0'},
|
'freebsd-12.0-virtualbox': {'bare': 'generic/freebsd12', 'kea': 'godfryd/kea-freebsd-12.0'},
|
||||||
'alpine-3.10-lxc': {'bare': 'godfryd/lxc-alpine-3.10', 'kea': 'godfryd/kea-alpine-3.10'},
|
'alpine-3.10-lxc': {'bare': 'godfryd/lxc-alpine-3.10', 'kea': 'godfryd/kea-alpine-3.10'},
|
||||||
|
'alpine-3.11-lxc': {'bare': 'isc/lxc-alpine-3.11', 'kea': 'isc/kea-alpine-3.11'},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# NOTES
|
||||||
|
# ** Alpine **
|
||||||
|
# 1. Extracting rootfs is failing:
|
||||||
|
# It requires commenting out checking if rootfs has been extraced as it checks for file /bin/true which is a link.
|
||||||
|
# Comment out in ~/.vagrant.d/gems/2.4.9/gems/vagrant-lxc-1.4.3/scripts/lxc-template near 'Failed to extract rootfs'
|
||||||
|
|
||||||
|
|
||||||
LXC_VAGRANTFILE_TPL = """# -*- mode: ruby -*-
|
LXC_VAGRANTFILE_TPL = """# -*- mode: ruby -*-
|
||||||
# vi: set ft=ruby :
|
# vi: set ft=ruby :
|
||||||
ENV["LC_ALL"] = "C"
|
ENV["LC_ALL"] = "C"
|
||||||
|
|
||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
config.vm.hostname = "{name}"
|
{hostname}
|
||||||
|
|
||||||
config.vm.box = "{image_tpl}"
|
config.vm.box = "{image_tpl}"
|
||||||
{box_version}
|
{box_version}
|
||||||
@@ -187,6 +194,8 @@ def get_system_revision():
|
|||||||
revision = revision[0]
|
revision = revision[0]
|
||||||
elif system == 'centos':
|
elif system == 'centos':
|
||||||
revision = revision[0]
|
revision = revision[0]
|
||||||
|
if not system or not revision:
|
||||||
|
raise Exception('fallback to /etc/os-release')
|
||||||
except:
|
except:
|
||||||
if os.path.exists('/etc/os-release'):
|
if os.path.exists('/etc/os-release'):
|
||||||
vals = {}
|
vals = {}
|
||||||
@@ -498,10 +507,17 @@ class VagrantEnv(object):
|
|||||||
self.latest_version = None
|
self.latest_version = None
|
||||||
box_version = ""
|
box_version = ""
|
||||||
|
|
||||||
|
# alpine has a problem with setting hostname so skip it
|
||||||
|
if system == 'alpine':
|
||||||
|
hostname = ''
|
||||||
|
else:
|
||||||
|
hostname = 'config.vm.hostname = "%s"' % self.name
|
||||||
|
|
||||||
vagrantfile = vagrantfile_tpl.format(image_tpl=image_tpl,
|
vagrantfile = vagrantfile_tpl.format(image_tpl=image_tpl,
|
||||||
name=self.name,
|
name=self.name,
|
||||||
ccache_dir=ccache_dir,
|
ccache_dir=ccache_dir,
|
||||||
box_version=box_version)
|
box_version=box_version,
|
||||||
|
hostname=hostname)
|
||||||
|
|
||||||
with open(vagrantfile_path, "w") as f:
|
with open(vagrantfile_path, "w") as f:
|
||||||
f.write(vagrantfile)
|
f.write(vagrantfile)
|
||||||
@@ -1386,7 +1402,10 @@ def prepare_system_local(features, check_times):
|
|||||||
'boost-libs', 'boost-dev']
|
'boost-libs', 'boost-dev']
|
||||||
|
|
||||||
if 'docs' in features:
|
if 'docs' in features:
|
||||||
packages.extend(['py-sphinx', 'py-sphinx_rtd_theme'])
|
if revision == '3.10':
|
||||||
|
packages.extend(['py-sphinx', 'py-sphinx_rtd_theme'])
|
||||||
|
else:
|
||||||
|
packages.extend(['py3-sphinx'])
|
||||||
|
|
||||||
if 'unittest' in features:
|
if 'unittest' in features:
|
||||||
_install_gtest_sources()
|
_install_gtest_sources()
|
||||||
@@ -1738,7 +1757,11 @@ def _build_alpine_apk(system, revision, features, tarball_path, env, check_times
|
|||||||
execute('sudo rm -rf kea-src packages', check_times=check_times, dry_run=dry_run)
|
execute('sudo rm -rf kea-src packages', check_times=check_times, dry_run=dry_run)
|
||||||
os.makedirs('kea-src/src')
|
os.makedirs('kea-src/src')
|
||||||
execute('tar -zxf %s' % tarball_path, check_times=check_times, dry_run=dry_run)
|
execute('tar -zxf %s' % tarball_path, check_times=check_times, dry_run=dry_run)
|
||||||
execute('mv kea-%s/alpine/* kea-src' % pkg_version, check_times=check_times, dry_run=dry_run)
|
if revision == '3.10':
|
||||||
|
sys_suffix = '-3.10'
|
||||||
|
else:
|
||||||
|
sys_suffix = ''
|
||||||
|
execute('mv kea-%s/alpine%s/* kea-src' % (pkg_version, sys_suffix), check_times=check_times, dry_run=dry_run)
|
||||||
execute('rm -rf kea-%s' % pkg_version, check_times=check_times, dry_run=dry_run)
|
execute('rm -rf kea-%s' % pkg_version, check_times=check_times, dry_run=dry_run)
|
||||||
cmd = 'export kea_chks=`sha512sum kea-%s.tar.gz`; sed -i -e "s/KEA_CHECKSUM/${kea_chks}/" kea-src/APKBUILD' % pkg_version
|
cmd = 'export kea_chks=`sha512sum kea-%s.tar.gz`; sed -i -e "s/KEA_CHECKSUM/${kea_chks}/" kea-src/APKBUILD' % pkg_version
|
||||||
execute(cmd, check_times=check_times, dry_run=dry_run)
|
execute(cmd, check_times=check_times, dry_run=dry_run)
|
||||||
@@ -1918,10 +1941,6 @@ def ensure_hammer_deps():
|
|||||||
if exitcode != 0:
|
if exitcode != 0:
|
||||||
execute('vagrant plugin install vagrant-lxc')
|
execute('vagrant plugin install vagrant-lxc')
|
||||||
|
|
||||||
exitcode = execute('vagrant plugin list | grep vagrant-alpine', raise_error=False)
|
|
||||||
if exitcode != 0:
|
|
||||||
execute('vagrant plugin install vagrant-alpine')
|
|
||||||
|
|
||||||
|
|
||||||
class CollectCommaSeparatedArgsAction(argparse.Action):
|
class CollectCommaSeparatedArgsAction(argparse.Action):
|
||||||
"""Helper argparse action class that can split multi-argument options by space and by comma."""
|
"""Helper argparse action class that can split multi-argument options by space and by comma."""
|
||||||
|
Reference in New Issue
Block a user