void-packages/srcpkgs/icu/template
Érico Rolim 9636b96d90 icu: remove libstdc++-devel from depends.
Both compiler packages depend on it already, and its presence makes it
easy to accidentally create build cycles by putting gcc in the
dependency path when it shouldn't be.
2021-03-08 00:42:20 -03:00

120 lines
3.8 KiB
Bash

# Template file for 'icu'
# NOTE: Please convert this package to support progressive updates with the
# next soname bump.
pkgname=icu
version=67.1
revision=2
wrksrc=icu
build_wrksrc=source
build_style=gnu-configure
# use archive data instead of .so data for correct cross-compiling
configure_args="--with-data-packaging=archive --enable-static"
hostmakedepends="pkg-config"
short_desc="Robust and fully-featured Unicode libraries"
maintainer="Randy McCaskill <randy@mccaskill.us>"
license="ICU"
homepage="https://home.unicode.org/"
distfiles="https://github.com/unicode-org/icu/releases/download/release-${version//./-}/icu4c-${version//./_}-src.tgz"
checksum=94a80cd6f251a53bd2a997f6f1b5ac6653fe791dfab66e1eb0227740fb86d5dc
if [ "$CROSS_BUILD" ]; then
configure_args+=" --with-cross-build=${XBPS_BUILDDIR}/${wrksrc}/host-icu"
fi
# we will be managing icudata manually, because when cross-compiling for
# another endianness the output data is broken... fortunately, we can use
# icupkg to convert host-endianness data to target-endianness data
_icu_dat="icudt${version%.*}"
_icu_data="source/data/in"
pre_configure() {
# 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
# http://git.alpinelinux.org/cgit/aports/tree/main/icu/APKBUILD?id=46736e7b8040becc9f69ad6d2c2d317a52d5485b#n34
case "${XBPS_TARGET_MACHINE}" in
*-musl) sed -i -e 's,DU_HAVE_STRTOD_L=1,DU_HAVE_STRTOD_L=0,' configure ;;
esac
if [ "$CROSS_BUILD" ]; then
# Configure and build for host.
mkdir host-build
(
cd host-build
env CC=cc LD=ld CXX=g++ AR=ar RANLIB=ranlib \
AS=as STRIP=strip CFLAGS="-Os -fPIE" CXXFLAGS="-Os -fPIE" \
LDFLAGS="" ../configure --prefix=/
make ${makejobs}
mkdir -p ${wrksrc}/host-icu/config
cp config/icucross.* ${wrksrc}/host-icu/config
make DESTDIR=${wrksrc}/host-icu install
mv ${wrksrc}/host-icu/sbin/* ${wrksrc}/host-icu/bin
make distclean
)
fi
# libicudata must be linked to libc, otherwise it's soft-float on ARM.
# probably other stuff breaks too, so let's just do it.
# See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=653457
sed -e 's,-nostdlib,,g' -i ${wrksrc}/source/config/mh-linux
export CFLAGS="${CFLAGS} -DICU_DATA_DIR=\\\"/usr/share/icu/${version}\\\""
export CXXFLAGS="${CFLAGS} -DICU_DATA_DIR=\\\"/usr/share/icu/${version}\\\""
# makefile dependency bug: this directory needs to be created manually
mkdir -p ${wrksrc}/source/data/out/tmp
}
post_install() {
vlicense $wrksrc/LICENSE
# handled separately
rm -f ${DESTDIR}/usr/share/icu/${version}/${_icu_dat}${XBPS_TARGET_ENDIAN%e}.dat
# for little endian just use the file that's there
if [ "$XBPS_TARGET_ENDIAN" != "be" ]; then
return
fi
# for big endian, we need to convert the file that's there with icupkg
local _icupkg_path="${DESTDIR}/usr"
if [ "$CROSS_BUILD" ]; then
_icupkg_path="${wrksrc}/host-icu"
fi
rm -f ${wrksrc}/${_icu_data}/${_icu_dat}b.dat
LD_LIBRARY_PATH="${_icupkg_path}/lib" ${_icupkg_path}/bin/icupkg -tb \
${wrksrc}/${_icu_data}/${_icu_dat}l.dat \
${wrksrc}/${_icu_data}/${_icu_dat}b.dat
}
icu-devel_package() {
depends="icu-libs>=${version}_${revision}"
short_desc+=" - development files"
pkg_install() {
vmove usr/include
vmove usr/lib/icu
vmove "usr/lib/*.a"
vmove usr/lib/pkgconfig
vmove usr/share/icu
vmove usr/bin/icu-config
vmove "usr/share/man/man1/icu-config*"
vmove "usr/lib/*.so"
}
}
icu-libs_package() {
short_desc+=" - shared libs"
pkg_install() {
vmove "usr/lib/*.so.*"
# install data manually
vmkdir "usr/share/icu/${version}"
install -Dm644 \
${wrksrc}/${_icu_data}/${_icu_dat}${XBPS_TARGET_ENDIAN%e}.dat \
${PKGDESTDIR}/usr/share/icu/${version}
}
}