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

add graphviz 5.0.0 #2868

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

add graphviz 5.0.0 #2868

wants to merge 2 commits into from

Conversation

janvdijk
Copy link

@janvdijk janvdijk commented Jul 11, 2022

Make graphviz-5.0.0 available. The differences with the patches that are part of pull request #1804 are:

  • the most recent graphviz (5.0.0) is installed
  • no patches are needed: the cross-compilation problems have been fixed upstream
  • compilation is done in a separate build directory (as opposed to in the source directory)
  • the standard MXE configure flags are used

Shared builds have been tried with gcc11 and the gcc12 plugin. The gcc12-shared version of graphviz has been tested in the MXE-based MSW-deployment of our simulation software (admittedly, not all corners of graphviz are exercised by our code). Static libs may need more work.

I believe that this addresses most concerns @tonytheodore had with @hankhank's patch series. If this pull request is accepted, #1804 can obviously be closed. Please see the commit log below for additional details about this submission.

Jan van Dijk added 2 commits July 11, 2022 23:05
…dot').

NOTES (also available in the new src/graphviz.mk):

* Before using graphviz (application or library), a configration file
  called 'config6' must be created in the directory that also contains the
  libraries. This can be achieved by running 'dot -c', where dot is the
  cross-compiled dot program. Note that this requires write privileges in the
  MXE-installation directory. This can also be achieved on the build system
  by invoking 'wine /path/to/mxe/targetdir/bin/dot -c'. (This is not done as
  part of this Makefile, since Wine cannot be used (see 'do not run target
  executables with Wine' on https://mxe.cc/).

* mman-win32 has been made a dependency and we make sure that the mman library
  is linked in by passing LIBS=-lmman to configure. This library is needed for
  the mmap and munmap functions. At present, graphviz' configure script only
  checks for the availability of <sys/mman.h>. When found (as for MXE builds),
  it defines HAVE_SYS_MMAN_H in config.h and erroneously assumes that these
  functions are available in the C library. Linking against -lmman fixes this
  problem.

* At present, --disable-qt is passed to the graphviz configure script.
  Enabling qt requires that CXXFLAGS=-fpermissive is passed to configure
  to prevent the following compilation error:

       ../../../cmd/gvedit/csettings.cpp: In function 'QString findAttrFile()':
       ../../../cmd/gvedit/csettings.cpp:43:23: error: invalid conversion from
       'QString (*)()' to 'LPCVOID' {aka 'const void*'} [-fpermissive]
       43 |     if (VirtualQuery (&findAttrFile, &mbi, sizeof(mbi)) == 0) {
          |                       ^~~~~~~~~~~~~
          |                       |
          |                       QString (*)()

  When enabling qt support, qt (or just qt-base?) should also be added to the
  $(PKG)_DEPS variable below.

* At present, --disable-perl is passed to the graphviz configure script.
  On an OpenSUSE Tumbleweed test system, enabling perl results in the
  inclusion of /usr/lib/perl5/5.34.1/x86_64-linux-thread-multi/CORE/perl.h,
  which includes <sys/wait.h>. Since this file is not available for MXE builds,
  this results in a compilation error. This requires somebody with a better
  understanding of Perl.
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 this pull request may close these issues.

1 participant