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

Consider using package manager on Windows #260

Closed
jslee02 opened this Issue Nov 12, 2014 · 6 comments

Comments

Projects
None yet
3 participants
@jslee02
Member

jslee02 commented Nov 12, 2014

It would be nice to exploit a package manager for windows instead of providing our own installer for the DART dependencies. Currently, I'm considering using vcpkg of Microsoft.

Here is the list of supported libraries:

Dependencies Supported by vcpkg

Required dependencies

Optional dependencies

@jslee02 jslee02 removed the Kind: Task label May 1, 2015

@jslee02 jslee02 changed the title from Consider chocolatey for packaging on Windows to Consider nuget/chocolatey for packaging on Windows Nov 7, 2015

@jslee02

This comment has been minimized.

Member

jslee02 commented Dec 10, 2015

I would like to add Conan.io to the candidates as well.

The main advantage of Conan I think is that it requires only source code of the package and the binaries are optional. One disadvantage of Conan in use is it requires additional code in the existing CMakeLists.txt for the build to include packages installed by Conan.

@traversaro

This comment has been minimized.

traversaro commented Sep 20, 2016

Another promising alternative for "packaging" C++ libraries in homebrew-style is vcpkg, see https://blogs.msdn.microsoft.com/vcblog/2016/09/19/vcpkg-a-tool-to-acquire-and-build-c-open-source-libraries-on-windows/ .

@jslee02 jslee02 changed the title from Consider nuget/chocolatey for packaging on Windows to Consider using package manager on Windows Sep 20, 2016

@jslee02

This comment has been minimized.

Member

jslee02 commented Sep 20, 2016

I've played around with vcpkg, and it seems the best option for us since it installs packages from source so that the package maintainer doesn't need to build the binaries for different configurations (32/64, md/mt, debug/release, and VS versions).

I added a checklist of DART dependencies to the main post so that we can track which dependency packages are registered to the package list of vcpkg. Currently, vckpg has boost and tinyxml2, and is about to have Eigen as well.

@psigen

This comment has been minimized.

Collaborator

psigen commented Sep 20, 2016

Really? I would have thought that it would be much easier for users to link against DART on Windows if they did not have to compile it from source, which involves pulling many more dependencies and a much longer build, which itself could transiently break.

Also, note that vcpkg can generate nuget packages, which is nice.

@jslee02

This comment has been minimized.

Member

jslee02 commented Sep 20, 2016

You're right. For the end user (who just want to build DART or link to DART for their project), simply linking the binaries would be most convenient than building the whole dependencies from the source. However, we don't have enough manpower (at least so far) for managing the binaries every time the dependencies and DART are updated. Also, we might need to build those packages for the difference configurations (32/64, md/mt, debug/release, and VS versions) every time. For example, we provide dart-prerequisites installer, but it's very tedious task to update the installer because someone needs to build the dependencies manually from the source and create the installer. Some packages need to be updated, but no one working on it.

My point is we could use vcpkg to simplify the packaging process that has been done manually. The package recipes would be kept managed by people, and the building (and installing) packages using vcpkg is much easier than doing it manually. By the way, I think using vcpkg for generating nuget packages is a good idea, although I haven't taken a look at how it works and don't know yet how it is easy yet.

Edit: why not nuget

@jslee02

This comment has been minimized.

Member

jslee02 commented Jan 12, 2018

Resolved by #956

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment