* main.cl.ebuild_phase - возвращающая текущую фазу сборки пакета * main.cl.chroot_status - определение запуска утилит происходит с использованием chroot или нет * main.cl.system_boot_set - определение происходит загрузка системы или нетmaster
parent
cb199776da
commit
2e1f666adf
@ -0,0 +1,33 @@
|
||||
import os
|
||||
from calculate.utils.fs import readFile
|
||||
from calculate.variables.datavars import Variable, Namespace, Dependence, \
|
||||
StringType, BooleanType, Calculate
|
||||
|
||||
def get_ebuild_phase():
|
||||
return os.environ.get("EBUILD_PHASE", "")
|
||||
|
||||
def get_chroot_status():
|
||||
"""Detect chroot mode by different mountinfo"""
|
||||
pid = os.getpid()
|
||||
try:
|
||||
if not os.access('/proc/self/mountinfo', R_OK) or \
|
||||
not os.access('/proc/1/mountinfo', R_OK):
|
||||
return False
|
||||
infos = [readFile(x) for x in ('/proc/1/mountinfo',
|
||||
'/proc/self/mountinfo')]
|
||||
return infos[0] != infos[1]
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def is_system_boot():
|
||||
if os.readlink('/proc/self/fd/0') == '/dev/console':
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
Variable("ebuild_phase", type=StringType,
|
||||
source=Calculate(get_ebuild_phase))
|
||||
Variable("chroot_status", type=BooleanType,
|
||||
source=Calculate(get_chroot_status))
|
||||
Variable("system_boot_set", type=BooleanType,
|
||||
source=Calculate(is_system_boot))
|
Loading…
Reference in new issue