LinuxQuestions.org
Visit Jeremy's Blog.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 01-05-2019, 01:46 PM   #1
timsoft
Member
 
Registered: Oct 2004
Location: scotland
Distribution: slackware 13.1,13.37,14.0,14.1,14.2 64 and 32bit and arm
Posts: 299

Rep: Reputation: 78
Question how to I handle ffmpeg recursive deps


I'm trying to compile ffmpeg from slackbuilds.org using sbopkg. In trying to install optional deps there are some recursive deps. to be precise
ffmpeg has optional dep of frei0r which has option dep of opencv which has optional dep of ffmpeg
ffmpeg also has optional dep vid.stab which has option dep transcode which requires ffmpeg
it also has optional dep mjpegtools which has optional dep libquicktime which has optional dep ffmpeg
in otherwords 3 recusrive deps on ffmpeg

how to I go about resolving them?
do I do a basic ffmpeg with only sdl2 and jack/jack2 then compile quicktime, transocode and opencv then recompile ffmpeg with all the deps, or is there some other preferred way of doing it. I am aiming for a pretty fully loaded ffmpeg

It would be nice if there was some formal instructions in the readme, but I'm sure many people have done it, and I thought I would try myself rather than just rely on eric's (alienbob's) pre-done package.
 
Old 01-05-2019, 02:51 PM   #2
marbangens
Member
 
Registered: Aug 2012
Location: sweden
Distribution: Slackware, Fedora
Posts: 103

Rep: Reputation: Disabled
Haha what? You not overthinking? I think you should compile the optional dependencies for ffmpeg first.
you don't need them to link back to ffmpeg.

Last edited by marbangens; 01-05-2019 at 02:53 PM.
 
Old 01-05-2019, 03:29 PM   #3
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 5,632

Rep: Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389
Most likely, you don't need to worry about the functionality of linking them back to ffmpeg (I did this exercise on my own a while back and determined it wasn't worth it). I'd probably echo the suggestion of marbangens to just worry about the deps of ffmpeg and don't worry about any of those deps who can optionally link to ffmpeg.

But if you really want to, you would just need to compile the offending programs multiple times. I'd probably compile all the deps for ffmpeg before building ffmpeg the first time. Then once ffmpeg is built and installed, you can start recompiling the packages that optionally depend on ffmpeg and work through the tree to recompile everything, ending with recompiling ffmpeg for a second time (possibly more depending on how the dependency trees are laid out, but I'm too lazy to figure out if you can do it all in one swoop).
 
Old 01-05-2019, 05:46 PM   #4
timsoft
Member
 
Registered: Oct 2004
Location: scotland
Distribution: slackware 13.1,13.37,14.0,14.1,14.2 64 and 32bit and arm
Posts: 299

Original Poster
Rep: Reputation: 78
I must admit it is a bad situation where (apart from compilers which obviously need an existing compiler to compile) there are recursive dependencies. transcode requires ffmpeg, it is not marked as optional.
my dependency tree is below.
Code:
 ffmpeg 3.2.4
 ASS=yes
 BS2B=yes
 CELT=yes
 DC1394=yes
 EBUR128=yes
 FDK_AAC=yes
 FLITE=yes
 FREI0R=yes
 GME=yes
 GSM=yes
 IEC61883=yes
 ILBC=yes
 LADSPA=yes
 LAME=yes
 MODPLUG=yes
 NETCDF=yes
 OPENAL=yes
 OPENCORE=yes
 OPENCV=yes
 OPENSSL=yes
 OPUS=yes
 RTMP=yes
 RUBBERBAND=yes
 SCHROEDINGER=yes
 SNAPPY=yes
 SPEEX=yes
 TESSERACT=yes
 TWOLAME=yes
 VIDSTAB=yes
 WEBP=yes
 X264=yes
 X265=yes
 XVID=yes
 ZMQ=yes
 ZVBI=yes
 -requires
  jack2? k
  SDL2 k
  libass 0.14.1 k
  -optional
   enca 1.19 k
   -optional
    recode 3.7beta2-2 -no deps k
    perl-Cstools 3.42 -no deps k
    perl-Unicode-Map 0.112 -no deps k
    perl-Unicode-Map8 0.13 k
    -requires
     perl-Unicode-String 2.09 -no deps k
  libbluray -not installed  
  libbs2b 3.1.0 -no deps k
  celt -no deps k
  chromaprint -not installed
  libdc1394 2.2.5 -no deps k
  decklink-sdk -not installed
  libebur128 1.2.2-1 k
  -requires
   speex 1.2.0 -no deps k
  libfdk-aac 2.0.0 -no deps k
  flite 2.1-2 -no deps k
  frei0r
  -optional
   opencv
   -requires
    numpy3 1.14.3 k
    -optional
     openBLAS 0.3.3-1 k (cpu specific package. use -cpu host in qemu instead of -cpu qemu64 or qemu32)
    numpy 1.14.3 k
    -optional
     openBLAS k
   -optional
    qt5 k
    libdc1394 -no deps k
    ffmpeg ****recursive dependancy
    hdf5 1.8.15_patch1 -no deps k
    VTK -not installed
    libwebp -no deps k
    tesseract 3.04.00-1 k
    -requires
     leptonica 1.77.0 -no deps k
    glog 0.3.5 -no deps k
    apache-ant 1.9.9 k
    -optional
     openjdk k
    openBLAS 0.3.3-1 k
    openjdk 8u191_b12 k (alien)
   gavl 1.4.0 -no deps k
  libgme 0.6.2 -no deps k
  gsm 1.0.13 -no deps k
  libiec61883 1.2.0-2 -no deps k
  libavc1394 0.5.4-1 -no deps k
  libilbc 2.0.2-2 -no deps k
  ladspa_sdk 1.13 -no deps k
  lame -no deps k
  libmodplug 0.8.9.0 -no deps k
  netcdf 4.6.2-2 k
  HDF4=yes
  -requires
   hdf5 -no deps k
  -optional
   hdf 4.2.14-2 -no deps k
  OpenAL k
  opencore-amr 0.1.5 -no deps k
  opencv
  opus k
  rtmpdump 20151223_fa8646d -no deps k
  rubberband 1.8.2-1 k
  -requires
   ladspa_sdk k
   vamp-plugin-sdk 2.7.1 -no deps k
  -optional
   openjdk k -not using
  schroedinger 1.0.11-1 -no deps k
  snappy k
  speex 1.2.0 k
  tesseract k
  twolame k
  vid.stab
  TRANSCODE=yes
  -optional
   transcode
   FAAC=yes
   LAME=yes
   LIBDV=yes
   LIBMPEG2=yes
   MJPEGTOOLS=yes
   QUICKTIME=yes
   X264=yes
   XVID=yes
   -requires
    ffmpeg ***** recursive dep
   -optional
    faac 1.28-3 k
    -requires
     libmp4v2 2.0.0-1 k
    lame k
    libdv 1.0.0-2 k
    libmpeg2 0.5.1-1 k
    mjpegtools 2.1.0
    -optional
     libquicktime
     -optional
      faac k
      faad2 2.7-2 k
      ffmpeg ***** recursive dep
      lame k
      libdv k
      schroedinger k
      x264 k
     libdv k
     SDL_gfx 2.0.25-1 k
    libquicktime
    x264 k
    xvidcore k
  libwebp k
  x264 20170225 k
  x265 2.9 k
  xvidcore 1.3.5-1 k
  zeromq 4.3.0-1 k
  zvbi 0.2.35 k
 
Old 01-05-2019, 06:25 PM   #5
Skaendo
Member
 
Registered: Dec 2014
Location: West Texas, USA
Distribution: Slackware64-14.2
Posts: 817

Rep: Reputation: Disabled
Welcome to "circular dependencies".

If you really want to go through the hassle, you could first compile a minimal ffmpeg, then the packages that have circular dependencies, then recompile ffmpeg with the built circular dependencies.

But you should make build logs and read them for any optional dependencies that they might want that ffmpeg also uses and build them into ffmpeg before compiling the packages that depend on ffmpeg.


----------
Did I make it any easier or more complicated there?
 
Old 01-05-2019, 06:26 PM   #6
marbangens
Member
 
Registered: Aug 2012
Location: sweden
Distribution: Slackware, Fedora
Posts: 103

Rep: Reputation: Disabled
transcode is a text-console utility for video stream processing.
Decoding and encoding is done by loading modules that are responsible for
feeding transcode with raw video/audio streams (import modules) and encoding
the frames (export modules). It supports elementary video and audio frame
transformations, including de-interlacing or fast resizing of video frames
and loading of external filters.

You really need that? Just compile them, and recompile those you're gonna use separate if you need them to link back to ffmpeg or vid.stab or whatever.
 
Old 01-06-2019, 06:16 PM   #7
timsoft
Member
 
Registered: Oct 2004
Location: scotland
Distribution: slackware 13.1,13.37,14.0,14.1,14.2 64 and 32bit and arm
Posts: 299

Original Poster
Rep: Reputation: 78
thanks folks, I'm trying the compile ffmpeg with no opts, then the recursive deps quicktime, mjpegyools, transcode, vid.stab, opencv and fie0r and then recompiling ffmpeg with (almost) all the options.
It seems to be behaving so far, although the transcode source was 404'ing so I found it elsewhere.
I won't get finished till tomorrow, and then until I get to audacity or vlc I won't know if it is behaving ok.
I'll mark this one solved.
 
Old 01-06-2019, 07:26 PM   #8
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 5,632

Rep: Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389Reputation: 3389
You may want to recompile transcode after you're done just in case it only supports what ffmpeg was built with when transcode was compiled.

Aren't circular dependencies fun?
 
Old 01-07-2019, 11:10 AM   #9
timsoft
Member
 
Registered: Oct 2004
Location: scotland
Distribution: slackware 13.1,13.37,14.0,14.1,14.2 64 and 32bit and arm
Posts: 299

Original Poster
Rep: Reputation: 78
thanks.

i'll try that, thanks. in the mean time I have come across another problem. but i'll put that in a separate thread.
https://www.linuxquestions.org/quest...04#post5945704
 
  


Reply

Tags
dependancies, ffmpeg, recursion


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Recursive Transconding with ffmpeg activated by inotify setoja Linux - Server 1 01-19-2015 05:15 PM
How to handle custom build of ffmpeg with synaptic? Mountain Man Ubuntu 3 11-07-2009 02:39 PM
Help me in installing ffmpeg, ffmpeg-PHP, Mplayer, Mencoder, flv2tool, LAME MP3 Encod mitesh.ever Red Hat 5 05-16-2009 01:14 PM
Does the latest version of ffmpeg not work with ffmpeg-php? whitey4900 Linux - Software 0 08-04-2008 06:16 PM
non Recursive query and Recursive query prashsharma Linux - Server 1 06-27-2007 10:33 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 04:36 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration