From: Ian Jackson Date: Mon, 25 Jul 2011 10:33:22 +0000 (+0100) Subject: virt-subproc: new method adt-virt-schroot X-Git-Tag: debian/2.0.0~39 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=e427f5aee4541f9975a8cf96bda7afa4a749edf8;p=autopkgtest.git virt-subproc: new method adt-virt-schroot No manpage yet. --- diff --git a/Makefile b/Makefile index 9f5c45c..75de23d 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ include settings.make programs = virt-subproc/adt-virt-chroot \ virt-subproc/adt-virt-xenlvm \ virt-subproc/adt-virt-null \ + virt-subproc/adt-virt-schroot \ runner/adt-run \ runner/adt-testreport-onepackage \ runner/adt-testreport-runloop \ diff --git a/debian/changelog b/debian/changelog index 0cec8d8..07dab7e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +autopkgtest (1.3.0) unstable; urgency=low + + * New adt-virt-schroot for driving schroot. + + -- + autopkgtest (1.2.0~) unstable; urgency=low * adt-xenlvm-*: support for swap, defaulting to 5G. diff --git a/virt-subproc/adt-virt-schroot b/virt-subproc/adt-virt-schroot new file mode 100755 index 0000000..32bd783 --- /dev/null +++ b/virt-subproc/adt-virt-schroot @@ -0,0 +1,97 @@ +#!/usr/bin/python2.4 +# +# adt-virt-schroot is part of autopkgtest +# autopkgtest is a tool for testing Debian binary packages +# +# autopkgtest is Copyright (C) 2006-2007 Canonical Ltd. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# See the file CREDITS for a full list of credits information (often +# installed as /usr/share/doc/autopkgtest/CREDITS). + +import sys +import os +import string +import re as regexp +import grp +import pwd +from optparse import OptionParser + +try: our_base = os.environ['AUTOPKGTEST_BASE'] +except KeyError: our_base = '/usr/share/autopkgtest'; +sys.path.insert(1, our_base+'/python') + +import VirtSubproc as vsp +capabilities = [] + +def parse_args(): + global schroot, debuglevel + + usage = "%prog [] " + parser = OptionParser(usage=usage) + pa = parser.add_option + pe = parser.error + + pa('-d', '--debug', action='store_true', dest='debug'); + + (opts,args) = parser.parse_args() + if len(args) != 1: pe("need exactly one arg, schroot name") + + schroot = args[0] + + info = vsp.execute('schroot --config -c', [schroot], + downp=False, outp=True) + cfg = { } + ignore_re = regexp.compile('\#|\[|\s*$') + for entry in info.split("\n"): + if ignore_re.match(entry): continue + (key,val) = entry.split("=",2) + cfg[key] = val + + vsp.debuglevel = opts.debug + + if regexp.search('snapshot',cfg['type']): + capabilities.append('revert') + + if [True + for exp_name in cfg['root-users'].split() + for got_uid in [os.getuid()] + if got_uid == pwd.getpwnam(exp_name).pw_uid + ] or [True + for exp_name in cfg['root-groups'].split() + for got_gid in [os.getgid()] + os.getgroups() + if got_gid == grp.getgrnam(exp_name).gr_gid + ]: + capabilities.append('root-on-testbed') + +def hook_open(): + global schroot, sessid, downtmp + sessid = vsp.execute('schroot -b -c',[schroot], downp=False, outp=True) + vsp.down = ['schroot','-r','-c',sessid,'--','sh','-c'] + return None + +def hook_cleanup(): + global schroot, sessid, downtmp + vsp.execute('schroot -e -c',[sessid], downp=False) + +def hook_forked_inchild(): + pass + +def hook_capabilities(): + return capabilities + +parse_args() +vsp.main()