Summary: | media-plugins/mythmusic-0.21_p17821 fails to compile due to missing include from media-libs/faad2-2.7 | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Will Saxon <saxonww> |
Component: | New packages | Assignee: | Gentoo Sound Team <sound> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | cctsurf, dan.dickey, dliana, iaindb, jesse, krellan, media-tv, mike, mythtv+disabled, Sergey371, slipcon |
Priority: | High | ||
Version: | 2008.0 | ||
Hardware: | AMD64 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
Patch for the missing /usr/include/mp4ff_int_types.h include file.
Proposed ebuild which includes the patch |
Description
Will Saxon
2009-06-22 03:04:43 UTC
wrong buffer... emerge --info: Portage 2.2_rc33 (default/linux/amd64/2008.0/no-multilib, gcc-4.3.3, glibc-2.10.1-r0, 2.6.28-gentoo-r3 x86_64) ================================================================= System uname: Linux-2.6.28-gentoo-r3-x86_64-Intel-R-_Celeron-R-_CPU_440_@_2.00GHz-with-gentoo-2.0.0 Timestamp of tree: Sun, 21 Jun 2009 05:45:02 +0000 app-shells/bash: 4.0_p24 dev-lang/python: 2.5.4-r2, 2.6.2-r1 sys-apps/baselayout: 2.0.0 sys-apps/openrc: 0.4.3-r2 sys-apps/sandbox: 2.0 sys-devel/autoconf: 2.13, 2.63-r1 sys-devel/automake: 1.5, 1.9.6-r2, 1.10.2, 1.11 sys-devel/binutils: 2.19.1-r1 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.6a virtual/os-headers: 2.6.29 ACCEPT_KEYWORDS="amd64 ~amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -march=core2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /home/mythtv/" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d" CXXFLAGS="-O2 -march=core2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="distlocks fixpackages parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch" GENTOO_MIRRORS="http://gentoo.chem.wisc.edu/gentoo" LDFLAGS="-Wl,-O1" LINGUAS="en en_US" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" SYNC="rsync://rsync21.us.gentoo.org/gentoo-portage" USE="X aac acl acpi alsa amd64 apache2 autostart berkdb bzip2 cleartype cli cracklib crypt dbus dri dvb dvd encode fftw flac gdbm gpm hal hardcoded-tables iconv ieee1394 ipv6 isdnlog lcd libvisual lirc midi mmap mmx mmxext mp3 mudflap mysql ncurses nls nptl nptlonly ogg opengl openmp pam pcre perl posix pppd python qt4 readline reflection sdl session spl sse sse2 ssl ssse3 svg symlink sysfs tcpd theora threads truetype unicode v4l2 vim-syntax vorbis x264 xorg xvid xvmc zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" APACHE2_MPMS="worker" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="irtrans" LINGUAS="en en_US" USERLAND="GNU" VIDEO_CARDS="intel" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY I think this header was really meant for internal use, so faad2 devs put their foot down and stopped installing it. mythmusic would be better off including <stdint.h> which is the only thing that mp4ff_int_types.h does on linux platform. Thanks for reporting this issue, assigning to mythmusic maintainers I tried to emerge media-plugins/mythmusic-0.21_p20563 this evening and the same issue occurs. I have attached a build log. This looks like a dup of bug 262074 Actually, this looks more like a bug in faad2 to me (or should headers assume whoever includes them will run configure and include config.h earlier?) Anyway: I had this problem too, so I took a quick look at the code and /usr/include/mp4ff.h contains this: #ifdef HAVE_STDINT_H #include <stdint.h> #else #include "mp4ff_int_types.h" #endif This means essentially, that if your code (here mythmusic) won't define HAVE_STDINT_H then it will fail (as mp4ff_int_types.h is not installed). It can be fixed either: - in mythmusic (by including config.h which defines HAVE_STDINT_H in metaiomp4.cpp before it includes metaiomp4.h - this fixes just mythmusic) - or by fixing /usr/include/mp4ff.h so it won't depend on HAVE_STDINT_H beeing set earlier (should fix everything that uses this) BTW: mythmusic README contains this: __NB__: As of March 5, 2004, you can build and install FAAD2 v2.0 final, but you must manually copy mp4ff_int_types.h from faad2/common/mp4ff/ to your usr/local/include/ directory. So I suspect this is indeed an old problem, however somehow nobody fixed it so far... Just in case howto get it to compile if you have this problem( I assume mythmusic-0.21_p20563, adjust if necessary): - ebuild `equery w mythmusic` compile - wait for build to fail - cd to the mythmusic/mythmusic dir (see error message for full path, the line with make[2]: Leaving directory) - edit metaiomp4.cpp - add before #include "metaiomp4.h": #include "config.h" - ebuild `equery w mythmusic` merge Michael's workaround in #5 worked for me. Thanks. I found some bug reports in the mythtv mailing list archive before I found this bug report. Ticket 6520 shows the report from a Gentoo user. The reply is that Ticket 5580 will fix it. Ticket 5580 replaces the dependency on faad2 with ffmpeg. Here are the relevant links: http://svn.mythtv.org/trac/ticket/6520 http://svn.mythtv.org/trac/ticket/5580 In my opinoin this is ralated to faad2, which I think should be properly installed if emerged. It is not a new problem as it is documented in bug http://bugs.gentoo.org/show_bug.cgi?id=90783. It was fixed then but is not any more. I propse this bug is adressed to faad2 ebuild and is fixed there. Moving from faad2 to ffmpeg in mythmusic is a worksround that does not repair the basic problem although it might help us mythmusic-users get mythmusic working :) I see both of these packages marked as "STABLE" when clearly one of them is not since mythmusic-0.21_p17821 won't install when using faad2. any package using mp4ff is broken and needs fixing/updating to use libmp4v2 After using the workaround I get g++ -c -pipe -march=core2 -g -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -Wno-non-virtual-dtor -D__STDC_CONSTANT_MACROS -Wall -W -fomit-frame-pointer -O3 -fomit-frame-pointer -DNDEBUG -D_REENTRANT -DPIC -fPIC -D_GNU_SOURCE -DPREFIX=\"/usr\" -DMMX -Di386 -D_FILE_OFFSET_BITS=64 -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_PLUGIN -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/qt/3/mkspecs/linux-g++ -I/var/tmp/portage/media-plugins/mythmusic-0.21_p20563/work/branches/release-0-21-fixes/mythplugins/mythmusic/mythmusic -I/usr/include -I/usr/include -I/usr/include/taglib -I/usr/include/cdda -I/usr/qt/3/include -o mainvisual.o mainvisual.cpp In file included from mainvisual.cpp:30: visualize.h:32:32: error: missing binary operator before token "double" make[2]: *** [mainvisual.o] Error 1 make[2]: Leaving directory `/var/tmp/portage/media-plugins/mythmusic-0.21_p20563/work/branches/release-0-21-fixes/mythplugins/mythmusic/mythmusic' make[1]: *** [sub-mythmusic] Error 2 make[1]: Leaving directory `/var/tmp/portage/media-plugins/mythmusic-0.21_p20563/work/branches/release-0-21-fixes/mythplugins/mythmusic' make: *** [sub-mythmusic] Error 2 #[31;01m*#[0m #[31;01m*#[0m ERROR: media-plugins/mythmusic-0.21_p20563 failed. #[31;01m*#[0m Call stack: #[31;01m*#[0m ebuild.sh, line 49: Called src_compile #[31;01m*#[0m environment, line 2984: Called mythtv-plugins_src_compile #[31;01m*#[0m environment, line 2617: Called die #[31;01m*#[0m The specific snippet of code: #[31;01m*#[0m emake || die "make failed to compile" #[31;01m*#[0m The die message: #[31;01m*#[0m make failed to compile #[31;01m*#[0m Same ebuild as #11, same problem. This is not a mythmusic bug, this is a faad2 bug (and has been correctly recategorized as such). As Will has reported, this bug existed and was fixed sometime back (see #90783). Apparently the bug got introduced again by someone removing the patch from the ebuild. The package is in portage and marked stable so it should work. So the solution is to simply fix it, and not debate whether or not it should be used. I've built a patch which does this and my faad2 and mythmusic are now working! I'll attach an updated patch and an ebuild based on the current faad2-2.7-r1.ebuild. The patch includes the missing mp4ff_int_types.h header file. Justification: This is NOT an internal header file - it IS called by mp4ff.h, which is an external header file, and so is essential. For any users who want to use this patch, create a portage overlay and copy the current /usr/portage/media-libs/faad2 to the overlay. Add the ebuild to your overlay/media-libs/faad2 directory, and the patch to the files subdirectory. Then: emerge -1 faad2 Since the new ebuild is not yet marked as stable, you'll need to unmask it in your /etc/portage/packages.keywords. As a note to those who want to minimize installing "internal" headers. The library does install an "internal" mp4ffint.h header file. Looking at bug #90783, you can see that this file was since added to the exported includes, perhaps by mistake. It may be possible to remove this file, but I've not done the research to determine if there was a specific reason to add the file. For maximum compatibility with any other packages using this library I'm leaving that file installed, as it is currently. Created attachment 204261 [details, diff]
Patch for the missing /usr/include/mp4ff_int_types.h include file.
Created attachment 204262 [details]
Proposed ebuild which includes the patch
the work-around/hand patch in #11 didn't work for me. but using the ebuild/patch for faad2 above worked for faad2 AND mythmusic merged successfully using mythmusic-0.21_p20563 on amd64. thanks! *** Bug 262074 has been marked as a duplicate of this bug. *** confirmed applying the r2 overlay fixed the faad2 build, which in turn lets mythmusic compile. Thanks so much! don't forget to run "ebuild faad2-2.7-r2.ebuild digest" too. The fixes in comment 13, 14, 15, and 18 worked great for me. Three things to mention: The file faad2-2.7-mp4ff-includes.patch from comment 14 must be copied to this directory: /usr/portage/media-libs/faad2/files The file faad2-2.7-r2.ebuild from comment 15 must be copied to this directory: /usr/portage/media-libs/faad2 The following line (or similar) must be added to the /etc/portage/package.keywords file, to force it to pick up the new version: >=media-libs/faad2-2.7-r2 Then, run the command from comment 18, from within the /usr/portage/media-libs/faad2 directory: ebuild faad2-2.7-r2.ebuild digest When these are done, it emerges cleanly: emerge -vlp faad2 emerge faad2 Great fix. It seems low-risk. I wonder why this hasn't been added to the main Gentoo Portage tree? I'm not sure how to create my own local overlay, so just made the file edits directly for now. Backed up the /usr/portage/media-libs/faad2 directory manually, so I can re-apply it after emerge --sync breaks it again. I looked at the developer guide, but it talks about git repositories and overlays.gentoo.org, which are overkill for this. Is there a command that can quickly create a local overlay, that can be applied on top of the existing /usr/portage tree? Thanks! mythmusic is broken by design then, nothing should be using libmp4ff from faad2, it's classified as experimental and upstream is only building static archive out of it, no plans to provide stable API mythmusic should be using e.g. libmp4v2 or copy the needed parts of libmp4ff to it's own source tree but someone went and added -r1 that builds the unsupported library anyway, so here's to complete that: +*faad2-2.7-r2 (29 Apr 2010) + + 29 Apr 2010; Samuli Suominen <ssuominen@gentoo.org> +faad2-2.7-r2.ebuild, + +files/faad2-2.7-libmp4ff-install-mp4ff_int_types_h.patch: + Install mp4ff_int_types.h since we are building unsupported libmp4ff + library anyway wrt #275008. |