diff --git a/README.md b/README.md index 6a568359..bd2d5784 100755 --- a/README.md +++ b/README.md @@ -52,10 +52,10 @@ REQUIREMENTS - GStreamer and its python bindings, for encoding - gstreamer0.10-base-plugins >= 0.10.22 for appsink - gstreamer0.10-good-plugins for wav encoding (it depends on the Linux distro used) -- python musicbrainz2, for metadata lookup +- python musicbrainzngs, for metadata lookup - python-setuptools, for plugin support - python-cddb, for showing but not using disc info if not in MusicBrainz -- pycdio, for drive identification (optional) +- pycdio, for drive identification (it can be overridden placing a blank file named `PYCDIO_IGNORE` into whipper's config path) - Required for drive offset and caching behavior to be stored in the config file Additionally, if you're building from a git checkout: diff --git a/morituri/rip/cd.py b/morituri/rip/cd.py index b75894cf..0906a351 100644 --- a/morituri/rip/cd.py +++ b/morituri/rip/cd.py @@ -30,7 +30,7 @@ gobject.threads_init() from morituri.common import logcommand, common, accurip, gstreamer -from morituri.common import drive, program, task +from morituri.common import drive, program, task, directory from morituri.result import result from morituri.program import cdrdao, cdparanoia from morituri.rip import common as rcommon @@ -168,11 +168,20 @@ def do(self, args): self.program.result.release = \ cdio.Device(self.device).get_hwinfo() except ImportError: - self.stdout.write( - 'WARNING: pycdio not installed, cannot identify drive\n') - self.program.result.vendor = 'Unknown' - self.program.result.model = 'Unknown' - self.program.result.release = 'Unknown' + d = directory.Directory() + path = os.path.dirname(d.getConfig()) + fullPath = os.path.join(path, 'PYCDIO_IGNORE') + if os.path.isfile(fullPath): + self.stdout.write( + 'WARNING: pycdio not installed, cannot identify drive ' + '(hard dependency overridden)\n') + self.program.result.vendor = 'Unknown' + self.program.result.model = 'Unknown' + self.program.result.release = 'Unknown' + else: + raise ImportError("Pycdio module import failed.\n" + "This is a hard dependency: if not " + "available please install it") self.doCommand() @@ -273,11 +282,13 @@ def handleOptions(self, options): pass if options.offset is None: - options.offset = 0 - self.stdout.write("""WARNING: using default offset %d. -Install pycdio and run 'rip offset find' to detect your drive's offset. -""" % - options.offset) + raise ValueError("Drive offset is unconfigured.\n" + "Please install pycdio and run 'rip offset " + "find' to detect your drive's offset or set it " + "manually in the configuration file. It can " + "also be specified at runtime using the " + "'--offset=value' argument") + if self.options.output_directory is None: self.options.output_directory = os.getcwd() else: