rootstock icon indicating copy to clipboard operation
rootstock copied to clipboard

Supporting local Windows weasyprint builds

Open agitter opened this issue 5 years ago • 1 comments

The Manubot build environment is not currently supported on Windows. However, the main limitation was previously the pango package, and pango now has win-64 support on the conda-forge channel.

The current conda environment cannot be installed on Windows and gives the ResolvePackageNotFound error reported in #405. However, if I unpin the cairo, cairocffi, and pango versions, I am able to install the manubot conda environment. I end up with

  • cairo 1.16.0
  • cairocffi 1.2.0
  • pango 1.42.4

bash build/build.sh shows they are still missing dependencies:

OSError: cannot load library 'gobject-2.0': error 0x7e.  Additionally, ctypes.util.find_library() did not manage to locate a library called 'gobject-2.0'

This is related to https://github.com/Kozea/WeasyPrint/issues/971.

I tried conda install -c conda-forge gtk3 and installed version 3.24.24. That did not resolve the error.

It looked like I had the missing DLLs in .conda\envs\manubot\Library\bin but they did not have the expected names. I copied gobject-2.0-0.dll as libgobject-2.0-0.dll, pango-1.0-0.dll as pango-1.0.dll, and pangocairo-1.0-0.dll as pangocairo-1.0.dll. This gave a new error further into the weasyprint build:

(process:11000): GLib-GObject-WARNING **: 08:49:54.950: cannot register existing type 'PangoLayout'
(process:11000): GLib-CRITICAL **: 08:49:54.950: g_once_init_leave: assertion 'result != 0' failed
(process:11000): Pango-CRITICAL **: 08:49:54.950: pango_layout_get_iter: assertion 'PANGO_IS_LAYOUT (layout)' failed
Error producing PDF.

Perhaps local Windows builds with weasyprint are now possible, but I'm not planning to troubleshoot this further at this time.

agitter avatar Jan 01 '21 14:01 agitter

I confirmed that building the manuscript locally on Windows with Git for Windows does work when Docker is available. This line in the build script https://github.com/manubot/rootstock/blob/2191d929a12a233347ee79c673b8f2971c10e6dd/build/build.sh#L69

needs to be changed to:

    --volume="/$(pwd)/output:/converted/" \

and then bash build/build.sh works as expected.

agitter avatar Jan 04 '21 15:01 agitter