# Contributor: Sergey Lukin # Maintainer: Natanael Copa global pkgname := 'icu' global pkgver := '59.1' # convert x.y.z to x_y_z global _ver := $(pkgver//./_) global pkgrel := '1' global pkgdesc := '"International Components for Unicode library'" global url := '"http://www.icu-project.org/'" global arch := '"all'" global license := '"custom:icu'" global subpackages := ""$pkgname-dev $pkgname-doc $pkgname-libs"" global depends := '' global checkdepends := '"diffutils'" global makedepends := '' global source := ""http://download.icu-project.org/files/icu4c/$(pkgver)/$(pkgname)4c-$_ver-src.tgz icu-timezone.patch "" # secfixes: # 57.1-r1: # - CVE-2016-6293 # 58.1-r1: # - CVE-2016-7415 # 58.2-r2: # - CVE-2017-7867 # - CVE-2017-7868 global builddir := ""$srcdir"/icu/source" proc prepare { cd $builddir default_prepare update_config_sub # strtod_l() is not supported by musl; also xlocale.h is missing # It is not possible to disable its use via configure switches or env vars # so monkey patching is needed. Idea was stollen from openembedded # https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-support/icu/icu.inc#L30 sed -i -e 's,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,' configure.ac sed -i -e 's,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,' configure var x = '' # https://bugs.icu-project.org/trac/ticket/6102 for x in [ARFLAGS CFLAGS CPPFLAGS CXXFLAGS FFLAGS LDFLAGS] { sed -i -e "/^$(x) =.*/s:@$(x)@::" "config/Makefile.inc.in" } } proc build { cd $builddir ./configure \ --build=$CBUILD \ --host=$CHOST \ --prefix=/usr \ --sysconfdir=/etc \ --with-data-packaging=library \ --disable-samples \ --mandir=/usr/share/man make } proc check { # armhf tests fail with gensprep: Bus error test $CARCH != armhf || return 0 cd $builddir make check } proc package { cd $builddir make -j1 DESTDIR="$pkgdir" install chmod +x "$pkgdir"/usr/bin/icu-config install -Dm644 "$srcdir"/icu/license.html \ "$pkgdir"/usr/share/licenses/icu/license.html } proc libs { default_libs global replaces := '"icu'" } global sha512sums := '"9348aa68d72a74cd1f26588c30c80eee1b48800a26930d7eb0749390fd65f7930ee8843058b6a6dd5f265e79054fef661e807ded16a1ad691cbc5ebc5ab944c4 icu4c-59_1-src.tgz 40489c36e28e160f08e045acab6c19cdb712ad3b7f87f67099deac7d579aaf13d8841cd3278a6bb0e998b5c34a378348a13fcc8bb14c9c4eb4f6adbd10d66825 icu-timezone.patch'" (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(icu)} spids:[6])] spids: [6] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(59.1)} spids:[9])] spids: [9] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_ver) op: Equal rhs: { (BracedVarSub token: suffix_op: (PatSub pat: {(.)} replace: {(_)} do_all: True do_prefix: False do_suffix: False ) spids: [17 24] ) } spids: [16] ) ] spids: [16] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(1)} spids:[27])] spids: [27] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("International Components for Unicode library"))} spids: [30] ) ] spids: [30] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ ("http://www.icu-project.org/"))} spids: [35] ) ] spids: [35] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:arch) op:Equal rhs:{(DQ (all))} spids:[40])] spids: [40] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ ("custom:icu"))} spids:[45])] spids: [45] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") ("-dev ") ($ VSub_Name "$pkgname") ("-doc ") ($ VSub_Name "$pkgname") (-libs) ) } spids: [50] ) ] spids: [50] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(SQ )} spids:[60])] spids: [60] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:checkdepends) op: Equal rhs: {(DQ (diffutils))} spids: [62] ) ] spids: [62] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:makedepends) op:Equal rhs:{(SQ )} spids:[67])] spids: [67] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:source) op: Equal rhs: { (DQ ("http://download.icu-project.org/files/icu4c/") (${ VSub_Name pkgver) (/) (${ VSub_Name pkgname) (4c-) ($ VSub_Name "$_ver") ("-src.tgz\n") ("\ticu-timezone.patch\n") ("\t") ) } spids: [69] ) ] spids: [69] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:builddir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir")) (/icu/source)} spids: [111] ) ] spids: [111] ) (FuncDef name: prepare body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(default_prepare)}) (C {(update_config_sub)}) (C {(sed)} {(-i)} {(-e)} {(SQ <"s,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,">)} {(configure.ac)}) (C {(sed)} {(-i)} {(-e)} {(SQ <"s,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,">)} {(configure)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[184])] spids: [182] ) (ForEach iter_name: x iter_words: [{(ARFLAGS)} {(CFLAGS)} {(CPPFLAGS)} {(CXXFLAGS)} {(FFLAGS)} {(LDFLAGS)}] do_arg_iter: False body: (DoGroup children: [ (C {(sed)} {(-i)} {(-e)} {(DQ ("/^") (${ VSub_Name x) (" =.*/s:@") (${ VSub_Name x) ("@::"))} {(DQ (config/Makefile.inc.in))} ) ] spids: [210 236] ) spids: [196 208] ) ] spids: [122] ) spids: [118 121] ) (FuncDef name: build body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(./configure)} {(--build) (Lit_Other "=") ($ VSub_Name "$CBUILD")} {(--host) (Lit_Other "=") ($ VSub_Name "$CHOST")} {(--prefix) (Lit_Other "=") (/usr)} {(--sysconfdir) (Lit_Other "=") (/etc)} {(--with-data-packaging) (Lit_Other "=") (library)} {(--disable-samples)} {(--mandir) (Lit_Other "=") (/usr/share/man)} ) (C {(make)}) ] spids: [245] ) spids: [241 244] ) (FuncDef name: check body: (BraceGroup children: [ (AndOr children: [ (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$CARCH"))} {(KW_Bang "!") (Lit_Other "=")} {(armhf)} {(Lit_Other "]")} ) (ControlFlow token: arg_word:{(0)}) ] op_id: Op_DPipe ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(make)} {(check)}) ] spids: [307] ) spids: [303 306] ) (FuncDef name: package body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(make)} {(-j1)} {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$pkgdir"))} {(install)}) (C {(chmod)} {(Lit_Other "+") (x)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/bin/icu-config)}) (C {(install)} {(-Dm644)} {(DQ ($ VSub_Name "$srcdir")) (/icu/license.html)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/licenses/icu/license.html)} ) ] spids: [352] ) spids: [348 351] ) (FuncDef name: libs body: (BraceGroup children: [ (C {(default_libs)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:replaces) op:Equal rhs:{(DQ (icu))} spids:[414])] spids: [414] ) ] spids: [408] ) spids: [404 407] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sha512sums) op: Equal rhs: { (DQ ( "9348aa68d72a74cd1f26588c30c80eee1b48800a26930d7eb0749390fd65f7930ee8843058b6a6dd5f265e79054fef661e807ded16a1ad691cbc5ebc5ab944c4 icu4c-59_1-src.tgz\n" ) ( "40489c36e28e160f08e045acab6c19cdb712ad3b7f87f67099deac7d579aaf13d8841cd3278a6bb0e998b5c34a378348a13fcc8bb14c9c4eb4f6adbd10d66825 icu-timezone.patch" ) ) } spids: [422] ) ] spids: [422] ) ] )