Changeset 358

Show
Ignore:
Timestamp:
07/10/06 23:36:06 (2 years ago)
Author:
nicfit
Message:

Module/version checking in code.. FU autoconf! (closes #149)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/configure.ac

    r308 r358  
    3636 
    3737AC_PROG_MAKE_SET 
    38 ACX_CHECK_PYTHON([2.4]) 
    39 ACX_CHECK_EYED3([0.6.10]) 
    40 ACX_CHECK_GST_PYTHON([0.8.11]) 
    4138 
    4239AC_CONFIG_FILES([Makefile\ 
  • trunk/src/mesk/__init__.py

    r350 r358  
    1818#  $Id$ 
    1919################################################################################ 
    20 import os 
     20import sys, os 
    2121 
     22import utils 
    2223import common.i18n 
    2324_ = common.i18n._ 
     
    2627from info import APP_VERSION 
    2728from info import APP_MAINTAINER 
     29 
     30# Check python version 
     31REQUIRE_PYTHON_VERSION = (2, 4) 
     32import platform 
     33if utils.version_cmp(platform.python_version_tuple(), 
     34                     REQUIRE_PYTHON_VERSION) == -1:  
     35    found = '.'.join([str(v) for v in platform.python_version_tuple()]) 
     36    print >> sys.stderr, 'Python version %s required, found version %s' % \ 
     37                         ('.'.join([str(v) for v in REQUIRE_PYTHON_VERSION]), 
     38                          found) 
     39    sys.exit(1) 
    2840 
    2941MESK_DIR = os.path.expandvars('${HOME}/.%s' % APP_NAME.lower()) 
  • trunk/src/mesk/audio/__init__.py

    r327 r358  
    1818#  $Id$ 
    1919################################################################################ 
    20 import os, traceback 
     20import os, sys, traceback 
    2121import mimetypes 
    2222mimetypes.init() 
    2323 
    24 import pygst 
    25 pygst.require('0.10') 
    26 import gst 
     24import mesk 
     25import mesk.utils 
     26# At least versions 
     27REQUIRE_GST_VERSION = (0, 10, 8) 
     28REQUIRE_PYGST_VERSION = (0, 10, 4) 
     29try: 
     30    import pygst 
     31    pygst.require('.'.join([str(v) for v in REQUIRE_GST_VERSION[:-1]])) 
     32    import gst 
     33except: 
     34    print >> sys.stderr, 'GStreamer version %s is required' % \ 
     35                         '.'.join([str(v) for v in REQUIRE_GST_VERSION]) 
     36    sys.exit(1) 
     37 
     38if mesk.utils.version_cmp(gst.pygst_version, REQUIRE_PYGST_VERSION) == -1: 
     39    print >> sys.stderr, 'PyGst version %s is required, found %s' % \ 
     40                         ('.'.join([str(v) for v in REQUIRE_PYGST_VERSION]), 
     41                          '.'.join([str(v) for v in gst.pygst_version])) 
     42    sys.exit(1) 
    2743 
    2844from mesk.common.i18n import _ 
     
    5268        continue 
    5369 
     70# Ensure that the audio layer supports at least one type of audio format 
     71if not supported_mimetypes or not supported_extensions: 
     72    print >> sys.stderr, 'No audio formats supported' 
     73    sys.exit(1) 
     74 
     75### End module initialization ### 
     76 
    5477class UnsupportedFormat(Exception): 
    5578    '''Thrown when a audio format is not supported''' 
  • trunk/src/mesk/audio/mp3.py

    r353 r358  
    1818#  $Id$ 
    1919################################################################################ 
    20 import gst, eyeD3 
    21 from eyeD3.frames import ImageFrame 
     20import sys 
     21import gst 
     22import mesk 
     23import mesk.utils 
     24_ = mesk.common.i18n._ 
    2225 
    23 gst.element_factory_make("mad") 
     26# Test for mp3 support in gstreamer 
     27try: 
     28    gst.element_factory_make('mad') 
     29except Exception, ex: 
     30    print >> sys.stderr, 'MP3 audio format is unsupported' 
     31    raise ex 
     32 
     33REQUIRE_EYED3_VERSION = (0, 6, 11) 
     34try: 
     35    import eyeD3 
     36    if mesk.utils.version_cmp(eyeD3.eyeD3Version.split('.'), 
     37                              REQUIRE_EYED3_VERSION) == -1: 
     38        raise Exception() 
     39except Exception, ex: 
     40    print >> sys.stderr, 'eyeD3 version version %s is required' % \ 
     41                         '.'.join([str(v) for v in REQUIRE_EYED3_VERSION]) 
     42    raise 
     43else: 
     44    from eyeD3.frames import ImageFrame 
    2445 
    2546NAME = 'MP3' 
    2647EXTENSIONS = ['mp3', 'mp2'] 
    2748MIME_TYPES = ['audio/mpeg'] 
    28  
    29 import mesk 
    30 _ = mesk.common.i18n._ 
    3149 
    3250from source import AudioSource, AudioMetaData 
  • trunk/src/mesk/utils.py

    r298 r358  
    105105        return is_in_dir 
    106106 
     107# Version compares 
     108def version_cmp(v1, v2): 
     109    lhs = [] 
     110    rhs = [] 
     111    for i in range(max(len(v1), len(v2))): 
     112        try: 
     113            lhs.append(int(v1[i])) 
     114        except IndexError: 
     115            lhs.append(0) 
     116        try: 
     117            rhs.append(int(v2[i])) 
     118        except IndexError: 
     119            rhs.append(0) 
     120 
     121    for i in range(len(lhs)): 
     122        if lhs[i] > rhs[i]: 
     123            return 1 
     124        elif lhs[i] < rhs[i]: 
     125            return -1 
     126    return 0