Skip to content
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

Closed
wants to merge 8 commits into from
Closed

Conversation

daschuer
Copy link
Contributor

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

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/

@ghost
Copy link

ghost commented Apr 28, 2021

CLA assistant check
All CLA requirements met.

@daschuer daschuer marked this pull request as draft April 28, 2021 22:04
@NancyLi1013 NancyLi1013 added the category:new-port The issue is requesting a new library to be added; consider making a PR! label Apr 29, 2021
@NancyLi1013
Copy link
Contributor

Hi @daschuer

Could you please sign CLA first?

ports/winsparkle/portfile.cmake Outdated Show resolved Hide resolved
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
)
Copy link
Contributor

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?

Copy link
Contributor Author

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.

ports/winsparkle/vcpkg.json Outdated Show resolved Hide resolved
scripts/ci.baseline.txt Outdated Show resolved Hide resolved
ports/winsparkle/portfile.cmake Outdated Show resolved Hide resolved
ports/winsparkle/vcpkg.json Outdated Show resolved Hide resolved
@NancyLi1013
Copy link
Contributor

Please run vcpkg format-manifest ./ports/winsparkle/vcpkg.json to format the json file.

@NancyLi1013
Copy link
Contributor

Hi @daschuer
Is work still being done for this PR?

@daschuer
Copy link
Contributor Author

I consider this as done so far.
It is missing the evidence that it is working in a productive environment, because we have not yet integrated it into Mixxx. I am afraid this will take us some time because we are currently fighting other issues.

@NancyLi1013
Copy link
Contributor

Thanks for your quick response. @daschuer

Looking forward to new progress of solving the problem in this PR.

@PhoebeHui PhoebeHui assigned Cheney-W and unassigned NancyLi1013 Nov 22, 2021
@Cheney-W
Copy link
Contributor

@daschuer Is work still being done for this PR?

@daschuer
Copy link
Contributor Author

The status is unchanged since my last post.
Do you consider to use this port?

@Cheney-W
Copy link
Contributor

Thanks for your reply!
No, I don't use this port, I'm just asking about the current status of this PR based on the PR review process.
Also, If you don't have time to do this PR at the moment, I think we can close it and reopen it when you have time to do it. What do you think?

@daschuer
Copy link
Contributor Author

My idea was to leave it open, that it is visible.
Without it, there is a risk that someone else's repeat my work.
Alternative I can polish it for passing the CI and merge without a using project. If one discovers that it is not working in his environment, we have at least a good start.

@Cheney-W
Copy link
Contributor

LGTM.

@@ -0,0 +1,44 @@
vcpkg_fail_port_install(ON_TARGET "osx" "linux" "uwp")
Copy link
Contributor

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.

daschuer and others added 2 commits December 28, 2021 11:46
Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
daschuer and others added 3 commits December 28, 2021 19:13
Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
@Cheney-W
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@daschuer daschuer marked this pull request as ready for review December 31, 2021 11:18
@Cheney-W Cheney-W added info:reviewed Pull Request changes follow basic guidelines and removed requires:author-response labels Jan 7, 2022
@strega-nil-ms
Copy link
Contributor

strega-nil-ms commented Jan 7, 2022

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 3rdparty references, and then pass USE_VCPKG_INTEGRATION to vcpkg_build_msbuild. You can also then use vcpkg_from_github without worrying about submodules

@strega-nil-ms strega-nil-ms added requires:author-response and removed info:reviewed Pull Request changes follow basic guidelines labels Jan 7, 2022
@daschuer
Copy link
Contributor Author

daschuer commented Jan 9, 2022

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
Once this is merged a cmake based solution would be easy for me.
However I am unsure if it a good idea to do this without upstream support. This will put the maintenance burden on us to maintain and extra build system which is not tested by upstream.

I have filed an issue to here @vslavik opinion:
vslavik/winsparkle#238

@Cheney-W
Copy link
Contributor

@daschuer
I'll get to it, but it may take some time, in the meantime, can we convert this PR to draft?

@daschuer
Copy link
Contributor Author

Yes sure, thank you.

@daschuer daschuer marked this pull request as draft January 14, 2022 11:34
@vslavik
Copy link

vslavik commented Jan 15, 2022

However I am unsure if it a good idea to do this without upstream support. This will put the maintenance burden on us to maintain and extra build system which is not tested by upstream.

…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.

@daschuer
Copy link
Contributor Author

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.

@daschuer daschuer requested a review from Cheney-W January 18, 2022 07:50
@daschuer daschuer marked this pull request as ready for review January 18, 2022 07:51
@dg0yt
Copy link
Contributor

dg0yt commented Jan 18, 2022

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.

IIUC this is done by

vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)

@daschuer
Copy link
Contributor Author

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.

@dg0yt
Copy link
Contributor

dg0yt commented Jan 18, 2022

Does not work, because all other packages will be created with the same triplet.

Pardon? It will create a dll in a triplet where all dependencies only exist as static libs.

@daschuer
Copy link
Contributor Author

Yes, but only if all other libraries build are static.
The requirement here is to always link the depending libraries statically and use CRT.

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.

@Cheney-W Cheney-W added the requires:vcpkg-team-review This PR or issue requires someone on the vcpkg team to take a further look. label Jan 19, 2022
@strega-nil-ms
Copy link
Contributor

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).

@strega-nil-ms strega-nil-ms added requires:author-response and removed requires:vcpkg-team-review This PR or issue requires someone on the vcpkg team to take a further look. labels Jan 20, 2022
@Cheney-W
Copy link
Contributor

Cheney-W commented Mar 3, 2022

Can this pr be closed because #23194 has been merged?

@daschuer
Copy link
Contributor Author

daschuer commented Mar 3, 2022

Yes, I have kept this open for reference only.

@daschuer daschuer closed this Mar 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:new-port The issue is requesting a new library to be added; consider making a PR!
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[New Port Request] winsparkle
6 participants