You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.0 KiB
34 lines
1.0 KiB
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))
|