pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [rant] Too many dependencies



Sarton O'Brien wrote:
[---]
(I eventually gave up on monotone-viz. It was taking too long to build,
and all those extra packages will cause my package updates to become a
nightmare).
[---]
I have had similar issues and it nearly always ends up being a recursive dependency that is applicable to the options framework. The problem for me is the assumed default options, which has required me to create a rather long PKG_DEFAULT_OPTIONS line in mk.conf that negates most of what is specified as default.

In the specific case of monotone-viz, it's not a circular dependency, it's just an extremely large tree:

devel/monotone-viz   [ does not use the options framework ]
graphics/graphviz [ gd, (gtk), (guile), (lua), (ocaml), (pangocairo), (perl), (rsvg), (swig), (tcl), (x11) ]
    fonts/ghostscript-fonts   [ does not use the options framework ]
    devel/pango   [ x11 ]
      fonts/Xft2   [ does not use the options framework ]
        fonts/fontconfig   [ does not use the options framework ]
          graphics/freetype2   [ (subpixel), (truetype) ]
          textproc/expat   [ does not use the options framework ]
        x11/Xrender   [ does not use the options framework ]
      devel/glib2   [ fam ]
lang/perl5 [ (debug), (mstats), (threads), <64bitall|64bitauto*|64bitint|64bitmore|64bitnone> ]
        sysutils/fam   [ (kqueue) ]
        devel/pcre   [ does not use the options framework ]
      graphics/cairo   [ x11 ]
        graphics/MesaLib   [ x86_64 ]
        graphics/glitz   [ x11 ]
        graphics/png   [ does not use the options framework ]
        x11/pixman   [ does not use the options framework ]
    x11/gtk2   [ (cups), (debug), (jasper), <x11*> ]
      misc/xdg-dirs   [ does not use the options framework ]
      lang/python25   [ does not use the options framework ]
        devel/libffi   [ does not use the options framework ]
      x11/xcursor   [ does not use the options framework ]
        x11/Xfixes   [ does not use the options framework ]
      x11/liboldXrandr   [ does not use the options framework ]
      databases/shared-mime-info   [ does not use the options framework ]
        textproc/libxml2   [ inet6 ]
          textproc/xmlcatmgr   [ does not use the options framework ]
      devel/atk   [ does not use the options framework ]
      graphics/jpeg   [ does not use the options framework ]
      graphics/tiff   [ lzw ]
    graphics/librsvg   [ does not use the options framework ]
      devel/libgsf   [ does not use the options framework ]
        devel/libbonobo   [ does not use the options framework ]
          devel/popt   [ does not use the options framework ]
          net/ORBit2   [ inet6 ]
            net/libIDL   [ does not use the options framework ]
          sysutils/dbus   [ (debug), kqueue, (x11) ]
          sysutils/dbus-glib   [ (debug) ]
        sysutils/gnome-vfs   [ fam, (gssapi), (hal), (inet6) ]
          devel/GConf   [ does not use the options framework ]
            security/policykit   [ does not use the options framework ]
          security/gnutls   [ does not use the options framework ]
            archivers/lzo   [ does not use the options framework ]
            devel/libcfg+   [ does not use the options framework ]
            security/libgcrypt   [  ]
security/libgpg-error [ does not use the options framework ]
            security/libtasn1   [ does not use the options framework ]
            security/opencdk   [ does not use the options framework ]
          sysutils/hal   [ does not use the options framework ]
            devel/libvolume_id   [ does not use the options framework ]
            misc/pciids   [ does not use the options framework ]
            misc/usbids   [ does not use the options framework ]
            sysutils/hal-info   [ does not use the options framework ]
      textproc/libcroco   [ does not use the options framework ]
    graphics/gd   [ (x11) ]
    lang/lua   [ does not use the options framework ]
    x11/tk   [ does not use the options framework ]
      lang/tcl   [ does not use the options framework ]
    devel/libltdl   [ does not use the options framework ]
  graphics/libgnomecanvas   [ does not use the options framework ]
    devel/libglade   [ does not use the options framework ]
    graphics/libart   [ does not use the options framework ]
x11/lablgtk [ (glade), gnomecanvas, (gtksourceview), (gtkspell), (svg) ]
    textproc/gtkspell   [ does not use the options framework ]
textproc/enchant [ (aspell), (enchant-zemberek), hunspell, (ispell) ]
        textproc/ispell-base   [ does not use the options framework ]
        textproc/hunspell   [ (wide-curses) ]
    devel/libgnomeui   [ does not use the options framework ]
      audio/libaudiofile   [ does not use the options framework ]
      devel/libbonoboui   [ does not use the options framework ]
        misc/gnome2-dirs   [ does not use the options framework ]
          misc/gnome-dirs   [ does not use the options framework ]
        devel/libgnome   [ does not use the options framework ]
          audio/esound   [ inet6 ]
          textproc/libxslt   [ does not use the options framework ]
      security/gnome-keyring   [ hal ]
    x11/gnome-panel   [ evolution ]
      devel/libwnck   [ does not use the options framework ]
        x11/startup-notification   [ does not use the options framework ]
      devel/libgweather   [ does not use the options framework ]
        net/libsoup24   [ does not use the options framework ]
          databases/sqlite3   [ does not use the options framework ]
          www/libproxy   [ does not use the options framework ]
      graphics/hicolor-icon-theme   [ does not use the options framework ]
      mail/evolution-data-server   [ inet6 ]
        databases/db4   [ does not use the options framework ]
        devel/nss   [ does not use the options framework ]
          devel/nspr   [ does not use the options framework ]
        time/libical   [ does not use the options framework ]
          time/zonetab   [ does not use the options framework ]
      security/policykit-gnome   [ does not use the options framework ]
      sysutils/gnome-menus   [ does not use the options framework ]
      textproc/rarian   [ does not use the options framework ]
        misc/getopt   [ does not use the options framework ]
        shells/bash   [ (static) ]
      x11/gnome-desktop   [ does not use the options framework ]
    lang/ocaml   [ does not use the options framework ]

I guess I can trim it down a little -- if I disable evolution from gnome-panel I save a lot of time (evolution takes forever to build). But the tree is still too large, imho.

Notably '-x11' prevents most of it but in the case of command line transcoding with vlc I've had to use '-esound -pulseaudio' as well ... and the list goes on for other packages.

I'd prefer it if pkgsrc only built the required dependencies as opposed to having default options (with maybe a PKG_DEFAULT_OPTIONS_ON=yes/no) but then it may not be as fool proof for others.

I guess it would be difficult to implement (to everyones satisfaction), but it would be great if one could set a variable which stipulates what kind of system one wants: Maximum features, or minimal dependencies.

This may not be the case with monotone-viz but I've found pkgsrc much less time consuming after tracking down the culprit defaults in my situation.

Looking at the tree above, I don't see that there are many options which would trim the dependency tree. But I don't know if there perhaps are undocumented flags (the script I used to generate the tree parses the output from "make show-depends" and "make show-options") which would trim it down further.

Something good has come out of this though. I've decided to look into which packages are causing the most amount of unnecessary dependencies (with regards to what I want to accomplish when installing the top package), and see if I can add options to them to disable dependencies, but still maintain the primary function of the top package.

--
Kind regards,
Jan Danielsson


Attachment: signature.asc
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index