Beispiel #1
0
    def __init__(self):
        super().__init__()

        # lazy/conditional loading of needed modules
        import pyudev
        import queue

        DBG('Using pyudev {} and udev {}'.format(
             pyudev.__version__, pyudev.udev_version()))

        # create the udev context
        self.udev = pyudev.Context()

        # queue + timer to syncronize the udev thread
        self.queue = queue.Queue()  # items: (action, device)
        self.qtimer = EmcTimer(3.0, self.queue_timer_cb)

        # start monitoring udev for events
        monitor = pyudev.Monitor.from_netlink(self.udev)
        monitor.filter_by(self.managed_subsystems)
        self.observer = pyudev.MonitorObserver(monitor, self.udev_device_filter)
        self.observer.start()

        # search for existing devices
        for udevice in self.udev.list_devices(subsystem=self.managed_subsystems):
            self.udev_device_filter('add', udevice, thread=False)
        self.queue_timer_cb()
def get_id_part_entry_name(dev):
    # NOTE(pbourke): Old versions of udev have trouble retrieving GPT partition
    # labels. In this case shell out to sgdisk.
    try:
        udev_version = pyudev.udev_version()
    except (ValueError, EnvironmentError, subprocess.CalledProcessError):
        udev_version = -1

    if udev_version >= 180:
        dev_name = dev.get('ID_PART_ENTRY_NAME', '')
    else:
        part = re.sub(r'.*[^\d]', '', dev.device_node)
        parent = dev.find_parent('block').device_node
        # NOTE(Mech422): Need to use -i as -p truncates the partition name
        # TODO(pbourke): Consider some form of validation to be performed on
        #                part/parent [0]
        out = subprocess.Popen(['/usr/sbin/sgdisk', '-i', part,  # nosec [0]
                                parent],
                               stdout=subprocess.PIPE).communicate()
        match = re.search(r'Partition name: \'(\w+)\'', out[0])
        if match:
            dev_name = match.group(1)
        else:
            dev_name = ''
    return dev_name
Beispiel #3
0
	def is_enabled(self):
		""" Volumes extension is always enabled if available, return always
			True. """
		assert ltrace(self._trace_name, '| is_enabled() → True')

		logging.info(_(u'{0}: started extension with pyudev v{2} '
			u'on top of udev v{1}.').format(stylize(ST_NAME, self.name),
				stylize(ST_UGID, pyudev.udev_version()),
				stylize(ST_UGID, pyudev.__version__)))

		return True
Beispiel #4
0
def pytest_configure(config):
    # these are volatile, frequently changing properties and attributes,
    # which lead to bogus failures during tests, and therefore they are
    # masked and shall be ignored for test runs.
    config.properties_blacklist = frozenset(
        ['POWER_SUPPLY_CURRENT_NOW', 'POWER_SUPPLY_VOLTAGE_NOW',
         'POWER_SUPPLY_CHARGE_NOW'])
    config.attributes_blacklist = frozenset(
        ['power_on_acct', 'temp1_input', 'charge_now', 'current_now',
         'urbnum'])
    config.udev_database = _read_udev_database(config.properties_blacklist)
    config.udev_version = pyudev.udev_version()
Beispiel #5
0
    def __init__(self):
        # log.debug('Creating ULOG context')
        log.debug(log.name)
        self.netdevices = dict()  # ifindex => MyDevice

        self.udev_version = pyudev.udev_version()
        log.info('Working against udev version %d', self.udev_version)

        # TODO: time_since_initialized  > 0?

        self.context = pyudev.Context()
        self._start_background_udev_monitoring()
        self._start_interrupt_monitoring()
        self.rescan_devices()
Beispiel #6
0
    def __init__(self, PreCB=None, ATCB=None):
        self.pid = ''
        self.vid = ''
        self.product = ''
        self.com_online = False
        self.pre_cb = PreCB
        self.at_cb = ATCB

        print(' ---------- pyudev version: ' + str(pyudev.__version__) +
              ' ---------- ')
        print(' ----------   udev version: ' + str(pyudev.udev_version()) +
              '    ---------- ')
        context = pyudev.Context()
        monitor = pyudev.Monitor.from_netlink(context)
        self.observer = pyudev.MonitorObserver(monitor, self.event_cb)
Beispiel #7
0
def _sys_info():
    import pyudev
    from nepymc import __version__ as emc_version

    try:
        from efl import __version__ as efl_version
    except ImportError:
        efl_version = _('Not found')

    try:
        from PySide2 import __version__ as pyside_version
    except ImportError:
        pyside_version = _('Not found')

    # win_w, win_h = gui.win.size
    # scr_x, scr_y, scr_w, scr_h = gui.win.screen_size
    # dpi_x, dpi_y = gui.win.screen_dpi

    text = '<h3>{}</h3>' \
           '<b>{}:</b> {}<br>' \
           '<h3>{}</h3>' \
           '<b>{}:</b> {}<br>'\
           '<b>{}:</b> {}<br>' \
           '<b>{}:</b> {}' \
           '<h3>{}</h3>' \
           '<b>{}:</b> {}<br>' \
           '<b>{}:</b> {}<br>' \
           '<b>{}:</b> {} <b>{}:</b> {}<br>' \
           '<b>{}:</b> {}<br>' \
           '<b>{}:</b> {}<br>'.format(
             _('Core'),
             _('Theme'), ini.get('general', 'theme'), #gui.theme_file,  # TODO
             # _('Window size'), win_w, win_h,  # TODO
             # _('screen'), scr_w, scr_h, scr_x, scr_y,  # TODO
             # _('dpi'), dpi_x, dpi_y,  # TODO
             _('Paths'),
             _('Base folder'), utils.emc_base_dir,
             _('Config folder'), utils.user_conf_dir,
             _('Cache folder'), utils.user_cache_dir,
             _('Versions'),
             _('NepyMC'), emc_version,
             _('Python'), sys.version,
             _('Udev'), pyudev.udev_version(), _('pyudev'), pyudev.__version__,
             _('Python-EFL'), efl_version,
             _('PySide'), pyside_version,
           )
    EmcDialog(style='panel', title=_('System info'), text=text)
Beispiel #8
0
def need_udev_version(version_spec):
    """
    Decorator to check the udev version before a test is run.

    ``version_spec`` is a string containing a comparison operator and the right
    hand sight operand of this comparison, like ``'>= 165'``.  The left hand
    side is automatically provided by the current udev version.

    If the udev version matches the spec, the test is run.  Otherwise the test
    is skipped.
    """
    expr_template = 'not ({0} {1})'
    actual_version = pyudev.udev_version()
    expr = expr_template.format(actual_version, version_spec)
    reason = 'udev version mismatch: {0} required, {1} found'.format(
        version_spec, actual_version)
    return pytest.mark.skipif(str(expr), reason=reason)
Beispiel #9
0
def _sys_info():
   import pyudev
   from epymc.gui import _theme_generation
   from epymc import __version__ as emc_version
   try:
      from efl import __version__ as efl_version
   except:
      efl_version = _('Unknown')
   
   downl_avail = ecore.file_download_protocol_available('http://')
   win_w, win_h = gui.win.size
   scr_x, scr_y, scr_w, scr_h = gui.win.screen_size
   dpi_x, dpi_y = gui.win.screen_dpi
   text = '<title>%s</><br>' \
          '<name>%s:</name> %s<br>' \
          '<name>%s:</name> %s - %s<br>' \
          '<name>%s:</> %dx%d <name>%s:</> %dx%d+%d+%d <name>%s:</> %d %d<br>' \
          '<br><title>%s</><br>' \
          '<name>%s:</name> %s<br>' \
          '<name>%s:</name> %s<br>' \
          '<name>%s:</name> %s<br>' \
          '<br><title>%s</><br>' \
          '<name>%s:</name> %s <name> %s:</name> %s<br>' \
          '<name>%s:</name> %s<br>' \
          '<name>%s:</name> %s<br>' \
          '<name>%s:</name> %s <name> %s:</name> %s<br>' % (
            _('Core'),
            _('Download available'), _('yes') if downl_avail else _('no'),
            _('Theme'), ini.get('general', 'theme'), gui.theme_file,
            _('Window size'), win_w, win_h,
            _('screen'), scr_w, scr_h, scr_x, scr_y,
            _('dpi'), dpi_x, dpi_y,
            _('Paths'),
            _('Base folder'), utils.emc_base_dir,
            _('Config folder'), utils.user_conf_dir,
            _('Cache folder'), utils.user_cache_dir,
            _('Versions'),
            _('EpyMC'), emc_version, _('EpyMC themes API'), _theme_generation,
            _('Python'), sys.version,
            _('Python-EFL'), efl_version,
            _('Udev'), pyudev.udev_version(), _('pyudev'), pyudev.__version__,
          )
   EmcDialog(style='panel', title=_('System info'), text=text)
Beispiel #10
0
   def __init__(self):
      DBG('Using pyudev {} and udev {}'.format(
           pyudev.__version__, pyudev.udev_version()))

      # create the udev context
      self.udev = pyudev.Context()

      # queue + timer to syncronize the udev thread
      self.queue = queue.Queue() # items: (action, device)
      self.qtimer = ecore.Timer(3.0, self.queue_timer_cb)

      # start monitoring udev for events
      monitor = pyudev.Monitor.from_netlink(self.udev)
      monitor.filter_by(self.managed_subsystems)
      self.observer = pyudev.MonitorObserver(monitor, self.udev_device_filter)
      self.observer.start()

      # search for existing devices
      for udevice in self.udev.list_devices(subsystem=self.managed_subsystems):
         self.udev_device_filter('add', udevice)
      self.queue_timer_cb()
Beispiel #11
0
def test_udev_version():
    assert isinstance(udev_version(), int)
    # just to make sure, that udev versioning works.  pyudev itself should be
    # compatible with earlier versions of pyudev.  However, 150 is currently
    # the earliest udev release, I'm testing against (using Ubuntu 10.04)
    assert udev_version() > 150
Beispiel #12
0
def test_udev_version():
    assert isinstance(udev_version(), int)
    # just to make sure, that udev versioning works.  pyudev itself should be
    # compatible with earlier versions of pyudev.  However, 150 is currently
    # the earliest udev release, I'm testing against (using Ubuntu 10.04)
    assert udev_version() > 150