wkhtmltopdf / packaging

Packaging of wkhtmltopdf releases
https://wkhtmltopdf.org/downloads.html#stable
305 stars 138 forks source link

Build for ubuntu 20.04 #63

Closed dmarkey closed 4 years ago

dmarkey commented 4 years ago

Will be released in a few days.

Thanks!

ashkulz commented 4 years ago

Would you be interested in submitting a PR, if the docker image is already published? It should be quite straight-forward, and please ask me if you get stuck 👍

kraft001 commented 4 years ago

Support for i386 as a host architecture was dropped in 19.10, so we need amd64 only. I simply copy-pasted the bionic section and replaced bionic with focal. ./build docker-images focal-amd64 succeeded, but then the compilation failed with the error:

/src/qt/src/gui/dialogs/qpagesetupdialog_unix.cpp: In constructor 'QPageSetupWidget::QPageSetupWidget(QWidget*)':              
/src/qt/src/gui/dialogs/qpagesetupdialog_unix.cpp:276:12: error: 'class Ui::QPageSetupWidget' has no member named 'topMargin' 
  276 |     widget.topMargin->setSuffix(suffix);                                                                             
      |            ^~~~~~~~~                                                                                         
/src/qt/src/gui/dialogs/qpagesetupdialog_unix.cpp:277:12: error: 'class Ui::QPageSetupWidget' has no member named 'bottomMargin'
  277 |     widget.bottomMargin->setSuffix(suffix);                                                                     
      |            ^~~~~~~~~~~~                                                                                                
/src/qt/src/gui/dialogs/qpagesetupdialog_unix.cpp:278:12: error: 'class Ui::QPageSetupWidget' has no member named 'leftMargin'     
  278 |     widget.leftMargin->setSuffix(suffix);                                                                            
      |            ^~~~~~~~~~                                                                                     
/src/qt/src/gui/dialogs/qpagesetupdialog_unix.cpp:279:12: error: 'class Ui::QPageSetupWidget' has no member named 'rightMargin'
  279 |     widget.rightMargin->setSuffix(suffix);                                                                           
      |            ^~~~~~~~~~~                                                                                       

This is the top of the output, there were many more similar errors. Could you help please?

BaconRanch commented 4 years ago

I was having the same issues as @kraft001: it looks like Qt 4 does not compile with gcc 9 (at least the version of Qt 4 used by wkhtmltopdf). gcc 9 is the default version in Ubuntu 20.04, but gcc 7 is also available. I made a fork of this repo and modified Dockerfile.debian, making a new Dockerfile.focal copy and adding explicit references to gcc-7 and g++-7 system packages, as well as some symbolic links (gcc -> /usr/bin/gcc-7, etc), and wkhtmltopdf compiled! The .deb file appears to install fine, and playing around with the wkhtmltopdf binary in a shell and looking at the PDF output, it looks ok to me!

Here are my changes: https://github.com/BaconRanch/packaging/commit/8731b519614affb0859bfe6b0e2b8718c1eb88e3

Having to make a separate Dockerfile just for focal / newer Debian based distros is kind of hacky though, so I'm not sure if it's worth filing a PR. A more elegant solution may be reworking the Python build script, build.yml, and Dockerfile.debian to replace build-essential with explicit references to its dependencies and allow a specific version of gcc to be set on the Dockerfile as an argument.

Another solution is getting wkhtmltopdf 0.12.5 release and Qt 4 to compile on gcc 9, but I don't know how much effort that would take / whether it's worth the dev's time, since 0.12.5 is a couple years old now.

MrRSK commented 4 years ago

Hi, could you please also release a version for ubuntu 20.04 arm64?

Greetings

dominikduda commented 4 years ago

+1, cant install on Ubuntu 20 x64

ashkulz commented 4 years ago

@BaconRanch: I don't see anything bad about adding a new Dockerfile -- can you just try using update-alternatives instead of using manual symlinks? I'd be very happy to test and integrate a PR :+1:

BaconRanch commented 4 years ago

@ashkulz I swapped out the explicit links to update-alternatives and tried it out. The build works fine! Here's the PR: https://github.com/wkhtmltopdf/packaging/pull/65

ashkulz commented 4 years ago

65 has been merged, thanks to @BaconRanch :tada:

ashkulz commented 4 years ago

This has been published to the website, see wkhtmltopdf/wkhtmltopdf@f1ef81d7a382e38b1ce1cc78567e36ca25015ebc.

ashkulz commented 4 years ago

@MrRSK: can you try the arm64 build in #30 and report if it works for you?

ashkulz commented 4 years ago

A release candidate for the 0.12.6 release is now available for download, which should contain changes which possibly address this issue.

Would appreciate downloading the package and reporting back if any issues are encountered during testing. Assuming all goes well, I plan to release 0.12.6 on the 2-year anniversary of the previous release i.e. June 11, 2020.