Skip to content

Commit

Permalink
Merge pull request #1196 from carloscbl/igraph
Browse files Browse the repository at this point in the history
Implemented igraph
  • Loading branch information
mhsmith authored Nov 1, 2024
2 parents 292fb21 + d08507c commit bfd2600
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 1 deletion.
2 changes: 1 addition & 1 deletion server/pypi/build-wheel.py
Original file line number Diff line number Diff line change
Expand Up @@ -704,7 +704,7 @@ def env_vars(self):
})

for var in self.meta["build"]["script_env"]:
key, value = var.split("=")
key, value = var.split("=", 1)
env[key] = value

# We do this unconditionally, because we don't know whether the package requires
Expand Down
16 changes: 16 additions & 0 deletions server/pypi/packages/igraph/arith-android64.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// See https://igraph.org/c/html/latest/igraph-Installation.html. Although that page
// says the following settings are for macOS, running arithchk on Android returns the
// same values, according to
// https://github.com/chaquo/chaquopy/pull/1196#discussion_r1825264094.

// f2c requires this setting even on ARM64.
#define IEEE_8087

#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define NANCHECK
#define QNaN0 0x0
#define QNaN1 0x7ff80000
26 changes: 26 additions & 0 deletions server/pypi/packages/igraph/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package:
name: igraph
version: "0.11.8"

build:
number: 1
script_env:
- MAKEFLAGS=-j${CPU_COUNT}

# For the F2C and IEEE settings, see arith-android64.h.
#
# LTO is disabled because it doesn't pass the necessary argument to the linker
# (https://github.com/android/ndk/issues/2069#issuecomment-2347153515).
#
# OpenMP is disabled so we can avoid testing and releasing a new version of
# chaquopy-libomp.
- >-
IGRAPH_CMAKE_EXTRA_ARGS=
-DF2C_EXTERNAL_ARITH_HEADER=../../../../../../../arith-android64.h
-DIEEE754_DOUBLE_ENDIANNESS_MATCHES=ON
-DIGRAPH_ENABLE_LTO=OFF
-DIGRAPH_OPENMP_SUPPORT=OFF
requirements:
build:
- cmake 3.28.1
51 changes: 51 additions & 0 deletions server/pypi/packages/igraph/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import unittest


class TestIgraph(unittest.TestCase):

def testGraphCreation(self):
from igraph import Graph
g = Graph()
self.assertTrue(isinstance(g, Graph))
self.assertTrue(g.vcount() == 0 and g.ecount() == 0 and not g.is_directed())

g = Graph(3, [(0, 1), (1, 2), (2, 0)])
self.assertTrue(
g.vcount() == 3
and g.ecount() == 3
and not g.is_directed()
and g.is_simple()
)

g = Graph(2, [(0, 1), (1, 2), (2, 3)], True)
self.assertTrue(
g.vcount() == 4 and g.ecount() == 3 and g.is_directed() and g.is_simple()
)

g = Graph([(0, 1), (1, 2), (2, 1)])
self.assertTrue(
g.vcount() == 3
and g.ecount() == 3
and not g.is_directed()
and not g.is_simple()
)

g = Graph(((0, 1), (0, 0), (1, 2)))
self.assertTrue(
g.vcount() == 3
and g.ecount() == 3
and not g.is_directed()
and not g.is_simple()
)

g = Graph(8, None)
self.assertEqual(8, g.vcount())
self.assertEqual(0, g.ecount())
self.assertFalse(g.is_directed())

g = Graph(edges=None)
self.assertEqual(0, g.vcount())
self.assertEqual(0, g.ecount())
self.assertFalse(g.is_directed())

self.assertRaises(TypeError, Graph, edgelist=[(1, 2)])

0 comments on commit bfd2600

Please sign in to comment.