2013-03-17 05:32:29 +04:00
#
2014-01-20 20:09:13 +04:00
# Copyright (C) 2013, 2014 Red Hat, Inc.
2013-03-17 05:32:29 +04:00
#
2018-04-04 16:35:41 +03:00
# This work is licensed under the GNU GPLv2 or later.
2018-03-20 22:00:02 +03:00
# See the COPYING file in the top-level directory.
2013-03-17 05:32:29 +04:00
#
"""
Configuration variables that can be set at build time
"""
import os
2018-03-22 01:00:38 +03:00
import sys
if sys . version_info . major != 3 or sys . version_info . minor < 4 :
print ( " python 3.4 or later is required, your ' s is %s " %
sys . version_info )
sys . exit ( 1 )
2013-03-17 05:32:29 +04:00
2018-03-22 01:00:38 +03:00
import configparser
2013-03-17 05:32:29 +04:00
2017-10-11 14:35:39 +03:00
_cfg = configparser . ConfigParser ( )
2013-03-17 05:32:29 +04:00
_filepath = os . path . abspath ( __file__ )
_srcdir = os . path . abspath ( os . path . join ( os . path . dirname ( _filepath ) , " .. " ) )
2015-04-06 21:23:10 +03:00
_cfgpath = os . path . join ( os . path . dirname ( _filepath ) , " cli.cfg " )
if os . path . exists ( _cfgpath ) :
_cfg . read ( _cfgpath )
2013-10-03 02:42:51 +04:00
_istest = " VIRTINST_TEST_SUITE " in os . environ
2015-04-06 21:23:10 +03:00
_running_from_srcdir = os . path . exists (
os . path . join ( _srcdir , " tests " , " clitest.py " ) )
2013-03-17 05:32:29 +04:00
2013-04-13 22:34:52 +04:00
2013-03-17 05:32:29 +04:00
def _split_list ( commastr ) :
return [ d for d in commastr . split ( " , " ) if d ]
2013-04-13 22:34:52 +04:00
2013-04-11 00:47:36 +04:00
def _get_param ( name , default ) :
2013-10-08 22:42:59 +04:00
if _istest :
return default
try :
2015-04-06 21:23:10 +03:00
return _cfg . get ( " config " , name )
2017-10-11 14:35:39 +03:00
except ( configparser . NoOptionError , configparser . NoSectionError ) :
2013-03-17 05:32:29 +04:00
return default
2013-04-18 01:39:25 +04:00
def _setup_gsettings_path ( schemadir ) :
"""
If running from the virt - manager . git srcdir , compile our gsettings
schema and use it directly
"""
import subprocess
2014-06-01 00:28:58 +04:00
from distutils . spawn import find_executable
exe = find_executable ( " glib-compile-schemas " )
if not exe :
raise RuntimeError ( " You must install glib-compile-schemas to run "
" virt-manager from git. " )
2013-04-18 01:39:25 +04:00
2014-06-01 00:28:58 +04:00
ret = subprocess . call ( [ exe , " --strict " , schemadir ] )
2013-04-23 21:17:20 +04:00
if ret != 0 :
raise RuntimeError ( " Failed to compile local gsettings schemas " )
2013-04-18 01:39:25 +04:00
2019-02-04 00:26:44 +03:00
__version__ = " 2.1.0 "
2013-03-17 05:32:29 +04:00
2015-04-06 22:42:40 +03:00
class _CLIConfig ( object ) :
def __init__ ( self ) :
self . cfgpath = _cfgpath
self . version = __version__
self . default_graphics = _get_param ( " default_graphics " , " spice " )
2015-04-06 23:29:28 +03:00
self . default_hvs = _split_list ( _get_param ( " default_hvs " , " " ) )
2015-04-06 22:42:40 +03:00
self . prefix = None
self . gettext_dir = None
self . ui_dir = None
self . icon_dir = None
2015-11-03 00:19:31 +03:00
self . gsettings_dir = None
2015-04-06 22:42:40 +03:00
self . set_paths_by_prefix ( _get_param ( " prefix " , " /usr " ) ,
check_source_dir = True )
def set_paths_by_prefix ( self , prefix , check_source_dir = False ) :
self . prefix = prefix
self . gettext_dir = os . path . join ( prefix , " share " , " locale " )
if _running_from_srcdir and check_source_dir :
self . ui_dir = os . path . join ( _srcdir , " ui " )
2015-11-03 00:19:31 +03:00
self . icon_dir = os . path . join ( _srcdir , " data " )
self . gsettings_dir = self . icon_dir
_setup_gsettings_path ( self . gsettings_dir )
2015-04-06 22:42:40 +03:00
else :
2015-11-03 00:19:31 +03:00
self . ui_dir = os . path . join ( prefix , " share " , " virt-manager " , " ui " )
2015-04-06 22:42:40 +03:00
self . icon_dir = os . path . join ( prefix , " share " , " virt-manager " ,
" icons " )
2015-11-03 00:19:31 +03:00
self . gsettings_dir = os . path . join ( prefix , " share " ,
" glib-2.0 " , " schemas " )
2015-04-06 22:42:40 +03:00
CLIConfig = _CLIConfig ( )