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

Bug#884798: lintian could complain about pkg-config uses that fail to use $ac_tool_prefix



Hi Chris,

On Wed, Dec 20, 2017 at 10:45:04PM +0000, Chris Lamb wrote:
> > If yes, what would be a good check? Should it just check the toplevel
> > configure.ac and configure.in or any file found on any directory level?
> 
> This is my primary concern ??? warning about broken configure.{am,in} in
> code copies etc. that are not used would just be annoying.

Yeah, that's roughly what I thought when posing the question.

> It might be safe to simply check ./configure.{am,in} or perhaps a
> hardcoded list of subdirs such as src/configure.{am,in}. What do you
> think?

That'd catch the big fish and the big fish is what I'm after. I don't
think there is a silver bullet, but if this check results in 20 packages
fixing their checks, then the effort has certainly paid off on my side.

> > I haven't performed a whole archive-analysis yet, so I cannot tell
> > about the amount of fpos to be expected.
> 
> Would this be easy for you to do? Please go ahead if so and let us know.

Hmm. My scraping tooling mainly focuses on binary packages and doesn't
work on source packages at all. So the easiest way forward might be
using an existing unpack. So I looked into using sor.d.o. I came up with
the following script:

    #!/usr/bin/python
    import os
    from debian.debian_support import version_compare
    base = "/srv/sources.debian.org/sources/main"
    for d in os.listdir(base):
        subdir = os.path.join(base, d)
        for pkg in os.listdir(subdir):
            pkgdir = os.path.join(subdir, pkg)
            ver = None
            for v in os.listdir(pkgdir):
                if v.endswith(".done"):
                    v = v[:-5]
                    if ver is None or version_compare(v, ver) > 0 and os.path.isdir(os.path.join(pkgdir, v)):
                        ver = v
            if not ver:
                continue
            verdir = os.path.join(pkgdir, ver)
            for e in ("configure.ac", "configure.in", "src/configure.ac", "src/configure.in"):
                fn = os.path.join(verdir, e)
                if os.path.isfile(fn):
                    with open(fn) as f:
                        for line in f:
                            if "AC_PATH_PROG" in line and "pkg-config" in line:
                                print("%s_%s/%s:%s" % (pkg, ver, e, line.strip()))

The script tries hard to minimize the io operations incurred on sor.d.o.
Running it for some time yields the following output:

aide_0.16-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, "")
anjuta-extras_3.26.0-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config,no)
anyremote_6.6.1-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apache2_2.4.29-1/configure.in:AC_PATH_PROG(PKGCONFIG, pkg-config)
apertium_3.4.2~r68466-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-dan_0.5.0~r67099-1/configure.ac:AC_PATH_PROG([PKGCONFIG], [pkg-config], [false], [$PATH$PATH_SEPARATOR$with_pkg_config/bin])
apertium-hbs_0.5.0~r68212-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-hin_0.1.0~r59158-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-isl_0.1.0~r65494-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-kaz_0.1.0~r61338-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-nno_0.9.0~r69513-2/configure.ac:AC_PATH_PROG([PKGCONFIG], [pkg-config], [false], [$PATH$PATH_SEPARATOR$with_pkg_config/bin])
apertium-nob_0.9.0~r69513-1/configure.ac:AC_PATH_PROG([PKGCONFIG], [pkg-config], [false], [$PATH$PATH_SEPARATOR$with_pkg_config/bin])
apertium-spa_1.1.0~r79716-1/configure.ac:AC_PATH_PROG([PKGCONFIG], [pkg-config], [false], [$PATH$PATH_SEPARATOR$with_pkg_config/bin])
apertium-swe_0.7.0~r69513-1/configure.ac:AC_PATH_PROG([PKGCONFIG], [pkg-config], [false], [$PATH$PATH_SEPARATOR$with_pkg_config/bin])
apertium-tat_0.1.0~r60887-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-urd_0.1.0~r61311-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
appindicator3-sharp_12.10.0+git20151221-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-rus_0.1.0~r81184-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
arts_1.5.9-3+deb6u1/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
adesklets_0.6.1-4/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config)
akode_2.0.2-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
apertium-tur_0.2.0~r83161-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
balsa_2.5.3-4/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
bmon_1:4.0-4/configure.ac:AC_PATH_PROG([PKG_CONFIG], [pkg-config], [no])
brltty_5.5-4/configure.ac:AC_PATH_PROG([PKG_CONFIG], [pkg-config], [false])
bamf_0.5.3-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
bareftp_0.3.9-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
bibledit-bibletime_1.1.1-3/configure.ac:AC_PATH_PROG(PKG_CONFIG_PATH, pkg-config, no)
bibledit-gtk_4.9-1/configure.ac:AC_PATH_PROG(PKG_CONFIG_PATH, pkg-config, no)
bibledit-xiphos_1.1.1-2/configure.ac:AC_PATH_PROG(PKG_CONFIG_PATH, pkg-config, no)
blam_1.8.9-4/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
bless_0.6.0-5/configure.ac:AC_PATH_PROG(PKG_CONFIG,pkg-config, no)
bochs_2.6-5/configure.in:AC_PATH_PROG(PKGCONFIG, pkg-config, not_found)
bodr_10-1/configure.ac:# AC_PATH_PROG(PKG_CONFIG, pkg-config, "no")
booth_1.0-3/configure.ac:AC_PATH_PROGS(PKGCONFIG, pkg-config)
bibledit_5.0.331-1/configure.ac:AC_PATH_PROG(PKG_CONFIG_PATH, pkg-config, no)
claws-mail_3.16.0-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
caja_1.18.5-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
caja-actions_1.8.3-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
caja-extensions_1.18.1-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
chemtool_1.6.14-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
clanlib_1.0~svn3827-7/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
cluster-glue_1.0.12-7/configure.ac:AC_PATH_PROGS(PKGCONFIG, pkg-config)
cowbell_0.2.7.1-7/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
cvsgraph_1.7.0-4/configure.in:AC_PATH_PROG(ac_prog_pkg_config, pkg-config)
cluster-agents_1:1.0.3-4/configure.in:AC_PATH_PROGS(PKGCONFIG, pkg-config)
cssed_0.4.0-4/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
compiz-fusion-plugins-extra_0.8.4-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
compiz-fusion-plugins-extra_0.8.4-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
compiz-fusion-plugins-main_0.8.4-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
compiz-fusion-plugins-main_0.8.4-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
compiz-fusion-plugins-unsupported_0.8.4-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
compiz-fusion-plugins-unsupported_0.8.4-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
cinepaint_0.20-1-1.3/configure.in:AC_PATH_PROG(OPENEXR_CONFIG, pkg-config, no)
cinepaint_0.20-1-1.3/configure.in:AC_PATH_PROG(PNG_CONFIG, pkg-config, no)
cinepaint_0.20-1-1.3/configure.in:AC_PATH_PROG(LCMS_CONFIG, pkg-config, no)
cinepaint_0.20-1-1.3/configure.in:AC_PATH_PROG(PRINT_CONFIG, pkg-config, no)
caja-seahorse_1.18.3-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
directfb_1.7.7-6/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
dbus-sharp-glib_0.6.0-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
ddccontrol_0.4.2-11/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
dimbl_0.15-1/configure.ac:AC_PATH_PROG(pkgconfigpath, pkg-config, NONE)
directvnc_0.7.7-1/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config)
drivel_3.0.3-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
drapes_0.5.2-3.2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
dcgui_0.80-6/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config)
dctc_0.85.9-5/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config)
emacs24_24.5+1-11+deb9u1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
exonerate_2.4.0-2/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
emacs23_23.4+1-4/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
emacs22_22.2+2-5/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
evolution-sharp_0.17.1-2/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
freehdl_0.0.8-2.2/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config, :)
frog_0.13.7-1/configure.ac:AC_PATH_PROG(pkgconfigpath, pkg-config, NONE)
fsgateway_0.1.1-5/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
fsharp_4.0.0.4+dfsg2-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
ffprobe_0.svn92-1/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, pkg-config)
fluxconf_0.9.9-1/configure.in:AC_PATH_PROGS(PKGCONF,pkg-config)
fusionsound_1.0.0-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
ghostscript_9.22~dfsg-1/configure.ac:AC_PATH_PROG(BUILD_PKGCONFIG, pkg-config)
gcr_3.20.0-6/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gkeyfile-sharp_0.1-5/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-do_0.95.3-5/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-keyring_3.20.1-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-sharp2_2.24.2-4/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-subtitles_1.3-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-user-share_3.18.3-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnustep-base_1.25.0-2/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config, yes, no)
gpdftext_0.1.6-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gpointing-device-settings_1.5.1-6/configure.ac:AC_PATH_PROG([PKG_CONFIG], [pkg-config], [no])
gretl_2017d-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gshare_0.94-14/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gtk-sharp2_2.12.40-2/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gtk-sharp3_2.99.3-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gudev-sharp-1.0_0.1-4/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gvfs_1.34.1-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
g2ipmsg_0.9.6+dfsg-1.1/configure.in:AC_PATH_PROG(PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
gfax_0.7.7+ds-2/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-desktop-sharp2_2.26.0-8/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-photo-printer_0.7.0-1.2/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config, no)
gnome-rdp_0.3.0.9-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-schedule_2.1.1-4/configure.ac:AC_PATH_PROG( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
gnome-u2ps_0.0.4-4.2/configure.in:AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no])
gpe-expenses_0.1.9-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gpe-expenses_0.1.9-2/configure.ac:AC_PATH_PROG(PKG_CONFIG,pkg-config)
gtkglarea-sharp_0.0.17-6/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gupnp-vala_0.10.4-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gamix_1.99.p14.debian1-6/configure.in:AC_PATH_PROG(PKGC,pkg-config,no)
gfccore_2.3.1-7/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gfcui_2.3.1-8/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
ghc6_6.12.1-13/configure.ac:AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
giver_0.1.8-6/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
glame_2.0.1-5/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-swallow_1.2-4/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, , )
gsf-sharp_0.8-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
geda-gattrib_1:1.4.0-5/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
geda-gnetlist_1:1.4.0-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
geda-gschem_1:1.4.0-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
geda-gsymcheck_1:1.4.0-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
geda-utils_1:1.4.0-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
geda-utils_1:1.4.0-3/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gnome-build_0.2.4-1/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config,no)
gpsim-lcd-graphic_0.3.0-1.1/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config, no, ${PATH})
gpsim-lcd_0.2.9-1/configure.in:AC_PATH_PROG(PKGCONFIG, pkg-config, no, ${PATH})
gsynaptics_0.9.14-6/configure.ac:AC_PATH_PROG([PKG_CONFIG], [pkg-config], [no])
gtksourceview-sharp2_0.12-1/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gecko-sharp2_0.11-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gq_1.0.0-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config,,$PATH)
gq_1.0.0-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config,,$PATH)
gq_1.0.0-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config,,$PATH)
gs-esp_8.15.3.dfsg.1-1etch1/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config)
gs-esp_8.15.3.dfsg.1-1etch1/src/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config)
gtk-sharp_1:1.0.10-5/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
gudev-sharp-3.0_3.0.0-1/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
hfst_3.13.0~r3461-2/configure.ac:[AC_PATH_PROG([PKG_CONFIG], [pkg-config])
hfst-ospell_0.4.5~r343-2.1/configure.ac:AC_PATH_PROG([PKGCONFIG], [pkg-config], [no])
hocr_0.10.18-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
hyena_0.5-4/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
heartbeat-2_2.0.7-2/configure.in:AC_PATH_PROGS(PKGCONFIG, pkg-config)
imhangul_2.1.1-2/configure.in:dnl AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
imhangul3_3.1.1-2/configure.in:dnl AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
inkscape_0.92.2-2/configure.ac:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
isc-kea_1.1.0-1/configure.ac:AC_PATH_PROG([PKG_CONFIG], [pkg-config])
isync_1.2.1-2/configure.ac:AC_PATH_PROG(PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
inti-gl_0.9.0-3/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
inti-sourceview_0.6.0-4/configure.in:AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
...

>From these, I'd estimate ~500 flagged packages. None of the matches look
like false positives. I suggest using the following pattern:

    AC_PATH_PROG\s*\([^,]+,\s*\[?pkg-config\]?\s*,

In each case, switching to AC_PATH_TOOL looks like a straight forward
fix, but often enough using PKG_PROG_PKG_CONFIG would be even better.

Helmut


Reply to: