On 2017/08/23 19:46, Antoine Jacoutot wrote: > On Wed, Aug 23, 2017 at 04:54:31PM +0100, Stuart Henderson wrote: > > On 2017/08/01 09:33, Stuart Henderson wrote: > > > There is another way around it, using --with-data-packaging=archive, but > > > that breaks use within chroot (notably the php-intl module, but we might > > > also have a problem if we enable smtputf8 in postfix) unless the data > > > file is copied in. There is another way we could handle that, add a > > > second (and possibly third) copy of the data file to either icu4c or > > > to other packages using it, but that's not particularly appealing.. > > > > > > If anyone has other ideas of how to quieten this (er, maybe not a > > > strcmp in ld.so though.. :) please speak up! > > > > In the absence of other ideas, here's an initial diff that installs > > a copy of the data file in the www chroot. There are various ways we > > could do this, this is the dumb-and-simple method of putting it in > > the main package, an alternative would be to add a subpackage just > > for this that the various php*-intl versions could depend on. > > I am fine with it but I think this should be a subpackage. There aren't _that_ > many ports that have a direct LIB_DEPENDS against icu4c so bumping should not > be that bad.
Agreed, it's big enough to be annoying on a typical workstation with smallish /var. Just working through deps, here's the tweaked icu4c port. Index: Makefile =================================================================== RCS file: /cvs/ports/textproc/icu4c/Makefile,v retrieving revision 1.64 diff -u -p -r1.64 Makefile --- Makefile 26 Jul 2017 22:45:30 -0000 1.64 +++ Makefile 23 Aug 2017 19:24:29 -0000 @@ -2,12 +2,14 @@ NOT_FOR_ARCHS= ${GCC3_ARCHS} -COMMENT= International Components for Unicode +COMMENT-main= International Components for Unicode +COMMENT-wwwdata= ICU data file for use with /var/www chroot jails VERSION= 58.2 DISTNAME= icu4c-${VERSION:S/./_/g}-src -PKGNAME= icu4c-${VERSION} -REVISION= 4 +PKGNAME-main= icu4c-${VERSION} +PKGNAME-wwwdata= icu4c-wwwdata-${VERSION} +REVISION-main= 5 MAJ_V= ${VERSION:R} SO_VERSION= 13.0 @@ -36,7 +38,8 @@ USE_GMAKE= Yes CONFIGURE_STYLE= gnu CONFIGURE_ARGS= --enable-static \ --disable-renaming \ - --disable-samples + --disable-samples \ + --with-data-packaging=archive # needs icu-le-hb CONFIGURE_ARGS += --disable-layoutex @@ -44,6 +47,8 @@ SEPARATE_BUILD= Yes WRKDIST= ${WRKDIR}/icu WRKSRC= ${WRKDIST}/source +MULTI_PACKAGES= -main -wwwdata + # see readme.html CXXFLAGS += -DICU_NO_USER_DATA_OVERRIDE @@ -59,34 +64,25 @@ CXXFLAGS += -O1 -fno-stack-protector .endif .include <bsd.port.arch.mk> -PKG_ARGS += -Dbe=0 -Dle=0 -.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "powerpc" -# XXX breaks icu in chroot (e.g. php-intl) because the dat file won't be found -CONFIGURE_ARGS += --with-data-packaging=archive -. if ${PROPERTIES:Mbe} -PKG_ARGS += -Dbe=1 -TEST_ENV += ICU_DATA="${WRKBUILD}/data/out/build/icudt${MAJ_V}b" -. else -PKG_ARGS += -Dle=1 -TEST_ENV += ICU_DATA="${WRKBUILD}/data/out/build/icudt${MAJ_V}l" -. endif -.endif -# https://bugzilla.redhat.com/show_bug.cgi?id=889781 .if ${PROPERTIES:Mbe} +ENDIAN_DATA = icudt${MAJ_V}b +# https://bugzilla.redhat.com/show_bug.cgi?id=889781 CONFIGURE_ENV += CPPFLAGS="-DU_IS_BIG_ENDIAN=1" +.else +ENDIAN_DATA = icudt${MAJ_V}l .endif -TEST_DEPENDS= ${BASE_PKGPATH}=${VERSION} +PREFIX-wwwdata = /var/www${TRUEPREFIX} +SUBST_VARS += ENDIAN_DATA +TEST_ENV += ICU_DATA="${WRKBUILD}/data/out/build/${ENDIAN_DATA}" -# XXX prevent "WARNING: symbol(icudt58_dat) size mismatch" -.if ! ${PROPERTIES:Mclang} -post-extract: - sed -i 's/^DYNAMICCFLAGS = .*/& -finhibit-size-directive/' \ - ${WRKSRC}/stubdata/Makefile.in -.endif +TEST_DEPENDS= ${BASE_PKGPATH}=${VERSION} post-install: find ${PREFIX}/lib -type l -name 'libicu*.so*' -exec rm '{}' \; + ${INSTALL_DATA_DIR} ${WRKINST}/var/www${TRUEPREFIX}/share/icu/${VERSION} + ${INSTALL_DATA} ${PREFIX}/share/icu/${VERSION}/${ENDIAN_DATA}.dat \ + ${WRKINST}/var/www${TRUEPREFIX}/share/icu/${VERSION}/ .include <bsd.port.mk> Index: pkg/DESCR =================================================================== RCS file: pkg/DESCR diff -N pkg/DESCR --- pkg/DESCR 14 Mar 2011 09:15:34 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,9 +0,0 @@ -ICU (International Components for Unicode) is a set for C/C++ and Java -libraries providing Unicode and globalization support. icu4c is the -C/C++ version. - -ICU services include code page conversion, collation (comparison using -locale-specific ordering), locale-wise formatting, Unicode regexp and -bidirectional text handling. - -ICU is available under an open source non-copyleft licence. Index: pkg/DESCR-main =================================================================== RCS file: pkg/DESCR-main diff -N pkg/DESCR-main --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pkg/DESCR-main 23 Aug 2017 19:24:29 -0000 @@ -0,0 +1,9 @@ +ICU (International Components for Unicode) is a set for C/C++ and Java +libraries providing Unicode and globalization support. icu4c is the +C/C++ version. + +ICU services include code page conversion, collation (comparison using +locale-specific ordering), locale-wise formatting, Unicode regexp and +bidirectional text handling. + +ICU is available under an open source non-copyleft licence. Index: pkg/DESCR-wwwdata =================================================================== RCS file: pkg/DESCR-wwwdata diff -N pkg/DESCR-wwwdata --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pkg/DESCR-wwwdata 23 Aug 2017 19:24:29 -0000 @@ -0,0 +1,2 @@ +Separate copy of ICU's data file, for use with webserver processes running +in a chroot jail in /var/www. Index: pkg/PFRAG.be =================================================================== RCS file: pkg/PFRAG.be diff -N pkg/PFRAG.be --- pkg/PFRAG.be 17 Oct 2014 08:35:10 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,2 +0,0 @@ -@comment $OpenBSD: PFRAG.be,v 1.1 2014/10/17 08:35:10 ajacoutot Exp $ -share/icu/${VERSION}/icudt${MAJ_V}b.dat Index: pkg/PFRAG.le =================================================================== RCS file: pkg/PFRAG.le diff -N pkg/PFRAG.le --- pkg/PFRAG.le 17 Oct 2014 08:35:10 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,2 +0,0 @@ -@comment $OpenBSD: PFRAG.le,v 1.1 2014/10/17 08:35:10 ajacoutot Exp $ -share/icu/${VERSION}/icudt${MAJ_V}l.dat Index: pkg/PLIST =================================================================== RCS file: pkg/PLIST diff -N pkg/PLIST --- pkg/PLIST 24 May 2017 15:44:42 -0000 1.21 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,235 +0,0 @@ -@comment $OpenBSD: PLIST,v 1.21 2017/05/24 15:44:42 ajacoutot Exp $ -@bin bin/derb -@bin bin/genbrk -@bin bin/gencfu -@bin bin/gencnval -@bin bin/gendict -@bin bin/genrb -bin/icu-config -@bin bin/icuinfo -@bin bin/makeconv -@bin bin/pkgdata -@bin bin/uconv -include/unicode/ -include/unicode/alphaindex.h -include/unicode/appendable.h -include/unicode/basictz.h -include/unicode/brkiter.h -include/unicode/bytestream.h -include/unicode/bytestrie.h -include/unicode/bytestriebuilder.h -include/unicode/calendar.h -include/unicode/caniter.h -include/unicode/chariter.h -include/unicode/choicfmt.h -include/unicode/coleitr.h -include/unicode/coll.h -include/unicode/compactdecimalformat.h -include/unicode/curramt.h -include/unicode/currpinf.h -include/unicode/currunit.h -include/unicode/datefmt.h -include/unicode/dbbi.h -include/unicode/dcfmtsym.h -include/unicode/decimfmt.h -include/unicode/docmain.h -include/unicode/dtfmtsym.h -include/unicode/dtintrv.h -include/unicode/dtitvfmt.h -include/unicode/dtitvinf.h -include/unicode/dtptngen.h -include/unicode/dtrule.h -include/unicode/enumset.h -include/unicode/errorcode.h -include/unicode/fieldpos.h -include/unicode/filteredbrk.h -include/unicode/fmtable.h -include/unicode/format.h -include/unicode/fpositer.h -include/unicode/gender.h -include/unicode/gregocal.h -include/unicode/icudataver.h -include/unicode/icuplug.h -include/unicode/idna.h -include/unicode/listformatter.h -include/unicode/localpointer.h -include/unicode/locdspnm.h -include/unicode/locid.h -include/unicode/measfmt.h -include/unicode/measunit.h -include/unicode/measure.h -include/unicode/messagepattern.h -include/unicode/msgfmt.h -include/unicode/normalizer2.h -include/unicode/normlzr.h -include/unicode/numfmt.h -include/unicode/numsys.h -include/unicode/parseerr.h -include/unicode/parsepos.h -include/unicode/platform.h -include/unicode/plurfmt.h -include/unicode/plurrule.h -include/unicode/ptypes.h -include/unicode/putil.h -include/unicode/rbbi.h -include/unicode/rbnf.h -include/unicode/rbtz.h -include/unicode/regex.h -include/unicode/region.h -include/unicode/reldatefmt.h -include/unicode/rep.h -include/unicode/resbund.h -include/unicode/schriter.h -include/unicode/scientificnumberformatter.h -include/unicode/search.h -include/unicode/selfmt.h -include/unicode/simpleformatter.h -include/unicode/simpletz.h -include/unicode/smpdtfmt.h -include/unicode/sortkey.h -include/unicode/std_string.h -include/unicode/strenum.h -include/unicode/stringpiece.h -include/unicode/stringtriebuilder.h -include/unicode/stsearch.h -include/unicode/symtable.h -include/unicode/tblcoll.h -include/unicode/timezone.h -include/unicode/tmunit.h -include/unicode/tmutamt.h -include/unicode/tmutfmt.h -include/unicode/translit.h -include/unicode/tzfmt.h -include/unicode/tznames.h -include/unicode/tzrule.h -include/unicode/tztrans.h -include/unicode/ubidi.h -include/unicode/ubiditransform.h -include/unicode/ubrk.h -include/unicode/ucal.h -include/unicode/ucasemap.h -include/unicode/ucat.h -include/unicode/uchar.h -include/unicode/ucharstrie.h -include/unicode/ucharstriebuilder.h -include/unicode/uchriter.h -include/unicode/uclean.h -include/unicode/ucnv.h -include/unicode/ucnv_cb.h -include/unicode/ucnv_err.h -include/unicode/ucnvsel.h -include/unicode/ucol.h -include/unicode/ucoleitr.h -include/unicode/uconfig.h -include/unicode/ucsdet.h -include/unicode/ucurr.h -include/unicode/udat.h -include/unicode/udata.h -include/unicode/udateintervalformat.h -include/unicode/udatpg.h -include/unicode/udisplaycontext.h -include/unicode/uenum.h -include/unicode/ufieldpositer.h -include/unicode/uformattable.h -include/unicode/ugender.h -include/unicode/uidna.h -include/unicode/uiter.h -include/unicode/uldnames.h -include/unicode/ulistformatter.h -include/unicode/uloc.h -include/unicode/ulocdata.h -include/unicode/umachine.h -include/unicode/umisc.h -include/unicode/umsg.h -include/unicode/unifilt.h -include/unicode/unifunct.h -include/unicode/unimatch.h -include/unicode/unirepl.h -include/unicode/uniset.h -include/unicode/unistr.h -include/unicode/unorm.h -include/unicode/unorm2.h -include/unicode/unum.h -include/unicode/unumsys.h -include/unicode/uobject.h -include/unicode/upluralrules.h -include/unicode/uregex.h -include/unicode/uregion.h -include/unicode/ureldatefmt.h -include/unicode/urename.h -include/unicode/urep.h -include/unicode/ures.h -include/unicode/uscript.h -include/unicode/usearch.h -include/unicode/uset.h -include/unicode/usetiter.h -include/unicode/ushape.h -include/unicode/uspoof.h -include/unicode/usprep.h -include/unicode/ustdio.h -include/unicode/ustream.h -include/unicode/ustring.h -include/unicode/ustringtrie.h -include/unicode/utext.h -include/unicode/utf.h -include/unicode/utf16.h -include/unicode/utf32.h -include/unicode/utf8.h -include/unicode/utf_old.h -include/unicode/utmscale.h -include/unicode/utrace.h -include/unicode/utrans.h -include/unicode/utypes.h -include/unicode/uvernum.h -include/unicode/uversion.h -include/unicode/vtzone.h -lib/icu/ -lib/icu/${VERSION}/ -lib/icu/${VERSION}/Makefile.inc -lib/icu/${VERSION}/pkgdata.inc -lib/icu/Makefile.inc -lib/icu/current -lib/icu/pkgdata.inc -lib/libicudata.a -@lib lib/libicudata.so.${LIBicudata_VERSION} -lib/libicui18n.a -@lib lib/libicui18n.so.${LIBicui18n_VERSION} -lib/libicuio.a -@lib lib/libicuio.so.${LIBicuio_VERSION} -lib/libicutest.a -@lib lib/libicutest.so.${LIBicutest_VERSION} -lib/libicutu.a -@lib lib/libicutu.so.${LIBicutu_VERSION} -lib/libicuuc.a -@lib lib/libicuuc.so.${LIBicuuc_VERSION} -lib/pkgconfig/icu-i18n.pc -lib/pkgconfig/icu-io.pc -lib/pkgconfig/icu-uc.pc -@man man/man1/derb.1 -@man man/man1/genbrk.1 -@man man/man1/gencfu.1 -@man man/man1/gencnval.1 -@man man/man1/gendict.1 -@man man/man1/genrb.1 -@man man/man1/icu-config.1 -@man man/man1/makeconv.1 -@man man/man1/pkgdata.1 -@man man/man1/uconv.1 -@man man/man8/genccode.8 -@man man/man8/gencmn.8 -@man man/man8/gensprep.8 -@man man/man8/icupkg.8 -@bin sbin/genccode -@bin sbin/gencmn -@bin sbin/gennorm2 -@bin sbin/gensprep -@bin sbin/icupkg -share/icu/ -share/icu/${VERSION}/ -share/icu/${VERSION}/LICENSE -share/icu/${VERSION}/config/ -share/icu/${VERSION}/config/mh-bsd-gcc -share/icu/${VERSION}/install-sh -share/icu/${VERSION}/mkinstalldirs -%%be%% -%%le%% Index: pkg/PLIST-main =================================================================== RCS file: pkg/PLIST-main diff -N pkg/PLIST-main --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pkg/PLIST-main 23 Aug 2017 19:24:29 -0000 @@ -0,0 +1,235 @@ +@comment $OpenBSD: PLIST,v 1.21 2017/05/24 15:44:42 ajacoutot Exp $ +@pkgpath textproc/icu4c +@bin bin/derb +@bin bin/genbrk +@bin bin/gencfu +@bin bin/gencnval +@bin bin/gendict +@bin bin/genrb +bin/icu-config +@bin bin/icuinfo +@bin bin/makeconv +@bin bin/pkgdata +@bin bin/uconv +include/unicode/ +include/unicode/alphaindex.h +include/unicode/appendable.h +include/unicode/basictz.h +include/unicode/brkiter.h +include/unicode/bytestream.h +include/unicode/bytestrie.h +include/unicode/bytestriebuilder.h +include/unicode/calendar.h +include/unicode/caniter.h +include/unicode/chariter.h +include/unicode/choicfmt.h +include/unicode/coleitr.h +include/unicode/coll.h +include/unicode/compactdecimalformat.h +include/unicode/curramt.h +include/unicode/currpinf.h +include/unicode/currunit.h +include/unicode/datefmt.h +include/unicode/dbbi.h +include/unicode/dcfmtsym.h +include/unicode/decimfmt.h +include/unicode/docmain.h +include/unicode/dtfmtsym.h +include/unicode/dtintrv.h +include/unicode/dtitvfmt.h +include/unicode/dtitvinf.h +include/unicode/dtptngen.h +include/unicode/dtrule.h +include/unicode/enumset.h +include/unicode/errorcode.h +include/unicode/fieldpos.h +include/unicode/filteredbrk.h +include/unicode/fmtable.h +include/unicode/format.h +include/unicode/fpositer.h +include/unicode/gender.h +include/unicode/gregocal.h +include/unicode/icudataver.h +include/unicode/icuplug.h +include/unicode/idna.h +include/unicode/listformatter.h +include/unicode/localpointer.h +include/unicode/locdspnm.h +include/unicode/locid.h +include/unicode/measfmt.h +include/unicode/measunit.h +include/unicode/measure.h +include/unicode/messagepattern.h +include/unicode/msgfmt.h +include/unicode/normalizer2.h +include/unicode/normlzr.h +include/unicode/numfmt.h +include/unicode/numsys.h +include/unicode/parseerr.h +include/unicode/parsepos.h +include/unicode/platform.h +include/unicode/plurfmt.h +include/unicode/plurrule.h +include/unicode/ptypes.h +include/unicode/putil.h +include/unicode/rbbi.h +include/unicode/rbnf.h +include/unicode/rbtz.h +include/unicode/regex.h +include/unicode/region.h +include/unicode/reldatefmt.h +include/unicode/rep.h +include/unicode/resbund.h +include/unicode/schriter.h +include/unicode/scientificnumberformatter.h +include/unicode/search.h +include/unicode/selfmt.h +include/unicode/simpleformatter.h +include/unicode/simpletz.h +include/unicode/smpdtfmt.h +include/unicode/sortkey.h +include/unicode/std_string.h +include/unicode/strenum.h +include/unicode/stringpiece.h +include/unicode/stringtriebuilder.h +include/unicode/stsearch.h +include/unicode/symtable.h +include/unicode/tblcoll.h +include/unicode/timezone.h +include/unicode/tmunit.h +include/unicode/tmutamt.h +include/unicode/tmutfmt.h +include/unicode/translit.h +include/unicode/tzfmt.h +include/unicode/tznames.h +include/unicode/tzrule.h +include/unicode/tztrans.h +include/unicode/ubidi.h +include/unicode/ubiditransform.h +include/unicode/ubrk.h +include/unicode/ucal.h +include/unicode/ucasemap.h +include/unicode/ucat.h +include/unicode/uchar.h +include/unicode/ucharstrie.h +include/unicode/ucharstriebuilder.h +include/unicode/uchriter.h +include/unicode/uclean.h +include/unicode/ucnv.h +include/unicode/ucnv_cb.h +include/unicode/ucnv_err.h +include/unicode/ucnvsel.h +include/unicode/ucol.h +include/unicode/ucoleitr.h +include/unicode/uconfig.h +include/unicode/ucsdet.h +include/unicode/ucurr.h +include/unicode/udat.h +include/unicode/udata.h +include/unicode/udateintervalformat.h +include/unicode/udatpg.h +include/unicode/udisplaycontext.h +include/unicode/uenum.h +include/unicode/ufieldpositer.h +include/unicode/uformattable.h +include/unicode/ugender.h +include/unicode/uidna.h +include/unicode/uiter.h +include/unicode/uldnames.h +include/unicode/ulistformatter.h +include/unicode/uloc.h +include/unicode/ulocdata.h +include/unicode/umachine.h +include/unicode/umisc.h +include/unicode/umsg.h +include/unicode/unifilt.h +include/unicode/unifunct.h +include/unicode/unimatch.h +include/unicode/unirepl.h +include/unicode/uniset.h +include/unicode/unistr.h +include/unicode/unorm.h +include/unicode/unorm2.h +include/unicode/unum.h +include/unicode/unumsys.h +include/unicode/uobject.h +include/unicode/upluralrules.h +include/unicode/uregex.h +include/unicode/uregion.h +include/unicode/ureldatefmt.h +include/unicode/urename.h +include/unicode/urep.h +include/unicode/ures.h +include/unicode/uscript.h +include/unicode/usearch.h +include/unicode/uset.h +include/unicode/usetiter.h +include/unicode/ushape.h +include/unicode/uspoof.h +include/unicode/usprep.h +include/unicode/ustdio.h +include/unicode/ustream.h +include/unicode/ustring.h +include/unicode/ustringtrie.h +include/unicode/utext.h +include/unicode/utf.h +include/unicode/utf16.h +include/unicode/utf32.h +include/unicode/utf8.h +include/unicode/utf_old.h +include/unicode/utmscale.h +include/unicode/utrace.h +include/unicode/utrans.h +include/unicode/utypes.h +include/unicode/uvernum.h +include/unicode/uversion.h +include/unicode/vtzone.h +lib/icu/ +lib/icu/${VERSION}/ +lib/icu/${VERSION}/Makefile.inc +lib/icu/${VERSION}/pkgdata.inc +lib/icu/Makefile.inc +lib/icu/current +lib/icu/pkgdata.inc +lib/libicudata.a +@lib lib/libicudata.so.${LIBicudata_VERSION} +lib/libicui18n.a +@lib lib/libicui18n.so.${LIBicui18n_VERSION} +lib/libicuio.a +@lib lib/libicuio.so.${LIBicuio_VERSION} +lib/libicutest.a +@lib lib/libicutest.so.${LIBicutest_VERSION} +lib/libicutu.a +@lib lib/libicutu.so.${LIBicutu_VERSION} +lib/libicuuc.a +@lib lib/libicuuc.so.${LIBicuuc_VERSION} +lib/pkgconfig/icu-i18n.pc +lib/pkgconfig/icu-io.pc +lib/pkgconfig/icu-uc.pc +@man man/man1/derb.1 +@man man/man1/genbrk.1 +@man man/man1/gencfu.1 +@man man/man1/gencnval.1 +@man man/man1/gendict.1 +@man man/man1/genrb.1 +@man man/man1/icu-config.1 +@man man/man1/makeconv.1 +@man man/man1/pkgdata.1 +@man man/man1/uconv.1 +@man man/man8/genccode.8 +@man man/man8/gencmn.8 +@man man/man8/gensprep.8 +@man man/man8/icupkg.8 +@bin sbin/genccode +@bin sbin/gencmn +@bin sbin/gennorm2 +@bin sbin/gensprep +@bin sbin/icupkg +share/icu/ +share/icu/${VERSION}/ +share/icu/${VERSION}/${ENDIAN_DATA}.dat +share/icu/${VERSION}/LICENSE +share/icu/${VERSION}/config/ +share/icu/${VERSION}/config/mh-bsd-gcc +share/icu/${VERSION}/install-sh +share/icu/${VERSION}/mkinstalldirs Index: pkg/PLIST-wwwdata =================================================================== RCS file: pkg/PLIST-wwwdata diff -N pkg/PLIST-wwwdata --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pkg/PLIST-wwwdata 23 Aug 2017 19:24:29 -0000 @@ -0,0 +1,5 @@ +@comment $OpenBSD: PLIST,v 1.21 2017/05/24 15:44:42 ajacoutot Exp $ +share/ +share/icu/ +share/icu/${VERSION}/ +share/icu/${VERSION}/${ENDIAN_DATA}.dat