-
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
Support third party ports repositories #114
Comments
This is absolutely an important feature, and certainly on the roadmap. Use cases I'm aware of so far:
I'd like to find people who can represent each use case we address, to make sure we're actually solving their problem :). It sounds like @j-rivero is hitting the third point. My current best solution idea is to require one level of subdirectory under An important point that I believe affects all solutions is to make the organization of these folders entirely user-facing and completely transparent to the portfiles themselves. There needs to be a resolution process to consolidate |
For point 2 team building against certain versions of libraries, such as game development teams. By providing a link to their ports repo contributors can use a certain version or set of libraries without having to worry about breaking builds. |
Is this something to move forward with because I can spec out a solution for this if so. |
Yes, we should move forward on this. I believe there is some overlap with #164, especially around the need to "override" an existing port. I've discussed this with @alexkaratarakis offline and we did come up with a few solutions which address both #164 and this, though we were waiting for a bit more discussion/scenario gathering on the other issue before moving to the solutions stage. The best solution we have so far is first to have the above ability to nest directories underneath Alternatively, directories do act as namespace for the aliases file and conflicts always resolve to the "core" directory. I don't think this would give a very good experience for teams however, since an update to core could suddenly redirect one of your private packages to the "core" package. What solution did you have in mind? |
I truly believe that this issue is aiming at allowing me to specify check
at this location for a list of portfiles to use instead, and not so much
sit side-by-side with an existing portfile.
But as for you second option this could be more natural and intuitive at
the graphical level allowing someone to visually see which alternatives are
installed. I think that having a "core" version that is a fallback is
exactly what we don't need. By forcing the using of specific versions there
won't be any surprises like you are suggesting.
So when the user installs a package there's a configuration file created
that says which version they are using and then an upgrade would still pin
them to that version until they issue an upgrade command.
|
We do currently have a What's the story you're thinking of when you speak of the configuration file specifying versions? What happens when I run install, upgrade, remove, install with various parameters? |
You would have to be explicit in your commands such as install
boost-1.62.0. To better facilitate this the list command would need a way
to filter and there would need to be extra lines in the control file to
specify the then current version so a person could just install boost to
get boost-1.62.0 however any command after that e.g. remove install upgrade
would need the explicit version in it's name.
|
To make the conversation a bit more understandable for me, I'd like to use "version" to describe older and newer versions of the same portfile and use "alternatives" to describe other portfiles which are acceptable substitutes. So, with what you are proposing, my experience would be something like this?
The only change i would make is that I think all the user interactions should be redirected along the aliases/configuration file choices. So Back to your initial situation though:
Does the |
Alright, so my use-case would be something like this (names subject to change):
Just as The structure of
You could then do:
To install the 3 ports in the repo. If the For the sake of scaling,
Implementing this would allow me to publish the ports that I currently have, as well as (hopefully) the changes to existing ports, which I can't currently do as our legal team has some concerns about the CLA, and also do not want us creating public forks. |
Any progress on this? If so I'm interested in using this for some third party dependencies when building WebKit on Windows |
The immediately available way to handle this (publishing ports without upstreaming them to the wider community here) is to host a For example:
While there isn't a first-class command (
|
@ras0219-msft thanks for the examples! I'll have to give that a go for the time being. |
What I have in mind would be something like this:
So, I have one vcpkg.exe and several port folders. zlib port is build on the root folder. tiff port is build on subfolder "3rdparty", but can resolve dependency (e.g. to zlib) to root folder (maybe by using .vcpkg-root, write the root folder in there in order to link to that). Think of a vcpkg that can take build installation of another vcpkg build folder. Downloads folder should be used only once in case an other vcpkg build folder is referenced in the .vcpkg-root file in 3rdparty. Pseudo commands would look like:
|
Is it possible we could get a system similar to apt, pacman, and yum, where one could add a repository to their local vcpkg? A repository would be any git repo accessible from the user's local vcpkg that has a top-level ports directory containing vcpkg packages. Adding the repo to the local vcpkg would be something like My use case would be managing private internal packages. |
The new Example:
|
Add arm64 macOS release CI to regular 2.5 branch
For ports not ready for being included in the main vcpkg repository, or for private ports (use case mentioned in https://github.com/Microsoft/vcpkg/blob/master/docs/FAQ.md#can-i-build-a-private-library-with-this-tool) it would be convenient to have a way to easy specify third parts ports repositories,
as done in homebrew using third party "taps".
cc @j-rivero
The text was updated successfully, but these errors were encountered: