# port tree circular dependencies



## l2f (Mar 13, 2015)

Dear,

I just find the following circular dependencies in the port tree: devel/sdl12 need devel/zziplib to install and zziplib need sdl to install (graphic/ImageMagick, sysutils/fusefs-smbnetfs,...)

I run: 
	
	



```
FreeBSD daemonBSD 10.1-RELEASE-p6 FreeBSD 10.1-RELEASE-p6 #0: Tue Feb 24 18:57:59 UTC 2015
root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  i386
```
Date of the port installation: 2015-03-09

It fill the memory and finally crash my tmux session:

```
swap_pager: out of swap space
swap_pager_getswapspace(16): failed
pid 54755 (tmux), uid 0, was killed: out of swap space
Mar 13 12:39:07 daemonBSD kernel: pid 54755 (tmux), uid 0, was killed: out of swap space
```
Quick fix: I install zziplib with pkg and return to build sysutils/fusefs-smbnetfs

Do I need to fill a PR?

Regards,
l2f


----------



## l2f (Mar 13, 2015)

I find another one for grephic/ImageMagick : doxygen and graphviz

```
===>   ImageMagick-6.9.0.4,1 depends on shared library: libgvc.so - not found
===>   graphviz-2.38.0_6 depends on shared library: libIL.so - not found
===>   devil-1.7.8_20,1 depends on file: /usr/local/bin/sdl-config - not found
===>   sdl-1.2.15_5,2 depends on shared library: libpulse-simple.so - not found
===>   pulseaudio-5.0_3 depends on shared library: libjack.so - not found
===>   jackit-0.124.1_2 depends on executable: doxygen - not found
*** ===>   doxygen-1.8.9.1,2 depends on executable: dot - not found
*** ===>   graphviz-2.38.0_6 depends on shared library: libIL.so - not found
===>   devil-1.7.8_20,1 depends on file: /usr/local/bin/sdl-config - not found
===>   sdl-1.2.15_5,2 depends on shared library: libpulse-simple.so - not found
===>   pulseaudio-5.0_3 depends on shared library: libjack.so - not found
===>   jackit-0.124.1_2 depends on executable: doxygen - not found
*** ===>   doxygen-1.8.9.1,2 depends on executable: dot - not found
*** ===>   graphviz-2.38.0_6 depends on shared library: libIL.so - not found
```
l2f


----------



## chrbr (Mar 14, 2015)

I have run `portmaster graphic/ImageMagick` on a test installation without problems. After finished the installation I could run `display`. Please consider to install sysutils/bsdadminscripts and run `pkg_libchk` which checks the libraries. If the tool  reports issues please fix them before installing additional software.


----------



## l2f (Mar 16, 2015)

Dear chbr,

I will install the sysutils/bsdadminscripts and run `pkg_libchk` and see what's happen.

Regards,

l2fl2f


----------



## kpa (Mar 16, 2015)

Circular dependencies are a ports(7) tree problem and should be reported with a PR at https://bugs.freebsd.org/bugzilla/enter_bug.cgi.


----------



## l2f (Mar 17, 2015)

Dear,

Done: PR 198662
(https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=198662)
Regards,

l2fl2f


----------



## protocelt (Mar 17, 2015)

If I remember correctly, circular dependency issues can _sometimes_ also be the result of mixing ports and packages. l2f, did you run `pkg_libchk` as mentioned by chrbr above and if so did you find any issues?


----------



## sidetone (Feb 10, 2016)

Linking Thread how-to-deal-with-circular-dependencies-exactly.54766.


----------



## SirDice (Feb 10, 2016)

protocelt said:


> If I remember correctly, circular dependency issues can _sometimes_ also be the result of mixing ports and packages.


I usually get it when I try to experiment with port options. Sometimes options from different ports are conflicting and cause the circular dependency.


----------



## kpa (Feb 10, 2016)

SirDice said:


> I usually get it when I try to experiment with port options. Sometimes options from different ports are conflicting and cause the circular dependency.



It would be of course nice if such combination of options wasn't allowed. There are however literally infinite number of option combinations (combinatorial explosion is the exact term used) so testing for a dependency loop in a general case is very hard. Anyone who is a port maintainer shouldn't be expected to prepare in advance for some other port causing a circular dependency with one of his/her ports.


----------

