1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
#!/usr/local/bin/tcsh -f
#################################################################
# #
# Copyright (c) 2007-2023 Fidelity National Information #
# Services, Inc. and/or its subsidiaries. All rights reserved. #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
#
###########################################################################################
#
# check_utf8_support.csh - Checks if icu library and utf8 locale is available
# setenv is_utf8_support to TRUE/FALSE
# Returns :
# TRUE - if both icu library and utf8 locale is installed
# FALSE - if either of them is not available
###########################################################################################
# depending on the list of locales configured, locale -a might be considered a binary output.
# grep needs -a option to process the output as text but -a is not supported on the non-linux servers we have.
if ("Linux" == "$HOSTOS") then
set binaryopt = "-a"
else
set binaryopt = ""
endif
set found_icu = 0
set utflocale = `locale -a | grep $binaryopt -iE '\.utf.?8$' | head -n1`
# icu-config is deprecated. So try "pkg-config icu-io" first, followed by "icu-config" and "pkg-config icu"
set cmd = "echo 0"
if ( -X lslpp ) then
@ hasadt = { lslpp -Lcq ICU4C.adt } >& /dev/null
if ($hasadt) then
set uvernum="/usr/icu4c/include/unicode/uvernum.h"
set cmd = 'awk '"'"'$2 == "U_ICU_VERSION_SHORT" { ver=$3 ; gsub(/"/,"",ver) ; print ver }'"' $uvernum"
unset uvernum
endif
unset hasadt
else if ( (-X pkg-config) && ( { pkg-config --exists icu-io } ) ) then
set cmd = "pkg-config --modversion icu-io"
else if (-X icu-config) then
set cmd = "icu-config --version"
else if ( (-X pkg-config) && ( { pkg-config --exists icu } ) ) then
set cmd = "pkg-config --modversion icu"
endif
set icuver="`$cmd`"
set found_icu = `awk -v ver="$icuver" 'BEGIN {if(ver>=3.6) {print 1} else {print 0}}'`
unset icuver
if (0 == $found_icu) then
# If ICU is not found using the method above, just try harder by looking for libicuio*.* files in known locations
# This could not work on new platforms or newly installed supported platforms.
# It should be manually tested using this command :
# ssh <some host> ls -l {/usr/local,/usr,}/lib{64,,32}/libicuio.{a,so,sl}
foreach libdir ( {/usr/local,/usr,}/lib{64,/x86_64-linux-gnu,,32,/i386-linux-gnu}/libicuio.{a,so,sl} )
# 36 is the least version GT.M supports for ICU. We have to get the numeric value from the ICU library.
# ICU ships libicuio.so linked to the appropriate versioned library - so using filetype -L works well
# The below is the format of the libraries on various platforms:
# AIX : libicu<alphanum><majorver><minorver>.<ext> (e.g libicuio42.1.a)
# Others : libicu<alphanum>.<ext>.<majorver>.<minorver> (e.g libicuio.so.42.1)
if ( ! -l $libdir ) continue
set icu_versioned_lib = `filetest -L $libdir`
set verinfo = ${icu_versioned_lib:s/libicuio//}
set parts = ( ${verinfo:as/./ /} )
if ($HOSTOS == "AIX") then
# for the above example parts = (42 1 a)
set icu_ver = $parts[1]
else
# for the above example parts = (so 42 1)
set icu_ver = $parts[2]
endif
if ($icu_ver >= "36") then
set found_icu = 1
break
endif
end
endif
# The calling gtm installation script should sould source this script in order to avoid duplication of 'setenv LD_LIBRARY_PATH'
# The gtm-internal test system runs it within `...` in a few places and sets the return value to an env variable
# To aid both the cases above, do a 'setenv is_utf8_support' as well as 'echo' of TRUE/FALSE
if ($found_icu && $utflocale != "") then
setenv is_utf8_support TRUE
echo "TRUE" # the system has utf8 support
else
setenv is_utf8_support FALSE
echo "FALSE" # the system doesn't have utf8 support
endif
|