Closed Bug 1329252 Opened 7 years ago Closed 7 years ago

buglett in icu.m4 crashes build of 51.0b11

Categories

(Firefox Build System :: General, defect)

45 Branch
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 1329272

People

(Reporter: balducci, Unassigned)

Details

User Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0
Build ID: Gecko/20100101

Steps to reproduce:

build firefox-51.0b11 from source with configure/.mozconfig


Actual results:

configure step fails with:

   [...]
   js/src> Refreshing .../firefox-51.0b11/js/src/old-configure with .../autoconf
   [...]
   sed: character class syntax is [[:space:]], not [:space:]

Things get fixed (for me) by the following patch:

diff -c build/autoconf/icu.m4.FIX_SPACE_CLASS build/autoconf/icu.m4
*** build/autoconf/icu.m4.FIX_SPACE_CLASS	Fri Jan  6 18:10:23 2017
--- build/autoconf/icu.m4	Fri Jan  6 18:10:23 2017
***************
*** 69,75 ****
          fi
      fi
  
!     version=`sed -n 's/^[[:space:]]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p' "$icudir/common/unicode/uvernum.h"`
      if test x"$version" = x; then
         AC_MSG_ERROR([cannot determine icu version number from uvernum.h header file $lineno])
      fi
--- 69,75 ----
          fi
      fi
  
!     version=`sed -n 's/^[[[:space:]]]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p' "$icudir/common/unicode/uvernum.h"`
      if test x"$version" = x; then
         AC_MSG_ERROR([cannot determine icu version number from uvernum.h header file $lineno])
      fi


(the above patch fixes js/src/old-configure created on the fly; the main old-configure is already there and I patch it directly, but the origin of the problem is icu.m4)


I'm using:

=> sed (GNU sed) 4.3
   Copyright (C) 2016 Free Software Foundation, Inc.
   License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
   This is free software: you are free to change and redistribute it.
   There is NO WARRANTY, to the extent permitted by law.

   Written by Jay Fenlason, Tom Lord, Ken Pizzini,
   and Paolo Bonzini.
   GNU sed home page: <http://www.gnu.org/software/sed/>.
   General help using GNU software: <http://www.gnu.org/gethelp/>.
   E-mail bug reports to: <bug-sed@gnu.org>.

=> m4 (GNU M4) 1.4.18
   Copyright (C) 2016 Free Software Foundation, Inc.
   License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
   This is free software: you are free to change and redistribute it.
   There is NO WARRANTY, to the extent permitted by law.

   Written by Rene' Seindal.
Component: Untriaged → Build Config
Product: Firefox → Core
I realize that I might haven't been clear enough in my original report, so
I'm explaining things in a bit more detail.

Both old-configure.in and js/src/old-configure.in use MOZ_CONFIG_ICU,
which is defined in icu.m4.

In the MOZ_CONFIG_ICU definition in icu.m4 there is:

[...]
version=`sed -n 's/^[[:space:]]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p' "$icudir/common/unicode/uvernum.h"`
[...]

For some reason (likely related to the escaping of square brackets in
the MOZ_CONFIG_ICU definition), running autoconf (2.13) on the
two old-configure.in files produces old-configure shell scripts
containing:

[...]
version=`sed -n 's/^[:space:]*#[[:space:]]*define[[:space:]][[:space:]]*U_ICU_VERSION_MAJOR_NUM[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]]*$/\1/p' "$icudir/common/unicode/uvernum.h"`
[...]


Note: the first occurrence of :space: is [:space:] (with a single pair of
[]), where it should be [[:space:]] (with two pairs of []).

This causes the sed command to fail (with the error message quoted in
my original report), driving to failure the whole configure step.

NOTE: I have verified that sed <=4.2.2 won't complain and the
configure step will be able to complete successfully. Only latest
sed-4.3 exposes the malformed character class syntax.

Patching icu.m4 as per my original report fixes the syntax of the
first occurrence of :space: in the output of MOZ_CONFIG_ICU (I'm not
fluent in m4, so there might be a better way to fix things in icu.m4)
This looks like a dupe of bug 1329272. Normally I dupe to the earlier bug (this one). But the other bug has a patch, which means it is further along than this one.
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → DUPLICATE
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.