-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libcdio-paranoia instead of cdparanoia #87
Comments
Is rocky a person who just maintains a fork? Or an actual maintainer? The URL for libcdio-paranoia seems to be: https://www.gnu.org/software/libcdio/ Presumably they use the same paranoia implementation, just differ in how they interface with the lower levels of the operating system? I know that my OS (gentoo) uses cdparanoia from xiph by default, but allows me to switch to the libcdio one. |
http://git.savannah.gnu.org/cgit/libcdio.git/log/ lists a R. Bernstein as does https://github.com/rocky All the main distros appear to provide the libcdio packages and the executable would change from cdparanoia to cd-paranoia Arch: https://www.archlinux.org/packages/extra/x86_64/libcdio-paranoia/ |
+1. These maintainers may help us solve #74 or at least add fixes upstream. |
I certainly like the idea of using a maintained libparanoia implementation. |
If this one is interface compatible with xiph's cdparanoia and it's still maintained (unfortunately cdparanoia seems abandonware), then switching to it is probably a good idea. |
cdparanoia is definitively abandonware judging by the ML archive. Only emails in more than two years from… @RecursiveForest. And even before that, in has not been very active for quite more years. Switching to libcdio implementation looks a good idea. ;) |
So, as said by @JoeLametta in #74, we definitively need to switch to libcdio-paranoia now that they have the fix for this bug thanks to @a10footsquirrel. |
Something as easy as what's shown below should be enough to make a painless switch: --- whipper-master-f873bd0/morituri/program/cdparanoia.py
+++ whipper-edited-f873bd0/program/cdparanoia.py
@@ -282,10 +282,10 @@
bufsize = 1024
if self._overread:
- argv = ["cdparanoia", "--stderr-progress",
+ argv = ["cd-paranoia", "--stderr-progress",
"--sample-offset=%d" % self._offset, "--force-overread", ]
else:
- argv = ["cdparanoia", "--stderr-progress",
+ argv = ["cd-paranoia", "--stderr-progress",
"--sample-offset=%d" % self._offset, ]
if self._device:
argv.extend(["--force-cdrom-device", self._device, ])
@@ -302,7 +302,7 @@
except OSError, e:
import errno
if e.errno == errno.ENOENT:
- raise common.MissingDependencyException('cdparanoia')
+ raise common.MissingDependencyException('libcdio-paranoia')
raise
@@ -561,7 +561,7 @@
def getCdParanoiaVersion():
getter = common.VersionGetter('cdparanoia',
- ["cdparanoia", "-V"],
+ ["cd-paranoia", "-V"],
_VERSION_RE,
"%(version)s %(release)s")
@@ -586,7 +586,7 @@
def __init__(self, device=None):
# cdparanoia -A *always* writes cdparanoia.log
self.cwd = tempfile.mkdtemp(suffix='.morituri.cache')
- self.command = ['cdparanoia', '-A']
+ self.command = ['cd-paranoia', '-A']
if device:
self.command += ['-d', device]
What still needs to be done:
|
Is this slated for the 1.0 release? |
Is it not possible to make this an option? --use-paranoia libcdio-paranoia or --use-paranoia cdparanoia-paranoia ? |
Currently, it is.
It can be done but, apart from covering a greater pool of users, would there be any advantage? |
Yes - allowing people to use the standard cdparanoia instead of requiring the libcdio one. This is a matter of: being able to use whipper on older/lts distributions, and the fact that the normal cdparanoia is also fine for most use cases - as accuraterip will usually also tell you if something went wrong. We could default to libcdio-cdparanoia, but allow users to set a different binary if they want to. Should not be too hard to add in, especially if the implementations really are that compatible. |
I think we should just drop cdparanoia and only use libcdio-paranoia going forward. If you use a distro that does have cdparanoia and doesn't have libcdio-paranoia, it will likely still have gstreamer 0.10 as well and then you can probably stick to morituri or old whipper versions for your ripping needs. |
Arch, Debian, Fedora, openSUSE, Ubuntu all ship the binary as Gentoo is the odd one out, and ships it as |
I would like to pick a default binary name, eg. 'cd-paranoia', and then allow people to specify an alternative implementation via flags/config. That should also take care of distributions naming the implementations differently. It would be nicest if the distributions followed the (clear) Gentoo naming, but that's not going to happen methinks. |
Or if Gentoo followed the naming from upstream like the other distributions. |
libcdio-paranioa is the project name. And various OS distributions use that name as the package name, e.g. debian and redhat. There is a library for those who want use from a programming language and not shell out. But, of course, the package also includes the command-line utility as well. And that's what most people use. Obviously libcdio-paranoia can't install a binary called |
The pragmatic approach would be something like def executable_exists(exename):
for p in os.environ['PATH']:
ep = os.path.join(p, exename)
if os.path.isfile(ep) and os.access(ep, os.X_OK):
return True
return False
def find_paranoia():
if config.get('paranoia_exe', None) is not None:
return config['paranoia_exe']
for paranoia in ['libcdio-paranoia', 'cd-paranoia', 'cdparanoia']:
if executable_exists(paranoia):
return paranoia
return None and issue a warning if the version found has issues (i.e. cdparanoia, or old version of libcdio-paranoia). Long term, a better plan would likely be to utilize the library instead (e.g. using ctypes). |
Using libcdio fixes issues with my CD drive similar to #146 . I can't rip the last track of a CD using Xiph cdparanoia on this drive, but the libcdio cd-paranoia works. whipper shows repeated warnings for the last track like:
The file size expected/received depends on the CD, but the kind of message is always the same. After a number of tries it stops. whipper lists the drive as: drive: /dev/cdrom, vendor: HL-DT-ST, model: DVD-RAM GH40L , release: RB02 cdparanoia -B returns a long list of error messages like:
cdparanoia -A returns "PARANOIA MAY NOT BE TRUSTWORTHY WITH THIS DRIVE!" libcdio's cd-paranoia -B simply works. It shows a small "e" in the progress bar for the last track. According to the docs that is a corrected error. |
Old cdparanoia's overread patch has been merged into libcdio's cd-paranoia: see here (available since release-10.2+0.94+2). Here's why it's useful:
|
Any idea when the change to libcdio-paranoia will happen? |
I will try to do this ASAP. |
(Feel free to poke me here or in IRC if I forget) |
MerlijnWajer: POKE!!! :) |
Changed my opinion about supporting cdparanoia (instead of libcdio-cdparanoia). Let's not do it now, and instead only support the 'accurate' tool. |
That means that we should probably check for the exact version in the near future. I think #213 is ready to be merged. |
I've just merged #213 by @MerlijnWajer which hard switches whipper to |
Would be good to have a few people jump on this merged PR and test master. Furthermore, let's open a ticket to address:
|
(And close this ticket) |
libcdio-paranoia appears to be maintained: https://github.com/rocky/libcdio-paranoia
It would probably be easier to file bugs against this project compared to the original cdparanoia so in case we see a patch for the Julie Roberts bug, it could end up in the official repositories of the distributions.
The text was updated successfully, but these errors were encountered: