Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Mar 2014 19:02:28 -0800
From:      Kevin Oberman <rkoberman@gmail.com>
To:        Jan Henrik Sylvester <me@janh.de>
Cc:        ports-list freebsd <freebsd-ports@freebsd.org>
Subject:   Re: Circular dependency, because x264 links ffmpeg
Message-ID:  <CAN6yY1s8cFpW1e8B1_Vtag9WwbGHMqmqa4SuvQnEntX=CZSwxA@mail.gmail.com>
In-Reply-To: <5316441D.8080607@janh.de>
References:  <5316441D.8080607@janh.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Mar 4, 2014 at 1:22 PM, Jan Henrik Sylvester <me@janh.de> wrote:

> # pkg info -r ffmpeg
> ffmpeg-2.1.1_1,1:
>         libxine-1.2.4_5
>         vlc-2.1.2_2,4
>         libstreamanalyzer-0.7.8_3
>         x264-0.136.2358_3
> # pkg info -r x264
> x264-0.136.2358_3:
>         ffmpeg-2.1.1_1,1
>         ffmpeg0-0.7.16_1,1
>         opal-3.10.10_2
>         vlc-2.1.2_2,4
>
> Not good. Since multimedia/ffmpeg depends on multimedia/x264 by default
> (the option X264 is enabled by default), my x264 installation must be
> broken.
>
> After forcibly deleting x264 and rebuilding the port, it still depends
> on ffmpeg:
>
> # pkg which /usr/local/bin/x264
> /usr/local/bin/x264 was installed by package x264-0.136.2358_3
> # readelf -d /usr/local/bin/x264 | grep libav
>  0x0000000000000001 (NEEDED)             Shared library: [libavutil.so.52]
> # pkg which /usr/local/lib/libavutil.so.52
> /usr/local/lib/libavutil.so.52 was installed by package ffmpeg-2.1.1_1,1
>
> The x264 port is doing something wrong (in the presence of ffmpeg).
>
> This will probably only happening building ports in an unclean
> environment, but I would have expected pkg to detect this and warn while
> registering the pkg, while creating a package from it, or while this
> package is installed on another machine. I never saw a warning.
>

I'm confused. When I look at the Makefile for  x264, I can't see ny reason
that it would depend on ffmpeg. It has no direct dependency.  As far as
indirect ones, I see libX11, gcc-4.6, gpac-libgpac-0.5.0,1.

When configuring, I see:
===>   x264-0.136.2358_3 depends on package: yasm>=0.6.0 - found
===>   x264-0.136.2358_3 depends on file: /usr/local/bin/bash - found
===>   x264-0.136.2358_3 depends on executable: gmake - found
===>   x264-0.136.2358_3 depends on executable: gcc46 - found
===>   x264-0.136.2358_3 depends on file: /usr/local/bin/as - found
===>   x264-0.136.2358_3 depends on file:
/usr/local/libdata/pkgconfig/x11.pc - found
===>   x264-0.136.2358_3 depends on shared library: libgpac.so - found

But I see that it links to libavformat, libavcodec, and libavutil, all part
of ffmpeg.

Oddly, my 9.2 system has no dependency on ffmpeg:
> pkg_info -r x264-\* (y|n|e)?yes
Information for x264-0.136.2358_3:

Depends on:
Dependency: openssl-1.0.1_9
Dependency: png-1.5.18
Dependency: jpeg-8_4
Dependency: gpac-libgpac-0.5.0,1

Looking through the build log I can only see the final link of the x264
does pull in all of those libs. Note that lib264 has no dependency on
ffmpeg. It is the x264 executable that uses it.

I think the only fix would be to split the port into building the library
in one port (libx264) and the utility in another (x264).

-- 
R. Kevin Oberman, Network Engineer, Retired
E-mail: rkoberman@gmail.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAN6yY1s8cFpW1e8B1_Vtag9WwbGHMqmqa4SuvQnEntX=CZSwxA>