[tlbuild] build failure on openbsd

Peter Breitenlohner peb at mppmu.mpg.de
Thu Jun 7 16:32:25 CEST 2012

On Thu, 7 Jun 2012, Edd Barrett wrote:

> I thought I would give the current source tree a test build. I hit the
> following:
> % TL_MAKE=gmake ./Build 2>&1 | tee LOG
> ...
> g++ -ffunction-sections -fdata-sections  -DU_ENABLE_DYLOAD=0 -DU_HAVE_TIMEZONE=0 -DICU_USE_THREADS=0  -I/home/edd/source/texlive/Build/source/Work/libs/icu/../../../libs/icu/icu-49.1/common   "-DDEFAULT_ICU_PLUGINS=\"/usr/local/lib/icu\" " -DU_ATTRIBUTE_DEPRECATED= -DU_COMMON_IMPLEMENTATION  -O2  -c   -o putil.ao /home/edd/source/texlive/Build/source/Work/libs/icu/../../../libs/icu/icu-49.1/common/putil.cpp
> /home/edd/source/texlive/Build/source/Work/libs/icu/../../../libs/icu/icu-49.1/common/putil.cpp: In function 'int32_t uprv_timezone_49()':
> /home/edd/source/texlive/Build/source/Work/libs/icu/../../../libs/icu/icu-49.1/common/putil.cpp:637: error: expected primary-expression before ';' token
> gmake[6]: *** [putil.ao] Error 1
> gmake[6]: Leaving directory `/home/edd/source/texlive/Build/source/Work/libs/icu/icu-build/common'
> gmake[5]: *** [all-recursive] Error 2
> Is U_TIMEZONE supposed to be defined on OpenBSD?

Hi Edd,

as already discussed on this list, this is a deficiency (bug) of the ICU-49
build system.  Configure correctly determines that OpenBSD (as most BSDish
systems) has no Posix compatible timezone, _timezone, or __timezone
variable.  This correct result is subsequently discarded and then re-derived
based on predefined preprocessor macros.  Somehow OpenBSD is not recognized
as BSDish and thus the code in putilimp.h wrongly assumes the existence of a
Posix compatible timezone variable (what a 'progress' from ICU-4.8 to
ICU-49, compare http://bugs.icu-project.org/trac/ticket/9365).

Luckily you can override this by adding -DU_PLATFORM=U_PF_BSD to CPPFLAGS,
e.g., via

Peter Breitenlohner <peb at mppmu.mpg.de>

More information about the tlbuild mailing list