[csw-devel] SF.net SVN: gar:[14667] csw/mgar/pkg/graphviz/trunk/Makefile

Maciej Bliziński maciej at opencsw.org
Mon May 30 17:52:56 CEST 2011


Hi John,

Here's a review of the change you submitted to the code repository.
There are some overrides that I suspect might be actual problems with
the packages.  There could be overrides that you put in because you
have verified that checkpkg returned false positives.  If this is the
case, could you point these out?  This way, we could improve checkpkg
and reduce the rate of false positives.

More comments below.

2011/5/30  <ellson at users.sourceforge.net>:
> Revision: 14667
>          http://gar.svn.sourceforge.net/gar/?rev=14667&view=rev
> Author:   ellson
> Date:     2011-05-30 14:54:34 +0000 (Mon, 30 May 2011)
>
> Log Message:
> -----------
> graphviz: why aren't transitive dependencies handled automatically?
>
> Modified Paths:
> --------------
>    csw/mgar/pkg/graphviz/trunk/Makefile
>
> Modified: csw/mgar/pkg/graphviz/trunk/Makefile
> ===================================================================
> --- csw/mgar/pkg/graphviz/trunk/Makefile        2011-05-30 11:23:50 UTC (rev 14666)
> +++ csw/mgar/pkg/graphviz/trunk/Makefile        2011-05-30 14:54:34 UTC (rev 14667)
> @@ -62,24 +62,28 @@
>  BUILD_DEP_PKGS =
>
>  RUNTIME_DEP_PKGS_CSWgraphviz = CSWexpat CSWpango CSWlibcairo CSWgts CSWlibxrender \
> -       CSWgs CSWfconfig CSWftype2 CSWggettextrt CSWglib2 CSWgtk2 CSWiconv \
> -       CSWlibatk CSWliblasi CSWpng CSWzlib CSWxpm CSWlibrsvg
> +       CSWgs CSWfconfig CSWftype2 CSWglib2 CSWgtk2 CSWiconv \
> +       CSWlibatk CSWliblasi CSWpng CSWzlib CSWxpm CSWlibrsvg \
> +       CSWgcc4corert CSWgcc4g++rt CSWlibltdl7
>  RUNTIME_DEP_PKGS_CSWgraphvizdevel = CSWgraphviz
>  RUNTIME_DEP_PKGS_CSWgraphvizdoc =
>  RUNTIME_DEP_PKGS_CSWgraphvizgraphs =
> -RUNTIME_DEP_PKGS_CSWgraphvizgd = CSWgd CSWjpeg CSWgraphviz
> -RUNTIME_DEP_PKGS_CSWgraphvizdevil = CSWdevil
> -RUNTIME_DEP_PKGS_CSWgraphvizsharp = CSWmono CSWexpat CSWgraphviz CSWzlib
> -RUNTIME_DEP_PKGS_CSWgraphvizguile = CSWguile
> -RUNTIME_DEP_PKGS_CSWgraphvizjava = CSWjava
> -RUNTIME_DEP_PKGS_CSWgraphvizlua = CSWlua
> -RUNTIME_DEP_PKGS_CSWgraphvizocaml = CSWocaml
> -RUNTIME_DEP_PKGS_CSWgraphvizperl = CSWperl
> -RUNTIME_DEP_PKGS_CSWgraphvizphp = CSWphp5
> -RUNTIME_DEP_PKGS_CSWgraphvizpython = CSWpython CSWexpat CSWgraphviz CSWzlib
> -RUNTIME_DEP_PKGS_CSWgraphvizr = CSWr
> -RUNTIME_DEP_PKGS_CSWgraphvizruby = CSWruby
> -RUNTIME_DEP_PKGS_CSWgraphviztcl = CSWtcl CSWtk CSWgraphviz
> +RUNTIME_DEP_PKGS_CSWgraphvizgd = CSWgd CSWjpeg CSWglib2 CSWxpm CSWftype2 CSWiconv CSWgts \
> +       CSWpango CSWlibintl8 CSWpng CSWfconfig CSWlibcairo CSWexpat CSWzlib \
> +       CSWgcc4corert CSWgcc4g++rt CSWlibltdl7 CSWgraphviz

At OpenCSW, we use += to append to variables:

RUNTIME_DEP_PKGS_CSWgraphvizgd = CSWgd (...)
RUNTIME_DEP_PKGS_CSWgraphvizgd += CSWpango CSWlibintl8 (...)

> +CHECKPKG_OVERRIDES_CSWgraphvizperl += file-with-bad-content|/usr/local|root/opt/csw/share/graphviz/demo/modgraph.pl

This is probably OK to override, especially since it's a demo. But if
you notice /usr/local inside binaries, it's worth investigating
(hardcoded paths → potential bugs).

> +CHECKPKG_OVERRIDES_CSWgraphvizperl += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/graphviz/perl/libgv_perl.so

Are you sure this is safe to override?  Are these loaded via dlopen so
RPATH doesn't matter?

> +CHECKPKG_OVERRIDES_CSWgraphvizperl += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/perl/libgv_perl.so
> +CHECKPKG_OVERRIDES_CSWgraphvizperl += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/graphviz/perl/libgv_perl.so
> +CHECKPKG_OVERRIDES_CSWgraphvizsharp += surplus-dependency|CSWmono

If you have an idea how checkpkg can detect a dependency on CSWmono,
we could make this one go away.

> +CHECKPKG_OVERRIDES_CSWgraphvizsharp += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/sharp/libgv_sharp.so
> +CHECKPKG_OVERRIDES_CSWgraphvizsharp += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/graphviz/sharp/libgv_sharp.so
> +CHECKPKG_OVERRIDES_CSWgraphvizsharp += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/graphviz/sharp/libgv_sharp.so
> +CHECKPKG_OVERRIDES_CSWgraphviz2 += surplus-dependency|CSWgraphviz
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWglib2

Why this override, are you sure that overriding this is the right thing to do?

> +CHECKPKG_OVERRIDES_CSWgraphvizgd += surplus-dependency|CSWgd

Is this dependency actually needed?

> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWexpat
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWxpm
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWzlib
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWftype2

checkpkg likely gave explenations why these dependencies are required.
 Can you look at these?  It might turn out that not having them is a
bug.

> +CHECKPKG_OVERRIDES_CSWgraphvizgd += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_gd.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWlibltdl7
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWiconv
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWgts
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWpango
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWlibintl8
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWpng
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWfconfig
> +CHECKPKG_OVERRIDES_CSWgraphvizgd += missing-dependency|CSWlibcairo
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWlibcairo

Are you sure these dependencies are not needed?

> +CHECKPKG_OVERRIDES_CSWgraphviztcl += surplus-dependency|CSWtcl
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWfconfig
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWgcc3corert|or|CSWgcc4corert
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWpango
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWftype2
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWgts
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += file-with-bad-content|/usr/local|root/opt/csw/share/man/man3/tcldot.3tcl
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += file-with-bad-content|/export/medusa|root/opt/csw/lib/graphviz/tcl/libtcldot.so.0.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += file-with-bad-content|/export/medusa|root/opt/csw/lib/graphviz/tcl/libtclplan.so.0.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += file-with-bad-content|/export/medusa|root/opt/csw/lib/graphviz/tcl/libtcldot_builtin.so.0.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += file-with-bad-content|/export/medusa|root/opt/csw/lib/graphviz/tcl/libtkspline.so.0.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += file-with-bad-content|/export/medusa|root/opt/csw/lib/graphviz/tcl/libgv_tcl.so
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/graphviz/tcl/libgv_tcl.so
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/tcl/libtcldot.so.0.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/tcl/libgv_tcl.so
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/graphviz/tcl/libgv_tcl.so
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWlibltdl7
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWexpat
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWgcc3g++rt|or|CSWgcc4g++rt
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWlibintl8
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWglib2
> +CHECKPKG_OVERRIDES_CSWgraphviztcl += missing-dependency|CSWzlib
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_lasi.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_pango.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/libgraph.so.5.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/libcgraph.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += file-with-bad-content|/usr/local|root/opt/csw/bin/gvpr_static
> +CHECKPKG_OVERRIDES_CSWgraphviz += file-with-bad-content|/usr/local|root/opt/csw/lib/libgvpr.so.2.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += non-uniform-lib-versions-in-package|sonames=libcdt.so.5,libcgraph.so.6,libgraph.so.5,libgvc.so.6,libgvpr.so.2,libpathplan.so.4,libxdot.so.4

Since libgvc.so.6 supersedes libgvc.so.5, you need to take care to
include the libgvc.so.5 file as well.  I would suggest splitting the
shared libraries, to help with shared libraries in the future.
libgvc.so.5 could be packaged as CSWlibgvc5 and libgvc.so.6 as
CSWlibgvc6.

>From looking at the package database, libgvc.so.5 is required for
imagemagick to work, so you need to take care not to break it.

I would suggest creating the following dependency chain:

CSWimagemagick → CSWgraphviz → CSWlibgvc5

> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_neato_layout.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/libgvc.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/graphviz/libgvplugin_lasi.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/graphviz/libgvplugin_lasi.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libcgraph.so.5|is|needed|by|opt/csw/lib/libgvpr.so.2.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_core.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_gs.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_rsvg.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_dot_layout.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphviz += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/libgvplugin_gdk_pixbuf.so.6.0.0
> +CHECKPKG_OVERRIDES_CSWgraphvizpython += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/graphviz/python/libgv_python.so
> +CHECKPKG_OVERRIDES_CSWgraphvizpython += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/graphviz/python/libgv_python.so
> +CHECKPKG_OVERRIDES_CSWgraphvizpython += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/python/libgv_python.so
> +CHECKPKG_OVERRIDES_CSWgraphvizgraphs += file-with-bad-content|/usr/share|root/opt/csw/share/graphviz/graphs/directed/pmpipe.gv
> +CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content|/usr/share|root/opt/csw/share/graphviz/doc/html/FAQ.html
> +CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content|/usr/local|root/opt/csw/share/graphviz/doc/html/FAQ.html
> +CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content|/usr/local|root/opt/csw/share/graphviz/doc/ChangeLog
> +CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content|/usr/local|root/opt/csw/share/graphviz/doc/html/winbuild.html
> +CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content|/usr/local|root/opt/csw/share/graphviz/doc/html/build.html
> +CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content|/usr/share|root/opt/csw/share/graphviz/doc/html/info/command.html

Since it's a doc package, you can substitue all the specific overrides
with one general override:

CHECKPKG_OVERRIDES_CSWgraphvizdoc += file-with-bad-content

It will apply to all the instances of the file-with-bad-content error
for the CSWgraphvizdoc package.

> +CHECKPKG_OVERRIDES_CSWgraphvizguile += soname-not-found|libcdt.so.4|is|needed|by|opt/csw/lib/graphviz/guile/libgv_guile.so
> +CHECKPKG_OVERRIDES_CSWgraphvizguile += soname-not-found|libgraph.so.4|is|needed|by|opt/csw/lib/graphviz/guile/libgv_guile.so
> +CHECKPKG_OVERRIDES_CSWgraphvizguile += soname-not-found|libgvc.so.5|is|needed|by|opt/csw/lib/graphviz/guile/libgv_guile.so

These are essentially repetitions of the previous errors.

Generally, I would suggest scrolling up (checkpkg output is probably
quite long) and reading explanations that checkpkg gives. For
instance, if you see soname-not-found, checkpkg will explain why is it
not found, what is the RPATH, and where are the files that could be
found.  For other errors, checkpkg tries to give additional details to
help figure out what is the exact problem that checkpkg reports.

If you have any questions, please ask!

Thanks,
Maciej


More information about the devel mailing list