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.
> 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 15:44:13 -0000
> @@ -7,7 +7,7 @@ COMMENT= International Components for U
> VERSION= 58.2
> DISTNAME= icu4c-${VERSION:S/./_/g}-src
> PKGNAME= icu4c-${VERSION}
> -REVISION= 4
> +REVISION= 5
>
> MAJ_V= ${VERSION:R}
> SO_VERSION= 13.0
> @@ -36,7 +36,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
>
> @@ -59,34 +60,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}
> +WWW_PREFIX = ${TRUEPREFIX:S/\///}
> +SUBST_VARS += ENDIAN_DATA WWW_PREFIX
> +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/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: /cvs/ports/textproc/icu4c/pkg/PLIST,v
> retrieving revision 1.21
> diff -u -p -r1.21 PLIST
> --- pkg/PLIST 24 May 2017 15:44:42 -0000 1.21
> +++ pkg/PLIST 23 Aug 2017 15:44:13 -0000
> @@ -226,10 +226,15 @@ lib/pkgconfig/icu-uc.pc
> @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
> -%%be%%
> -%%le%%
> +@cwd /var/www
> +${WWW_PREFIX}/
> +${WWW_PREFIX}/share/
> +${WWW_PREFIX}/share/icu/
> +${WWW_PREFIX}/share/icu/${VERSION}/
> +${WWW_PREFIX}/share/icu/${VERSION}/${ENDIAN_DATA}.dat
>
--
Antoine