A slightly modified version of 2.1.8 ebuild with gtk3 use flag
Created attachment 339500 [details] easytag ebuild
Comment on attachment 339500 [details] easytag ebuild --- easytag-2.1.8.ebuild 2013-02-15 16:59:14.667946854 +0100 +++ - 2013-02-20 16:11:24.250416881 +0100 @@ -11,9 +11,10 @@ LICENSE="GPL-2" SLOT="0" KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris" -IUSE="flac mp3 mp4 nls speex vorbis wavpack" +IUSE="flac gtk3 mp3 mp4 nls speex vorbis wavpack" -RDEPEND=">=x11-libs/gtk+-2.24:2 +RDEPEND="!gtk3? ( >=x11-libs/gtk+-2.24:2 ) + gtk3? ( x11-libs/gtk+:3 ) mp3? ( >=media-libs/id3lib-3.8.3-r7 media-libs/libid3tag @@ -53,7 +54,8 @@ $(use_enable speex) \ $(use_enable flac) \ $(use_enable mp4) \ - $(use_enable wavpack) + $(use_enable wavpack) \ + $(use_with gtk3) } pkg_postinst() { fdo-mime_desktop_database_update; }
There were a few problems with the GTK+ 3 support in 2.1.8, most of which have now been fixed in master: http://git.gnome.org/browse/easytag/commit/?id=14473f69b312de6f9ce3aecfd55b0c4308b15f56 http://git.gnome.org/browse/easytag/commit/?id=cde61f8f5ceb5cbaacf0574b157bf5393a395b66 http://git.gnome.org/browse/easytag/commit/?id=a57d0ee350c2dd2b9b04bdd98a7633a0113f2ccf http://git.gnome.org/browse/easytag/commit/?id=a36cc1a5c7065569518b72414b289c60afbd6762 I would recommend applying at least those fixes.
usage of "gtk3" useflag is discouraged, see the tracker bug 420493
sounds like we should wait for next release before enabling gtk3 for ~arch users by default
(In reply to comment #5) > sounds like we should wait for next release before enabling gtk3 for ~arch > users by default As the upstream maintainer of EasyTAG, I agree; GTK+ 3 support is experimental at the moment. It would be fine in a -9999 ebuild or similar, but not for regular users in my opinion.
Not sure if this is some issue with gstreamer or not but ever since upgrading to gnome 3 I have noticed that when trying to add album art to .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists and I don't see a way to update album art within the tag on the Picture tab. Other programs like Sound Juicer are also missing menus for controlling what format things are ripped with so maybe it's a gtk+3/gstreamer thing.
(In reply to biohazrd from comment #7) > when trying to add album art to > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used to handle MP4/AAC tagging (including images), due to a license incompatibility. TagLib is now used, and the C API does not have the ability to add images to MP4 files. > Other programs like Sound Juicer are also missing menus for controlling what > format things are ripped with so maybe it's a gtk+3/gstreamer thing. That is a separate issue, in that Sound Juicer was ported to use GstEncodingProfile from GnomeMediaProfile: https://git.gnome.org/browse/sound-juicer/commit/?id=862e7756ca714ad873afcab9b603e5ca8e59b862 There is no UI configuration widget for GstEncodingProfile in Sound Juicer.
(In reply to David King from comment #8) > (In reply to biohazrd from comment #7) > > when trying to add album art to > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > to handle MP4/AAC tagging (including images), due to a license > incompatibility. TagLib is now used, and the C API does not have the ability > to add images to MP4 files. The license incompability can be worked around using dlopen() as opposed to linking against the library (NEEDED entry). Gtkpod used to do it that way before they switched to built-in AtomicParsley. I'm just saying it could be done, not that I'd be intrested in pushing such change ;-)
(In reply to Samuli Suominen from comment #9) > (In reply to David King from comment #8) > > (In reply to biohazrd from comment #7) > > > when trying to add album art to > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > to handle MP4/AAC tagging (including images), due to a license > > incompatibility. TagLib is now used, and the C API does not have the ability > > to add images to MP4 files. > > The license incompability can be worked around using dlopen() as opposed to > linking against the library (NEEDED entry). Gtkpod used to do it that way > before they switched to built-in AtomicParsley. I'm just saying it could be > done, not that I'd be intrested in pushing such change ;-) Thanks for the info. I emerged AtomicParsley and will just use that instead of Easytag. I wrote a quick script to tag all music in the folder with a given album name. A little more work than easytag interface but oh well.
(In reply to Samuli Suominen from comment #9) > The license incompability can be worked around using dlopen() as opposed to > linking against the library (NEEDED entry). Gtkpod used to do it that way > before they switched to built-in AtomicParsley. I'm just saying it could be > done, not that I'd be intrested in pushing such change ;-) Seems like a reasonable way to get around the license, thanks for the suggestion. I filed a bug upstream: https://bugzilla.gnome.org/show_bug.cgi?id=701506 I do not know when I will have time to work on it, but it should be fairly straightforward to resurrect the old libmp4v2-using code and use GModule/dlopen().
(In reply to Samuli Suominen from comment #9) > (In reply to David King from comment #8) > > (In reply to biohazrd from comment #7) > > > when trying to add album art to > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > to handle MP4/AAC tagging (including images), due to a license > > incompatibility. TagLib is now used, and the C API does not have the ability > > to add images to MP4 files. > > The license incompability can be worked around using dlopen() as opposed to > linking against the library (NEEDED entry). Gtkpod used to do it that way > before they switched to built-in AtomicParsley. I'm just saying it could be > done, not that I'd be intrested in pushing such change ;-) Using dlopen() would create exactly the same copyright violation: <-- snip --> If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means the plug-ins must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed. <-- snip --> http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins And your claim that the NEEDED entry should make any difference sounds also absurd, considering that there are normal shared libraries referenced by NEEDED entries where ABI compatible libraries with different licences exist. Examples would be Lesstif/Motif until recently, or that the licence of the ffmpeg libraries depends on what other libraries they are linked with.
EasyTAG 2.2.0 was released today: https://mail.gnome.org/archives/easytag-list/2014-April/msg00045.html It has switched to GTK+ 3 by default (but GTK+ 2 support is optional). It uses the C++ API of TagLib, and cover art for MP4 files is working again.
(In reply to Adrian Bunk from comment #12) > (In reply to Samuli Suominen from comment #9222) > > (In reply to David King from comment #8223) > > > (In reply to biohazrd from comment #7224) > > > > when trying to add album art to > > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > > to handle MP4/AAC tagging (including images), due to a license > > > incompatibility. TagLib is now used, and the C API does not have the ability > > > to add images to MP4 files. > > > > The license incompability can be worked around using dlopen() as opposed to > > linking against the library (NEEDED entry). Gtkpod used to do it that way > > before they switched to built-in AtomicParsley. I'm just saying it could be > > done, not that I'd be intrested in pushing such change ;-) > > Using dlopen() would create exactly the same copyright violation: > > <-- snip --> > > If the program dynamically links plug-ins, and they make function calls to > each > other and share data structures, we believe they form a single program, which > must be treated as an extension of both the main program and the plug-ins. > This > means the plug-ins must be released under the GPL or a GPL-compatible free > software license, and that the terms of the GPL must be followed when those > plug-ins are distributed. > > <-- snip --> > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins225 > > And your claim that the NEEDED entry should make any difference sounds also > absurd, considering that there are normal shared libraries referenced by > NEEDED entries where ABI compatible libraries with different licences exist. > Examples would be Lesstif/Motif until recently, or that the licence of the > ffmpeg libraries depends on what other libraries they are linked with. It says "If the program dynamically links". This is not the case if you use dlopen().
(In reply to Julian Ospald (hasufell) from comment #14) > It says "If the program dynamically links". This is not the case if you use > dlopen(). correct, I stand by what I said. :)
(In reply to Julian Ospald (hasufell) from comment #14) > (In reply to Adrian Bunk from comment #12) > > (In reply to Samuli Suominen from comment #9222) > > > (In reply to David King from comment #8223) > > > > (In reply to biohazrd from comment #7224) > > > > > when trying to add album art to > > > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > > > to handle MP4/AAC tagging (including images), due to a license > > > > incompatibility. TagLib is now used, and the C API does not have the ability > > > > to add images to MP4 files. > > > > > > The license incompability can be worked around using dlopen() as opposed to > > > linking against the library (NEEDED entry). Gtkpod used to do it that way > > > before they switched to built-in AtomicParsley. I'm just saying it could be > > > done, not that I'd be intrested in pushing such change ;-) > > > > Using dlopen() would create exactly the same copyright violation: > > > > <-- snip --> > > > > If the program dynamically links plug-ins, and they make function calls to > > each > > other and share data structures, we believe they form a single program, which > > must be treated as an extension of both the main program and the plug-ins. > > This > > means the plug-ins must be released under the GPL or a GPL-compatible free > > software license, and that the terms of the GPL must be followed when those > > plug-ins are distributed. > > > > <-- snip --> > > > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins225 > > > > And your claim that the NEEDED entry should make any difference sounds also > > absurd, considering that there are normal shared libraries referenced by > > NEEDED entries where ABI compatible libraries with different licences exist. > > Examples would be Lesstif/Motif until recently, or that the licence of the > > ffmpeg libraries depends on what other libraries they are linked with. > > It says "If the program dynamically links". This is not the case if you use > dlopen(). It says "If the program dynamically links ***plug-ins***". This is exactly what dlopen() is doing.
(In reply to Adrian Bunk from comment #16) > (In reply to Julian Ospald (hasufell) from comment #14) > > (In reply to Adrian Bunk from comment #12) > > > (In reply to Samuli Suominen from comment #9222) > > > > (In reply to David King from comment #8223) > > > > > (In reply to biohazrd from comment #7224) > > > > > > when trying to add album art to > > > > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > > > > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > > > > to handle MP4/AAC tagging (including images), due to a license > > > > > incompatibility. TagLib is now used, and the C API does not have the ability > > > > > to add images to MP4 files. > > > > > > > > The license incompability can be worked around using dlopen() as opposed to > > > > linking against the library (NEEDED entry). Gtkpod used to do it that way > > > > before they switched to built-in AtomicParsley. I'm just saying it could be > > > > done, not that I'd be intrested in pushing such change ;-) > > > > > > Using dlopen() would create exactly the same copyright violation: > > > > > > <-- snip --> > > > > > > If the program dynamically links plug-ins, and they make function calls to > > > each > > > other and share data structures, we believe they form a single program, which > > > must be treated as an extension of both the main program and the plug-ins. > > > This > > > means the plug-ins must be released under the GPL or a GPL-compatible free > > > software license, and that the terms of the GPL must be followed when those > > > plug-ins are distributed. > > > > > > <-- snip --> > > > > > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins225 > > > > > > And your claim that the NEEDED entry should make any difference sounds also > > > absurd, considering that there are normal shared libraries referenced by > > > NEEDED entries where ABI compatible libraries with different licences exist. > > > Examples would be Lesstif/Motif until recently, or that the licence of the > > > ffmpeg libraries depends on what other libraries they are linked with. > > > > It says "If the program dynamically links". This is not the case if you use > > dlopen(). > > It says "If the program dynamically links ***plug-ins***". > > This is exactly what dlopen() is doing. nope, dlopen != dynamic linking. dynamic linking adds a NEEDED entry to the library, whereas dlopen() doesn't use of dlopen (or libltdl's plug-in loader) are widely used for circumstances like this
(In reply to Samuli Suominen from comment #17) > (In reply to Adrian Bunk from comment #16) > > (In reply to Julian Ospald (hasufell) from comment #14) > > > (In reply to Adrian Bunk from comment #12) > > > > (In reply to Samuli Suominen from comment #9222) > > > > > (In reply to David King from comment #8223) > > > > > > (In reply to biohazrd from comment #7224) > > > > > > > when trying to add album art to > > > > > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > > > > > > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > > > > > to handle MP4/AAC tagging (including images), due to a license > > > > > > incompatibility. TagLib is now used, and the C API does not have the ability > > > > > > to add images to MP4 files. > > > > > > > > > > The license incompability can be worked around using dlopen() as opposed to > > > > > linking against the library (NEEDED entry). Gtkpod used to do it that way > > > > > before they switched to built-in AtomicParsley. I'm just saying it could be > > > > > done, not that I'd be intrested in pushing such change ;-) > > > > > > > > Using dlopen() would create exactly the same copyright violation: > > > > > > > > <-- snip --> > > > > > > > > If the program dynamically links plug-ins, and they make function calls to > > > > each > > > > other and share data structures, we believe they form a single program, which > > > > must be treated as an extension of both the main program and the plug-ins. > > > > This > > > > means the plug-ins must be released under the GPL or a GPL-compatible free > > > > software license, and that the terms of the GPL must be followed when those > > > > plug-ins are distributed. > > > > > > > > <-- snip --> > > > > > > > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins225 > > > > > > > > And your claim that the NEEDED entry should make any difference sounds also > > > > absurd, considering that there are normal shared libraries referenced by > > > > NEEDED entries where ABI compatible libraries with different licences exist. > > > > Examples would be Lesstif/Motif until recently, or that the licence of the > > > > ffmpeg libraries depends on what other libraries they are linked with. > > > > > > It says "If the program dynamically links". This is not the case if you use > > > dlopen(). > > > > It says "If the program dynamically links ***plug-ins***". > > > > This is exactly what dlopen() is doing. > > nope, dlopen != dynamic linking. dynamic linking adds a NEEDED entry to > the library, whereas dlopen() doesn't > use of dlopen (or libltdl's plug-in loader) are widely used for > circumstances like this Nope, dynamic linking != plug-ins. When loading plug-ins, as is covered in this FAQ entry from the FSF, there is no NEEDED entry in the loading program or library. Trying to use dlopen() for circumstances like this is widely considered a copyright violation, and therefore rare in Open Source software.
2.2.0 in Portage taglib is no longer optional, upstream broke the optional support by always including the headers in src/gio_wrapper.h, as in --disable-mp4 breaks the build ogg and vorbis are no longer optional, upstream broke the optional support by always including their headers in src/vcedit.h, as in, --disable-ogg or just not having them installed breaks the build in many ways
(In reply to Adrian Bunk from comment #18) > (In reply to Samuli Suominen from comment #17) > > (In reply to Adrian Bunk from comment #16) > > > (In reply to Julian Ospald (hasufell) from comment #14) > > > > (In reply to Adrian Bunk from comment #12) > > > > > (In reply to Samuli Suominen from comment #9222) > > > > > > (In reply to David King from comment #8223) > > > > > > > (In reply to biohazrd from comment #7224) > > > > > > > > when trying to add album art to > > > > > > > > .m4a files the check box in EasyTag 2.1.8 for the tag no longer exists > > > > > > > > > > > > > > Unfortunately, EasyTAG cannot link with libmp4v2, which was previously used > > > > > > > to handle MP4/AAC tagging (including images), due to a license > > > > > > > incompatibility. TagLib is now used, and the C API does not have the ability > > > > > > > to add images to MP4 files. > > > > > > > > > > > > The license incompability can be worked around using dlopen() as opposed to > > > > > > linking against the library (NEEDED entry). Gtkpod used to do it that way > > > > > > before they switched to built-in AtomicParsley. I'm just saying it could be > > > > > > done, not that I'd be intrested in pushing such change ;-) > > > > > > > > > > Using dlopen() would create exactly the same copyright violation: > > > > > > > > > > <-- snip --> > > > > > > > > > > If the program dynamically links plug-ins, and they make function calls to > > > > > each > > > > > other and share data structures, we believe they form a single program, which > > > > > must be treated as an extension of both the main program and the plug-ins. > > > > > This > > > > > means the plug-ins must be released under the GPL or a GPL-compatible free > > > > > software license, and that the terms of the GPL must be followed when those > > > > > plug-ins are distributed. > > > > > > > > > > <-- snip --> > > > > > > > > > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins225 > > > > > > > > > > And your claim that the NEEDED entry should make any difference sounds also > > > > > absurd, considering that there are normal shared libraries referenced by > > > > > NEEDED entries where ABI compatible libraries with different licences exist. > > > > > Examples would be Lesstif/Motif until recently, or that the licence of the > > > > > ffmpeg libraries depends on what other libraries they are linked with. > > > > > > > > It says "If the program dynamically links". This is not the case if you use > > > > dlopen(). > > > > > > It says "If the program dynamically links ***plug-ins***". > > > > > > This is exactly what dlopen() is doing. > > > > nope, dlopen != dynamic linking. dynamic linking adds a NEEDED entry to > > the library, whereas dlopen() doesn't > > use of dlopen (or libltdl's plug-in loader) are widely used for > > circumstances like this > > Nope, dynamic linking != plug-ins. When loading plug-ins, as is covered in > this FAQ entry from the FSF, there is no NEEDED entry in the loading program > or library. linking != loading http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins "If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in?" <snip> "It depends on how the program invokes its plug-ins." <snip> "If the program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case." <snip> I suppose it's the borderline case we are talking about here. > Trying to use dlopen() for circumstances like this is widely considered a > copyright violation, and therefore rare in Open Source software.
(In reply to Samuli Suominen from comment #19) > 2.2.0 in Portage > > taglib is no longer optional, upstream broke the optional support by always > including the headers in src/gio_wrapper.h, as in --disable-mp4 breaks the > build This was unintentional, and is fixed upstream: https://git.gnome.org/browse/easytag/commit/?id=ddf003b219799b82f4a72c7568fbcbe913e45f26 > ogg and vorbis are no longer optional, upstream broke the optional support > by always including their headers in src/vcedit.h, as in, --disable-ogg or > just not having them installed breaks the build in many ways This should not be the case, and is unintentional. Ogg support is required for both Speex and Opus support, and there should be appropriate configure checks in place to make sure this is satisfied. Please file an upstream bug and I will look into it.
(In reply to Samuli Suominen from comment #20) > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins > > "If a program released under the GPL uses plug-ins, what are the > requirements for the licenses of a plug-in?" > <snip> > "It depends on how the program invokes its plug-ins." > <snip> > "If the program dynamically links plug-ins, but the communication between > them is limited to invoking the ‘main’ function of the plug-in with some > options and waiting for it to return, that is a borderline case." > <snip> > > I suppose it's the borderline case we are talking about here. > > Trying to use dlopen() for circumstances like this is widely considered a > > copyright violation, and therefore rare in Open Source software. Only calling a main() function and waiting for the return is borderline since it is basically the same as calling a separate program using system(). As soon as you call any other functions in the plugin there is no doubt that it would be a copyright violation.
(In reply to Adrian Bunk from comment #22) > (In reply to Samuli Suominen from comment #20309) > > > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins310 > > > > "If a program released under the GPL uses plug-ins, what are the > > requirements for the licenses of a plug-in?" > > <snip> > > "It depends on how the program invokes its plug-ins." > > <snip> > > "If the program dynamically links plug-ins, but the communication between > > them is limited to invoking the ‘main’ function of the plug-in with some > > options and waiting for it to return, that is a borderline case." > > <snip> > > > > I suppose it's the borderline case we are talking about here. > > > Trying to use dlopen() for circumstances like this is widely considered a > > > copyright violation, and therefore rare in Open Source software. > > Only calling a main() function and waiting for the return is borderline > since it is basically the same as calling a separate program using system(). > > As soon as you call any other functions in the plugin there is no doubt that > it would be a copyright violation. Any cases where this was tested in court?
(In reply to Julian Ospald (hasufell) from comment #23) > (In reply to Adrian Bunk from comment #22) > > (In reply to Samuli Suominen from comment #20309) > > > > > > http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins310 > > > > > > "If a program released under the GPL uses plug-ins, what are the > > > requirements for the licenses of a plug-in?" > > > <snip> > > > "It depends on how the program invokes its plug-ins." > > > <snip> > > > "If the program dynamically links plug-ins, but the communication between > > > them is limited to invoking the ‘main’ function of the plug-in with some > > > options and waiting for it to return, that is a borderline case." > > > <snip> > > > > > > I suppose it's the borderline case we are talking about here. > > > > Trying to use dlopen() for circumstances like this is widely considered a > > > > copyright violation, and therefore rare in Open Source software. > > > > Only calling a main() function and waiting for the return is borderline > > since it is basically the same as calling a separate program using system(). > > > > As soon as you call any other functions in the plugin there is no doubt that > > it would be a copyright violation. > > Any cases where this was tested in court? None that I am aware of. But do you want to risk that using Gentoo makes some random person the defendant in such a case? If Gentoo does this, anyone whos copyright is affected can pick anyone providing a Gentoo binary package server, or anyone distributing products using Gentoo, in a jurisdiction of his choice. Additionally, why would Gentoo want to attempt to undermine Open Source licences in the first place? (Note that in the EasyTAG case, upstream already did the right thing by completely dropping support for the GPL-incompatible library.)