aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bonetti <sid77@slackware.it>2011-09-23 16:34:55 -0300
committerNiels Horn <niels.horn@slackbuilds.org>2011-09-23 16:34:55 -0300
commit4d96c6ff923adbd841299feb3f5dda9b95b2ec2a (patch)
tree27822c8df29fac49092473d0f1719fde13fa36a5
parent1fed481a94652ad55a2eca784342ef66a515c18e (diff)
python/pycxx: Added (Write Python Extensions in C++)
Signed-off-by: Niels Horn <niels.horn@slackbuilds.org>
-rw-r--r--python/pycxx/README29
-rw-r--r--python/pycxx/installpath.diff12
-rw-r--r--python/pycxx/pycxx.SlackBuild90
-rw-r--r--python/pycxx/pycxx.info10
-rw-r--r--python/pycxx/slack-desc19
5 files changed, 160 insertions, 0 deletions
diff --git a/python/pycxx/README b/python/pycxx/README
new file mode 100644
index 000000000000..f64ce1f6b6c8
--- /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 000000000000..f6281b8c6892
--- /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 000000000000..813159a0e295
--- /dev/null
+++ b/python/pycxx/pycxx.SlackBuild
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+# Slackware build script for pycxx.
+
+# Copyright 2011 Marco Bonetti <sid77@slackware.it>
+# 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 000000000000..dde6ee2f8f54
--- /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 000000000000..35b99d7b0bc9
--- /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: