The configure script of fvwm 2.5.16 attempts to detect the versions
of various packages installed and to verify that they are of an
acceptably recent version.  The code misparses version numbers that
have more than three components.

For example, on my machine the problem arises with Xft:

    $ ./configure
    [ ... several lines omitted ... ]
    checking for Xft - version >= 2.0.0... ./configure: line 10146: test: 2.2: 
integer expression expected
    ./configure: line 10149: test: 2.2: integer expression expected
    yes
    [ ... several lines omitted ... ]

Here's how it happens:  The version number is detected by running
xft-config --version, then parsing the output with a sed script:

    $ sed -n '1405,1406p' fvwm-2.5.16/acinclude.m4 
      xft_config_major_version=`$XFT_CONFIG $xft_config_args --version | \
             sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`

(With similar code on subsequent lines, and elsewhere for other
packages.)  The sed script replaces a three-part version number such
as 2.0.1 with just its first component.  However, on my system we have

    $ xft-config --version
    2.1.2.2

The sed replaces the leading "2.1.2" with "2", resulting in "2.2",
which confuses the subsequent comparison with the minimum required
major version number.

Perhaps something like
    xft-config --version | cut -d. -f1
(and the like) would be more robust; the attached patch to acinclude.m4
implements this notion, both for the xft autodetection and in the
similar code for gtk, imlib, freetype2, and fontconfig.

-- 
Steven Taschuk              [EMAIL PROTECTED]
"This could be construed as a feature."  -- patch(1)
--- fvwm-2.5.16.orig/acinclude.m4       2006-01-20 02:12:50.000000000 -0700
+++ fvwm-2.5.16/acinclude.m4    2006-02-22 15:07:58.000000000 -0700
@@ -379,11 +379,11 @@
     GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
     GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
     gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+           cut -d. -f1'`
     gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+           cut -d. -f2'`
     gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+           cut -d. -f3'`
     if test "x$enable_gtktest" = "xyes" ; then
       ac_save_CFLAGS="$CFLAGS"
       ac_save_LIBS="$LIBS"
@@ -572,10 +572,8 @@
     IMLIB_CFLAGS=`$IMLIBCONF $imlibconf_args --cflags`
     IMLIB_LIBS=`$IMLIBCONF $imlibconf_args --libs`
 
-    imlib_major_version=`$IMLIBCONF $imlib_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    imlib_minor_version=`$IMLIBCONF $imlib_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    imlib_major_version=`$IMLIBCONF $imlib_args --version | cut -d. -f1'`
+    imlib_minor_version=`$IMLIBCONF $imlib_args --version | cut -d. -f2'`
     if test "x$enable_imlibtest" = "xyes" ; then
       ac_save_CFLAGS="$CFLAGS"
       ac_save_LIBS="$LIBS"
@@ -711,10 +709,8 @@
     GDK_IMLIB_CFLAGS=`$IMLIBCONF $imlibconf_args --cflags-gdk`
     GDK_IMLIB_LIBS=`$IMLIBCONF $imlibconf_args --libs-gdk`
 
-    imlib_major_version=`$IMLIBCONF $imlib_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    imlib_minor_version=`$IMLIBCONF $imlib_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    imlib_major_version=`$IMLIBCONF $imlib_args --version | cut -d. -f1'`
+    imlib_minor_version=`$IMLIBCONF $imlib_args --version | cut -d. -f2'`
     if test "x$enable_imlibtest" = "xyes" ; then
       ac_save_CFLAGS="$CFLAGS"
       ac_save_LIBS="$LIBS"
@@ -1095,17 +1091,14 @@
   FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags`
   FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs`
   ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+         cut -d. -f1'`
   ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+         cut -d. -f2'`
   ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-  ft_min_major_version=`echo $min_ft_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-  ft_min_minor_version=`echo $min_ft_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-  ft_min_micro_version=`echo $min_ft_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+         cut -d. -f3'`
+  ft_min_major_version=`echo $min_ft_version | cut -d. -f1'`
+  ft_min_minor_version=`echo $min_ft_version | cut -d. -f2'`
+  ft_min_micro_version=`echo $min_ft_version | cut -d. -f3'`
   if test "x$enable_fttest" = "xyes" ; then
     ft_config_is_lt=no
     if test $ft_config_major_version -lt $ft_min_major_version ; then
@@ -1247,17 +1240,14 @@
   FC_CFLAGS=`$FC_CONFIG $fc_config_args --cflags`
   FC_LIBS=`$FC_CONFIG $fc_config_args --libs`
   fc_config_major_version=`$FC_CONFIG $fc_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+         cut -d. -f1'`
   fc_config_minor_version=`$FC_CONFIG $fc_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+         cut -d. -f2'`
   fc_config_micro_version=`$FC_CONFIG $fc_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-  fc_min_major_version=`echo $min_fc_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-  fc_min_minor_version=`echo $min_fc_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-  fc_min_micro_version=`echo $min_fc_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+         cut -d. -f3'`
+  fc_min_major_version=`echo $min_fc_version | cut -d. -f1'`
+  fc_min_minor_version=`echo $min_fc_version | cut -d. -f2'`
+  fc_min_micro_version=`echo $min_fc_version | cut -d. -f3'`
   fc_config_is_lt=no
   if test $fc_config_major_version -lt $fc_min_major_version ; then
     fc_config_is_lt=yes
@@ -1403,17 +1393,14 @@
   XFT_CFLAGS=`$XFT_CONFIG $xft_config_args --cflags`
   XFT_LIBS=`$XFT_CONFIG $xft_config_args --libs`
   xft_config_major_version=`$XFT_CONFIG $xft_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+         cut -d. -f1'`
   xft_config_minor_version=`$XFT_CONFIG $xft_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+         cut -d. -f2'`
   xft_config_micro_version=`$XFT_CONFIG $xft_config_args --version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-  xft_min_major_version=`echo $min_xft_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-  xft_min_minor_version=`echo $min_xft_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-  xft_min_micro_version=`echo $min_xft_version | \
-         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+         cut -d. -f3'`
+  xft_min_major_version=`echo $min_xft_version | cut -d. -f1'`
+  xft_min_minor_version=`echo $min_xft_version | cut -d. -f2'`
+  xft_min_micro_version=`echo $min_xft_version | cut -d. -f3'`
   xft_config_is_lt=no
   if test $xft_config_major_version -lt $xft_min_major_version ; then
     xft_config_is_lt=yes

Reply via email to