From 4d96c6ff923adbd841299feb3f5dda9b95b2ec2a Mon Sep 17 00:00:00 2001 From: Marco Bonetti Date: Fri, 23 Sep 2011 16:34:55 -0300 Subject: python/pycxx: Added (Write Python Extensions in C++) Signed-off-by: Niels Horn --- python/pycxx/README | 29 ++++++++++++++ python/pycxx/installpath.diff | 12 ++++++ python/pycxx/pycxx.SlackBuild | 90 +++++++++++++++++++++++++++++++++++++++++++ python/pycxx/pycxx.info | 10 +++++ python/pycxx/slack-desc | 19 +++++++++ 5 files changed, 160 insertions(+) create mode 100644 python/pycxx/README create mode 100644 python/pycxx/installpath.diff create mode 100644 python/pycxx/pycxx.SlackBuild create mode 100644 python/pycxx/pycxx.info create mode 100644 python/pycxx/slack-desc (limited to 'python/pycxx') diff --git a/python/pycxx/README b/python/pycxx/README new file mode 100644 index 0000000000..f64ce1f6b6 --- /dev/null +++ b/python/pycxx/README @@ -0,0 +1,29 @@ +PyCXX is designed to make it easier to extend Python with C++ + +CXX/Objects is a set of C++ facilities to make it easier to write Python +extensions. The chief way in which PyCXX makes it easier to write Python +extensions is that it greatly increases the probability that your program +will not make a reference-counting error and will not have to continually +check error returns from the Python C API. CXX/Objects integrates Python +with C++ in these ways: + + C++ exception handling is relied on to detect errors and clean up. In a + complicated function this is often a tremendous problem when writing in C. + With PyCXX, we let the compiler keep track of what objects need to be + dereferenced when an error occurs. + + The Standard Template Library (STL) and its many algorithms plug and + play with Python containers such as lists and tuples. + + The optional CXX/Extensions facility allows you to replace the clumsy C + tables with objects and method calls that define your modules and + extension objects. + +The original source will install CXX source code needed to help building +python/C++ extension under /usr/share/python2.6/CXX which is a standard +Debian directory. As Slackware does not have /usr/share/python2.6, I +patched the installer to use /usr/share/CXX in order to follow the style of +stock python packages like pygobject or pygtk. Be aware, though, that +python packages that will use PyCXX will probably look for the needed files +under the Debian standard path! You should investigate if their setup.py +accept any switch to setup a different search path otherwise you will have +to patch them. + +This requires pysetuptools. diff --git a/python/pycxx/installpath.diff b/python/pycxx/installpath.diff new file mode 100644 index 0000000000..f6281b8c68 --- /dev/null +++ b/python/pycxx/installpath.diff @@ -0,0 +1,12 @@ +diff -Naur pycxx-6.2.3.orig/setup.py pycxx-6.2.3/setup.py +--- pycxx-6.2.3.orig/setup.py 2010-05-02 21:10:27.000000000 +0200 ++++ pycxx-6.2.3/setup.py 2011-08-24 17:57:18.650467125 +0200 +@@ -13,7 +13,7 @@ + + def finalize_options (self): + if not self.install_data or (len(self.install_data) < 8) : +- self.install_data = "$base/share/python$py_version_short" ++ self.install_data = "$base/share" + install.finalize_options (self) + + def run (self): diff --git a/python/pycxx/pycxx.SlackBuild b/python/pycxx/pycxx.SlackBuild new file mode 100644 index 0000000000..813159a0e2 --- /dev/null +++ b/python/pycxx/pycxx.SlackBuild @@ -0,0 +1,90 @@ +#!/bin/sh + +# Slackware build script for pycxx. + +# Copyright 2011 Marco Bonetti +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=pycxx +VERSION=${VERSION:-6.2.3} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +DOCS="COPYRIGHT Doc" + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION + +# fix install path +patch -p1 --verbose < $CWD/installpath.diff + +chown -R root:root . + +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +python setup.py build + +python setup.py install --root=$PKG +# installer is totally broken +cp -av CXX $PKG/usr/include/python`python -c 'import sys; print sys.version[:3]'`/ +mkdir -p $PKG/usr/share/CXX +cp -av Src/* $PKG/usr/share/CXX/ +# fix even more broken include statements +( cd $PKG/usr/share/CXX + sed -i -e 's:Src/::g' *.c + sed -i -e 's:Src/::g' *.cxx +) + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/slack-desc > $PKG/usr/doc/$PRGNAM-$VERSION/slack-desc +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/python/pycxx/pycxx.info b/python/pycxx/pycxx.info new file mode 100644 index 0000000000..dde6ee2f8f --- /dev/null +++ b/python/pycxx/pycxx.info @@ -0,0 +1,10 @@ +PRGNAM="pycxx" +VERSION="6.2.3" +HOMEPAGE="http://cxx.sourceforge.net/" +DOWNLOAD="http://downloads.sourceforge.net/project/cxx/CXX/PyCXX%20V6.2.3/pycxx-6.2.3.tar.gz" +MD5SUM="4e545ad225df9c14a3b344b1e6224661" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +MAINTAINER="Marco Bonetti" +EMAIL="sid77@slackware.it" +APPROVED="Niels Horn" diff --git a/python/pycxx/slack-desc b/python/pycxx/slack-desc new file mode 100644 index 0000000000..35b99d7b0b --- /dev/null +++ b/python/pycxx/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +pycxx: pycxx (Write Python Extensions in C++) +pycxx: +pycxx: PyCXX is designed to make it easier to extend Python with C++ +pycxx: +pycxx: http://cxx.sourceforge.net/ +pycxx: +pycxx: +pycxx: +pycxx: +pycxx: +pycxx: -- cgit v1.2.3