-
Notifications
You must be signed in to change notification settings - Fork 6
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
Any way to speed up builds on Windows? #4
Comments
As it happens, I just got some evidence that maybe
(I'm not sure why I can't |
Looks like this is surprisingly poorly supported in vcpkg? |
The vcpkg (and cargo vcpkg) default is to build both debug and release as you say. I don't know how to link Rust code to the debug build, so it has always been extra work for nothing. I missed the moment to make it the default for cargo vcpkg, but I'd like it to be available at the very least. It's not that hard to request it - cargo-vcpkg would just have to add Apparently there has been some work done on caching in vcpkg but I have not tried it. |
Or is there a convenient way to create and use a custom triplet file that's kept outside of the vcpkg repo, maybe? |
I'm still thinking about what the best way to add this capability is, but I think it's just a matter of adding a flag to the metadata. If you want to fix this straight away, you could fork the vcpkg tree and add the That said, I'll try and get some way to do it out shortly. |
Yeah, things seem to be under control in the Tectonic CI for now so I see no need to fork, but I'm definitely interested to test out any potential fixes. (That being said, the vcpkg builds seem to be taking longer and longer ... seems like the msys servers are getting slower or something.) The other thing specific to Tectonic is that several of the deps, including some slow-to-build ones like iconv, are coming from |
Resurrecting this issue after a long period of inactivity. Nothing fundamental seems to have changed: vcpkg still defaults to building both debug and release; CI builds for Tectonic/Windows are annoyingly long; and the best way to avoid building debug artifacts seems to be to set Oh, and I still agree that it looks like we could fix this in Tectonic by forking the @mcgoo have you had any further ideas about the cleanest way to potentially implement this functionality? If there are benefits to building from a clean (One thing that has changed is that I'm definitely in a better position to investigate if we can build on Windows without (update: Hmm ok yeah we'd definitely need new code to avoid Fontconfig on Windows, which is not looking practical at the moment.) |
I'm not certain, but sadly, I fear @mcgoo may not be with us any longer. He told me here on github that he was sick before handing me push rights on his repo when I was fixing the CI and link ordering issues last year. The account has been inactive ever since :-( Regarding approaches to your problem, it seems like having a way to either override triplets easily would make things work well. I've noticed that since this issue was originally opened, vcpkg has added a The alternative where vcpkg-rs/cargo-vcpkg try to own the overlay-triplet dir itself seems like a non-starter. For one, vcpkg only seems to support a single dir of overlay. This could be fixed upstream, but even then, maintaining a new set of triplets here, or doing the work required to generate them at build (in turn requiring all the configuration potential to be duplicated) also seems like a lot of unnecessary work. I haven't worked out yet how both Are you dependent on using cargo-vcpkg for the vcpkg build or are you checking out vcpkg installing there and pointing at that tree with the VCPKG_ROOT environment variable? If the latter, you should be able to try out your own triplets at least without the whole forking of vcpkg. |
Oh, that's sad to hear — fingers crossed that your fears are overblown 😢 The |
Oh hey! It looks like there are now "community" triplets including things like However, there does not appear to be an |
OK, based on some initial testing in tectonic-typesetting/tectonic#961, it appears that a custom Windows triplet indeed speeds up my build times substantially. The testing is based on my cargo-vcpkg overlay-triplets branch, which has a prototype implementation for support. I add a key to the toplevel There are other ways one could implement this: support for args to |
OK, with #13 and the current version of my test case tectonic-typesetting/tectonic#961, I'd say that this issue can be considered closed upon the next release. I've ~doubled the speed of my Windows vcpkg builds and there aren't any obvious inefficiencies induced by cargo-vcpkg anymore. |
Published as 0.1.7. Sorry for the delay. |
For Tectonic, the Windows vcpkg builds are now timing out about 75% of the time because of the 60-minute job time limit for the Azure Pipeline build agents that we use. The lion's share of that time is taken up by the
cargo vcpkg build
of Tectonic's dependencies. I don't suppose there are any options that we could add/activate that would reduce how long things take? In particular, in the past I've noticed that vcpkg sometime builds both debug and release versions of its outputs ... does that happen to be the case withcargo vcpkg build
?The text was updated successfully, but these errors were encountered: