On Fri, 18 Sep 2015 18:28:09 +0200
hasufell <hasuf...@gentoo.org> wrote:

> On 09/17/2015 06:36 PM, Alexis Ballier wrote:
> > 
> > # @ECLASS-VARIABLE: PYTHON_COMPAT
> > # @DESCRIPTION:
> > # Tells the eclass the package has python code and forwards it to
> > python-r1.eclass. PYTHON_ECLASS=""
> > CATKIN_PYTHON_USEDEP=""
> > if [ -n "${PYTHON_COMPAT}" ] ; then
> > PYTHON_ECLASS="python-r1 python-utils-r1"
> > fi
> 
> see python-r1.eclass:
> """
> # Please note that python-r1 will always inherit python-utils-r1 as
> # well. Thus, all the functions defined there can be used
> # in the packages using python-r1, and there is no need ever to
> inherit # both.
> """

I don't think that hurts and usually prefer explicit inherit rather
than relying on transitive ones, but i have no strong opinion and this
can be removed

> > # @FUNCTION: ros-catkin_src_install_with_python
> > # @DESCRIPTION:
> > # Decorator around cmake-utils_src_install to ensure python scripts
> > are properly handled w.r.t. python-exec2.
> > ros-catkin_src_install_with_python() { python_export
> > PYTHON_SCRIPTDIR cmake-utils_src_install
> >     if [ ! -f "${T}/.catkin_python_symlinks_generated" -a -d
> > "${D}/${PYTHON_SCRIPTDIR}" ]; then dodir /usr/bin
> >             for i in "${D}/${PYTHON_SCRIPTDIR}"/* ; do
> >                     dosym ../lib/python-exec/python-exec2
> > "/usr/bin/${i##*/}" || die done
> >             touch "${T}/.catkin_python_symlinks_generated"
> >     fi
> > }
> 
> Maybe I don't understand the purpose, but this looks like a hack
> that is trying to circumvent the python eclasses.
> 
> You probably should have a look at:
> """
> # @FUNCTION: python_replicate_script
> # @USAGE: <path>...
> # @DESCRIPTION:
> # Copy the given script to variants for all enabled Python
> # implementations, then replace it with a symlink to the wrapper.
> #
> # All specified files must start with a 'python' shebang. A file not
> # having a matching shebang will be refused.
> """

I don't think that'll work, above code is what I came up after
talking with mgorny about how to do it.

the cmake build system will already populate PYTHON_SCRIPTDIR and
those might differ between python versions; only thing left to do is
symlinking into /usr/bin; a bit like _distutils-r1_wrap_scripts, but
for which the leading _ suggests its not public

python_replicate_script seems useful only for files ending in /usr/bin

> > 
> > # @FUNCTION: ros-catkin_src_compile
> > # @DESCRIPTION:
> > # Builds a catkin-based package.
> > ros-catkin_src_compile() {
> >     if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
> >             python_foreach_impl cmake-utils_src_compile
> >     else
> >             cmake-utils_src_compile
> >     fi
> > }
> > 
> 
> > 
> > # @FUNCTION: ros-catkin_src_test
> > # @DESCRIPTION:
> > # Run the tests of a catkin-based package.
> > ros-catkin_src_test() {
> >     if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
> >             python_foreach_impl ros-catkin_src_test_internal
> >     else
> >             ros-catkin_src_test_internal
> >     fi
> > }
> > 
> 
> > 
> > # @FUNCTION: ros-catkin_src_install
> > # @DESCRIPTION:
> > # Installs a catkin-based package.
> > ros-catkin_src_install() {
> >     if [ -n "${CATKIN_DO_PYTHON_MULTIBUILD}" ] ; then
> >             python_foreach_impl
> > ros-catkin_src_install_with_python else
> >             cmake-utils_src_install
> >     fi
> > }
> > 
> 
> I think these functions should pass arguments through to
> cmake-utils_src_* functions, so an ebuild might be able to do stuff
> like ros-catkin_src_compile -j1
> or other things if that is really needed.
> 

yep, fixed locally, thx

you should consider fixing distutils-r1 too because that's what I was
inspired by iirc :p

Alexis.

Reply via email to