[Pkg-ganeti-devel] [ganeti] 08/15: Add postinst/postrm templates and generator script
Apollon Oikonomopoulos
apoikos-guest at alioth.debian.org
Tue Oct 1 14:09:59 UTC 2013
This is an automated email from the git hooks/post-receive script.
apoikos-guest pushed a commit to branch master
in repository ganeti.
commit 9e52af5fe34170f850e4190b03145a9bbd8a745d
Author: Apollon Oikonomopoulos <apoikos at gmail.com>
Date: Tue Sep 17 16:32:36 2013 +0300
Add postinst/postrm templates and generator script
debian/genscript.py is used to generate postinst/postrm from the relevant
templates, to include the necessary user/group manipulation commands as found
in $(CURDIR)/doc/users.
---
debian/ganeti.postinst.in | 38 ++++++++++++++++++++++++++++
debian/ganeti.postrm.in | 40 +++++++++++++++++++++++++++++
debian/genscript.py | 61 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 139 insertions(+)
diff --git a/debian/ganeti.postinst.in b/debian/ganeti.postinst.in
new file mode 100644
index 0000000..49a5835
--- /dev/null
+++ b/debian/ganeti.postinst.in
@@ -0,0 +1,38 @@
+#!/bin/sh
+# postinst script for ganeti
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+#GANETI_USERS#
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ganeti.postrm.in b/debian/ganeti.postrm.in
new file mode 100644
index 0000000..d882c32
--- /dev/null
+++ b/debian/ganeti.postrm.in
@@ -0,0 +1,40 @@
+#!/bin/sh
+# postrm script for ganeti
+#
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ purge)
+ #GANETI_USERS#
+ ;;
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+~
diff --git a/debian/genscript.py b/debian/genscript.py
new file mode 100755
index 0000000..42c9cb1
--- /dev/null
+++ b/debian/genscript.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+
+# Generate postinst/postrm for ganeti using doc/users/*
+
+import os
+import sys
+
+
+def read_list(fname):
+ with open(fname, "r") as f:
+ return [ l.strip() for l in f ]
+
+def read_pairs(fname):
+ with open(fname, "r") as f:
+ return [ l.strip().split(None, 1) for l in f ]
+
+if len(sys.argv) != 3 or sys.argv[1] not in ('postinst', 'postrm'):
+ sys.stderr.write("Usage: %s postinst|postrm DIR\n" % sys.argv[0])
+ sys.exit(1)
+
+root = os.path.join(sys.argv[2], 'doc/users')
+debian_root = os.path.dirname(__file__)
+
+out = ""
+if sys.argv[1] == "postinst":
+ out += "\t# Groups\n"
+ for group in read_list(os.path.join(root, "groups")):
+ out += "\taddgroup --quiet --system \"%s\"\n" % group
+ out += "\n"
+
+ out += "\t# Users\n"
+ for user, group in read_pairs(os.path.join(root, "users")):
+ out += "\tadduser --quiet --system --ingroup \"%s\" --no-create-home" \
+ " --disabled-password --disabled-login" \
+ " --home /var/lib/ganeti \"%s\"\n" % (group, user)
+ out += "\n"
+
+ out += "\t# Group memberships\n"
+ for user, group in read_pairs(os.path.join(root, "groupmemberships")):
+ out += "\tadduser --quiet \"%s\" \"%s\"\n" % (user, group)
+
+elif sys.argv[1] == "postrm":
+ out += "\t# Users\n"
+ for user, _ in read_pairs(os.path.join(root, "users")):
+ out += "\tdeluser --quiet --system \"%s\" || true\n" % user
+ out += "\n"
+
+ out += "\t# Groups\n"
+ for group in read_list(os.path.join(root, "groups")):
+ out += "\tdelgroup --quiet --system \"%s\" || true\n" % group
+ out += "\n"
+
+
+with open(os.path.join(debian_root, "ganeti.%s.in" % sys.argv[1])) as script:
+ done = False
+ for line in script:
+ if line.strip() == "#GANETI_USERS#" and not done:
+ sys.stdout.write(out)
+ done = True
+ else:
+ sys.stdout.write(line)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ganeti/ganeti.git
More information about the Pkg-ganeti-devel
mailing list