[pypy-dev] pypy-config

Matti Picus matti.picus at gmail.com
Thu Oct 20 14:59:03 EDT 2016


On 20/10/16 20:19, David Naylor wrote:
> Hi
>
> Some software depends on python-config however PyPy does not provide an
> equivalent pypy-config.  Are there any plans/workarounds to provide such a
> bin?
>
> Regards
>
> D

I actually ran into this yesterday, as I tried to build wxPython which 
uses SIP whose build system uses python-config.
AFAICT, python-config is provided by the downstream package maintainer. 
For instance, in debian it is provided by their python-dev package.
Since it is not an integral part of python, I'm not sure it should be an 
integral part of pypy, but it is trivial to copy-and-modify.

FWIW, I am attatching the one I used, YMMV.

Also, note that in building wxPython I discovered that we do not yet 
support enough of the C-API to use SIP, so I assume PyQT/PySide will 
fail as well.
The issue is in siplib.c's sipWrapperType_alloc, since we do not yet 
(may not ever?) support overriding tp_alloc.

Matti
-------------- next part --------------
#!/bin/sh

exit_with_usage ()
{
    echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--configdir"
    exit $1
}

if [ "$1" = "" ] ; then
    exit_with_usage 1
fi

# Returns the actual prefix where this script was installed to.
installed_prefix ()
{
    local RESULT=$(dirname $(cd $(dirname "$1") && pwd -P))
    if [ $(which readlink) ] ; then
        RESULT=$(readlink -f "$RESULT")
    fi
    echo $RESULT
}

prefix_build="/usr"
prefix_real=$(installed_prefix "$0")

# Use sed to fix paths from their built to locations to their installed to locations.
prefix=$(echo "$prefix_build" | sed "s#$prefix_build#$prefix_real#")
exec_prefix_build="${prefix}"
exec_prefix=$(echo "$exec_prefix_build" | sed "s#$exec_prefix_build#$prefix_real#")
includedir=$(echo "${prefix}/include" | sed "s#$prefix_build#$prefix_real#")
libdir=$(echo "${exec_prefix}/lib" | sed "s#$prefix_build#$prefix_real#")
CFLAGS=$(echo "-Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security " | sed "s#$prefix_build#$prefix_real#")
VERSION="2.7"
LIBM="-lm"
LIBC=""
SYSLIBS="$LIBM $LIBC"
ABIFLAGS=""
MULTIARCH="x86_64-linux-gnu"
LIBS="-lpypy-c -lpthread -ldl  -lutil $SYSLIBS"
BASECFLAGS=" -fno-strict-aliasing"
LDLIBRARY="libpython${VERSION}${DEBUG_EXT}.a"
LINKFORSHARED="-Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions"
OPT="-DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes"
PY_ENABLE_SHARED="0"
LIBDEST=${prefix}/lib/python${VERSION}
LIBPL=${LIBDEST}/config-${MULTIARCH}${ABIFLAGS}
SO="${ABIFLAGS}.so"
PYTHONFRAMEWORK=""
INCDIR="-I$includedir"
PLATINCDIR=""

# Scan for --help or unknown argument.
for ARG in $*
do
    case $ARG in
        --help)
            exit_with_usage 0
        ;;
        --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--configdir)
        ;;
        *)
            exit_with_usage 1
        ;;
    esac
done

for ARG in $*
do
    case $ARG in
        --prefix)
            echo "$prefix"
        ;;
        --exec-prefix)
            echo "$exec_prefix"
        ;;
        --includes)
            echo "$INCDIR" "$PLATINCDIR"
        ;;
        --cflags)
            echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT"
        ;;
        --libs)
            echo "$LIBS"
        ;;
        --ldflags)
            LINKFORSHAREDUSED=
            if [ -z "$PYTHONFRAMEWORK" ] ; then
                LINKFORSHAREDUSED=$LINKFORSHARED
            fi
            LIBPLUSED=
            if [ "$PY_ENABLE_SHARED" = "0" ] ; then
                LIBPLUSED="-L$LIBPL"
            fi
            echo "$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED"
        ;;
        --extension-suffix)
            echo "$SO"
        ;;
        --configdir)
            echo "$LIBPL"
        ;;
esac
done


More information about the pypy-dev mailing list