void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

02-script-wrapper.sh (6842B)


      1# This hook creates wrappers for foo-config scripts in cross builds.
      2#
      3# Wrappers are created in ${wrksrc}/.xbps/bin and this path is appended
      4# to make configure scripts find them.
      5
      6generic_wrapper() {
      7	local wrapper="$1"
      8	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
      9	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
     10
     11	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
     12#!/bin/sh
     13exec ${XBPS_CROSS_BASE}/usr/bin/${wrapper} --prefix=${XBPS_CROSS_BASE}/usr "\$@"
     14_EOF
     15
     16	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
     17}
     18
     19generic_wrapper2() {
     20	local wrapper="$1"
     21
     22	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
     23	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
     24
     25	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
     26#!/bin/sh
     27if [ "\$1" = "--prefix" ]; then
     28	echo "${XBPS_CROSS_BASE}/usr"
     29elif [ "\$1" = "--cflags" ]; then
     30	${XBPS_CROSS_BASE}/usr/bin/${wrapper} --cflags | sed -e "s,-I/usr/include,-I${XBPS_CROSS_BASE}/usr/include,g"
     31elif [ "\$1" = "--libs" ]; then
     32	${XBPS_CROSS_BASE}/usr/bin/${wrapper} --libs | sed -e "s,-L/usr/lib,-L${XBPS_CROSS_BASE}/usr/lib,g"
     33else
     34	exec ${XBPS_CROSS_BASE}/usr/bin/${wrapper} "\$@"
     35fi
     36exit \$?
     37_EOF
     38	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
     39}
     40
     41generic_wrapper3() {
     42	local wrapper="$1"
     43	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
     44	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
     45
     46	cp ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ${XBPS_WRAPPERDIR}
     47	sed -e "s,^libdir=.*,libdir=${XBPS_CROSS_BASE}/usr/lib,g" -i ${XBPS_WRAPPERDIR}/${wrapper}
     48	sed -e "s,^prefix=.*,prefix=${XBPS_CROSS_BASE}/usr," -i ${XBPS_WRAPPERDIR}/${wrapper}
     49
     50	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
     51}
     52
     53apr_apu_wrapper() {
     54	local wrapper="$1"
     55
     56	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
     57	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
     58
     59	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
     60#!/bin/sh
     61${XBPS_CROSS_BASE}/usr/bin/${wrapper} "\$@" | sed -e "s,/usr/,${XBPS_CROSS_BASE}/usr/,g"
     62exit \$?
     63_EOF
     64	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
     65}
     66
     67python_wrapper() {
     68	local wrapper="$1" version="$2"
     69
     70	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
     71	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
     72#!/bin/sh
     73case "\$1" in
     74--includes|--cflags)
     75	echo "-I${XBPS_CROSS_BASE}/usr/include/python${version}" ;;
     76esac
     77exit 0
     78_EOF
     79	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
     80}
     81
     82pkgconfig_wrapper() {
     83	if [ ! -x /usr/bin/pkg-config ]; then
     84		return 0
     85	fi
     86	[ -x ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-pkg-config ] && return 0
     87	cat >>${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-pkg-config<<_EOF
     88#!/bin/sh
     89
     90export PKG_CONFIG_SYSROOT_DIR="$XBPS_CROSS_BASE"
     91export PKG_CONFIG_PATH="$XBPS_CROSS_BASE/usr/lib/pkgconfig:$XBPS_CROSS_BASE/usr/share/pkgconfig\${PKG_CONFIG_PATH:+:\${PKG_CONFIG_PATH}}"
     92export PKG_CONFIG_LIBDIR="$XBPS_CROSS_BASE/usr/lib/pkgconfig\${PKG_CONFIG_LIBDIR:+:\${PKG_CONFIG_LIBDIR}}"
     93exec /usr/bin/pkg-config "\$@"
     94_EOF
     95	chmod 755 ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-pkg-config
     96	if [ -z "$no_generic_pkgconfig_link" ]; then
     97		ln -sf ${XBPS_CROSS_TRIPLET}-pkg-config ${XBPS_WRAPPERDIR}/pkg-config
     98	fi
     99}
    100
    101vapigen_wrapper() {
    102	local _vala_version _file
    103	if [ ! -x /usr/bin/vapigen ]; then
    104		return 0
    105	fi
    106	[ -x ${XBPS_WRAPPERDIR}/vapigen ] && return 0
    107	for _file in /usr/bin/vapigen-*; do
    108		if [ -x "${_file}" ]; then
    109			_vala_version=${_file#*-}
    110		fi
    111	done
    112	cat >>${XBPS_WRAPPERDIR}/vapigen<<_EOF
    113#!/bin/sh
    114exec /usr/bin/vapigen \\
    115	 "\$@" \\
    116	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala/vapi \\
    117	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala-${_vala_version}/vapi \\
    118	 --girdir=${XBPS_CROSS_BASE}/usr/share/gir-1.0
    119_EOF
    120	chmod 755 ${XBPS_WRAPPERDIR}/vapigen
    121	ln -sf vapigen ${XBPS_WRAPPERDIR}/vapigen-${_vala_version}
    122}
    123
    124valac_wrapper() {
    125	local _vala_version _file
    126	if [ ! -x /usr/bin/valac ]; then
    127		return 0
    128	fi
    129	[ -x ${XBPS_WRAPPERDIR}/valac ] && return 0
    130	for _file in /usr/bin/valac-*; do
    131		if [ -x "${_file}" ]; then
    132			_vala_version=${_file#*-}
    133		fi
    134	done
    135	cat >>${XBPS_WRAPPERDIR}/valac<<_EOF
    136#!/bin/sh
    137exec /usr/bin/valac \\
    138	 "\$@" \\
    139	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala/vapi \\
    140	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala-${_vala_version}/vapi \\
    141	 --girdir=${XBPS_CROSS_BASE}/usr/share/gir-1.0
    142_EOF
    143	chmod 755 ${XBPS_WRAPPERDIR}/valac
    144	ln -sf valac ${XBPS_WRAPPERDIR}/valac-${_vala_version}
    145}
    146
    147install_wrappers() {
    148	local fname
    149
    150	for f in ${XBPS_COMMONDIR}/wrappers/*.sh; do
    151		fname=${f##*/}
    152		fname=${fname%.sh}
    153		install -p -m0755 ${f} ${XBPS_WRAPPERDIR}/${fname}
    154	done
    155}
    156
    157install_cross_wrappers() {
    158	local fname prefix
    159
    160	if [ -n "$XBPS_CCACHE" ]; then
    161		[ -x "/usr/bin/ccache" ] && prefix="/usr/bin/ccache "
    162	elif [ -n "$XBPS_DISTCC" ]; then
    163		[ -x "/usr/bin/distcc" ] && prefix="/usr/bin/distcc "
    164	fi
    165
    166	for fname in cc gcc; do
    167		sed -e "s,@BIN@,${prefix}/usr/bin/$XBPS_CROSS_TRIPLET-gcc,g" \
    168			${XBPS_COMMONDIR}/wrappers/cross-cc > \
    169			${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
    170		chmod 755 ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
    171	done
    172	for fname in c++ g++; do
    173		sed -e "s,@BIN@,${prefix}/usr/bin/$XBPS_CROSS_TRIPLET-g++,g" \
    174			${XBPS_COMMONDIR}/wrappers/cross-cc > \
    175			${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
    176		chmod 755 ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
    177	done
    178}
    179
    180link_wrapper() {
    181	local wrapper="$1"
    182	[ ! -x "${XBPS_CROSS_BASE}/usr/bin/${wrapper}" ] && return 0
    183	[ -L "${XBPS_WRAPPERDIR}/${wrapper}" ] && return 0
    184	ln -sf "${XBPS_CROSS_BASE}/usr/bin/${wrapper}" "${XBPS_WRAPPERDIR}"
    185}
    186
    187hook() {
    188	export PATH="$XBPS_WRAPPERDIR:$PATH"
    189
    190	install_wrappers
    191
    192	[ -z "$CROSS_BUILD" ] && return 0
    193
    194	install_cross_wrappers
    195	pkgconfig_wrapper
    196	vapigen_wrapper
    197	valac_wrapper
    198
    199	if [ -x /usr/bin/pkg-config ]; then
    200		link_wrapper freetype-config
    201	else
    202		generic_wrapper freetype-config
    203	fi
    204
    205	generic_wrapper icu-config
    206	generic_wrapper libgcrypt-config
    207	generic_wrapper sdl-config
    208	generic_wrapper sdl2-config
    209	generic_wrapper gpgme-config
    210	generic_wrapper imlib2-config
    211	generic_wrapper libmikmod-config
    212	generic_wrapper pcre-config
    213	generic_wrapper net-snmp-config
    214	generic_wrapper wx-config
    215	generic_wrapper wx-config-3.0
    216	generic_wrapper wx-config-gtk3
    217	generic_wrapper2 curl-config
    218	generic_wrapper2 gpg-error-config
    219	generic_wrapper2 libassuan-config
    220	generic_wrapper2 mysql_config
    221	generic_wrapper2 taglib-config
    222	generic_wrapper2 nspr-config
    223	generic_wrapper2 gdal-config
    224	generic_wrapper3 libpng-config
    225	generic_wrapper3 xmlrpc-c-config
    226	generic_wrapper3 krb5-config
    227	generic_wrapper3 cups-config
    228	generic_wrapper3 Magick-config
    229	generic_wrapper3 fltk-config
    230	generic_wrapper3 xslt-config
    231	generic_wrapper3 xml2-config
    232	generic_wrapper3 fox-config
    233	generic_wrapper3 xapian-config
    234	generic_wrapper3 ncurses5-config
    235	generic_wrapper3 ncursesw5-config
    236	generic_wrapper3 libetpan-config
    237	generic_wrapper3 giblib-config
    238	python_wrapper python-config 2.7
    239	python_wrapper python3-config 3.9
    240	apr_apu_wrapper apr-1-config
    241	apr_apu_wrapper apu-1-config
    242}