Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doesn't build against igraph 0.10.3 (default version on fedora 38 and debian 12) #44

Closed
sporksmith opened this issue Jan 23, 2023 · 15 comments · Fixed by #54
Closed

Doesn't build against igraph 0.10.3 (default version on fedora 38 and debian 12) #44

sporksmith opened this issue Jan 23, 2023 · 15 comments · Fixed by #54

Comments

@sporksmith
Copy link
Contributor

I get:

/tgen/src/tgen-graph.c: In function '_tgengraph_hasSelfLoop':
/tgen/src/tgen-graph.c:423:45: warning: passing argument 2 of 'igraph_neighbors' from incompatible pointer type [-Wincompatible-pointer-types]
  423 |         result = igraph_neighbors(g->graph, resultNeighborVertices, vertexIndex, IGRAPH_OUT);
      |                                             ^~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             igraph_vector_t *
In file included from /usr/include/igraph/igraph.h:57,
                 from /tgen/src/tgen-graph.c:6:
/usr/include/igraph/igraph_interface.h:54:91: note: expected 'igraph_vector_int_t *' but argument is of type 'igraph_vector_t *'
   54 | IGRAPH_EXPORT igraph_error_t igraph_neighbors(const igraph_t *graph, igraph_vector_int_t *neis, igraph_integer_t vid,
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~
/tgen/src/tgen-graph.c:427:17: warning: 'igraph_vector_e' is deprecated [-Wdeprecated-declarations]
  427 |                 igraph_integer_t dstVertexIndex = igraph_vector_e(resultNeighborVertices, i);
      |                 ^~~~~~~~~~~~~~~~
In file included from /usr/include/igraph/igraph_vector.h:70,
                 from /usr/include/igraph/igraph_random.h:29,
                 from /usr/include/igraph/igraph.h:34:
/usr/include/igraph/igraph_vector_pmt.h:72:47: note: declared here
   72 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE FUNCTION(igraph_vector, e)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                               ^~~~~~~~~~~~~
/usr/include/igraph/igraph_pmt.h:24:23: note: in definition of macro 'CONCAT2x'
   24 | #define CONCAT2x(a,b) a ## _ ## b
      |                       ^
/usr/include/igraph/igraph_pmt.h:161:31: note: in expansion of macro 'CONCAT2'
  161 |         #define FUNCTION(a,c) CONCAT2(a,c)
      |                               ^~~~~~~
/usr/include/igraph/igraph_vector_pmt.h:72:38: note: in expansion of macro 'FUNCTION'
   72 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE FUNCTION(igraph_vector, e)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                      ^~~~~~~~
/tgen/src/tgen-graph.c: In function '_tgengraph_countIncomingEdges':
/tgen/src/tgen-graph.c:456:41: warning: passing argument 2 of 'igraph_neighbors' from incompatible pointer type [-Wincompatible-pointer-types]
  456 |     result = igraph_neighbors(g->graph, resultNeighborVertices, vertexIndex, IGRAPH_IN);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         igraph_vector_t *
/usr/include/igraph/igraph_interface.h:54:91: note: expected 'igraph_vector_int_t *' but argument is of type 'igraph_vector_t *'
   54 | IGRAPH_EXPORT igraph_error_t igraph_neighbors(const igraph_t *graph, igraph_vector_int_t *neis, igraph_integer_t vid,
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~
/tgen/src/tgen-graph.c: In function '_tgengraph_parseGraphProperties':
/tgen/src/tgen-graph.c:1094:5: warning: 'igraph_clusters' is deprecated [-Wdeprecated-declarations]
 1094 |     result = igraph_clusters(g->graph, NULL, NULL, &(g->clusterCount), IGRAPH_WEAK);
      |     ^~~~~~
In file included from /usr/include/igraph/igraph.h:63:
/usr/include/igraph/igraph_components.h:45:48: note: declared here
   45 | IGRAPH_EXPORT IGRAPH_DEPRECATED igraph_error_t igraph_clusters(const igraph_t *graph, igraph_vector_int_t *membership,
      |                                                ^~~~~~~~~~~~~~~
/tgen/src/tgen-graph.c:1120:56: warning: passing argument 3 of 'igraph_cattribute_list' from incompatible pointer type [-Wincompatible-pointer-types]
 1120 |     result = igraph_cattribute_list(g->graph, &gnames, &gtypes, &vnames, &vtypes, &enames, &etypes);
      |                                                        ^~~~~~~
      |                                                        |
      |                                                        igraph_vector_t *
In file included from /usr/include/igraph/igraph_conversion.h:34,
                 from /usr/include/igraph/igraph.h:73:
/usr/include/igraph/igraph_attributes.h:379:91: note: expected 'igraph_vector_int_t *' but argument is of type 'igraph_vector_t *'
  379 |                                          igraph_strvector_t *gnames, igraph_vector_int_t *gtypes,
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~
/tgen/src/tgen-graph.c:1120:74: warning: passing argument 5 of 'igraph_cattribute_list' from incompatible pointer type [-Wincompatible-pointer-types]
 1120 |     result = igraph_cattribute_list(g->graph, &gnames, &gtypes, &vnames, &vtypes, &enames, &etypes);
      |                                                                          ^~~~~~~
      |                                                                          |
      |                                                                          igraph_vector_t *
/usr/include/igraph/igraph_attributes.h:380:91: note: expected 'igraph_vector_int_t *' but argument is of type 'igraph_vector_t *'
  380 |                                          igraph_strvector_t *vnames, igraph_vector_int_t *vtypes,
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~
/tgen/src/tgen-graph.c:1120:92: warning: passing argument 7 of 'igraph_cattribute_list' from incompatible pointer type [-Wincompatible-pointer-types]
 1120 |     result = igraph_cattribute_list(g->graph, &gnames, &gtypes, &vnames, &vtypes, &enames, &etypes);
      |                                                                                            ^~~~~~~
      |                                                                                            |
      |                                                                                            igraph_vector_t *
/usr/include/igraph/igraph_attributes.h:381:91: note: expected 'igraph_vector_int_t *' but argument is of type 'igraph_vector_t *'
  381 |                                          igraph_strvector_t *enames, igraph_vector_int_t *etypes);
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~
/tgen/src/tgen-graph.c:1130:9: error: too many arguments to function 'igraph_strvector_get'
 1130 |         igraph_strvector_get(&gnames, (glong) i, &name);
      |         ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/igraph/igraph.h:47:
/usr/include/igraph/igraph_strvector.h:70:27: note: declared here
   70 | IGRAPH_EXPORT const char* igraph_strvector_get(const igraph_strvector_t *sv, igraph_integer_t idx);
      |                           ^~~~~~~~~~~~~~~~~~~~
/tgen/src/tgen-graph.c:1137:9: error: too many arguments to function 'igraph_strvector_get'
 1137 |         igraph_strvector_get(&vnames, (glong) i, &name);
      |         ^~~~~~~~~~~~~~~~~~~~
/usr/include/igraph/igraph_strvector.h:70:27: note: declared here
   70 | IGRAPH_EXPORT const char* igraph_strvector_get(const igraph_strvector_t *sv, igraph_integer_t idx);
      |                           ^~~~~~~~~~~~~~~~~~~~
/tgen/src/tgen-graph.c:1154:9: error: too many arguments to function 'igraph_strvector_get'
 1154 |         igraph_strvector_get(&enames, (glong) i, &name);
      |         ^~~~~~~~~~~~~~~~~~~~
/usr/include/igraph/igraph_strvector.h:70:27: note: declared here
   70 | IGRAPH_EXPORT const char* igraph_strvector_get(const igraph_strvector_t *sv, igraph_integer_t idx);
      |                           ^~~~~~~~~~~~~~~~~~~~
/tgen/src/tgen-graph.c: In function 'tgengraph_getNextActionIDs':
/tgen/src/tgen-graph.c:1346:41: warning: passing argument 2 of 'igraph_neighbors' from incompatible pointer type [-Wincompatible-pointer-types]
 1346 |     result = igraph_neighbors(g->graph, resultNeighborVertices, srcVertexIndex, IGRAPH_OUT);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         igraph_vector_t *
/usr/include/igraph/igraph_interface.h:54:91: note: expected 'igraph_vector_int_t *' but argument is of type 'igraph_vector_t *'
   54 | IGRAPH_EXPORT igraph_error_t igraph_neighbors(const igraph_t *graph, igraph_vector_int_t *neis, igraph_integer_t vid,
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~
/tgen/src/tgen-graph.c:1367:9: warning: 'igraph_vector_e' is deprecated [-Wdeprecated-declarations]
 1367 |         igraph_integer_t dstVertexIndex = igraph_vector_e(resultNeighborVertices, i);
      |         ^~~~~~~~~~~~~~~~
/usr/include/igraph/igraph_vector_pmt.h:72:47: note: declared here
   72 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE FUNCTION(igraph_vector, e)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                               ^~~~~~~~~~~~~
/usr/include/igraph/igraph_pmt.h:24:23: note: in definition of macro 'CONCAT2x'
   24 | #define CONCAT2x(a,b) a ## _ ## b
      |                       ^
/usr/include/igraph/igraph_pmt.h:161:31: note: in expansion of macro 'CONCAT2'
  161 |         #define FUNCTION(a,c) CONCAT2(a,c)
      |                               ^~~~~~~
/usr/include/igraph/igraph_vector_pmt.h:72:38: note: in expansion of macro 'FUNCTION'
   72 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE FUNCTION(igraph_vector, e)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                      ^~~~~~~~
make[2]: *** [src/CMakeFiles/tgen.dir/build.make:118: src/CMakeFiles/tgen.dir/tgen-graph.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:116: src/CMakeFiles/tgen.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
@szhorvat
Copy link

igraph has undergone a significant refactoring for version 0.10. Now all index-like quantities are represented as integers, while previously they were often floating point numbers, a consequence of igraph's R heritage (R uses floats for everything).

Breaking changes are described here: https://github.com/igraph/igraph/blob/master/CHANGELOG.md#0100---2022-09-05

In my experience, refactoring old code to work with 0.10 is not usually difficult. The main change that's needed is to replace some igraph_vector_t types with igraph_vector_int_t.

If the maintainers of this library have any questions regarding this, feel free to ask me.

@robgjansen
Copy link
Member

robgjansen commented Jan 25, 2023

Great, thanks @sporksmith for the bug report and @szhorvat for the details. Should hopefully be a straightforward fix since igraph has some way to find the version:
https://github.com/igraph/igraph/blob/0.10.0/src/version.c

@szhorvat
Copy link

You could use CMake's find_package() to require a certain version. igraph installs CMake package files since version 0.9.2.

Trying to support both 0.10.x and earlier versions using #ifdefs with the IGRAPH_VERSION_... macros is not something I would recommend to try. The changes between 0.9 and 0.10 are likely too big for that.

@stevenengler
Copy link
Contributor

stevenengler commented Jan 25, 2023

We currently support back to Ubuntu 18.04.

If we can't ifdef things, then I think our two options would be to force older platforms to update their igraph version, or force newer platforms to downgrade their igraph version. I think we should keep igraph apt/dnf-installable for as many platforms as possible, so my preference would be requiring newer platforms to downgrade their igraph version. For Fedora they might be able to install the old version from the Fedora 37 repository, but as more new platforms are released that use newer igraph versions, this will become more painful.

Maybe instead we can build igraph from source as a cmake external project and statically link it into tgen. igraph is GPL though, so we couldn't ever share tgen binaries I think? Another option could be to bring rust into tgen and write a C wrapper around a petgraph implementation of tgen's graph code.

@sporksmith
Copy link
Contributor Author

I briefly checked to see if there's something like an "igraph-0.9" package in fedora 38, but I don't see one. Just "igraph", at version 0.10.3. Maybe the user can enable some alternate package repo that might have it? I'm not a regular fedora user, so I might be missing an obvious solution here...

# dnf search igraph
Fedora rawhide openh264 (From Cisco) - x86_64                                                          4.3 kB/s | 2.5 kB     00:00    
Fedora - Rawhide - Developmental packages for the next Fedora release                                   24 MB/s |  65 MB     00:02    
Fedora - Modular Rawhide - Developmental packages for the next Fedora release                          2.2 MB/s | 2.3 MB     00:01    
==================================================== Name Exactly Matched: igraph =====================================================
igraph.i686 : Library for creating and manipulating graphs
igraph.x86_64 : Library for creating and manipulating graphs
=================================================== Name & Summary Matched: igraph ====================================================
ctan-kerkis-calligraphic-fonts.noarch : Kerkis Calligraphic Type1 fonts
gap-pkg-digraphs.x86_64 : GAP package for digraphs and multidigraphs
gap-pkg-digraphs-doc.noarch : Digraphs documentation
igraph-devel.i686 : Development files for igraph
igraph-devel.x86_64 : Development files for igraph
python3-igraph.x86_64 : Python bindings for igraph
python3-igraph-devel.i686 : Development files for igraph
python3-igraph-devel.x86_64 : Development files for igraph
texlive-epigraph.noarch : A package for typesetting epigraphs
texlive-epigraph-doc.noarch : Documentation for epigraph
texlive-epigraph-keys.noarch : Epigraphs using key values
======================================================== Name Matched: igraph =========================================================
R-igraph.x86_64 : Network Analysis and Visualization
asciigraph.x86_64 : Makes lightweight ASCII line graphs
golang-github-guptarohit-asciigraph-devel.noarch : Makes lightweight ASCII line graphs
golang-x-tools-digraph.x86_64 : Tool for queries over unlabelled directed graphs in text form
mathjax-caligraphic-fonts.noarch : Fonts used by MathJax to display math in the browser
texlive-adigraph.noarch : Augmenting directed graphs

# dnf info igraph
Last metadata expiration check: 0:00:20 ago on Wed Jan 25 18:25:10 2023.
Available Packages
Name         : igraph
Version      : 0.10.3
...

@stevenengler
Copy link
Contributor

stevenengler commented Jan 25, 2023

I briefly checked to see if there's something like an "igraph-0.9" package in fedora 38, but I don't see one. Just "igraph", at version 0.10.3. Maybe the user can enable some alternate package repo that might have it? I'm not a regular fedora user, so I might be missing an obvious solution here...

We used to do this with CentOS 8 back when we used igraph in Shadow, where we'd download from an older EPEL repository:

https://github.com/shadow/shadow/blob/cc8627ef48003fbb8eea8699c0cc7fb76e80d0a8/docs/install_dependencies.md?plain=1#L118-L119

@szhorvat
Copy link

szhorvat commented Jan 25, 2023

Maybe instead we can build igraph from source as a cmake external project

This is possible with add_subdirectory(), see https://github.com/igraph/igraph-example

If we can't ifdef things

Well, technically you always can, it might just take an unpleasantly large number of ifdefs ...

I think our two options would be to force older platforms to update their igraph version, or force newer platforms to downgrade their igraph version

Note that all major Linux distros and package managers have 0.10 already:

https://repology.org/project/igraph/versions

Arch/Debian/Fedora have it, and most other distros are based on those.

Debian also has older versions, see libigraph3 for 0.10, libigraph2 for 0.9, and libigraph1. But I think it only has the development files for the latest version. So if the aim is for users to be able to compile tgen on old Debian (not merely use binaries), that may not be possible.


The reason why igraph 0.10 has so many breaking changes is the following: igraph has accumulated a lot of cruft and some non-ideal design decisions during the past 16 years. These were holding it back, and limiting improvements. We are working towards a 1.0 release with a clean and stable API that we can build on top of in the next 10 years. We tried to squeeze the most significant breaking changes into 0.10 to minimize the inconvenience for downstream users, necessitating only a single large refactoring.

@stevenengler
Copy link
Contributor

stevenengler commented Jan 25, 2023

The reason why igraph 0.10 has so many breaking changes is the following: igraph has accumulated a lot of cruft and some non-ideal design decisions during the past 16 years. These were holding it back, and limiting improvements. We are working towards a 1.0 release with a clean and stable API that we can build on top of in the next 10 years. We tried to squeeze the most significant breaking changes into 0.10 to minimize the inconvenience for downstream users, necessitating only a single large refactoring.

We definitely empathize with having to balance the tradeoffs between changing the API and supporting technical debt of old designs that restrict new features :) It's good to see igraph continuing to be maintained, and changing indexes to be integers is definitely a nice change. Our problem here is mostly a package management issue: How can we continue to support our existing supported platforms without adding an extra step requiring users to build igraph from source (and requiring them to deal with the usual building/linking issues that arise)?

sporksmith added a commit to sporksmith/tgen that referenced this issue Jan 25, 2023
igraph 0.10.0 has some API changes that we don't handle. We may be able
to support it through some #ifdef macros, as we already do for 0.9.x,
though the devs suggest this might be painful.

For now, having cmake bail out and explain that the igraph version is
incompatible is better than having a bunch of compiler errors.

See shadow#44
sporksmith added a commit to sporksmith/tgen that referenced this issue Jan 25, 2023
igraph 0.10.0 has some API changes that we don't handle. We may be able
to support it through some #ifdef macros, as we already do for 0.9.x,
though the devs suggest this might be painful.

For now, having cmake bail out and explain that the igraph version is
incompatible is better than having a bunch of compiler errors.

See shadow#44
sporksmith added a commit that referenced this issue Jan 25, 2023
igraph 0.10.0 has some API changes that we don't handle. We may be able
to support it through some #ifdef macros, as we already do for 0.9.x,
though the devs suggest this might be painful.

For now, having cmake bail out and explain that the igraph version is
incompatible is better than having a bunch of compiler errors.

See #44
@sporksmith
Copy link
Contributor Author

You could use CMake's find_package() to require a certain version. igraph installs CMake package files since version 0.9.2.

Good point - changed our cmake to look for <0.10.0 to at least make the problem and potential resolution clearer for now. #45

Note that all major Linux distros and package managers have 0.10 already:
https://repology.org/project/igraph/versions

It looks like most... don't? e.g. Debian 10 and 11 don't, all Fedoras < 38, all current Ubuntus...

Maybe users could try installing an rpm or deb from another distro, but that seems fragile at best, since that package won't necessarily be compatible with its dependencies on another distro.

Also I'd think installing a "foreign" package from an older distro is more likely to work than from a newer one? I think dynamically linked libraries are usually backwards compatible with a binary compiled against an older version, but not always forwards compatible.

Debian also has older versions, see libigraph3 for 0.10, libigraph2 for 0.9, and libigraph1. But I think it only has the development files for the latest version. So if the aim is for users to be able to compile tgen on old Debian (not merely use binaries), that may not be possible.

Yeah, we currently try to support compiling on all supported platforms, so that may be tricky. Also I didn't see any packages in Fedora 38 with alt versions of igraph, but maybe they'll end up adding one.

So far I think it's probably worth a try to see to use #ifdefs to support either version. In any case this isn't very urgent for us, since all of the platforms we currently support have igraph < 0.10.

@szhorvat
Copy link

A small marginally related thing I noticed when looking at the code: igraph_set_attribute_table() should be called once on program startup and should be left alone for the program's lifetime. There is no reason to keep setting and restoring it. I amended the docs to point this out: https://igraph.org/c/html/latest/igraph-Attributes.html#igraph_set_attribute_table

So far I think it's probably worth a try to see to use #ifdefs to support either version.

I grepped the sources, and it seems that you are only using simple graph manipulation functionality. You are not using any network analysis functions at the moment. This means that none of the functions that are used have changed their behaviour (other than perhaps bugfixes, such as more stringent argument checks). They only changed API. So going the #ifdef route should be at least safe.

@timwalsh300
Copy link

timwalsh300 commented Jul 27, 2023

I just worked through this issue for myself on Fedora 38, so I'll share what I did for everybody else's benefit (as well as my own memory).

  1. Remove the Fedora 38 igraph 0.10 packages if they're already installed through DNF
    sudo dnf remove igraph igraph-devel

  2. Install the dependencies from the Fedora 38 repositories through DNF
    sudo dnf install arpack

  3. Download the igraph and igraph-devel 0.9 RPM files that were packaged for Fedora 37 here:
    https://koji.fedoraproject.org/koji/buildinfo?buildID=2013034

  4. Install the igraph 0.9 packages through RPM
    sudo rpm -i igraph-0.9.9-2.fc37.x86_64.rpm
    sudo rpm -i igraph-devel-0.9.9-2.fc37.x86_64.rpm

I arrived at this solution after first trying to build the igraph 0.9 shared libraries from https://github.com/igraph/igraph/releases/download/0.9.9/igraph-0.9.9.tar.gz, installing to my $HOME/.local. I just couldn't get cmake for TGen to find igraph in that location. If anyone can tell me how to do that with cmake, I'd be grateful, in case I ever run into a similar problem again. I guess I could have installed everything to the default locations with sudo, but I was afraid to try that... but maybe it would be equivalent to what I ended up doing with the RPM packages(?).

I'd also like to report that I'm still using the igraph 0.7 package from the EPEL on a RHEL 8 (formerly CentOS 8) system, as @stevenengler mentioned above, to run TGen with Shadow.

Edited to add: dnf check-upgrade shows that it's ready to bring me back up to igraph 0.10 during the next system update, so I'll need to be careful to exclude those.

@sporksmith sporksmith changed the title Doesn't build against igraph 0.10.3 (default version on fedora 38) Doesn't build against igraph 0.10.3 (default version on fedora 38 and debian 12) Aug 25, 2023
@sporksmith
Copy link
Contributor Author

Debian 12/bookworm is now Debian's stable, and also has igraph 0.10

@sporksmith
Copy link
Contributor Author

This can be worked around on bookworm by adding the bullseye sources and installing igraph from that. e.g.:

$ cat <<EOF > /etc/apt/sources.list.d/bullseye.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: bullseye bullseye-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://deb.debian.org/debian-security
Suites: bullseye-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

$ apt-get install -y libigraph-dev/bullseye

Unfortunately unlike the binary package for libigraph, the -dev package doesn't have a distinct name or install destination for different versions, so this may not be a viable solution if you need to compile against newer versions of libigraph on the same system.

@sporksmith
Copy link
Contributor Author

Maybe instead we can build igraph from source as a cmake external project

This is possible with add_subdirectory(), see https://github.com/igraph/igraph-example

I poked at this a little bit. I pulled in igraph as a subdirectory using git subtree, which makes it relatively transparent to most users (unlike git submodule). I got it building without much trouble; I had to make a fake version metadata file in the igraph subdir, since it wasn't able to find version info from git (probably due to using subtree instead of submodule).

By default it builds as a static library, and then tgen statically links. This is technically nice, but might be tricky since igraph is GPL v2. I think it might technically be ok if we don't distribute pre-built binaries (which we currently don't)?

I briefly experimented with forcing it to build a dynamic library instead. That also works but we might need to tinker with the build a bit to be get it to create .so's with appropriate names and that don't interfere with other versions of igraph on the system

@szhorvat
Copy link

IANAL, but my understanding is that you are free to distribute binaries with GPL'd components. It's just that this binary distribution, as a whole, will be covered by the GPL with all that it implies (e.g. need to share the sources). In what situation do you expect this to be a problem?

All this has no impact on the license that covers tgen sources.

robgjansen added a commit that referenced this issue Dec 30, 2023
Fix build for igraph v0.10.x

This fixes the tgen build on systems with igraph library versions >= 0.10.0. We no longer need to use workarounds to install older version from backports or previous release repositories.

The general strategy here was to implement the tgen code according to the newer igraph api changes from v0.10.x, and then set up the messy compat definitions in tgen-igraph-compat.h that we can eventually just delete if we ever decide we no longer want to support igraph versions older than v0.10.0.

We also stop setting the C attribute table multiple times during program execution, and just sets it once at program startup as explained in #44 (comment).

Fixes #44
zydou pushed a commit to zydou/arti that referenced this issue Feb 16, 2024
Now that shadow/tgen#44 is fixed, we no longer
need to do this.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants