From: Ian Jackson Date: Fri, 9 Dec 2005 19:48:03 +0000 (+0000) Subject: working on copyup copydown of dirs X-Git-Tag: converted-from-bzr~94 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=55e5e106acb19004100ad6be602750cc9e3ebf47;p=autopkgtest.git working on copyup copydown of dirs --- diff --git a/virt-chroot/adt-virt-chroot b/virt-chroot/adt-virt-chroot index 481811c..038a2b5 100755 --- a/virt-chroot/adt-virt-chroot +++ b/virt-chroot/adt-virt-chroot @@ -169,8 +169,12 @@ def cmd_execute(c, ce): " visible to us `%s'" % out) return [`status`] -def copyupdown(c, ce, up_p): +def copyupdown(c, ce, upp): cmdnumargs(c, ce, 2) + isrc = 0 + idst = 1 + ilocal = 0 + upp + iremote = 1 - upp wh = ce[0] sd = c[1:] sde = ce[1:] @@ -187,38 +191,34 @@ def copyupdown(c, ce, up_p): preexecfns = [None, None] if not dirsp: gobody = " setfd(%s,'%s',%s)\n" % ( - 1-up_p, sde[0], not up_p) + 1-upp, sde[iremote], not upp) gobody += " os.execvp('cat', ['cat'])\n" - if up_p: deststdout = file(sd[1], 'w') - else: srcstdin = file(sd[0], 'r') + if upp: deststdout = file(sd[idst], 'w') + else: srcstdin = file(sd[isrc], 'r') localcmdl = ['cat'] else: - paxbase = 'pax -p p -x cpio' - gobody = " dir = urllib.unquote('%s'))\n" % sde[0] - if up_p: - try: os.mkdir(sd[1]) + gobody = " dir = urllib.unquote('%s')\n" % sde[iremote] + if upp: + try: os.mkdir(sd[ilocal]) except OSError, oe: if oe.errno != errno.EEXIST: raise else: gobody += (" try: os.mkdir(dir)\n" " except OSError, oe:\n" " if oe.errno != errno.EEXIST: raise\n") - preexecfns[not up_p] = lambda *any: os.chdir(sd[not up_p]) - gobody += " os.chdir(dir)\n" - gobody += " paxcmd = '%s'.split()\n" % paxbase - localcmdl = ['sh','-ec', - 'cd "$1"; shift; exec "$@"', - 'x'] + paxbase.split() - if up_p: - gobody += " paxcmd += ['-w','.']\n" - localcmdl += ['-r'] - else: - gobody += " paxcmd += ['-r']\n" - localcmdl += ['-w','.'] + gobody +=( " os.chdir(dir)\n" + " tarcmd = 'tar -f -'.split()\n") + localcmdl = 'tar -f -'.split() + taropts = [None, None] + taropts[isrc] = '-c .' + taropts[idst] = '-p -x --no-same-owner' + gobody += " tarcmd += '%s'.split()\n" % taropts[iremote] + localcmdl += ['-C',sd[ilocal]] + localcmdl += taropts[ilocal].split() downcmdl = down_python_script(gobody, functions) - if up_p: cmdls = (downcmdl, localcmdl) + if upp: cmdls = (downcmdl, localcmdl) else: cmdls = (localcmdl, downcmdl) debug(`["cmdls", `cmdls`]`) diff --git a/virt-chroot/test-input b/virt-chroot/test-input index aa8b566..83b415e 100644 --- a/virt-chroot/test-input +++ b/virt-chroot/test-input @@ -1,6 +1,7 @@ open -copydown test-input foo -execute ls,-l /dev/null out err +copydown /u/ian/junk/d/pikdev-0.8.0/admin/ zork/ +copydown test-file zork/foo +execute ls,-l,zork /dev/null out err copyup out /dev/tty copyup out outh copyup err errh