Skip to content

Commit

Permalink
chore: Update vendored sources to igraph/igraph@03760a0
Browse files Browse the repository at this point in the history
feat: allow NULL for cut_prob parameter of motif finding functions closes igraph/igraph#2555
docs: fix inaccuracy/typo in feedback_vertex_set() docs [skip ci]
fuzzer: update to libxml2 2.13.3 [skip ci]
chore: spelling in changelog [skip ci]
ci: temporarily disable ppc64 and s390x builds on Travis as the Travis infrastructure is currently broken
chore: bump cmake policy max
fix: fix type of result argument in igraph_feedback_vertex_set()
chore: update changelog
feat: igraph_feedback_vertex_set()
refactor: refer to igraph in a uniform way in headers, and minor code cleanup
doc: fix typo [skip ci]
chore: clarifying comment for cycle finding [skip ci]
refactor: work around GCC warning in feedback arc set implementation
chore: add missing copyright header to new feedback arc set test
ci: disable emulated checks on push; they can be started manually instead
ci: test on multiple architectures using emulation
refactor: further minor cleanup in feedback arc set
refactor: clean up Eades algorithm implementation for feedback arc set
refactor: rename IGRAPH_FAS_EXACT_IP_TO to IGRAPH_FAS_EXACT_IP_TI and expand docs
fix: feedback_arc_set() now disallows non-finite weights
chore: update changelog
feat: much faster exact minimum feedback arc set finding
feat: igraph_find_cycle()
feat: igraph_bitset_update()
chore: update changelog [skip ci]
feat: igraph_vector_reverse_section() and igraph_vector_rotate_left()
feat: igraph_strvector_swap_elements()
fix: the documented igraph_strvector_resize_min() was missing from headers
fix: memory cleanup order in Pajek reader
chore: code formatting [skip ci]
fix: Pajek reader warns about duplicate vertex IDs, fixes igraph/igraph#2416
refactor: minor cleanup in DIMACS flow writer
chore: update changelog [skip ci]
refactor: rename vector_contains() parameter in header as well
refactor: rename parameter in vector_contains() for consistency
deprecate: `igraph_vector_binsearch2()` is deprecated in favour of `igraph_vector_contains_sorted()`
deprecate: `igraph_vector_qsort_ind()` is deprecated in favour of `igraph_vector_sort_ind()`, closes igraph/igraph#2616
ci: more colour
fix: remove macros referencing non-existent vector_list_t types, refs igraph/igraph#2662
refactor: clean up igraph_compose()
test: test igraph_malloc()
test: memory allocation tests
doc: clean up memory allocation docs, fix non-included section
refactor: make variables more local in UMAP
fix: restore functionality of UMAP_DEBUG
chore: update changelog
fix: add missing error check in UMAP
fix: properly center UMAP layout in 3D
refactor: readability cleanup in UMAP code
fix: crash in igraph_layout_umap() when passing distances == NULL and distance_are_weights == true
refactor: adjlist_has_edge / adjlist_replace_edge cleanup
refactor: igraph_set_t formatting nitpicks
refactor: better error message in rewire()
refactor: more cleanup in fr layout
fuzzing: add misc_algos_weighted fuzzer which was already on the develop branch
refactor: readability and header fix in umap implementation
refactor: readability in kk and fr layout implementations
doc: doc improvements for chung_lu and watts_strogatz
chore: fix typos in changelog [skip ci]
doc: document vector_is_equal() ref igraph/igraph#2653
deprecate: igraph_array3_t
refactor: config header cleanup
ci: attempt to fix manual branch selection for coverity run again
test: fix memory leak in igraph_modularity() test
ci: fix manual selection of branch for coverity workflow
fix: memory leak introduced with previous fixes
chore: update changelog
chore: fix typo in parameter name
fix: add missing error check
fix: null-dereference in community_optimal_modularity() when passing the null or singleton graph, requesting modularity, but not requesting membership
fix: null-dereference in igraph_community_voronoi() when membership == NULL and modularity != NULL
fix: igraph_modularity() no longer allows NULL for 'modularity' as this is pointless and wasn't working correctly anyway
doc: documentation nitpicks and standardization
chore: update changelog [skip ci]
fix: work around potential infinite loop in igraph_community_multilevel() by repeated re-randomization of the vertex processing order fixes igraph/igraph#2650
fuzzer: use libxml2 2.13.2 [skip ci]
doc: fix typos in shortest paths docs
chore: update changelog [skip ci]
bench: fix memory leak in igraph_tree_game() benchmark
bench: fix memory leak in induced_subgraph_edges() benchmark
bench: minor cleanup and copyright headers
bench: add Leiden, Louvain community detection benchmark
chore: fix typo in changelog [skip ci]
chore: fix copyright headers in bitset source files
doc: improve bitset docs
chore: update changelog [skip ci]
doc: update old reference to deprecated function
doc: some improved doc formatting
chore: stylistic nitpick [skip ci]
doc: fix misformatting in bitset docs that prevented the inclusion of a doc line
doc: remove mention of long-remove stack_ptr_t
ci: move coverity over to develop
refactor: deprecate igraph_minimum_spanning_tree_(prim|unweighted)()
chore: correct Zenodo DOI
chore: Delete CODE_OF_CONDUCT.md (igraph/igraph#2645)
doc: commnity detection doc polish
doc: fix typo  [skip ci]
interface: add default variant for Floyd-Warshall
chore: fix typo in docs [skip ci]
  • Loading branch information
szhorvat authored and krlmlr committed Aug 22, 2024
1 parent 30e0f07 commit 9733b8d
Show file tree
Hide file tree
Showing 92 changed files with 2,141 additions and 1,201 deletions.
38 changes: 38 additions & 0 deletions R/aaa-auto.R
Original file line number Diff line number Diff line change
Expand Up @@ -1231,6 +1231,27 @@ feedback_arc_set_impl <- function(graph, weights=NULL, algo=c("approx_eades", "e
res
}

feedback_vertex_set_impl <- function(graph, weights=NULL, algo=EXACT_IP) {
# Argument checks
ensure_igraph(graph)
if (is.null(weights) && "weight" %in% vertex_attr_names(graph)) {
weights <- V(graph)$weight
}
if (!is.null(weights) && any(!is.na(weights))) {
weights <- as.numeric(weights)
} else {
weights <- NULL
}

on.exit( .Call(R_igraph_finalizer) )
# Function call
res <- .Call(R_igraph_feedback_vertex_set, graph, weights, algo)
if (igraph_opt("return.vs.es")) {
res <- create_vs(graph, res)
}
res
}

is_loop_impl <- function(graph, eids=E(graph)) {
# Argument checks
ensure_igraph(graph)
Expand Down Expand Up @@ -3511,6 +3532,23 @@ solve_lsap_impl <- function(c, n) {
res
}

find_cycle_impl <- function(graph, mode) {
# Argument checks
ensure_igraph(graph)
mode <- switch(igraph.match.arg(mode), "out"=1L, "in"=2L, "all"=3L, "total"=3L)

on.exit( .Call(R_igraph_finalizer) )
# Function call
res <- .Call(R_igraph_find_cycle, graph, mode)
if (igraph_opt("return.vs.es")) {
res$vertices <- create_vs(graph, res$vertices)
}
if (igraph_opt("return.vs.es")) {
res$edges <- create_es(graph, res$edges)
}
res
}

is_eulerian_impl <- function(graph) {
# Argument checks
ensure_igraph(graph)
Expand Down
4 changes: 4 additions & 0 deletions src/cpp11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,9 @@ extern SEXP R_igraph_extended_chordal_ring(SEXP, SEXP, SEXP);
extern SEXP R_igraph_famous(SEXP);
extern SEXP R_igraph_farthest_points(SEXP, SEXP, SEXP, SEXP);
extern SEXP R_igraph_feedback_arc_set(SEXP, SEXP, SEXP);
extern SEXP R_igraph_feedback_vertex_set(SEXP, SEXP, SEXP);
extern SEXP R_igraph_finalizer(void);
extern SEXP R_igraph_find_cycle(SEXP, SEXP);
extern SEXP R_igraph_forest_fire_game(SEXP, SEXP, SEXP, SEXP, SEXP);
extern SEXP R_igraph_from_hrg_dendrogram(SEXP);
extern SEXP R_igraph_from_prufer(SEXP);
Expand Down Expand Up @@ -619,7 +621,9 @@ static const R_CallMethodDef CallEntries[] = {
{"R_igraph_famous", (DL_FUNC) &R_igraph_famous, 1},
{"R_igraph_farthest_points", (DL_FUNC) &R_igraph_farthest_points, 4},
{"R_igraph_feedback_arc_set", (DL_FUNC) &R_igraph_feedback_arc_set, 3},
{"R_igraph_feedback_vertex_set", (DL_FUNC) &R_igraph_feedback_vertex_set, 3},
{"R_igraph_finalizer", (DL_FUNC) &R_igraph_finalizer, 0},
{"R_igraph_find_cycle", (DL_FUNC) &R_igraph_find_cycle, 2},
{"R_igraph_forest_fire_game", (DL_FUNC) &R_igraph_forest_fire_game, 5},
{"R_igraph_from_hrg_dendrogram", (DL_FUNC) &R_igraph_from_hrg_dendrogram, 1},
{"R_igraph_from_prufer", (DL_FUNC) &R_igraph_from_prufer, 1},
Expand Down
98 changes: 92 additions & 6 deletions src/rinterface.c
Original file line number Diff line number Diff line change
Expand Up @@ -3755,6 +3755,39 @@ SEXP R_igraph_feedback_arc_set(SEXP graph, SEXP weights, SEXP algo) {
return(r_result);
}

/*-------------------------------------------/
/ igraph_feedback_vertex_set /
/-------------------------------------------*/
SEXP R_igraph_feedback_vertex_set(SEXP graph, SEXP weights, SEXP algo) {
/* Declarations */
igraph_t c_graph;
igraph_vector_int_t c_result;
igraph_vector_t c_weights;
igraph_fvs_algorithm_t c_algo;
SEXP result;

SEXP r_result;
/* Convert input */
R_SEXP_to_igraph(graph, &c_graph);
if (0 != igraph_vector_int_init(&c_result, 0)) {
igraph_error("", __FILE__, __LINE__, IGRAPH_ENOMEM);
}
IGRAPH_FINALLY(igraph_vector_int_destroy, &c_result);
if (!Rf_isNull(weights)) { R_SEXP_to_vector(weights, &c_weights); }
c_algo = (igraph_fvs_algorithm_t) Rf_asInteger(algo);
/* Call igraph */
IGRAPH_R_CHECK(igraph_feedback_vertex_set(&c_graph, &c_result, (Rf_isNull(weights) ? 0 : &c_weights), c_algo));

/* Convert output */
PROTECT(result=R_igraph_vector_int_to_SEXPp1(&c_result));
igraph_vector_int_destroy(&c_result);
IGRAPH_FINALLY_CLEAN(1);
r_result = result;

UNPROTECT(1);
return(r_result);
}

/*-------------------------------------------/
/ igraph_is_loop /
/-------------------------------------------*/
Expand Down Expand Up @@ -8638,9 +8671,11 @@ SEXP R_igraph_motifs_randesu(SEXP graph, SEXP size, SEXP cut_prob) {
IGRAPH_FINALLY(igraph_vector_destroy, &c_hist);
IGRAPH_R_CHECK_INT(size);
c_size = (igraph_integer_t) REAL(size)[0];
R_SEXP_to_vector(cut_prob, &c_cut_prob);
if (!Rf_isNull(cut_prob)) {
R_SEXP_to_vector(cut_prob, &c_cut_prob);
}
/* Call igraph */
IGRAPH_R_CHECK(igraph_motifs_randesu(&c_graph, &c_hist, c_size, &c_cut_prob));
IGRAPH_R_CHECK(igraph_motifs_randesu(&c_graph, &c_hist, c_size, (Rf_isNull(cut_prob) ? 0 : &c_cut_prob)));

/* Convert output */
PROTECT(hist=R_igraph_vector_to_SEXP(&c_hist));
Expand Down Expand Up @@ -8671,7 +8706,9 @@ SEXP R_igraph_motifs_randesu_estimate(SEXP graph, SEXP size, SEXP cut_prob, SEXP
c_est=0;
IGRAPH_R_CHECK_INT(size);
c_size = (igraph_integer_t) REAL(size)[0];
R_SEXP_to_vector(cut_prob, &c_cut_prob);
if (!Rf_isNull(cut_prob)) {
R_SEXP_to_vector(cut_prob, &c_cut_prob);
}
IGRAPH_R_CHECK_INT(sample_size);
c_sample_size = (igraph_integer_t) REAL(sample_size)[0];
if (!Rf_isNull(sample)) {
Expand All @@ -8682,7 +8719,7 @@ SEXP R_igraph_motifs_randesu_estimate(SEXP graph, SEXP size, SEXP cut_prob, SEXP
IGRAPH_FINALLY(igraph_vector_int_destroy, &c_sample);
}
/* Call igraph */
IGRAPH_R_CHECK(igraph_motifs_randesu_estimate(&c_graph, &c_est, c_size, &c_cut_prob, c_sample_size, (Rf_isNull(sample) ? 0 : &c_sample)));
IGRAPH_R_CHECK(igraph_motifs_randesu_estimate(&c_graph, &c_est, c_size, (Rf_isNull(cut_prob) ? 0 : &c_cut_prob), c_sample_size, (Rf_isNull(sample) ? 0 : &c_sample)));

/* Convert output */
PROTECT(est=NEW_NUMERIC(1));
Expand Down Expand Up @@ -8712,9 +8749,11 @@ SEXP R_igraph_motifs_randesu_no(SEXP graph, SEXP size, SEXP cut_prob) {
c_no=0;
IGRAPH_R_CHECK_INT(size);
c_size = (igraph_integer_t) REAL(size)[0];
R_SEXP_to_vector(cut_prob, &c_cut_prob);
if (!Rf_isNull(cut_prob)) {
R_SEXP_to_vector(cut_prob, &c_cut_prob);
}
/* Call igraph */
IGRAPH_R_CHECK(igraph_motifs_randesu_no(&c_graph, &c_no, c_size, &c_cut_prob));
IGRAPH_R_CHECK(igraph_motifs_randesu_no(&c_graph, &c_no, c_size, (Rf_isNull(cut_prob) ? 0 : &c_cut_prob)));

/* Convert output */
PROTECT(no=NEW_NUMERIC(1));
Expand Down Expand Up @@ -11118,6 +11157,53 @@ SEXP R_igraph_solve_lsap(SEXP c, SEXP n) {
return(r_result);
}

/*-------------------------------------------/
/ igraph_find_cycle /
/-------------------------------------------*/
SEXP R_igraph_find_cycle(SEXP graph, SEXP mode) {
/* Declarations */
igraph_t c_graph;
igraph_vector_int_t c_vertices;
igraph_vector_int_t c_edges;
igraph_neimode_t c_mode;
SEXP vertices;
SEXP edges;

SEXP r_result, r_names;
/* Convert input */
R_SEXP_to_igraph(graph, &c_graph);
if (0 != igraph_vector_int_init(&c_vertices, 0)) {
igraph_error("", __FILE__, __LINE__, IGRAPH_ENOMEM);
}
IGRAPH_FINALLY(igraph_vector_int_destroy, &c_vertices);
if (0 != igraph_vector_int_init(&c_edges, 0)) {
igraph_error("", __FILE__, __LINE__, IGRAPH_ENOMEM);
}
IGRAPH_FINALLY(igraph_vector_int_destroy, &c_edges);
c_mode = (igraph_neimode_t) Rf_asInteger(mode);
/* Call igraph */
IGRAPH_R_CHECK(igraph_find_cycle(&c_graph, &c_vertices, &c_edges, c_mode));

/* Convert output */
PROTECT(r_result=NEW_LIST(2));
PROTECT(r_names=NEW_CHARACTER(2));
PROTECT(vertices=R_igraph_vector_int_to_SEXPp1(&c_vertices));
igraph_vector_int_destroy(&c_vertices);
IGRAPH_FINALLY_CLEAN(1);
PROTECT(edges=R_igraph_vector_int_to_SEXPp1(&c_edges));
igraph_vector_int_destroy(&c_edges);
IGRAPH_FINALLY_CLEAN(1);
SET_VECTOR_ELT(r_result, 0, vertices);
SET_VECTOR_ELT(r_result, 1, edges);
SET_STRING_ELT(r_names, 0, Rf_mkChar("vertices"));
SET_STRING_ELT(r_names, 1, Rf_mkChar("edges"));
SET_NAMES(r_result, r_names);
UNPROTECT(3);

UNPROTECT(1);
return(r_result);
}

/*-------------------------------------------/
/ igraph_is_eulerian /
/-------------------------------------------*/
Expand Down
20 changes: 10 additions & 10 deletions src/vendor/cigraph/.travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,17 @@ jobs:
- mkdir build && cd build
- cmake .. -DIGRAPH_USE_INTERNAL_BLAS=OFF -DIGRAPH_USE_INTERNAL_LAPACK=OFF -DIGRAPH_USE_INTERNAL_ARPACK=OFF -DIGRAPH_USE_INTERNAL_GLPK=OFF -DIGRAPH_USE_INTERNAL_GMP=OFF -DIGRAPH_VERIFY_FINALLY_STACK=OFF -DCMAKE_BUILD_TYPE=Debug -DIGRAPH_PRINT_ARITH_HEADER=ON -DUSE_SANITIZER=Address

- name: "Linux ppc64"
os: linux
arch: ppc64le
# - name: "Linux ppc64"
# os: linux
# arch: ppc64le

- name: "Linux s390x"
os: linux
arch: s390x
# Do not enable ASan, as it leads to linking errors.
before_script:
- mkdir build && cd build
- cmake .. -DIGRAPH_USE_INTERNAL_BLAS=ON -DIGRAPH_USE_INTERNAL_LAPACK=ON -DIGRAPH_USE_INTERNAL_ARPACK=ON -DIGRAPH_USE_INTERNAL_GLPK=ON -DIGRAPH_USE_INTERNAL_GMP=ON -DIGRAPH_VERIFY_FINALLY_STACK=ON -DCMAKE_BUILD_TYPE=Debug -DIGRAPH_PRINT_ARITH_HEADER=ON
# - name: "Linux s390x"
# os: linux
# arch: s390x
# # Do not enable ASan, as it leads to linking errors.
# before_script:
# - mkdir build && cd build
# - cmake .. -DIGRAPH_USE_INTERNAL_BLAS=ON -DIGRAPH_USE_INTERNAL_LAPACK=ON -DIGRAPH_USE_INTERNAL_ARPACK=ON -DIGRAPH_USE_INTERNAL_GLPK=ON -DIGRAPH_USE_INTERNAL_GMP=ON -DIGRAPH_VERIFY_FINALLY_STACK=ON -DCMAKE_BUILD_TYPE=Debug -DIGRAPH_PRINT_ARITH_HEADER=ON

#notifications:
# email:
Expand Down
40 changes: 38 additions & 2 deletions src/vendor/cigraph/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,46 @@

## [master]

### Added

- `igraph_bitset_update()` copies the contents of one bitset into another (experimental function).
- `igraph_vector_sort_ind()` (rename of `igraph_vector_qsort_ind()`).
- `igraph_vector_contains_sorted()` (rename of `igraph_vector_binsearch2()`).
- `igraph_vector_reverse_section()` reverses a contiguous section of a vector.
- `igraph_vector_rotate_left()` applies a cyclic permutation to a vector.
- `igraph_strvector_swap_elements()` swaps two strings in an `igraph_strvector_t`.
- `igraph_find_cycle()` finds a single cycle in a graph, if it exists (experimental function).
- `igraph_feedback_vertex_set()` finds a minimum feedback vertex set in a directed or undirected graph (experimental function).

### Changed

- `igraph_feedback_arc_set()` uses a much faster method for solving the exact minimum feedback arc set problem. The new method (`IGRAPH_FAS_EXACT_IP_CG`) is used by default (i.e. with `IGRAPH_FAS_EXACT_IP`), but the previous method is also kept available (`IGRAPH_FAS_EXACT_IP_TI`).
- `igraph_motifs_randesu()`, `igraph_motifs_randesu_callback()`, `igraph_motifs_randesu_estimate()` and `igraph_motifs_randesu_no()` now accept `NULL` for their `cut_prob` parameter, signifying that a complete search should be performed.

### Fixed

- `igraph_layout_drl()` and `igraph_layout_drl_3d()` would crash with an assertion failure when interrupted. This is now fixed.
- Removed broken interruption support from `igraph_community_spinglass_single()`.
- In rare cases `igraph_community_multilevel()` could enter an infinite loop. This is now corrected.
- Fixed null-dereference in `igraph_community_voronoi()` when requesting `modularity` but not `membership`.
- Fixed null-dereference in `igraph_community_optimal_modularity()` when requesting `modularity` but not `membership` and passing a null graph or singleton graph.
- `igraph_layout_umap()` and `igraph_layout_umap_3d()` would crash when passing `distances=NULL` and `distances_are_weights=true`. This is now fixed.
- `igraph_layout_umap()` and `igraph_layout_umap_3d()` would crash on interruption. This is now fixed.
- `igraph_read_graph_pajek()` now warns about duplicate vertex IDs in input files.
- The documented `igraph_strvector_resize_min()` was missing from headers.
- `igraph_feedback_arc_set()` now validates the edge weights.

### Deprecated

- `igraph_minimum_spanning_tree_prim()` and `igraph_minimum_spanning_tree_unweighted()` are deprecated. Use `igraph_minimum_spanning_tree()` in conjunction with `igraph_subgraph_from_edges()` instead.
- `igraph_array3_t` and all associated functions are deprecated and scheduled for removal in igraph 1.0.
- `igraph_vector_qsort_ind()` is deprecated in favour of `igraph_vector_sort_ind()`.
- `igraph_vector_binsearch2()` is deprecated in favour of `igraph_vector_contains_sorted()`.

### Other

- Fixed multiple memory leaks in benchmark programs.
- Documentation improvements.

## [0.10.13]

Expand Down Expand Up @@ -70,7 +106,7 @@

### Changed

- `igraph_eigenvector_centrality()` no longer issues a warning when the input is directed and weighted. When using this function, keep in mind that eigenvector centrality is well-defined only for (strongly) connected graphs, and edges with a zero weights are effectively treated as absent.
- `igraph_eigenvector_centrality()` no longer issues a warning when the input is directed and weighted. When using this function, keep in mind that eigenvector centrality is well-defined only for (strongly) connected graphs, and edges with zero weights are effectively treated as absent.

### Deprecated

Expand Down Expand Up @@ -419,7 +455,7 @@ Some of the highlights are:
- The random number generator interface, `igraph_rng_type_t`, has been overhauled. Check the declaration of the type for details.
- The default random number generator has been changed from Mersenne Twister to PCG32.
- Functions related to spectral coarse graining (i.e. all functions starting with `igraph_scg_...`) were separated into a project of its own. If you wish to keep on using these functions, please refer to the repository hosting the spectral coarse graining code at https://github.com/igraph/igraph-scg . The spectral coarse graining code was updated to support igraph 0.10.
- Since `igraph_integer_t` aims to be the largest integer size that is feasible on a particular platform, there is no need for generic data types based on `long int` any more. The `long` variants of generic data types (e.g., `igraph_vector_long_t`) are therefore removed; you should use the corresponding `int` variant instead, whose elements are of type `igraph_integer_t`.
- Since `igraph_integer_t` aims to be the largest integer size that is feasible on a particular platform, there is no need for generic data types based on `long int` anymore. The `long` variants of generic data types (e.g., `igraph_vector_long_t`) are therefore removed; you should use the corresponding `int` variant instead, whose elements are of type `igraph_integer_t`.
- Generic data types based on `float` were removed as they were not used anywhere in the library.
- Several igraph functions that used to take a `long int` or return a `long int` now takes or returns an `igraph_integer_t` instead to make the APIs more consistent. Similarly, igraph functions that used `igraph_vector_t` for arguments that take or return _integral_ vectors (e.g., vertex or edge indices) now take `igraph_vector_int_t` instead. Graph-related functions where the API was changed due to this reason are listed below, one by one.
- Similarly, igraph functions that used to accept the `long` variant of a generic igraph data type (e.g., `igraph_vector_long_t`) now take the `int` variant of the same data type.
Expand Down
2 changes: 1 addition & 1 deletion src/vendor/cigraph/CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ authors:
family-names: Noom
identifiers:
- type: doi
value: 10.5281/zenodo.4319996
value: 10.5281/zenodo.3630268
description: Zenodo
repository-code: 'https://github.com/igraph/igraph'
url: 'https://igraph.org'
Expand Down
2 changes: 1 addition & 1 deletion src/vendor/cigraph/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# * SKIP_REGULAR_EXPRESSION to handle skipped tests properly (3.16)
# * CheckLinkerFlag for HAVE_NEW_DTAGS test (3.18)
# * cmake -E cat (3.18)
cmake_minimum_required(VERSION 3.18...3.29)
cmake_minimum_required(VERSION 3.18...3.30)

# Add etc/cmake to CMake's search path so we can put our private stuff there
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/etc/cmake)
Expand Down
Loading

0 comments on commit 9733b8d

Please sign in to comment.