JuliaPOMDP / POMDPs.jl

MDPs and POMDPs in Julia - An interface for defining, solving, and simulating fully and partially observable Markov decision processes on discrete and continuous spaces.
http://juliapomdp.github.io/POMDPs.jl/latest/
Other
665 stars 100 forks source link

REQUIRE and build.jl for unregistered packages #82

Closed etotheipluspi closed 7 years ago

etotheipluspi commented 8 years ago

My understanding is that POMDPs.jl will be the only JuliaPOMDP package registered with METADATA. All the other packages can be added using POMDPs.add("package_name"). POMDPs.add("package_name") checks if "package_name" is a JuliaPOMDP package, clones it and builds it.

I'd like to propose that we use POMDPs.add(...) to add all unregistered package dependencies in the build.jl file. I noticed that some packages have the dependencies in the REQUIRE file, and that actually causes Julia to throw an error when building a package.

For example, MCTS.jl needs GenerativeModels.jl and POMDPToolbox.jl. If the build file deps/build.jl looks like:

using POMDPs
POMDPs.add("GenerativeModels")
POMDPs.add("POMDPToolbox")

Then when the user runs POMDPs.add("MCTS"), the two dependencies will get cloned and built automatically. However, if the REQUIRE file has GenerativeModels or POMDPToolbox in it, Julia will throw an error, because it will check if the requirements are met before doing a build.

TLDR; Do not put unregistered dependencies in the REQUIRE file for JuliaPOMDP packages (they won't get installed anyway), put any dependencies in build.jl, and use POMDPs.add.

Edit: please add any JuliaPOMDP packages needed to test your package to the build.jl file as well. For testing solvers, we usually need POMDPModels.

tawheeler commented 8 years ago

Good thoughts! To clarify, registered dependencies still go in REQUIRE?

etotheipluspi commented 8 years ago

Yep, edited the post to clarify!

etotheipluspi commented 7 years ago

This is the adopted convention now, closing.