Summary: | media-video/vlc-1.1.11 fails to build with sys-libs/zlib-1.2.5.1-r1 | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Matthias Liebig <pqGungnir> |
Component: | Current packages | Assignee: | Alexis Ballier <aballier> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | 1i5t5.duncan, b.brachaczek, bugs+gentoo, bugzie, casta, che, chewi, chris, christian+bgo, jlec, jrmalaq, kspy, mark_alec, media-video, optiluca, polidevk.polidevk, rb6, renegabriels, skrattaren, spideybr, staff, taiyang.chen, timbers2k, transacid, vivo75, zeekec |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | 383179 | ||
Bug Blocks: | |||
Attachments: |
build.log
patch to fix compilation with zlib-1.2.5.1-r1 vlc-1.1.11.ebuild diff |
Description
Matthias Liebig
2011-09-17 13:20:04 UTC
Created attachment 286775 [details]
build.log
Created attachment 286833 [details, diff]
patch to fix compilation with zlib-1.2.5.1-r1
same here.
Attached patch fixed it for me.
I can confirm the regression with zlib-1.2.5.1-r1. R and vlc both fail to compile with it installed. However, downgrading to zlib-1.2.5.1 works fine on my ~amd64 laptop. Which is what I did to rebuild them when libpng was upgraded today and I had to recompile everything built against the old version. confirmed again, same trouble with chromium and sys-libs/zlib-1.2.5.1-r1 Also affects dev-lang/erlang-14.2.3. Fixable in the same way. Just to make it clear, zlib new version is incompatible with software that used the old version? Is that it? API changed between revisions? I mean, I've used this same patch to fix dev-lang/R in my local overlay, but should we expect a zlib version bump to fix this, or all packages that depend on zlib will need to be updated? Comment on attachment 286833 [details, diff]
patch to fix compilation with zlib-1.2.5.1-r1
this misses the entire point. you aren't supposed to be using OF or _Z_OF or
whatever else zlib happens to call it.
either drop the OF() usage completely in the code, or add the one liner to the
local code:
#define OF(x) x
dev-lang/R, media-video/ogmrip and media-libs/opencv have the same issue. (In reply to comment #8) > dev-lang/R, media-video/ogmrip and media-libs/opencv have the same issue. dev-lang/R: see bug #383431 media-video/ogmrip-0.13.6 and media-libs/opencv-2.3.0: could not reproduce. Please file separate bugs with your use flag combination and the build.log. This bug here is about vlc. (In reply to comment #7) > Comment on attachment 286833 [details, diff] > patch to fix compilation with zlib-1.2.5.1-r1 > > this misses the entire point. you aren't supposed to be using OF or _Z_OF or > whatever else zlib happens to call it. > > either drop the OF() usage completely in the code, or add the one liner to the > local code: > #define OF(x) x Packages need to work with vanilla zlib. It's not your call whether vlc should use OF() or not. Being a Gentoo dev means you're packaging zlib and vlc, you're not developing them. zlib-1.2.5.1-r1 needs to be removed from portage and the problem fixed in whatever way upstream thinks it's best. We cannot fork a Gentoo-version of zlib; that just isn't going to work out very well. Also, zlib 1.2.5.1 is a beta version. Just that one means it could be hardmasked until a decision is made by upstream on how to deal with this. *** Bug 383921 has been marked as a duplicate of this bug. *** Well, the whole story here seem to come from various packages taking those unzip files straight from zlib tarball. As long as they were inside the tarball, there was no problem with them using internal zlib macros, but nobody seemed to bother to clean them after taking. Anyone tried to report problem upstream? This is just a build-time issue. 1st. emerge =sys-libs/zlib-1.2.5.1 # get the older version which works good 2nd. emerge vlc # compile vlc with the old zlib 3rd. emerge zlib # safe to upgrade zlib now Assuming a recent version of portage, here's a simple fix, requiring no patching the ebuild or anything. Create the file: /etc/portage/env/media-video/vlc-1.1.11 (You may if you wish leave off the version number, simply naming it vlc, but the fix will likely be applied with the next bump, and including the version number means less chance of trouble with newer versions.) In this file, put the following three lines: post_src_prepare () { sed -i '1i#define OF(x) x' libs/unzip/ioapi.h } That should fix it! =:^) Duncan (In reply to comment #2) > Created attachment 286833 [details, diff] > patch to fix compilation with zlib-1.2.5.1-r1 > > same here. > Attached patch fixed it for me. Work's for as well on an x86 Geoff fixing the vlc code in question will work with any zlib version. there is nothing in there that requires a matching change in the upstream zlib. either drop the legacy ansi cruft (since i doubt the rest of vlc uses it), or add a local OF() define to the minizip code that vlc imported. (In reply to comment #17) > fixing the vlc code in question will work with any zlib version. there is > nothing in there that requires a matching change in the upstream zlib. either > drop the legacy ansi cruft (since i doubt the rest of vlc uses it), or add a > local OF() define to the minizip code that vlc imported. true but I doubt vlc's dev will accept anything differing from upstream as that'll make future merges harder if I had a libminizip.{so,pc}, like there seems to be in fedora, vlc could use it instead of its own local copy (In reply to comment #13) > Anyone tried to report problem upstream? vapier (Mike Frysinger) started a thread on the zlib-devel list: http://mail.madler.net/pipermail/zlib-devel_madler.net/2011-September/002621.html same problem with media-video/smplayer (In reply to comment #18) if you actually look at their code you'd see they're already maintaining small changes with the code base, and you don't even need to modify the code to make it sane. single line in unzip/Makefile.am: AM_CPPFLAGS = -D'OF(x)=x' i had looked around previously for minizip, but all the users seemed to customize the code heavily so it wouldn't help. should be easy to add a USE=minizip flag to zlib so that at least a few projects can avoid copying & pasting. zlib-1.2.5.1-r2 is now in the tree with USE=minizip support so you can replace the broken '<' dep (In reply to comment #22) > zlib-1.2.5.1-r2 is now in the tree with USE=minizip support so you can replace > the broken '<' dep thanks! though, minizip needs the same fix, because I get the following error: /usr/include/minizip/ioapi.h:128:51: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'OF' (In reply to comment #23) yeah, someone pointed that on irc. should be fixed in cvs now. 'emerge -uvDN world' fails now for me with: root@orca:/root(42)# emerge -uvDN world These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild UD ] sys-libs/zlib-1.2.5.1 [1.2.5.1-r1] 0 kB [ebuild U ] sys-fs/reiserfsprogs-3.6.21-r1 [3.6.21] 0 kB [ebuild U ] sys-libs/zlib-1.2.5.1-r2 [1.2.5.1-r1] USE="minizip%* -static-libs%" 0 kB [ebuild U ] dev-java/rxtx-2.2_pre2 [2.1.7.2-r3] USE="doc -lfd -source" 1,457 kB [ebuild U ] app-office/texmacs-1.0.7.13 [1.0.7.12] USE="jpeg netpbm qt4 spell svg -imlib" 14,635 kB [ebuild U ] media-libs/libvpx-0.9.7-r1 [0.9.7] USE="doc mmx sse sse2 ssse3 threads (-altivec) -debug -postproc -sse3 -static-libs%" 0 kB Total: 6 packages (5 upgrades, 1 downgrade), Size of downloads: 16,091 kB !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: sys-libs/zlib:0 (sys-libs/zlib-1.2.5.1::gentoo, ebuild scheduled for merge) pulled in by <sys-libs/zlib-1.2.5.1-r1 required by (media-video/vlc-1.1.11::gentoo, installed) (sys-libs/zlib-1.2.5.1-r2::gentoo, ebuild scheduled for merge) pulled in by >=sys-libs/zlib-1.2.5.1-r2:0[minizip] required by (dev-db/virtuoso-server-6.1.3-r1::gentoo, installed) ... Created attachment 287415 [details, diff]
vlc-1.1.11.ebuild diff
Allows for either <zlib-1.2.5.1-r1 or >=zlib-1.2.5.1-r2 with the minizip USE flag set. I think rev 1.2 of zlib-1.2.5.1-r2 may be necessary.
Even if I set the minizip USE flag for sys-libs/zlib 'emerge -vuDN world' hangs: root@moose:/root(58)# emerge -vuDN world These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild UD ] sys-libs/zlib-1.2.5.1 [1.2.5.1-r1] 0 kB [ebuild U ] sys-fs/reiserfsprogs-3.6.21-r1 [3.6.21] 0 kB [ebuild U ] sys-libs/zlib-1.2.5.1-r2 [1.2.5.1-r1] USE="minizip%* -static-libs%" 0 kB [ebuild U ] net-misc/ndisc6-1.0.2 [0.9.9-r2] 234 kB [ebuild U ] app-cdr/dvdisaster-0.72.2 [0.72.1] USE="sse2 -debug" LINGUAS="de -cs -it -ru" 0 kB [ebuild U ] app-office/texmacs-1.0.7.13 [1.0.7.12] USE="jpeg netpbm qt4 spell svg -imlib" 14,635 kB [ebuild U ] media-libs/libvpx-0.9.7-r1 [0.9.7] USE="doc mmx sse sse2 ssse3 threads (-altivec) -debug -postproc -sse3 -static-libs%" 0 kB Total: 7 packages (6 upgrades, 1 downgrade), Size of downloads: 14,869 kB !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: sys-libs/zlib:0 (sys-libs/zlib-1.2.5.1::gentoo, ebuild scheduled for merge) pulled in by <sys-libs/zlib-1.2.5.1-r1 required by (media-video/vlc-1.1.11::gentoo, installed) (sys-libs/zlib-1.2.5.1-r2::gentoo, ebuild scheduled for merge) pulled in by >=sys-libs/zlib-1.2.5.1-r2:0[minizip] required by (dev-db/virtuoso-server-6.1.3-r1::gentoo, installed) I forgot to add:
root@moose:/root(59)# grep minizip /etc/portage/package.use
>=sys-libs/zlib-1.2.5.1-r2 minizip
I suppose the problem is that vlc-1.1.11 depends on <sys-libs/zlib-1.2.5.1-r1 root@moose:/root(63)# grep -C2 zlib- /usr/portage/media-video/vlc/vlc-1.1.11.ebuild RDEPEND=" <sys-libs/zlib-1.2.5.1-r1 >=media-libs/libdvbpsi-0.1.6 a52? ( >=media-libs/a52dec-0.7.4-r3 ) while virtuoso-server-6.1.3-r1 depends on >=sys-libs/zlib-1.2.5.1-r2 root@moose:/root(66)# grep -C2 zlib /usr/portage/dev-db/virtuoso-server/virtuoso-server-6.1.3-r1.ebuild dev-libs/libxml2:2 >=dev-libs/openssl-0.9.7i:0 >=sys-libs/zlib-1.2.5.1-r2:0[minizip] kerberos? ( app-crypt/mit-krb5 ) ldap? ( net-nds/openldap ) (In reply to comment #29) > I suppose the problem is that vlc-1.1.11 depends on <sys-libs/zlib-1.2.5.1-r1 The purpose of the attached ebuild diff is to fix this. Yeah! media-video/vlc-1.1.11 compiles fine with sys-libs/zlib-1.2.5.1-r2 :) should be fixed now (In reply to comment #32) > should be fixed now Good to go. It pulls zlib-1.2.5.1, unless USE="minizip" for zlib, in which case it pulls zlib-1.2.5.1-r2. Thank you. Hi,
I tried to follow this thread and am still having problems compiling R for what appears to be the same reasons.
The version of zlib installed on my machine is 1.2.5.1-r2.
In /etc/portage/package.keywords I have:
=sys-libs/zlib-1.2.5.1-r2 ~x86
In /etc/portage/package.use I have:
>=sys-libs/zlib-1.2.5.1-r2 minizip
So, this suggests to me that everything should be in order. Unfortunately, it's not. What am I doing wrong and how can I get things back on track? Sorry, I realize this is likely simple stuff, but I am just missing something.
Best,
Alex
(In reply to comment #34) > > The version of zlib installed on my machine is 1.2.5.1-r2. You need at least rev 1.2 of zlib-1.2.5.1-r2, if you installed zlib-1.2.5.1-r2 before it reached rev 1.2 do a resync, then remerge it. Please forgive updating a closed bug, but I'm working on a similar problem for a different ebuild and I'm not quite sure what the proper solution is supposed to be. It looks like this is how the vlc ebuild was fixed: RDEPEND=" || ( >=sys-libs/zlib-1.2.5.1-r2[minizip] <sys-libs/zlib-1.2.5.1-r1 ) <SNIP> So, if stable zlib is installed (1.2.5), everything will work like normal, but if unstable zlib is installed, then the minizip USE flag must be set on zlib in order for VLC to run properly. Is that correct? Should that be the best approach to take with all other packages having this problem? Thanks. |