summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpackages/bddeb57
-rwxr-xr-xpackages/brpm43
-rwxr-xr-xpackages/make-tarball89
-rwxr-xr-xtools/make-dist-tarball (renamed from packages/make-dist-tarball)0
-rwxr-xr-xtools/make-tarball33
-rwxr-xr-xtools/read-dependencies75
-rwxr-xr-xtools/read-version85
7 files changed, 142 insertions, 240 deletions
diff --git a/packages/bddeb b/packages/bddeb
index 10ad08b3..871c5212 100755
--- a/packages/bddeb
+++ b/packages/bddeb
@@ -5,11 +5,21 @@ import shutil
import sys
import glob
+
+def find_root():
+ look_where = [
+ os.path.join(os.getcwd(), 'setup.py'),
+ os.path.join(os.pardir, 'setup.py'),
+ ]
+ for fn in look_where:
+ if os.path.isfile(fn):
+ return os.path.dirname(os.path.abspath(fn))
+ raise ImportError(("Unable to determine where your cloud-init 'setup.py'"
+ " file is located at!"))
+
+
# Use the util functions from cloudinit
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
- sys.argv[0]), os.pardir, os.pardir))
-if os.path.exists(os.path.join(possible_topdir, "cloudinit", "__init__.py")):
- sys.path.insert(0, possible_topdir)
+sys.path.insert(0, find_root())
from cloudinit import templater
from cloudinit import util
@@ -34,7 +44,8 @@ def write_debian_folder(root, version, revno, init_sys):
os.makedirs(deb_dir)
# Fill in the change log template
- templater.render_to_file(util.abs_join('debian', 'changelog'),
+ templater.render_to_file(util.abs_join(find_root(),
+ 'packages', 'debian', 'changelog'),
util.abs_join(deb_dir, 'changelog'),
params={
'version': version,
@@ -43,7 +54,7 @@ def write_debian_folder(root, version, revno, init_sys):
# Write out the control file template
cmd = [sys.executable,
- util.abs_join(os.pardir, 'tools', 'read-dependencies')]
+ util.abs_join(find_root(), 'tools', 'read-dependencies')]
(stdout, _stderr) = util.subp(cmd)
# Map to known packages
@@ -61,17 +72,20 @@ def write_debian_folder(root, version, revno, init_sys):
else:
requires.append(tgt_pkg)
- templater.render_to_file(util.abs_join('debian', 'control'),
+ templater.render_to_file(util.abs_join(find_root(),
+ 'packages', 'debian', 'control'),
util.abs_join(deb_dir, 'control'),
params={'requires': requires})
- templater.render_to_file(util.abs_join('debian', 'rules'),
+ templater.render_to_file(util.abs_join(find_root(),
+ 'packages', 'debian', 'rules'),
util.abs_join(deb_dir, 'rules'),
params={'init_sys': init_sys})
# Just copy the following directly
for base_fn in ['dirs', 'copyright', 'compat', 'pycompat']:
- shutil.copy(util.abs_join('debian', base_fn),
+ shutil.copy(util.abs_join(find_root(),
+ 'packages', 'debian', base_fn),
util.abs_join(deb_dir, base_fn))
@@ -100,8 +114,7 @@ def main():
with util.tempdir() as tdir:
- cmd = [sys.executable,
- util.abs_join(os.pardir, 'tools', 'read-version')]
+ cmd = [util.abs_join(find_root(), 'tools', 'read-version')]
(sysout, _stderr) = util.subp(cmd)
version = sysout.strip()
@@ -113,24 +126,20 @@ def main():
# since we will extract it then add in the debian
# folder, then re-archive it for debian happiness
print("Creating a temporary tarball using the 'make-tarball' helper")
- cmd = [sys.executable,
- util.abs_join(os.getcwd(), 'make-tarball')]
+ cmd = [util.abs_join(find_root(), 'tools', 'make-tarball')]
(sysout, _stderr) = util.subp(cmd)
arch_fn = sysout.strip()
tmp_arch_fn = util.abs_join(tdir, os.path.basename(arch_fn))
shutil.move(arch_fn, tmp_arch_fn)
print("Extracting temporary tarball %r" % (tmp_arch_fn))
- cmd = ['tar', '-xvzf', tmp_arch_fn, '-C', tdir]
+ xdir = util.abs_join(tdir, 'cloud-init')
+ os.makedirs(xdir)
+ cmd = ['tar', '-xvzf', tmp_arch_fn, '-C', xdir]
util.subp(cmd, capture=capture)
- base_name = os.path.basename(arch_fn)[:-len(".tar.gz")]
- shutil.move(util.abs_join(tdir, base_name),
- util.abs_join(tdir, 'cloud-init'))
- print("Creating a debian/ folder in %r" %
- (util.abs_join(tdir, 'cloud-init')))
- write_debian_folder(util.abs_join(tdir, 'cloud-init'),
- version, revno, args.boot)
+ print("Creating a debian/ folder in %r" % (xdir)))
+ write_debian_folder(xdir, version, revno, args.boot)
# The naming here seems to follow some debian standard
# so it will whine if it is changed...
@@ -138,13 +147,13 @@ def main():
print("Archiving that new folder into %r" % (tar_fn))
cmd = ['tar', '-czvf',
util.abs_join(tdir, tar_fn),
- '-C', util.abs_join(tdir, 'cloud-init')]
- cmd.extend(os.listdir(util.abs_join(tdir, 'cloud-init')))
+ '-C', xdir]
+ cmd.extend(os.listdir(xdir))
util.subp(cmd, capture=capture)
shutil.copy(util.abs_join(tdir, tar_fn), tar_fn)
print("Wrote out archive %r" % (util.abs_join(tar_fn)))
- print("Running 'debuild' in %r" % (util.abs_join(tdir, 'cloud-init')))
+ print("Running 'debuild' in %r" % (xdir))
with util.chdir(util.abs_join(tdir, 'cloud-init')):
cmd = ['debuild']
if not args.sign:
diff --git a/packages/brpm b/packages/brpm
index 1d05bd2a..7d0dc78f 100755
--- a/packages/brpm
+++ b/packages/brpm
@@ -11,11 +11,21 @@ import re
import argparse
+def find_root():
+ look_where = [
+ os.path.join(os.getcwd(), 'setup.py'),
+ os.path.join(os.pardir, 'setup.py'),
+ ]
+ for fn in look_where:
+ if os.path.isfile(fn):
+ return os.path.dirname(os.path.abspath(fn))
+ raise ImportError(("Unable to determine where your cloud-init 'setup.py'"
+ " file is located at!"))
+
+
# Use the util functions from cloudinit
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
- sys.argv[0]), os.pardir, os.pardir))
-if os.path.exists(os.path.join(possible_topdir, "cloudinit", "__init__.py")):
- sys.path.insert(0, possible_topdir)
+sys.path.insert(0, find_root())
+
from cloudinit import templater
from cloudinit import util
@@ -82,8 +92,7 @@ def format_change_line(ds, who, comment=None):
def generate_spec_contents(args, tmpl_fn):
# Figure out the version and revno
- cmd = [sys.executable,
- util.abs_join(os.pardir, 'tools', 'read-version')]
+ cmd = [util.abs_join(find_root(), 'tools', 'read-version')]
(stdout, _stderr) = util.subp(cmd)
version = stdout.strip()
@@ -99,8 +108,7 @@ def generate_spec_contents(args, tmpl_fn):
subs['archive_name'] = '%{name}-%{version}-' + revno + '.tar.gz'
subs['bd_requires'] = ['python-devel', 'python-setuptools']
- cmd = [sys.executable,
- util.abs_join(os.pardir, 'tools', 'read-dependencies')]
+ cmd = [util.abs_join(find_root(), 'tools', 'read-dependencies')]
(stdout, _stderr) = util.subp(cmd)
# Map to known packages
@@ -122,7 +130,7 @@ def generate_spec_contents(args, tmpl_fn):
subs['requires'] = requires
# Format a nice changelog (as best as we can)
- changelog = util.load_file(util.abs_join(os.pardir, 'ChangeLog'))
+ changelog = util.load_file(util.abs_join(find_root(), 'ChangeLog'))
changelog_lines = []
for line in changelog.splitlines():
if not line.strip():
@@ -159,8 +167,8 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument("-b", "--boot", dest="boot",
help="select boot type (default: %(default)s)",
- metavar="TYPE", default='initd',
- choices=('initd', 'systemd', 'initd-local'))
+ metavar="TYPE", default='sysvinit',
+ choices=('sysvinit', 'systemd'))
parser.add_argument("-v", "--verbose", dest="verbose",
help=("run verbosely"
" (default: %(default)s)"),
@@ -179,17 +187,16 @@ def main():
util.ensure_dirs([root_dir, arc_dir])
# Archive the code
- cmd = [sys.executable,
- util.abs_join(os.getcwd(), 'make-tarball')]
+ cmd = [util.abs_join(find_root(), 'tools', 'make-tarball')]
(stdout, _stderr) = util.subp(cmd)
archive_fn = stdout.strip()
real_archive_fn = os.path.join(arc_dir, os.path.basename(archive_fn))
shutil.move(archive_fn, real_archive_fn)
# Form the spec file to be used
- tmpl_fn = util.abs_join(os.getcwd(), 'redhat', 'cloud-init.spec')
+ tmpl_fn = util.abs_join(find_root(), 'packages', 'redhat', 'cloud-init.spec')
contents = generate_spec_contents(args, tmpl_fn)
- spec_fn = os.path.join(root_dir, 'cloud-init.spec')
+ spec_fn = util.abs_join(root_dir, 'cloud-init.spec')
util.write_file(spec_fn, contents)
# Now build it!
@@ -199,11 +206,11 @@ def main():
# Copy the items built to our local dir
globs = []
globs.extend(glob.glob("%s/*.rpm" %
- (os.path.join(root_dir, 'RPMS', 'noarch'))))
+ (util.abs_join(root_dir, 'RPMS', 'noarch'))))
globs.extend(glob.glob("%s/*.rpm" %
- (os.path.join(root_dir, 'RPMS'))))
+ (util.abs_join(root_dir, 'RPMS'))))
globs.extend(glob.glob("%s/*.rpm" %
- (os.path.join(root_dir, 'SRPMS'))))
+ (util.abs_join(root_dir, 'SRPMS'))))
for rpm_fn in globs:
tgt_fn = util.abs_join(os.getcwd(), os.path.basename(rpm_fn))
shutil.move(rpm_fn, tgt_fn)
diff --git a/packages/make-tarball b/packages/make-tarball
deleted file mode 100755
index 43a6fc33..00000000
--- a/packages/make-tarball
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/python
-
-import contextlib
-import os
-import shutil
-import subprocess
-import sys
-import tempfile
-
-import optparse
-
-
-# Use the util functions from cloudinit
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
- sys.argv[0]), os.pardir, os.pardir))
-if os.path.exists(os.path.join(possible_topdir, "cloudinit", "__init__.py")):
- sys.path.insert(0, possible_topdir)
-
-from cloudinit import util
-
-
-def find_versioned_files():
- (stdout, _stderr) = util.subp(['bzr', 'ls', '--versioned', '--recursive'])
- fns = [fn for fn in stdout.splitlines()
- if fn and not fn.startswith('.')]
- fns.sort()
- return fns
-
-
-def copy(fn, where_to, verbose):
- if verbose:
- print("Copying %r --> %r" % (fn, where_to))
- if os.path.isfile(fn):
- shutil.copy(fn, where_to)
- elif os.path.isdir(fn) and not os.path.isdir(where_to):
- os.makedirs(where_to)
- else:
- raise RuntimeError("Do not know how to copy %s" % (fn))
-
-
-def main():
-
- parser = optparse.OptionParser()
- parser.add_option("-f", "--file", dest="filename",
- help="write archive to FILE", metavar="FILE")
- parser.add_option("-v", "--verbose",
- action="store_true", dest="verbose", default=False,
- help="show verbose messaging")
-
- (options, args) = parser.parse_args()
-
- base_fn = options.filename
- if not base_fn:
- (stdout, _stderr) = util.subp(['bzr', 'revno'])
- revno = stdout.strip()
- cmd = [sys.executable,
- util.abs_join(os.pardir, 'tools', 'read-version')]
- (stdout, _stderr) = util.subp(cmd)
- version = stdout.strip()
- base_fn = 'cloud-init-%s-%s' % (version, revno)
-
- with util.tempdir() as tdir:
- util.ensure_dir(util.abs_join(tdir, base_fn))
- arch_fn = '%s.tar.gz' % (base_fn)
-
- with util.chdir(os.pardir):
- fns = find_versioned_files()
- for fn in fns:
- copy(fn, util.abs_join(tdir, base_fn, fn),
- verbose=options.verbose)
-
- arch_full_fn = util.abs_join(tdir, arch_fn)
- cmd = ['tar', '-czvf', arch_full_fn, '-C', tdir, base_fn]
- if options.verbose:
- print("Creating an archive from directory %r to %r" %
- (util.abs_join(tdir, base_fn), arch_full_fn))
-
- util.subp(cmd, capture=(not options.verbose))
- shutil.move(util.abs_join(tdir, arch_fn),
- util.abs_join(os.getcwd(), arch_fn))
-
- print(os.path.abspath(arch_fn))
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
-
diff --git a/packages/make-dist-tarball b/tools/make-dist-tarball
index 622283bd..622283bd 100755
--- a/packages/make-dist-tarball
+++ b/tools/make-dist-tarball
diff --git a/tools/make-tarball b/tools/make-tarball
new file mode 100755
index 00000000..7fce5e28
--- /dev/null
+++ b/tools/make-tarball
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+set -e
+
+ROOT_DIR=""
+if [ -e "setup.py" ]
+then
+ ROOT_DIR="$PWD"
+elif [ -e "../setup.py" ]
+then
+ ROOT_DIR="$PWD/../"
+else
+ echo "Unable to locate 'setup.py' file that should" \
+ "exist in the cloud-init root directory."
+ exit 1
+fi
+
+if [ ! -z "$1" ]
+then
+ ARCHIVE_FN="$1"
+else
+ REVNO=$(bzr revno $ROOT_DIR)
+ VERSION=$($ROOT_DIR/tools/read-version)
+ ARCHIVE_FN="$PWD/cloud-init-$REVNO-$VERSION.tar.gz"
+fi
+
+FILES=$(cd $ROOT_DIR && bzr ls --versioned --recursive)
+echo "$FILES" | tar czf $ARCHIVE_FN \
+ -C "$ROOT_DIR" \
+ --no-recursion --files-from -
+
+echo "$ARCHIVE_FN"
+
diff --git a/tools/read-dependencies b/tools/read-dependencies
index 72e1e095..3aa6e286 100755
--- a/tools/read-dependencies
+++ b/tools/read-dependencies
@@ -1,45 +1,30 @@
-#!/usr/bin/python
-# vi: ts=4 expandtab
-
-import os
-import sys
-import re
-
-
-def parse_requires(fn):
- requires = []
- with open(fn, 'r') as fh:
- lines = fh.read().splitlines()
- for line in lines:
- line = line.strip()
- if not line or line[0] == '#':
- continue
- else:
- requires.append(line)
- return requires
-
-
-def find_requires(args):
- p_files = []
- if args:
- p_files.append(args[0])
- p_files.append(os.path.join(os.pardir, "Requires"))
- p_files.append(os.path.join(os.getcwd(), 'Requires'))
- found = None
- for fn in p_files:
- if os.path.isfile(fn):
- found = fn
- break
- return found
-
-
-if __name__ == '__main__':
- run_args = sys.argv[1:]
- fn = find_requires(run_args)
- if not fn:
- sys.stderr.write("'Requires' file not found!\n")
- sys.exit(1)
- else:
- deps = parse_requires(fn)
- for entry in deps:
- print entry
+#!/bin/sh
+
+set -e
+
+if [ -e "setup.py" ]
+then
+ ROOT_DIR="$PWD"
+elif [ -e "../setup.py" ]
+then
+ ROOT_DIR="$PWD/../"
+else
+ echo "Unable to locate 'setup.py' file that should" \
+ "exist in the cloud-init root directory."
+ exit 1
+fi
+
+REQUIRES="$ROOT_DIR/Requires"
+
+if [ ! -e "$REQUIRES" ]
+then
+ echo "Unable to find 'Requires' file located at $REQUIRES"
+ exit 1
+fi
+
+# Filter out comments and empty liens
+DEPS=$(cat $REQUIRES | grep -Pv "^\s*#" | grep -Pv '^\s*$')
+echo "$DEPS" | sort -d -f
+
+
+
diff --git a/tools/read-version b/tools/read-version
index e6167a2c..690666b5 100755
--- a/tools/read-version
+++ b/tools/read-version
@@ -1,70 +1,27 @@
-#!/usr/bin/python
-# vi: ts=4 expandtab
+#!/bin/sh
-import os
-import sys
-import re
+set -e
-from distutils import version as ver
+if [ -e "setup.py" ]
+then
+ ROOT_DIR="$PWD"
+elif [ -e "../setup.py" ]
+then
+ ROOT_DIR="$PWD/../"
+else
+ echo "Unable to locate 'setup.py' file that should" \
+ "exist in the cloud-init root directory."
+ exit 1
+fi
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
- sys.argv[0]), os.pardir, os.pardir))
-if os.path.exists(os.path.join(possible_topdir, "cloudinit", "__init__.py")):
- sys.path.insert(0, possible_topdir)
+CHNG_LOG="$ROOT_DIR/ChangeLog"
-from cloudinit import version as cver
+if [ ! -e "$CHNG_LOG" ]
+then
+ echo "Unable to find 'ChangeLog' file located at $CHNG_LOG"
+ exit 1
+fi
-def parse_versions(fn):
- with open(fn, 'r') as fh:
- lines = fh.read().splitlines()
- versions = []
- for line in lines:
- line = line.strip()
- if line.startswith("-") or not line:
- continue
- if not re.match(r"[\d]", line):
- continue
- line = line.strip(":")
- if (re.match(r"^[\d+]\.[\d+]\.[\d+]$", line) or
- re.match(r"^[\d+]\.[\d+]$", line)):
- versions.append(line)
- return versions
+VERSION=$(grep -P "\d+.\d+.\d+:" $CHNG_LOG | cut -f1 -d ":" | head -n 1)
+echo $VERSION
-def find_changelog(args):
- p_files = []
- if args:
- p_files.append(args[0])
- p_files.append(os.path.join(os.pardir, "ChangeLog"))
- p_files.append(os.path.join(os.getcwd(), 'ChangeLog'))
- found = None
- for fn in p_files:
- if os.path.isfile(fn):
- found = fn
- break
- return found
-
-
-if __name__ == '__main__':
- run_args = sys.argv[1:]
- fn = find_changelog(run_args)
- if not fn:
- sys.stderr.write("'ChangeLog' file not found!\n")
- sys.exit(1)
- else:
- versions = parse_versions(fn)
- if not versions:
- sys.stderr.write("No versions found in %s!\n" % (fn))
- sys.exit(1)
- else:
- # Check that the code version is the same
- # as the version we found!
- ch_ver = versions[0].strip()
- code_ver = cver.version()
- ch_ver_obj = ver.StrictVersion(ch_ver)
- if ch_ver_obj != code_ver:
- sys.stderr.write(("Code version %s does not match"
- " changelog version %s\n") %
- (code_ver, ch_ver_obj))
- sys.exit(1)
- sys.stdout.write(ch_ver)
- sys.exit(0)