X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Futils.py;h=5c75606b70caba7d94ad82f77d7738acdc763369;hb=42db2f9640d98557f4156dfbdb380ca917b35e78;hp=35496ed8de26250b0e738280dd3fc9fe9a66c128;hpb=a91fa5200cfd7a8ad3d8a59d6f11c8a4c43e202a;p=bootmanager.git diff --git a/source/utils.py b/source/utils.py index 35496ed..5c75606 100644 --- a/source/utils.py +++ b/source/utils.py @@ -93,6 +93,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