diff options
| author | Chad Smith <chad.smith@canonical.com> | 2017-04-24 17:57:04 +0000 | 
|---|---|---|
| committer | Scott Moser <smoser@brickies.net> | 2017-05-16 16:42:56 -0400 | 
| commit | 8f176479c0282e564a87036704c515f746aab3a9 (patch) | |
| tree | bd582d8d9aafa64341dcad72af40be288ac8a2c9 | |
| parent | 64a3df16d9c63db470a3ba55d9c5cc8e05d050d7 (diff) | |
| download | vyos-cloud-init-8f176479c0282e564a87036704c515f746aab3a9.tar.gz vyos-cloud-init-8f176479c0282e564a87036704c515f746aab3a9.zip | |
make deb: Add devscripts dependency for make deb. Cleanup packages/bddeb.
Add a simple dependency check to "make deb" target for devscripts. Rework
a bit of the logic in package/bddeb to drop superfluous STD_NAMED_PACKAGES
to avoid duplication of requirements already listed in
(test-)?requiremets.txt. All "standard" packages can be assumed to have
either python3- or python- prefix if not listed in NONSTD_NAMED_PACKAGES.
This branch also moves logic inside write_debian_folder which is unneeded
up in main.
LP: #1685935
| -rw-r--r-- | Makefile | 4 | ||||
| -rwxr-xr-x | packages/bddeb | 100 | 
2 files changed, 40 insertions, 64 deletions
| @@ -82,6 +82,10 @@ rpm:  	./packages/brpm --distro $(distro)  deb: +	@which debuild || \ +		{ echo "Missing devscripts dependency. Install with:"; \ +		  echo sudo apt-get install devscripts; exit 1; } +  	./packages/bddeb  .PHONY: test pyflakes pyflakes3 clean pep8 rpm deb yaml check_version diff --git a/packages/bddeb b/packages/bddeb index 79ac9768..f415209f 100755 --- a/packages/bddeb +++ b/packages/bddeb @@ -24,35 +24,17 @@ if "avoid-pep8-E402-import-not-top-of-file":      from cloudinit import templater      from cloudinit import util -# Package names that will showup in requires to what we can actually -# use in our debian 'control' file, this is a translation of the 'requires' -# file pypi package name to a debian/ubuntu package name. -STD_NAMED_PACKAGES = [ -    'configobj', -    'coverage', -    'jinja2', -    'jsonpatch', -    'oauthlib', -    'prettytable', -    'requests', -    'six', -    'httpretty', -    'mock', -    'nose', -    'setuptools', -    'flake8', -    'hacking', -    'unittest2', -] +# Package names that will showup in requires which have unique package names. +# Format is '<pypi-name>': {'<python_major_version>': <pkg_name_or_none>, ...}.  NONSTD_NAMED_PACKAGES = { -    'argparse': ('python-argparse', None), -    'contextlib2': ('python-contextlib2', None), -    'cheetah': ('python-cheetah', None), -    'pyserial': ('python-serial', 'python3-serial'), -    'pyyaml': ('python-yaml', 'python3-yaml'), -    'six': ('python-six', 'python3-six'), -    'pep8': ('pep8', 'python3-pep8'), -    'pyflakes': ('pyflakes', 'pyflakes'), +    'argparse': {'2': 'python-argparse', '3': None}, +    'contextlib2': {'2': 'python-contextlib2', '3': None}, +    'cheetah': {'2': 'python-cheetah', '3': None}, +    'pyserial': {'2': 'python-serial', '3': 'python3-serial'}, +    'pyyaml': {'2': 'python-yaml', '3': 'python3-yaml'}, +    'six': {'2': 'python-six', '3': 'python3-six'}, +    'pep8': {'2': 'pep8', '3': 'python3-pep8'}, +    'pyflakes': {'2': 'pyflakes', '3': 'pyflakes'},  }  DEBUILD_ARGS = ["-S", "-d"] @@ -68,8 +50,17 @@ def run_helper(helper, args=None, strip=True):      return stdout -def write_debian_folder(root, templ_data, pkgmap, pyver="3", -                        append_requires=[]): +def write_debian_folder(root, templ_data, is_python2, cloud_util_deps): +    """Create a debian package directory with all rendered template files.""" +    print("Creating a debian/ folder in %r" % (root)) +    if is_python2: +        pyver = "2" +        python = "python" +    else: +        pyver = "3" +        python = "python3" +    pkgfmt = "{}-{}" +      deb_dir = util.abs_join(root, 'debian')      # Just copy debian/ dir and then update files @@ -91,21 +82,16 @@ def write_debian_folder(root, templ_data, pkgmap, pyver="3",      pypi_test_pkgs = [p.lower().strip() for p in test_reqs]      # Map to known packages -    requires = append_requires +    requires = ['cloud-utils | cloud-guest-utils'] if cloud_util_deps else []      test_requires = []      lists = ((pypi_pkgs, requires), (pypi_test_pkgs, test_requires))      for pypilist, target in lists:          for p in pypilist: -            if p not in pkgmap: -                raise RuntimeError(("Do not know how to translate pypi " -                                    "dependency %r to a known package") % (p)) -            elif pkgmap[p]: -                target.append(pkgmap[p]) - -    if pyver == "3": -        python = "python3" -    else: -        python = "python" +            if p in NONSTD_NAMED_PACKAGES: +                if NONSTD_NAMED_PACKAGES[p][pyver]: +                    target.append(NONSTD_NAMED_PACKAGES[p][pyver]) +            else:  # Then standard package prefix +                target.append(pkgfmt.format(python, p))      templater.render_to_file(util.abs_join(find_root(),                                             'packages', 'debian', 'control.in'), @@ -124,8 +110,8 @@ def read_version():      return json.loads(run_helper('read-version', ['--json'])) -def main(): - +def get_parser(): +    """Setup and return an argument parser for bdeb tool."""      parser = argparse.ArgumentParser()      parser.add_argument("-v", "--verbose", dest="verbose",                          help=("run verbosely" @@ -162,7 +148,11 @@ def main():      parser.add_argument("--signuser", default=False, action='store',                          help="user to sign, see man dpkg-genchanges") +    return parser + +def main(): +    parser = get_parser()      args = parser.parse_args()      if not args.sign: @@ -177,18 +167,6 @@ def main():      if args.verbose:          capture = False -    pkgmap = {} -    for p in NONSTD_NAMED_PACKAGES: -        pkgmap[p] = NONSTD_NAMED_PACKAGES[p][int(not args.python2)] - -    for p in STD_NAMED_PACKAGES: -        if args.python2: -            pkgmap[p] = "python-" + p -            pyver = "2" -        else: -            pkgmap[p] = "python3-" + p -            pyver = "3" -      templ_data = {'debian_release': args.release}      with util.tempdir() as tdir: @@ -208,16 +186,10 @@ def main():          util.subp(cmd, capture=capture)          xdir = util.abs_join(tdir, "cloud-init-%s" % ver_data['version_long']) - -        print("Creating a debian/ folder in %r" % (xdir)) -        if args.cloud_utils: -            append_requires = ['cloud-utils | cloud-guest-utils'] -        else: -            append_requires = [] -          templ_data.update(ver_data) -        write_debian_folder(xdir, templ_data, pkgmap, -                            pyver=pyver, append_requires=append_requires) + +        write_debian_folder(xdir, templ_data, is_python2=args.python2, +                            cloud_util_deps=args.cloud_utils)          print("Running 'debuild %s' in %r" % (' '.join(args.debuild_args),                                                xdir)) | 
