From ec5f95f1eeeab7fa77450d7e9fc8b2629a0f99ea Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Tue, 8 Jul 2008 09:18:11 +0000 Subject: add python-opendir, an extension module using POSIX opendir semantics --- packages/python/python-opendir/.mtn2git_empty | 0 packages/python/python-opendir/opendir.pyx | 149 ++++++++++++++++++++++++++ packages/python/python-opendir/setup.py | 25 +++++ packages/python/python-opendir_1.0.bb | 15 +++ 4 files changed, 189 insertions(+) create mode 100644 packages/python/python-opendir/.mtn2git_empty create mode 100644 packages/python/python-opendir/opendir.pyx create mode 100644 packages/python/python-opendir/setup.py create mode 100644 packages/python/python-opendir_1.0.bb (limited to 'packages/python') diff --git a/packages/python/python-opendir/.mtn2git_empty b/packages/python/python-opendir/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/python/python-opendir/opendir.pyx b/packages/python/python-opendir/opendir.pyx new file mode 100644 index 0000000000..1ee81f7382 --- /dev/null +++ b/packages/python/python-opendir/opendir.pyx @@ -0,0 +1,149 @@ +############################################################## +# +# opendir.pyx - A class exposing the functionality of +# =========== the opendir() family of C libary functions. +# +# By Gregory Ewing +# greg.ewing@canterbury.ac.nz +# +# This software and derivative works created from it +# may be used and redistributed without restriction. +# +############################################################## + +cdef extern from "sys/errno.h": + int errno + +cdef extern from "stdio.h": + char *strerror(int) + +cdef extern from "dirent.h": + ctypedef struct DIR + struct dirent: + int d_namlen + char d_name[1] + DIR *c_opendir "opendir" (char *) + int readdir_r(DIR *, dirent *, dirent **) + long telldir(DIR *) + void seekdir(DIR *, long) + void rewinddir(DIR *) + int closedir(DIR *) + int dirfd(DIR *) + +#------------------------------------------------------------------ + +cdef class opendir: + """opendir(pathname) --> an open directory object + + Opens a directory and provides incremental access to + the filenames it contains. May be used as a file-like + object or as an iterator. + + When used as a file-like object, each call to read() + returns one filename, or an empty string when the end + of the directory is reached. The close() method should + be called when finished with the directory. + + The close() method should also be called when used as + an iterator and iteration is stopped prematurely. If + iteration proceeds to completion, the directory is + closed automatically.""" + + cdef DIR *dir + + def __cinit__(self, char *path): + self.dir = c_opendir(path) + if not self.dir: + raise IOError(errno, "%s: '%s'" % (strerror(errno), path)) + + def __dealloc__(self): + if self.dir: + closedir(self.dir) + + def read(self): + """read() --> filename or empty string + + Returns the next filename from the directory, or an empty + string if the end of the directory has been reached.""" + + cdef dirent entry, *result + check_open(self) + if readdir_r(self.dir, &entry, &result) < 0: + raise IOError(errno) + if result: + return entry.d_name + else: + return "" + + def tell(self): + """tell() --> position + + Returns a value representing the current position in the + directory, suitable for passing to tell(). Only valid for + this directory object as long as it remains open.""" + + check_open(self) + return telldir(self.dir) + + def seek(self, long pos): + """seek(position) + + Returns the directory to the specified position, which + should be a value previously returned by tell().""" + + check_open(self) + seekdir(self.dir, pos) + + def rewind(self): + """rewind() + + Resets the position to the beginning of the directory.""" + + check_open(self) + rewinddir(self.dir) + + def close(self): + """close() + + Closes the directory and frees the underlying file descriptor.""" + + if self.dir: + if closedir(self.dir) < 0: + raise IOError(errno) + self.dir = NULL + +# MaxOSX doesn't seem to have dirfd, despite what the +# man page says. :-( +# +# def fileno(self): +# """fileno() --> file descriptor +# +# Returns the file descriptor associated with the open directory.""" +# +# check_open(self) +# return dirfd(self.dir) + + def __iter__(self): + return self + + def __next__(self): + """next() --> filename + + Returns the next filename from the directory. If the end of the + directory has been reached, closes the directory and raises + StopIteration.""" + + if self.dir: + result = self.read() + if result: + return result + self.close() + raise StopIteration + +#------------------------------------------------------------------ + +cdef int check_open(opendir d) except -1: + if not d.dir: + raise ValueError("Directory is closed") + return 0 + diff --git a/packages/python/python-opendir/setup.py b/packages/python/python-opendir/setup.py new file mode 100644 index 0000000000..d76b22c95a --- /dev/null +++ b/packages/python/python-opendir/setup.py @@ -0,0 +1,25 @@ +from distutils.core import setup +from distutils.extension import Extension +from Cython.Distutils import build_ext + +setup( + name = 'opendir', + version = '0.0.1', + author = 'Gregory Ewing', + author_email = 'greg ewing at canterbury ac nz', + maintainer = 'Johannes "josch" Schauer', + maintainer_email = 'j schauer at email de', + description = 'Implements POSIX opendir', + classifiers = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Operating System :: POSIX', + 'Programming Language :: Pyrex', + 'Topic :: Software Development :: Libraries :: Python Modules', + 'Topic :: System :: Filesystems' + ], + ext_modules=[ + Extension("opendir", ["opendir.pyx"]), + ], + cmdclass = {'build_ext': build_ext} +) diff --git a/packages/python/python-opendir_1.0.bb b/packages/python/python-opendir_1.0.bb new file mode 100644 index 0000000000..88f22a1d9a --- /dev/null +++ b/packages/python/python-opendir_1.0.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "POSIX opendir support for Python" +SECTION = "devel/python" +PRIORITY = "optional" +LICENSE = "PD" +HOMEPAGE = "http://rabenfrost.net/mokopedia/opendir/" +DEPENDS = "python-pyrex-native python-cython-native" +PR = "ml0" + +SRC_URI = "\ + file://opendir.pyx \ + file://setup.py \ +" +S = "${WORKDIR}" + +inherit distutils -- cgit v1.2.3 From 04e7918253b3529f6a27eca15bab01b2cd01c998 Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Tue, 8 Jul 2008 13:39:54 +0000 Subject: python-{pyrex|cython}[-native] 0.9.x update to 0.9.8 --- packages/python/python-cython-native_0.9.6.9.bb | 9 --------- packages/python/python-cython-native_0.9.8.bb | 9 +++++++++ packages/python/python-cython_0.9.6.9.bb | 13 ------------- packages/python/python-cython_0.9.8.bb | 13 +++++++++++++ packages/python/python-pyrex-native_0.9.5.1a.bb | 9 --------- packages/python/python-pyrex-native_0.9.8.4.bb | 9 +++++++++ packages/python/python-pyrex_0.9.5.1a.bb | 14 -------------- packages/python/python-pyrex_0.9.8.4.bb | 14 ++++++++++++++ 8 files changed, 45 insertions(+), 45 deletions(-) delete mode 100644 packages/python/python-cython-native_0.9.6.9.bb create mode 100644 packages/python/python-cython-native_0.9.8.bb delete mode 100644 packages/python/python-cython_0.9.6.9.bb create mode 100644 packages/python/python-cython_0.9.8.bb delete mode 100644 packages/python/python-pyrex-native_0.9.5.1a.bb create mode 100644 packages/python/python-pyrex-native_0.9.8.4.bb delete mode 100644 packages/python/python-pyrex_0.9.5.1a.bb create mode 100644 packages/python/python-pyrex_0.9.8.4.bb (limited to 'packages/python') diff --git a/packages/python/python-cython-native_0.9.6.9.bb b/packages/python/python-cython-native_0.9.6.9.bb deleted file mode 100644 index cb7743e1bf..0000000000 --- a/packages/python/python-cython-native_0.9.6.9.bb +++ /dev/null @@ -1,9 +0,0 @@ -require python-cython_${PV}.bb -inherit native -DEPENDS = "python-native" -RDEPENDS = "" - -do_stage() { - BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ - ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR} -} diff --git a/packages/python/python-cython-native_0.9.8.bb b/packages/python/python-cython-native_0.9.8.bb new file mode 100644 index 0000000000..cb7743e1bf --- /dev/null +++ b/packages/python/python-cython-native_0.9.8.bb @@ -0,0 +1,9 @@ +require python-cython_${PV}.bb +inherit native +DEPENDS = "python-native" +RDEPENDS = "" + +do_stage() { + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR} +} diff --git a/packages/python/python-cython_0.9.6.9.bb b/packages/python/python-cython_0.9.6.9.bb deleted file mode 100644 index a513104108..0000000000 --- a/packages/python/python-cython_0.9.6.9.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \ -It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ -and the messy, low-level world of C." -SECTION = "devel/python" -PRIORITY = "optional" -LICENSE = "GPL" -SRCNAME = "cython" -PR = "ml0" - -SRC_URI = "http://www.cython.org/${SRCNAME}-${PV}.zip" -S = "${WORKDIR}/${SRCNAME}-${PV}" - -inherit distutils diff --git a/packages/python/python-cython_0.9.8.bb b/packages/python/python-cython_0.9.8.bb new file mode 100644 index 0000000000..f78ba38e87 --- /dev/null +++ b/packages/python/python-cython_0.9.8.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \ +It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ +and the messy, low-level world of C." +SECTION = "devel/python" +PRIORITY = "optional" +LICENSE = "GPL" +SRCNAME = "Cython" +PR = "ml0" + +SRC_URI = "http://www.cython.org/${SRCNAME}-${PV}.tar.gz" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils diff --git a/packages/python/python-pyrex-native_0.9.5.1a.bb b/packages/python/python-pyrex-native_0.9.5.1a.bb deleted file mode 100644 index d7ec81fd8e..0000000000 --- a/packages/python/python-pyrex-native_0.9.5.1a.bb +++ /dev/null @@ -1,9 +0,0 @@ -require python-pyrex_${PV}.bb -inherit native -DEPENDS = "python-native" -RDEPENDS = "" - -do_stage() { - BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ - ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR} -} diff --git a/packages/python/python-pyrex-native_0.9.8.4.bb b/packages/python/python-pyrex-native_0.9.8.4.bb new file mode 100644 index 0000000000..d7ec81fd8e --- /dev/null +++ b/packages/python/python-pyrex-native_0.9.8.4.bb @@ -0,0 +1,9 @@ +require python-pyrex_${PV}.bb +inherit native +DEPENDS = "python-native" +RDEPENDS = "" + +do_stage() { + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR} +} diff --git a/packages/python/python-pyrex_0.9.5.1a.bb b/packages/python/python-pyrex_0.9.5.1a.bb deleted file mode 100644 index d0a5f826e0..0000000000 --- a/packages/python/python-pyrex_0.9.5.1a.bb +++ /dev/null @@ -1,14 +0,0 @@ -DESCRIPTION = "Pyrex is a language specially designed for writing Python extension modules. \ -It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ -and the messy, low-level world of C." -SECTION = "devel/python" -PRIORITY = "optional" -LICENSE = "GPL" -SRCNAME = "Pyrex" -PR = "ml0" - -SRC_URI = "http://nz.cosc.canterbury.ac.nz/~greg/python/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -inherit distutils diff --git a/packages/python/python-pyrex_0.9.8.4.bb b/packages/python/python-pyrex_0.9.8.4.bb new file mode 100644 index 0000000000..d0a5f826e0 --- /dev/null +++ b/packages/python/python-pyrex_0.9.8.4.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Pyrex is a language specially designed for writing Python extension modules. \ +It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ +and the messy, low-level world of C." +SECTION = "devel/python" +PRIORITY = "optional" +LICENSE = "GPL" +SRCNAME = "Pyrex" +PR = "ml0" + +SRC_URI = "http://nz.cosc.canterbury.ac.nz/~greg/python/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils -- cgit v1.2.3 From 24a51ce6d225dff097ede2281fc3a688e63865fc Mon Sep 17 00:00:00 2001 From: Michael Lauer Date: Wed, 9 Jul 2008 12:12:08 +0000 Subject: python-cython[-native]: downgrade to 0.9.6.14 for the time being, 0.9.8 does not compile python-e* --- packages/python/python-cython-native_0.9.6.14.bb | 9 +++++++++ packages/python/python-cython_0.9.6.14.bb | 13 +++++++++++++ packages/python/python-cython_0.9.8.bb | 3 +++ 3 files changed, 25 insertions(+) create mode 100644 packages/python/python-cython-native_0.9.6.14.bb create mode 100644 packages/python/python-cython_0.9.6.14.bb (limited to 'packages/python') diff --git a/packages/python/python-cython-native_0.9.6.14.bb b/packages/python/python-cython-native_0.9.6.14.bb new file mode 100644 index 0000000000..cb7743e1bf --- /dev/null +++ b/packages/python/python-cython-native_0.9.6.14.bb @@ -0,0 +1,9 @@ +require python-cython_${PV}.bb +inherit native +DEPENDS = "python-native" +RDEPENDS = "" + +do_stage() { + BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ + ${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_BINDIR}/.. --install-data=${STAGING_DATADIR} +} diff --git a/packages/python/python-cython_0.9.6.14.bb b/packages/python/python-cython_0.9.6.14.bb new file mode 100644 index 0000000000..6077089bf2 --- /dev/null +++ b/packages/python/python-cython_0.9.6.14.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \ +It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ +and the messy, low-level world of C." +SECTION = "devel/python" +PRIORITY = "optional" +LICENSE = "GPL" +SRCNAME = "Cython" +PR = "ml0" + +SRC_URI = "http://pypi.python.org/packages/source/C/Cython/${SRCNAME}-${PV}.tar.gz" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit distutils diff --git a/packages/python/python-cython_0.9.8.bb b/packages/python/python-cython_0.9.8.bb index f78ba38e87..9243aa61f0 100644 --- a/packages/python/python-cython_0.9.8.bb +++ b/packages/python/python-cython_0.9.8.bb @@ -11,3 +11,6 @@ SRC_URI = "http://www.cython.org/${SRCNAME}-${PV}.tar.gz" S = "${WORKDIR}/${SRCNAME}-${PV}" inherit distutils + +DEFAULT_PREFERENCE = "-1" + -- cgit v1.2.3