Skip to content

Commit c1ca120

Browse files
committed
Merge pull request kivy#171 from LogicalDash/igraph
recipes for igraph, a hi-performance library of graph algorithms
2 parents 937f873 + 6a85278 commit c1ca120

13 files changed

+256
-0
lines changed

recipes/c_igraph/Makefile.am.patch

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
68,72d67
2+
< f2c/arith.h: f2c/arithchk.c
3+
< $(CC) $(CFLAGS) -DNO_FPINIT f2c/arithchk.c -lm -o f2c/arith || \
4+
< $(CC) -DNO_LONG_LONG $(CFLAGS) -DNO_FPINIT f2c/arithchk.c \
5+
< $(WARNING_CFLAGS) -lm -o f2c/arith
6+
< f2c/arith > f2c/arith.h

recipes/c_igraph/arith.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#define IEEE_8087
2+
#define Arith_Kind_ASL 1
3+
#define Double_Align
4+
#define NANCHECK
5+
#define QNaN0 0x0
6+
#define QNaN1 0x7ff80000

recipes/c_igraph/config.h.patch

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
--- build/c_igraph/igraph-0.6.5/config.h 2013-11-05 14:10:26.285433616 -0500
2+
+++ config.h 2013-11-05 14:12:36.431283045 -0500
3+
@@ -53,7 +53,7 @@
4+
/* #undef HAVE_LOG2 */
5+
6+
/* Define to 1 if you have the `logbl' function. */
7+
-/* #undef HAVE_LOGBL */
8+
+#define HAVE_LOGBL 1
9+
10+
/* Define to 1 if you have the <memory.h> header file. */
11+
#define HAVE_MEMORY_H 1

recipes/c_igraph/recipe.sh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
3+
# Recipe for igraph, a high performance graph library in C: http://igraph.org
4+
#
5+
# Written by Zachary Spector: https://github.com/LogicalDash/
6+
#
7+
#
8+
9+
VERSION_c_igraph=${VERSION_c_igraph:0.6.5}
10+
11+
DEPS_c_igraph=()
12+
13+
URL_c_igraph=http://downloads.sourceforge.net/project/igraph/C%20library/0.6.5/igraph-0.6.5.tar.gz
14+
15+
MD5_c_igraph=5f9562263ba78b31c564d6897ff5a110
16+
17+
BUILD_c_igraph=$BUILD_PATH/c_igraph/$(get_directory $URL_c_igraph)
18+
19+
RECIPE_c_igraph=$RECIPES_PATH/c_igraph
20+
21+
function prebuild_c_igraph() {
22+
true
23+
}
24+
25+
function shouldbuild_c_igraph() {
26+
if [ -e $BUILD_c_igraph/.built ]; then
27+
export DO_BUILD=0;
28+
fi
29+
}
30+
31+
function build_c_igraph() {
32+
cd $BUILD_c_igraph
33+
34+
push_arm
35+
try patch $BUILD_c_igraph/src/Makefile.am $RECIPE_c_igraph/Makefile.am.patch
36+
export OLD_CPPFLAGS="$CPPFLAGS"
37+
export CPPFLAGS="$CPPFLAGS -I$ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/4.4.3/include -I$ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include -L$ANDROIDNDK/platforms/android-$ANDROIDAPI/arch-arm/usr/lib"
38+
try ./configure --prefix="$BUILD_PATH/python-install" --build=i686-pc-linux-gnu --host=arm-linux-eabi
39+
export CPPFLAGS="$OLD_CPPFLAGS"
40+
try cp -f $RECIPE_c_igraph/arith.h $BUILD_c_igraph/src/f2c/arith.h
41+
try patch $BUILD_c_igraph/src/f2c/sysdep1.h $RECIPE_c_igraph/sysdep1.h.patch
42+
try patch $BUILD_c_igraph/src/f2c/uninit.c $RECIPE_c_igraph/uninit.c.patch
43+
try patch $BUILD_c_igraph/config.h $RECIPE_c_igraph/config.h.patch
44+
try $MAKE
45+
try $MAKE install
46+
47+
pop_arm
48+
touch .built
49+
}
50+
51+
function postbuild_c_igraph() {
52+
true
53+
}

recipes/c_igraph/sysdep1.h.patch

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
16a17
2+
> /*android doesn't like these
3+
18c19,20
4+
< #define OFF_T __off64_t
5+
---
6+
> #define OFF_T __off64_t*/
7+
> #define OFF_T long

recipes/c_igraph/uninit.c.patch

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
276c276,277
2+
< #include <fpu_control.h>
3+
---
4+
> //doesn't exist on Android
5+
> //#include <fpu_control.h>
6+
334a336
7+
> /*
8+
336c338
9+
< #define RQD_FPU_MASK (_FPU_MASK_OM+_FPU_MASK_IM+_FPU_MASK_ZM)
10+
---
11+
> #define RQD_FPU_MASK (_FPU_MASK_OM+_FPU_MASK_IM+_FPU_MASK_ZM)*/
12+
343a346
13+
> /*
14+
345c348
15+
< #define RQD_FPU_MASK (_FPU_MASK_OM+_FPU_MASK_IM+_FPU_MASK_ZM)
16+
---
17+
> #define RQD_FPU_MASK (_FPU_MASK_OM+_FPU_MASK_IM+_FPU_MASK_ZM)*/
18+
350a354
19+
> /*
20+
352c356
21+
< #define RQD_FPU_MASK (_FPU_MASK_O+_FPU_MASK_V+_FPU_MASK_Z)
22+
---
23+
> #define RQD_FPU_MASK (_FPU_MASK_O+_FPU_MASK_V+_FPU_MASK_Z)*/

recipes/igraph/Makefile.am.patch

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
170c170,180
2+
< scg_headers.h igraph_hacks_internal.h
3+
---
4+
> scg_headers.h igraph_hacks_internal.h \
5+
> arpackobject.h \
6+
> pyattributes.h bfsiter.h \
7+
> common.h convert.h \
8+
> edgeobject.h edgeseqobject.h \
9+
> error.h filehandle.h \
10+
> graphobject.h igraphmodule_api.h \
11+
> indexing.h platform.h \
12+
> py2compat.h pyhelpers.h \
13+
> pyrandom.h vertexobject.h \
14+
> vertexseqobject.h
15+
260c270,287
16+
< qsort.c qsort_r.c types.c hacks.c
17+
---
18+
> qsort.c qsort_r.c types.c hacks.c \
19+
> arpackobject.c \
20+
> pyattributes.c \
21+
> bfsiter.c \
22+
> common.c \
23+
> convert.c \
24+
> edgeobject.c \
25+
> edgeseqobject.c \
26+
> error.c \
27+
> filehandle.c \
28+
> graphobject.c \
29+
> igraphmodule.c \
30+
> indexing.c \
31+
> py2compat.c \
32+
> pyhelpers.c \
33+
> pyrandom.c \
34+
> vertexobject.c \
35+
> vertexseqobject.c
36+
263,265c290,292
37+
< libigraph_la_CFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(WARNING_CFLAGS)
38+
< libigraph_la_CXXFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(WARNING_CFLAGS)
39+
< libigraph_la_LDFLAGS = -no-undefined
40+
---
41+
> libigraph_la_CFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(WARNING_CFLAGS) -IBUILD_PATH/python-install/include/python2.7
42+
> libigraph_la_CXXFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(WARNING_CFLAGS) -IBUILD_PATH/python-install/include/python2.7
43+
> libigraph_la_LDFLAGS = -no-undefined -LBUILD_PATH/python-install/lib -IBUILD_PATH/python-install/include/python2.7
44+
267c294
45+
< $(LAPACK_LIB) $(ARPACK_LIB) $(GLPK_LIB) $(PLFIT_LIB)
46+
---
47+
> $(LAPACK_LIB) $(ARPACK_LIB) $(GLPK_LIB) $(PLFIT_LIB) -lpython2.7

recipes/igraph/config.h.in.patch

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1a2
2+
> #define HAVE_LOGBL 1

recipes/igraph/config.h.patch

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2a3
2+
> #define HAVE_LOGBL 1

recipes/igraph/configure.ac.patch

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
43c43
2+
< AC_CHECK_FUNCS([expm1 rint rintf finite log2 logbl snprintf log1p round fabsl fmin strcasecmp isnan strdup _strdup ftruncate stpcpy])
3+
---
4+
> AC_CHECK_FUNCS([expm1 rint rintf finite log2 snprintf log1p round fabsl fmin strcasecmp isnan strdup _strdup ftruncate stpcpy])

recipes/igraph/get_platform.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from distutils.util import get_platform
2+
from sys import version
3+
print get_platform() + '-' + version[:3]

recipes/igraph/recipe.sh

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/bash
2+
3+
# Recipe for the Python interface to igraph, a high-performance graph library in C: http://igraph.org/
4+
#
5+
# Written by Zachary Spector: https://github.com/LogicalDash/
6+
7+
VERSION_igraph=${VERSION_igraph:0.6.5}
8+
9+
DEPS_igraph=(c_igraph python)
10+
11+
URL_igraph=http://pypi.python.org/packages/source/p/python-igraph/python-igraph-0.6.5.tar.gz
12+
13+
MD5_igraph=c626585baf003af855c0dc4eec0c9baa
14+
15+
BUILD_igraph=$BUILD_PATH/igraph/$(get_directory $URL_igraph)
16+
17+
RECIPE_igraph=$RECIPES_PATH/igraph
18+
19+
20+
function prebuild_igraph() {
21+
patch setup.py $RECIPE_igraph/setup.py.patch
22+
}
23+
24+
function shouldbuild_igraph() {
25+
if [ -e $BUILD_igraph/.built ]; then
26+
export DO_BUILD=0;
27+
fi
28+
}
29+
30+
function build_igraph() {
31+
cd $BUILD_igraph
32+
push_arm
33+
34+
try $HOSTPYTHON setup.py build_ext -I"$BUILD_PATH/python-install/include/igraph:$ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include" -L"$BUILD_PATH/python-install/lib:$ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi" -l gnustl_static -p arm-gnueabi install
35+
36+
pop_arm
37+
touch .built
38+
}
39+
40+
function postbuild_igraph() {
41+
true
42+
}

recipes/igraph/setup.py.patch

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
--- /home/sanotehu/Downloads/python-igraph-0.6.5/setup.py 2013-02-27 06:04:09.000000000 -0500
2+
+++ build/igraph/python-igraph-0.6.5/setup.py 2013-11-06 08:54:17.944200143 -0500
3+
@@ -19,7 +19,7 @@
4+
from shutil import copy2
5+
from subprocess import Popen, PIPE
6+
7+
-LIBIGRAPH_FALLBACK_INCLUDE_DIRS = ['/usr/include/igraph', '/usr/local/include/igraph']
8+
+LIBIGRAPH_FALLBACK_INCLUDE_DIRS = ['../../python-install/include/igraph', '../../python-install/include/python2.7']
9+
LIBIGRAPH_FALLBACK_LIBRARIES = ['igraph']
10+
LIBIGRAPH_FALLBACK_LIBRARY_DIRS = []
11+
12+
@@ -40,26 +40,15 @@
13+
14+
def detect_igraph_include_dirs(default = LIBIGRAPH_FALLBACK_INCLUDE_DIRS):
15+
"""Tries to detect the igraph include directory"""
16+
- line, exit_code = get_output("pkg-config igraph --cflags")
17+
- if exit_code > 0 or len(line) == 0:
18+
- return default
19+
- opts=line.split()
20+
- return [opt[2:] for opt in opts if opt.startswith("-I")]
21+
+ return default
22+
23+
def detect_igraph_libraries(default = LIBIGRAPH_FALLBACK_LIBRARIES):
24+
"""Tries to detect the libraries that igraph uses"""
25+
- line, exit_code = get_output("pkg-config igraph --libs")
26+
- if exit_code>0 or len(line) == 0:
27+
- return default
28+
- opts=line.split()
29+
- return [opt[2:] for opt in opts if opt.startswith("-l")]
30+
+ return default
31+
32+
def detect_igraph_library_dirs(default = LIBIGRAPH_FALLBACK_LIBRARY_DIRS):
33+
"""Tries to detect the igraph library directory"""
34+
- line, exit_code = get_output("pkg-config igraph --libs")
35+
- if exit_code>0 or len(line) == 0: return default
36+
- opts=line.split()
37+
- return [opt[2:] for opt in opts if opt[0:2]=="-L"]
38+
+ return default
39+
40+
sources=glob.glob(os.path.join('src', '*.c'))
41+
include_dirs=[]
42+
@@ -113,7 +102,7 @@
43+
Many thanks to the maintainers of this page!
44+
"""
45+
46+
-plat = get_platform()
47+
+plat = 'arm-gnueabi'
48+
options = dict(
49+
name = 'python-igraph',
50+
version = '0.6.5',

0 commit comments

Comments
 (0)