X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=source%2Futils.py;h=ebd54305074debdcfcb574cbce355d643065cf83;hb=05fcdf2237fe6100cc31828ca206d42b24e8ae5a;hp=407216b89ccf8aa9d01705b65dd83cff768c64b8;hpb=e56dca286266de0ffda334ad80d89db198641624;p=bootmanager.git diff --git a/source/utils.py b/source/utils.py index 407216b..ebd5430 100644 --- a/source/utils.py +++ b/source/utils.py @@ -149,6 +149,34 @@ def sysexec( cmd, log= None ): return 1 +def sysexec_chroot( path, cmd, log= None ): + """ + same as sysexec, but inside a chroot + """ + preload = "" + release = os.uname()[2] + # 2.6.12 kernels need this + if release[:5] == "2.6.1": + library = "%s/lib/libc-opendir-hack.so" % path + if not os.path.exists(library): + shutil.copy("./libc-opendir-hack.so", library) + preload = "/bin/env LD_PRELOAD=/lib/libc-opendir-hack.so" + sysexec("chroot %s %s %s" % (path, preload, cmd), log) + + +def sysexec_chroot_noerr( path, cmd, log= None ): + """ + same as sysexec_chroot, but capture boot manager exceptions + """ + try: + rc= 0 + rc= syexec_chroot( cmd, log ) + except BootManagerException, e: + pass + + return rc + + def sysexec_noerr( cmd, log= None ): """ same as sysexec, but capture boot manager exceptions