ripperX GTK2
|
RipperX is a GTK app that rips CD audio tracks and encodes them to the Ogg, MP3, or FLAC formats. It is also my favourite simple ripping tool, but it still uses the ugly GTK1 interface. That was my motivation to write a patch that ports ripperX to GTK2.
Patch against current SVN: ripperX-2.7-gtk2_i18n-rev2.patch.gz
The patch is to be applied against the current code in SVN, but if you don't have all the necessary build tools to build from SVN and want to give it a go I've provided a tarball, made with 'make dist'. What the patch does:
GTK2
i18n
build system
|
|
UPDATE [14-Jun-2007]
Updated both the patch and the tarball. The changes are in configure.ac: the configure script will now refuse to go any further if libid3 cannot be found. | |
|
UPDATE [25-Jan-2008]
A modified version of this patch is now in ripperX SVN, see this post for more information. | |















Wed, 23rd May 2007 13:15:40 +0200
It doesn't compile here (Slackware-current)
Usingcompilation fail on missing -lid3 -lstdc++
Wed, 23rd May 2007 13:37:46 +0200
You need
Usinglibid3, I can confirm that it works with version 3.8.3. You also need needlibstdc++.Thu, 24th May 2007 3:25:51 +0200
I do have them, what I mean is that configure does not set them correctly (here) in the Makefile (and I never mastered the obscure art of autotools enough to try to fix it…)
UsingThu, 24th May 2007 6:44:30 +0200
Hmm, you had better give me a few more details. Did you build from SVN after applying the patch, or did you use the tarball that I provided?
UsingWhat are the actual error messages that you see?
You can delete line 43 of
configure.ac, 'AM_PROG_CC_STDC', (it is not needed), and then run./autogen.shagain.Fri, 25th May 2007 1:07:21 +0200
Sorry about the lack of details ;)
I tried both using the tarball you provide and applying your patch to svn, with the same result.
It fails here :
gcc -g -O2 -o ripperX cddb.o cddbp.o config_rw.o config_window_handler.o dir_window_handler.o err_dialog_handler.o job_control.o main.o main_window_handler.o misc_utils.o players_manipulation.o ripper_encoder_manipulation.o select_frame_handler.o status_frame_handler.o xpms.o /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so -lm /usr/lib/libpangocairo-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libcairo.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl /usr/lib/libglib-2.0.so -lutil
job_control.o: In function `job_finisher':
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/job_control.c:475: undefined reference to `ID3Tag_New'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/job_control.c:476: undefined reference to `ID3Tag_Link'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/job_control.c:484: undefined reference to `ID3Tag_UpdateByTagType'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/job_control.c:485: undefined reference to `ID3Tag_Delete'
misc_utils.o: In function `set_TagField':
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/misc_utils.c:973: undefined reference to `ID3Frame_NewID'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/misc_utils.c:975: undefined reference to `ID3Tag_FindFrameWithID'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/misc_utils.c:978: undefined reference to `ID3Tag_RemoveFrame'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/misc_utils.c:981: undefined reference to `ID3Frame_GetField'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/misc_utils.c:981: undefined reference to `ID3Field_SetASCII'
/home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src/misc_utils.c:982: undefined reference to `ID3Tag_AttachFrame'
collect2: ld returned 1 exit status
make[2]: *** [ripperX] Erreur 1
make[2]: quittant le répertoire « /home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2/src »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /home/cycojesus/netStuff/2007/mai/25/ripperX-2.7.1-gtk2 »
make: *** [all] Erreur 2
[1] 26400 exit 2 make
then when I manually cd into src/ and run
gcc -g -O2 -o ripperX cddb.o cddbp.o config_rw.o config_window_handler.o dir_window_handler.o err_dialog_handler.o job_control.o main.o main_window_handler.o misc_utils.o players_manipulation.o ripper_encoder_manipulation.o select_frame_handler.o status_frame_handler.o xpms.o /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so -lm /usr/lib/libpangocairo-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libcairo.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl /usr/lib/libglib-2.0.so -lutil -lid3
it fails with, std::allocator >::copy(char*, unsigned int, unsigned int) const' , std::allocator >::_Rep::_M_destroy(std::allocator const&)' >::seekg(std::fpos<__mbstate_t>)', std::allocator >::_M_leak_hard()' >::put(char)' , std::allocator >::basic_string(std::basic_string , std::allocator > const&, unsigned int, unsigned int)' , std::allocator >::basic_string(char const*, std::allocator const&)' ::~__basic_file()', std::allocator >::basic_string(std::basic_string , std::allocator > const&)', std::allocator >::~basic_string()' , std::allocator >::basic_string(char const*, unsigned int, std::allocator const&)' >' , std::allocator >::reserve(unsigned int)' >' >::tellg()' , std::allocator >::_Rep::_S_empty_rep_storage' , std::allocator >::compare(char const*) const' >::write(char const*, int)' , std::allocator >::basic_string(unsigned int, char, std::allocator const&)', std::allocator >::reserve(unsigned int)', std::allocator >::append(char const*, unsigned int)', std::allocator >::_Rep::_S_empty_rep_storage' , std::allocator >::_M_mutate(unsigned int, unsigned int, unsigned int)' >' , std::allocator >::append(std::basic_string , std::allocator > const&)' >::seekp(std::fpos<__mbstate_t>)' >::flush()' >::open(char const*, std::_Ios_Openmode)' >' >' >::tellp()' , std::allocator >::_Rep::_S_max_size' >' ::is_open() const' >::init(std::basic_streambuf >*)' , std::allocator >::assign(std::basic_string , std::allocator > const&)' >::read(char*, int)' >::seekg(long long, std::_Ios_Seekdir)' >::seekp(long long, std::_Ios_Seekdir)' >::close()', std::allocator >::_Rep::_M_destroy(std::allocator const&)' >::clear(std::_Ios_Iostate)' >::basic_filebuf()' >' , std::allocator >::basic_string(std::basic_string , std::allocator > const&)' , std::allocator >::assign(char const*, unsigned int)', std::allocator >::_Rep::_S_max_size', std::allocator >::_M_mutate(unsigned int, unsigned int, unsigned int)' >::basic_fstream()' >::peek()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::_List_node_base::hook(std::_List_node_base*)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `operator new[](unsigned int)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::_List_node_base::unhook()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__cxa_begin_catch'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `operator delete[](void*)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_istream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ostream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::__throw_length_error(char const*)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::ios_base::ios_base()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `operator delete(void*)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::__basic_file
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__cxa_call_unexpected'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__cxa_pure_virtual'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for std::basic_ios
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `VTT for std::basic_ifstream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::__throw_out_of_range(char const*)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_istream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__gxx_personality_v0'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ostream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `VTT for std::basic_fstream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::ios_base::Init::~Init()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ostream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ostream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__cxa_end_catch'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_filebuf
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for std::basic_filebuf
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for std::basic_streambuf
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ostream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::locale::~locale()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for __cxxabiv1::__class_type_info'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__gnu_cxx::__exchange_and_add(int volatile*, int)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::ios_base::Init::Init()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::ios_base::~ios_base()'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `__gnu_cxx::__atomic_add(int volatile*, int)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::__throw_logic_error(char const*)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for std::basic_ifstream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::__basic_file
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ios
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_istream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_istream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ostream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_filebuf
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_ios
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_filebuf
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `operator new(unsigned int)'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for std::basic_fstream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_string
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_fstream
/usr/lib/gcc/i486-slackware-linux/4.1.2/../../../libid3.so: undefined reference to `std::basic_istream
collect2: ld returned 1 exit status
It finally compile with either
g++ -g -O2 -o ripperX cddb.o cddbp.o config_rw.o config_window_handler.o dir_window_handler.o err_dialog_handler.o job_control.o main.o main_window_handler.o misc_utils.o players_manipulation.o ripper_encoder_manipulation.o select_frame_handler.o status_frame_handler.o xpms.o /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so -lm /usr/lib/libpangocairo-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libcairo.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl /usr/lib/libglib-2.0.so -lutil -lid3
or
gcc -g -O2 -o ripperX cddb.o cddbp.o config_rw.o config_window_handler.o dir_window_handler.o err_dialog_handler.o job_control.o main.o main_window_handler.o misc_utils.o players_manipulation.o ripper_encoder_manipulation.o select_frame_handler.o status_frame_handler.o xpms.o /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so -lm /usr/lib/libpangocairo-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libcairo.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so -ldl /usr/lib/libglib-2.0.so -lutil -lid3 -lstdc++
removing AMPROGCC_STDC doesn't help
UsingWed, 6th Jun 2007 2:28:15 +0200
I get this failure when running - I think it is related to the exit-button which is not grouped together with the other buttons.
$ src/ripperX
(ripperX:22926): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
(ripperX:22926): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
(ripperX:22926): Gtk-WARNING **: Attempting to add a widget with type GtkVBox to a container of type GtkFrame, but the widget is already inside a container of type GtkFrame, the GTK+ FAQ at http://www.gtk.org/faq/ explains how to reparent a widget.
(ripperX:22926): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
(ripperX:22926): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
UsingThu, 14th Jun 2007 7:57:26 +0200
I have now updated the patch so that the configure script will stop if
libid3cannot be found.cycojesus: I don't know why the configure script does not find
libid3for you. I suspect a local problem.Michael: Isn't this stuff just warnings, not failures?
UsingThu, 14th Jun 2007 23:28:09 +0200
"Michael: Isn't this stuff just warnings, not failures?"
According to the GNOME coding conventions a Gtk-CRITICAL is to be used if the error may cause a crash (Segmentaion faults) or data loss.
I haven't ducked in to the source but I am convinced it is related to the exit-button which is floating outside the button group.
Using