Preliminary Windows support has landed!

As of PR #231, Tectonic now can build and pass its test suite on Windows! Many thanks to @crlf0710 who got the ball really rolling in PR #210.

I am super excited about Tectonic getting to this point! There is certainly more work to do, though:

  • I haven’t done any testing beyond the current test suite and the “xenia” test, and I think it is quite likely that there are undiscovered bugs remaining in the Windows version.
  • I’m not a Windows developer, so I bet that a lot of the Windows-related build infrastructure could be made more robust and clean.
  • I don’t know anything about packaging for Windows. Hopefully we can get to a point where at least cargo install and Chocolatey work well, but that will be challenging because Tectonic currently needs to link to libraries like Harfbuzz, and my impression is that Windows development is generally very monolithic in style.

But, overall: hooray!

2 Likes

Hi all, I am looking for a solution to package Latex for windows users which can not be expected to have it installed on their own system. Distributing binaries is OK. Do you think that Tectonic could be an option? Do you have any documentation how I can set it up for Windows? Thank you! Marco

Hi @marco,

Apologies for the extremely slow reply! If you’re still interested in the answer to this question, yes, the hope is that Tectonic can play a useful role here. Tectonic binaries for Windows are available through the conda-forge project, as described here. You might also look at the AppVeyor configuration file used to compile Tectonic on Windows for continuous integration.

I could not get it to build in Windows, do I need to install. All I did was run cargo install tectonic which works fine in Linux but not in Windows. Any help? Here’s the pruned log:

thread 'main' panicked at 'calledResult::unwrap()on anErrvalue: Command { command: "\"pkg-config\" \"--libs\" \"--cflags\" \"fontconfig harfbuzz >= 1.4 harfbuzz-icu icu-uc freetype2 graphite2 libpng zlib\"", cause: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." } }', src\libcore\result.rs:999:5

You can use the conda method to install binary packages, sidestepping the issue of having to install Harfbuzz manually.

There is another Windows package manager https://scoop.sh/ which is gaining popularity (listed as an alternative way to install Node.js on Node.js website). It is basically a package manager for “portable apps” (i.e. thumb drive apps).

If you already have a “portable apps” version of Tectonic, it is quite easy to setup Scoop manifest for it.

What exactly is missing such that we can just make the AppVeyor build push the generated binaries to GitHub releases?
From there a Chocolatey package could easily pick them up. (I am using this strategy for another Choco package I am maintaining.)

I wanted to push this topic a little bit :smiley:

But after I managed to build the artifact on windows using github actions, I figured out that you did that too, like two days ago (where you have this massive CI change to azure pipelines) :joy: :see_no_evil:

So I guess I got a little bit of wrong timing :sweat_smile:
You can find my result here with the corresponding github actions workflow file.

To actually contribute a bit to the actual discussion. the windows exe from the github pre-release, works on my windows machine (I tested tectonic-0.1.13+20200907-x86_64-pc-windows-msvc.zip) :+1:

1 Like

@dxjoker Thanks for putting the work in even with the unlucky timing about things! And thanks for posting, I think the actions workflow file will be helpful for other folks who might want to build Tectonic themselves.