-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
[winsparkle] inital port #17563
[winsparkle] inital port #17563
Conversation
Hi @daschuer Could you please sign CLA first? |
vcpkg_extract_source_archive_ex( | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
ARCHIVE ${ARCHIVE} | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you not use vcpkg_from_github()
to download source codes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because the repo contains submodules and the package I have picked here has the submodules included.
I have tried to use vcpkg_from_github calls the compose the same on the fly, but I failed.
Please run |
Hi @daschuer |
I consider this as done so far. |
Thanks for your quick response. @daschuer Looking forward to new progress of solving the problem in this PR. |
@daschuer Is work still being done for this PR? |
The status is unchanged since my last post. |
Thanks for your reply! |
My idea was to leave it open, that it is visible. |
LGTM. |
ports/winsparkle/portfile.cmake
Outdated
@@ -0,0 +1,44 @@ | |||
vcpkg_fail_port_install(ON_TARGET "osx" "linux" "uwp") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sentence could be remove because the vcpkg.json has include the "supports" item.
Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
We need to patch out the usage of submodules here; building openssl and everything instead of using openssl from vcpkg is not great. Can you take a look at this @daschuer? You should be able to patch out all the |
Unfortunately I don't know how to make the changes in the msbuild project. There is also a broken cmake build system with a pending PR vslavik/winsparkle#230 I have filed an issue to here @vslavik opinion: |
@daschuer |
Yes sure, thank you. |
…as well as additional burden on upstream who'd now have to deal with issues caused by the non-standard build… It is an explicit design goal for WinSparkle to be a single self-contained DLL with no external dependencies (to the point that it even links to static CRT!). This matters for e.g. in-app delta updates or re-launching the app after update (which, OK, aren't implemented yet) when WinSparkle code requires special handling to keep running. As long as that means just a single WinSparkle.dll and nothing else, it is manageable. As upstream, I'd really appreciate it if something as high-profile as Vcpkg didn't provide non-standard builds. |
OK, that means vcpkg should produce always a dynamic linked DLL, even If the whole application is build static and this DLL shall link to the static version of the depended libraries, right? I am afraid afraid vcpkg is not prepared for that right now. There is no way to identify the matching dynamic triplet in a static build and wise versa. There is also no general solution in sight, so there is no point of hacking around the upstream build system AND the vcpkg dependency tree. For me the private build of dependency is a good solution and the current state is ready to be merged. |
IIUC this is done by
|
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) Does not work, because all other packages will be created with the same triplet. But we want WinSparkles to be dll, statically linked to it's dependencies. |
Pardon? It will create a dll in a triplet where all dependencies only exist as static libs. |
Yes, but only if all other libraries build are static. So the issue is not about the port itself, it is the question how to link the dependencies statically. The current solution is to build them together with the port. The alternative would be a kind of package dependency that includes a triplet, depending on the selected main triplet and a we need to hack around the upstream build environment ant pull the related maintenance to vcpkg. |
So given the specific case here, where the DLL is completely encapsulated - there are no libraries that both the DLL and the consumer depend on that can step on each other's toes, and the author also told us not to do anything else besides this, contrary to our normal de-vendoring policies - it seems to me that there are no benefits to building this library, rather than downloading the pre-built binary. There aren't any ABI concerns that building the source would solve, in this case. @daschuer, would you mind making this change? (downloading WinSparkle-0.7.0.zip instead of WinSparkle-0.7.0-src.zip, and then just manually copying files over instead of building). |
Can this pr be closed because #23194 has been merged? |
Yes, I have kept this open for reference only. |
This PR adds winsparkle to the ports
Fixes #16607
Which triplets are supported/not supported? Have you updated the CI baseline?
winsparkle:arm-uwp=fail
winsparkle:x64-linux=fail
winsparkle:x64-osx=fail
winsparkle:x64-uwp=fail
Does your PR follow the maintainer guide?
Yes
If you have added/updated a port: Have you run
./vcpkg x-add-version --all
and committed the result?Yes
If you are still working on the PR, open it as a Draft: https://github.blog/2019-02-14-introducing-draft-pull-requests/