<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/e7ac16fcb9e82297c69b9d6cde34699a7f5a95d9">https://github.com/macports/macports-ports/commit/e7ac16fcb9e82297c69b9d6cde34699a7f5a95d9</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new e7ac16fcb9e py-igraph: add external_igraph variant
</span>e7ac16fcb9e is described below
<span style='display:block; white-space:pre;color:#808000;'>commit e7ac16fcb9e82297c69b9d6cde34699a7f5a95d9
</span>Author: Szabolcs Horvát <szhorvat@gmail.com>
AuthorDate: Tue Jun 1 17:32:41 2021 +0200
<span style='display:block; white-space:pre;color:#404040;'> py-igraph: add external_igraph variant
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * add external_igraph variant
</span><span style='display:block; white-space:pre;color:#404040;'> * fix linking to both libc++ and libstdc++
</span>---
python/py-igraph/Portfile | 79 ++++++++++++++--------
.../files/patch-use-correct-cpp-stdlib.diff | 46 +++++++++++++
2 files changed, 98 insertions(+), 27 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-igraph/Portfile b/python/py-igraph/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 69bb2a96db1..246d3d8b693 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-igraph/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-igraph/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,7 +6,7 @@ PortGroup python 1.0
</span> name py-igraph
python.rootname python-igraph
version 0.9.4
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 1
</span> categories-append math science
platforms darwin
license GPL-2+
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,19 +27,57 @@ checksums rmd160 f15a1da7e4163285b15de7a413a0f0727925926c \
</span> sha256 b1e4e3b8ea438f85e17874d0b0836107b437ebe68ae0b3be13d2ad399f45405d \
size 3611998
<span style='display:block; white-space:pre;background:#e0ffe0;'>+variant external_igraph description {Use external igraph library} { }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {${name} ne ${subport}} {
compiler.c_standard 1999
compiler.cxx_standard 2011
<span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_lib-append port:py${python.version}-texttable \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:arpack \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:glpk \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:gmp \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:libxml2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:SuiteSparse_CXSparse
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append port:py${python.version}-setuptools \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- path:bin/cmake:cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:py${python.version}-texttable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append port:py${python.version}-setuptools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[variant_isset external_igraph]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Build with external igraph library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:igraph
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append path:bin/pkg-config:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # To avoid building the vendored igraph, --use-pkg-config must be passed not only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # to setup.py build, but also to setup.py install. When updating post-0.9.4,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check if this is still necessary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.args-append --use-pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot.args-append --use-pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Build with vendored igraph library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:arpack \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:glpk \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gmp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libxml2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:SuiteSparse_CXSparse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_build-append path:bin/cmake:cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set extra_cmake_args {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DUSE_CCACHE=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DBUILD_SHARED_LIBS=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_ENABLE_LTO=AUTO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_GLPK_SUPPORT=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_GRAPHML_SUPPORT=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_USE_INTERNAL_ARPACK=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_USE_INTERNAL_BLAS=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_USE_INTERNAL_CXSPARSE=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_USE_INTERNAL_GLPK=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_USE_INTERNAL_GMP=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_USE_INTERNAL_LAPACK=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DIGRAPH_OPENMP_SUPPORT=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DBLA_VENDOR=Apple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build.env-append IGRAPH_CMAKE_EXTRA_ARGS=[join $extra_cmake_args]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
# python-igraph optionally makes use of these, and some tests depend on them.
# If they are not installed, the corresponding tests will simply be skipped.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -48,23 +86,10 @@ if {${name} ne ${subport}} {
</span> port:py${python.version}-pandas \
port:py${python.version}-scipy
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set extra_cmake_args {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DUSE_CCACHE=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DBUILD_SHARED_LIBS=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_ENABLE_LTO=AUTO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_GLPK_SUPPORT=ON
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_GRAPHML_SUPPORT=ON
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_USE_INTERNAL_ARPACK=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_USE_INTERNAL_BLAS=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_USE_INTERNAL_CXSPARSE=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_USE_INTERNAL_GLPK=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_USE_INTERNAL_GMP=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_USE_INTERNAL_LAPACK=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DBLA_VENDOR=Apple
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -DIGRAPH_OPENMP_SUPPORT=OFF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- build.env-append IGRAPH_CMAKE_EXTRA_ARGS=[join $extra_cmake_args]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Patch added for 0.9.4 to prevent linking both to libc++ and libstdc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # See https://github.com/igraph/python-igraph/commit/2ccf9e9b88c37fc277dbd8eb8e0bce0a73e33cae
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Safe to remove from future versions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles patch-use-correct-cpp-stdlib.diff
</span>
pre-test {
test.env PYTHONPATH=[glob -nocomplain ${worksrcpath}/build/lib*]
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-igraph/files/patch-use-correct-cpp-stdlib.diff b/python/py-igraph/files/patch-use-correct-cpp-stdlib.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8f63527d171
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-igraph/files/patch-use-correct-cpp-stdlib.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,46 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/setup.py b/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5f2e4a5..9163cab 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -420,6 +420,11 @@ class BuildConfiguration(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extra_libraries = os.environ["IGRAPH_EXTRA_DYNAMIC_LIBRARIES"].split(',')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ buildcfg.libraries.extend(extra_libraries)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ # Remove C++ standard library as we will use the C++ linker
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for lib in ("c++", "stdc++"):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if lib in buildcfg.libraries:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ buildcfg.libraries.remove(lib)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Prints basic build information
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ buildcfg.print_build_info()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -664,11 +669,6 @@ class BuildConfiguration(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def replace_static_libraries(self, only=None, exclusions=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """Replaces references to libraries with full paths to their static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ versions if the static version is to be found on the library path."""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- building_on_windows = building_on_windows_msvc()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if not building_on_windows and "stdc++" not in self.libraries:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- self.libraries.append("stdc++")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if exclusions is None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exclusions = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -757,6 +757,7 @@ buildcfg.process_args_from_command_line()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Define the extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sources = glob.glob(os.path.join("src", "_igraph", "*.c"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++sources.append(os.path.join("src", "_igraph", "force_cpp_linker.cpp"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ igraph_extension = Extension("igraph._igraph", sources)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ description = """Python interface to the igraph high performance graph
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/_igraph/force_cpp_linker.cpp b/src/_igraph/force_cpp_linker.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..d78b8f3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/_igraph/force_cpp_linker.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* The purpose of this file is to make Python use the C++ linker instead of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * the standard C linker because igraph's core static library needs the C++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * standard library */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span></pre><pre style='margin:0'>
</pre>