Hi,
I'm updating my infinality variant to port:fontconfig, and I've stumbled upon a
build dependency that's either new or that I simply never noticed. It may be
new, because the current Infinality-Ultimate patches bump fontconfig to version
2.11.93, kind of a 2.12.0 RC .
The build process uses Python scripts that import py-lxml to parse certain
files. It doesn't appear to matter what version that is, i.e. the resulting
files that get installed do not depend on what Python version was used. There
are thus no concerns about reproducible builds (and the variant isn't the
default either).
What's the best and leanest way to pull in this build dependency and point the
configure script to the correct python interpreter? Ideally I would like to
avoid pulling in a python version unnecessarily, or even a py-lxml version, but
I guess there's no support for this and I'd have to do something (probably "not
done") like below?
Note also the chown call in the pre-patch below. Apparently something in the
pre-patch block creates files and/or directories that are owned by root instead
of ${macportsuser}, which leads to permissions errors during the actual
configure run.
Thanks,
R.
{{{
variant infinality description *{*patched *for* improved *font* rendering,
bohoomil ultimate *style}* *{*
version 2.11.93
worksrcdir ${name}-${fversion}
distname ${name}-${fversion}
#revision [expr ${revision} + 1]
depends_lib-*append* port:fontconfig-ultimate
# point configure to the MacPorts python interpreter that has the lxml
package:
*if* *{[file* exists
${prefix}/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/lxml*]}*
*{*
depends_build-*append* port:py34-lxml
*set* PYTHON ${prefix}/bin/python3.4
*}* *elseif* *{[file* exists
${prefix}/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml*]*
\
|| (*[file* exists
${prefix}/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7*]* && \
!*[file* exists
${prefix}/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4*]*)
*}* *{*
# lxml installed for py2.7 *or* py2.7 is installed and py3.4 is not
depends_build-*append* port:py27-lxml
*set* PYTHON ${prefix}/bin/python2.7
*}* *else* *{*
depends_build-*append* port:py34-lxml
*set* PYTHON ${prefix}/bin/python3.4
*}*
pre-patch *{*
ui_msg "Patching fontconfig v${fversion} to v2.11.93"
*catch* *{eval* *exec* sh -c "\"cd ${worksrcpath} ; ${patch.cmd}
-Np1 -i ${filespath}/upstream_2.11.93.patch\""*}* result
ui_debug "Applying upstream patches to 2.11.93: $result"
*catch* *{eval* *exec* sh -c "\"cd ${worksrcpath} ; autoreconf
-vfi\""*}* result
ui_debug "automake: $result"
# not sure how these should have been created:
*catch* *{eval* *exec* sh -c "\"cd ${worksrcpath}/doc ; touch
FcRangeCopy.3 FcRangeCreateDouble.3 \
FcRangeCreateInteger.3 FcRangeDestroy.3 FcRangeGetDouble.3
FcWeightFromOpenType.3 FcWeightToOpenType.3\""*}* result
ui_debug "Creating stubs for missing manpages: $result"
# apparently something in the above commands can create directories
owned by root
*catch* *{eval* *exec* sh -c "\"cd ${worksrcpath} ; chown -R
${macportsuser} .\""*}* result
ui_debug "chown ${macportsuser}: $result"
*}*
patchfiles-*append* 00-fonts.conf.in-${INFRELEASE}.patch \
01-configure-${INFRELEASE}.patch \
02-configure.ac-${INFRELEASE}.patch \
03-Makefile.in-${INFRELEASE}.patch \
04-Makefile.conf.d-${INFRELEASE}.patch \
05-Makefile.am.in-${INFRELEASE}-automake115.patch
pre-configure *{*
configure.args-*append*
--with-templatedir=${prefix}/etc/fonts/conf.avail
--with-templateinfdir=${TEMPLINFDIR} PYTHON=${PYTHON}
*if* *{[file* exists
${prefix}/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml*]}*
*{*
configure.args-*append* PYTHON=${prefix}/bin/python2.7
*}* *elseif* *{[file* exists
${prefix}/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/lxml*]}*
*{*
configure.args-*append* PYTHON=${prefix}/bin/python3.4
*}*
delete ${worksrcpath}/conf.d.infinality
copy
${prefix}/share/fonts/fontconfig-ultimate/${INFRELEASE}/conf.d.infinality
${worksrcpath}
*catch* *{eval* *exec* sh -c "\"cd ${worksrcpath} ; autoreconf
-vfi\""*}* result
ui_debug "automake: $result"
*}*
notes-*append* "Be sure to call fc-presets as root to select one of the
provided font configuration presets!"
*}*
}}}
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev