summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJochen Schmitt <Jochen@herr-schmitt.de>2010-09-02 21:01:11 +0200
committerJochen Schmitt <Jochen@herr-schmitt.de>2010-09-05 21:27:47 +0200
commitd6779cc69205a252b9b0dbecbabac792787d5e4b (patch)
tree690b1eda48b9bc4a0981abaaad7bd863cdb0e2af
parent9d3a26ee290fe2d447ba034bf9e8387466cd1e79 (diff)
downloadfedora-packager-work.tar.gz
fedora-packager-work.tar.xz
fedora-packager-work.zip
Add a retire commandwork
-rw-r--r--src/fedpkg.bash7
-rwxr-xr-xsrc/fedpkg.py22
-rw-r--r--src/pyfedpkg/__init__.py37
3 files changed, 64 insertions, 2 deletions
diff --git a/src/fedpkg.bash b/src/fedpkg.bash
index 784abfe..54f94a9 100644
--- a/src/fedpkg.bash
+++ b/src/fedpkg.bash
@@ -11,8 +11,8 @@ _fedpkg()
# define all available commands to complete
commands='help build chain-build clean clog clone co commit ci compile \
diff gimmespec giturl import install lint local mockbuild new new-sources \
- patch prep push pull scratch-build sources srpm switch-branch tag tag-request \
- unused-patches update upload verrel'
+ patch prep push pull retire scratch-build sources srpm switch-branch tag \
+ tag-request unused-patches update upload verrel'
if [[ $COMP_CWORD -eq 1 ]] ; then
if [[ "$cur" == -* ]]; then
@@ -89,6 +89,9 @@ _fedpkg()
prep)
options='--arch'
;;
+ retire)
+ options='-p --push -m --mesage'
+ ;;
scratch-build)
options='--nowait --background --arches --srpm'
;;
diff --git a/src/fedpkg.py b/src/fedpkg.py
index d267559..411e128 100755
--- a/src/fedpkg.py
+++ b/src/fedpkg.py
@@ -448,6 +448,16 @@ def commit(args):
if args.push:
push(args)
+def retire(args):
+ try:
+ mymodule = pyfedpkg.PackageModule(args.path)
+ mymodule.retire(args.message)
+ except pyfedpkg.FedpkgError, e:
+ log.error('Could not reitre package: %s' % e)
+ sys.exit(1)
+ if args.push:
+ push(args)
+
def compile(args):
arch = None
short = False
@@ -950,6 +960,18 @@ packages will be built sequentially.
help = 'Alias for commit')
parser_ci.set_defaults(command = commit)
+ # retire stuff
+ parser_retire = subparsers.add_parser('retire',
+ help = 'Retire a Fedora package')
+ parser_retire.add_argument('-m', '--message',
+ default = None,
+ help = 'Message describing the reason of retireing')
+ parser_retire.add_argument('-p', '--push',
+ default = False,
+ action = 'store_true',
+ help = 'Push the retired package to the remote repository')
+ parser_retire.set_defaults(command = retire)
+
# compile locally
parser_compile = subparsers.add_parser('compile',
help = 'Local test rpmbuild compile')
diff --git a/src/pyfedpkg/__init__.py b/src/pyfedpkg/__init__.py
index f531c07..5da7ede 100644
--- a/src/pyfedpkg/__init__.py
+++ b/src/pyfedpkg/__init__.py
@@ -953,6 +953,18 @@ class PackageModule:
if self.branch.startswith('el5') or self.branch.startswith('el4'):
self.hashtype = 'md5'
+ def _delete(self):
+ """Delete all files in the directory with exception of ./.git'
+ """
+ for root, dirs, files in os.walk(self.path, topdown=False):
+ for name in files:
+ if not '/.git' in root:
+ os.remove(os.path.join(root, name))
+ for name in dirs:
+ if not (name == '.git' or '/.git' in root):
+ os.rmdir(os.path.join(root, name))
+ return
+
def tag(self, force=False, clog=False, message=None, file=None,
list=None, delete=None):
"""Managment of git tags
@@ -1175,6 +1187,31 @@ class PackageModule:
_run_command(cmd, cwd=self.path)
return
+ def retire(self, message=None):
+ """Retire a Fedora package
+ """
+
+ try:
+ self._delete()
+ except OSError, e:
+ raise FedpkgError ('Working tree could not deleted: %s ' % e)
+
+ if message:
+ msg = message
+ else:
+ msg = 'Package %s was retired' % self.module
+
+ fd = open(os.path.join(self.path, 'dead.package'), 'w')
+ fd.write(msg)
+ fd.close()
+
+ cmd = ['git', 'add', os.path.join(self.path, 'dead.package')]
+ _run_command(cmd, cwd=self.path)
+
+ self.commit (msg)
+
+ return
+
def compile(self, arch=None, short=False):
"""Run rpm -bc on a module