Hello, Bump NVR to 6.1. Pushed to master: 5adca1bbfc2c19c53ecda649b94960f6abe73cf6
Add release engineering tools to source tree. Pushed to master: b85fed4c4512537d9dce39f525c556a02e436753 Update NEWS for upcoming 6.1 release. Pushed to master: e92d96de044c1b1a36d1d1a2a444656278edf0a6 Update .gitignore to skip compile script from Autotools. Pushed to master: 75a706252bf816cbe236791e187c80d83774ad7d -- Petr^2 Spacek
From 75a706252bf816cbe236791e187c80d83774ad7d Mon Sep 17 00:00:00 2001 From: Petr Spacek <pspa...@redhat.com> Date: Fri, 28 Nov 2014 10:09:30 +0100 Subject: [PATCH] Update .gitignore to skip compile script from Autotools. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 40dfa22c5c8485ef0a4228ac6f5dede3730f9320..04a689bf723c287b47eb46a3a343d0a376cb2080 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ Makefile.in /aclocal.m4 /autom4te.cache /ar-lib +/compile /config.guess /config.h.in /config.sub -- 2.1.0
From e92d96de044c1b1a36d1d1a2a444656278edf0a6 Mon Sep 17 00:00:00 2001 From: Petr Spacek <pspa...@redhat.com> Date: Fri, 28 Nov 2014 10:10:40 +0100 Subject: [PATCH] Update NEWS for upcoming 6.1 release. --- NEWS | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/NEWS b/NEWS index f88d8552d34a774f684081f14340208cdf00a43b..313151ab197e4529def7953a1fbffa8fc3e8c5a7 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,17 @@ +6.1 +==== +[1] Crash caused by interaction between forward and master zones was fixed. + https://fedorahosted.org/bind-dyndb-ldap/ticket/145 + +[2] DNS NOTIFY messages are sent after any modification to the zone. + https://fedorahosted.org/bind-dyndb-ldap/ticket/144 + +[3] Misleading error message about forward zones during reconnect was fixed. + +[4] Informational message about number of defined/loaded zones was improved. + +[5] Various build system improvements. + 6.0 ==== [1] idnsZoneActive attribute is supported again and zones can be activated -- 2.1.0
From b85fed4c4512537d9dce39f525c556a02e436753 Mon Sep 17 00:00:00 2001 From: Petr Spacek <pspa...@redhat.com> Date: Fri, 28 Nov 2014 13:40:52 +0100 Subject: [PATCH] Add release engineering tools to source tree. See releng/README for details. --- .gitignore | 4 +++ releng/README | 33 ++++++++++++++++++ releng/bumpver.py | 86 +++++++++++++++++++++++++++++++++++++++++++++++ releng/srcversion.py | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++ releng/trac.py | 39 +++++++++++++++++++++ releng/tracvers.py | 44 ++++++++++++++++++++++++ 6 files changed, 301 insertions(+) create mode 100644 releng/README create mode 100755 releng/bumpver.py create mode 100755 releng/srcversion.py create mode 100644 releng/trac.py create mode 100755 releng/tracvers.py diff --git a/.gitignore b/.gitignore index 04a689bf723c287b47eb46a3a343d0a376cb2080..53d7ed414ab0ee45afa2cb8ac84e8ab23de358ac 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,7 @@ Makefile.in .project .cproject .settings + +# Python +*.pyc +__pycache__ diff --git a/releng/README b/releng/README new file mode 100644 index 0000000000000000000000000000000000000000..8bdb1693077a54f3c910643a354725a9ebc93d17 --- /dev/null +++ b/releng/README @@ -0,0 +1,33 @@ +Release Engineering +=================== +Latest cheat sheet is available on: +https://fedorahosted.org/bind-dyndb-ldap/wiki/ReleaseProcess + +This directory contains assorted set of tools related to release enginnering. +All scripts should be run from root of the source tree. + +NOTE! +Scripts can make changes in local repo so all changes should be carefully +reviewed before git push! + +Final push to remore repo has to be done manually. + + +User scripts +------------ + +bumpver.py +~~~~~~~~~~ +Increments version number in configure.ac and SPEC file and creates a signed +tag for current release. + +tracvers.py +~~~~~~~~~~~ +Creates Trac version for each Git tag. + + +Auxiliary scripts +----------------- +These scripts are not intended for usage from command line: +- srcversion.py +- trac.py diff --git a/releng/bumpver.py b/releng/bumpver.py new file mode 100755 index 0000000000000000000000000000000000000000..191ff2ffe68451f88ae112718a8ea961216b7e3d --- /dev/null +++ b/releng/bumpver.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +""" +Bump version number in source tree, commit and tag resulting tree. + +Usage: +- bumpver.py -> bump minor version by 1 +- bumpver.py 6.1 -> set major and minor versions to 6.1 + +Assumptions: +- README file was updated & commited by hand. + +Checks: +- Working directory is clean. +- NEWS file contains notes for new version. + +Actions: +- Bump version in configure.ac & bind-dyndb-ldap.spec. +- Commits bumped version. +- Tags new version. +""" + +import logging +import re +from subprocess import check_output, check_call +import sys + +from srcversion import FileVersion, FakeVersion + +logging.basicConfig(level=logging.DEBUG) +log = logging.getLogger('bump') + +def bump_version(cur_version): + """Bump minor version by 1 OR return specified version if one was given + on commandline. """ + if len(sys.argv) == 1: + major = cur_version.major + minor = cur_version.minor + 1 + elif len(sys.argv) == 2: + try: + major, minor = sys.argv[1].split('.') + except ValueError: + log.critical('Version number has to have format <major.minor>') + sys.exit(4) + + return FakeVersion(major, minor) + +def expect_clean_workdir(): + gstatus = check_output(['git', 'status', '--porcelain']) + if gstatus.strip(): + log.critical('Working directory is not clean:\n%s', gstatus) + sys.exit(1) + +expect_clean_workdir() + +# get current version +file_version = FileVersion() + +# compute new version +new_version = bump_version(file_version) +log.info('New version: %s' % new_version) + +# check that new version is in NEWS file +with open('NEWS') as fnews: + regex = '(^|\n)%s.%s\n====\n' % (new_version.major, new_version.minor) + if not re.search(regex, fnews.read()): + log.fatal('NEWS file does not contain version %s', new_version) + sys.exit(2) +log.debug('NEWS file seems okay') + +# write new version +file_version.major = new_version.major +file_version.minor = new_version.minor + +# commit version bump +log.debug('Add modified files to git index') +log.info(check_output(['git', 'add'] + file_version.files)) +log.info(check_output(['git', 'commit', '-m', 'Bump NVR to %s.' % file_version])) +check_call(['git', 'show']) + +# working directory should be clean if we did not mess things up +expect_clean_workdir() + +# tag new version +ver_str = "v%s" % str(file_version) +check_call(['git', 'tag', '-s', '-m', 'Release %s.' % ver_str, ver_str]) diff --git a/releng/srcversion.py b/releng/srcversion.py new file mode 100755 index 0000000000000000000000000000000000000000..f9176f526f2dc70dd02e7cd3ae5a6458db7070c6 --- /dev/null +++ b/releng/srcversion.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python + +""" +Interface for version information in bind-dyndb-ldap source tree. +""" + +import logging +import re + +log = logging.getLogger('version') + +class FakeVersion(object): + """ + Read-only object with FileVersion-like interface. + """ + def __init__(self, major, minor): + self._major = int(major) + self._minor = int(minor) + + @property + def major(self): + return self._major + + @property + def minor(self): + return self._minor + + def __str__(self): + return "%s.%s" % (self.major, self.minor) + + +class FileVersion(FakeVersion): + """ + Read/write interface for version information in configure.ac + and bind-dyndb-ldap.spec. + """ + def __init__(self): + self.configureac_regex = '(?<=\nAC_INIT\(\[bind-dyndb-ldap\], \[)(?P<major>[0-9]+)\.(?P<minor>[0-9]+)(?=\], \[freeipa-devel@redhat\.com\]\)\n)' + self.files = ['configure.ac', 'contrib/bind-dyndb-ldap.spec'] + + def _get_ver(self): + """return RE match object from configure.ac""" + with open('configure.ac') as fconfigureac: + configureac = fconfigureac.read() + return re.search(self.configureac_regex, configureac) + + def _write_ver(self, new_ver): + """write new version to configure.ac and bind-dyndb-ldap.spec""" + log.debug('Writing new version %s to configure.ac', new_ver) + with open('configure.ac', 'r+') as fconfigureac: + configureac = fconfigureac.read() + new_config = re.sub(self.configureac_regex, new_ver, configureac) + fconfigureac.seek(0) + fconfigureac.write(new_config) + fconfigureac.truncate() + + log.debug('Writing new version %s to bind-dyndb-ldap.spec', new_ver) + with open('contrib/bind-dyndb-ldap.spec', 'r+') as fspec: + # look-ahead regex requires fixed length prefix which we don't have + regex = '(\nVersion:\s+)(\S+)(?=\n)' + old_spec = fspec.read() + matches = re.search(regex, old_spec) + if not matches: + raise ValueError('Cannot find Version line in .spec') + replacement = matches.group(1) + new_ver + new_spec = re.sub(regex, replacement, old_spec) + fspec.seek(0) + fspec.write(new_spec) + fspec.truncate() + + @property + def major(self): + ver = int(self._get_ver().group("major")) + log.debug('Major version is %s', ver) + return ver + + @major.setter + def major(self, value): + new_ver = "%s.%s" % (value, self.minor) + self._write_ver(new_ver) + + @property + def minor(self): + ver = int(self._get_ver().group("minor")) + log.debug('Minor version is %s', ver) + return ver + + @minor.setter + def minor(self, value): + new_ver = "%s.%s" % (self.major, value) + self._write_ver(new_ver) + +if __name__ == "__main__": + logging.basicConfig(level=logging.DEBUG) + log.info("bind-dyndb-ldap version is %s", FileVersion()) diff --git a/releng/trac.py b/releng/trac.py new file mode 100644 index 0000000000000000000000000000000000000000..6301d6b7beb5d1cea76c3b98f5292f8b3ef47eeb --- /dev/null +++ b/releng/trac.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import logging +import os +import re +import json +import xmlrpc.client + +log = logging.getLogger('trac') + +class Trac(): + def __init__(self, protocol, url, username, passwd): + self.baseurl = '%s://%s' % (protocol, url) + loginurl = '%s://%s:%s@%s/login/xmlrpc' % (protocol, username, passwd, url) + self.api = xmlrpc.client.ServerProxy(loginurl) + + def match_ticket_url(self, line): + return re.match("^ +%s/ticket/([0-9]+) *$" % self.baseurl, line) + + def get_ticket_attrs(self, ticketid): + ticket = self.api.ticket.get(ticketid) + assert str(ticket[0]) == str(ticketid) + return ticket[3] + +def trac_autoconf(): + """ + Configuration file format is: + {"protocol": "https", + "url": "fedorahosted.org/bind-dyndb-ldap", + "username": "FedoraUserName", + "passwd": "FedoraPassword"} + """ + config = json.load(open(os.path.expanduser('~/.trac'))) + return Trac(**config) + +if __name__ == "__main__": + t = trac_autoconf() + logging.basicConfig(level=logging.DEBUG) + log.debug(t.api) diff --git a/releng/tracvers.py b/releng/tracvers.py new file mode 100755 index 0000000000000000000000000000000000000000..8436976304dfb282e8cf5ff445dd374c220856fe --- /dev/null +++ b/releng/tracvers.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +""" +Create Trac version for each Git tag. +""" + +from datetime import datetime +import logging +from subprocess import check_output, check_call + +from trac import trac_autoconf + +logging.basicConfig(level=logging.DEBUG) +log = logging.getLogger('tracver') + +tr = trac_autoconf() + +# version in Trac has format '1.2' +trac_versions = set() +for ver in tr.api.ticket.version.getAll(): + trac_versions.add("v%s" % ver) +log.debug('Trac versions: %s', trac_versions) + +# version in Git is tag named like 'v1.2' +git_versions = set() +for tag in check_output(['git','tag']).decode('ascii').strip().split('\n'): + # these are sins of young developers + if tag == 'v0.1.0-b' or tag == 'v0.1.0-a1': + tag = tag.translate({ord('-'): None}) + git_versions.add(tag) +log.debug('Git versions: %s', git_versions) + +new_versions = git_versions - trac_versions +log.debug('New versions missing in Trac: %s', new_versions) + +# add new versions to Trac +for tag in new_versions: + time = check_output(['git', 'log', '--format=format:%ai', '%s~1..%s' + % (tag, tag)]).decode('ascii').strip() + time = datetime.strptime(time, "%Y-%m-%d %H:%M:%S %z") + version = tag[1:] + log.info('Adding version %s with timestamp %s', version, time) + tr.api.ticket.version.create(version, {'time': time, 'description': ''}) + -- 2.1.0
From 5adca1bbfc2c19c53ecda649b94960f6abe73cf6 Mon Sep 17 00:00:00 2001 From: Petr Spacek <pspa...@redhat.com> Date: Fri, 28 Nov 2014 16:00:20 +0100 Subject: [PATCH] Bump NVR to 6.1. --- configure.ac | 2 +- contrib/bind-dyndb-ldap.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index d12ef7bb8c32f320e872d74405b980ced9bd28d8..9f8f07c01e3feefe4254f73203bbc06b2bce28cd 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.59]) -AC_INIT([bind-dyndb-ldap], [6.0], [freeipa-devel@redhat.com]) +AC_INIT([bind-dyndb-ldap], [6.1], [freeipa-devel@redhat.com]) AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2]) diff --git a/contrib/bind-dyndb-ldap.spec b/contrib/bind-dyndb-ldap.spec index 574519982463d811c482bdaaa70839e2c15e9e12..01f083bcd57bbdc939840c036a53771a8e0ebcfa 100644 --- a/contrib/bind-dyndb-ldap.spec +++ b/contrib/bind-dyndb-ldap.spec @@ -1,7 +1,7 @@ %define VERSION %{version} Name: bind-dyndb-ldap -Version: 6.0 +Version: 6.1 Release: 0%{?dist} Summary: LDAP back-end plug-in for BIND -- 2.1.0
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel