106 | | This task consists of implementing a new dependency engine for MacPorts. |
107 | | The current dependency engine properly deals with installing packages, |
108 | | but it does not deal satisfactorily with [[ticket:126|dependencies on variants]] |
109 | | and versions, uninstalling and upgrading. This task requires |
110 | | understanding the dependency relations (required for fetching, building, |
111 | | configuring; static and dynamic linking; dependence at runtime). |
112 | | |
113 | | Instead of re-inventing the wheel it might be helpful to use software |
114 | | available to solve the problem of dependency calculation, e.g. by |
115 | | implementing an interface to a |
116 | | [http://www.mancoosi.org/cudf/ Common Upgradeability Description Format]-based |
117 | | SAT solver. Such a solver could generate an execution plan we could |
118 | | propose to the user and finally execute when confirmed. For this task, |
119 | | the MacPorts concept of variants needs to be transformed into |
120 | | a representation the SAT solvers will be able to optimize. If time |
121 | | permits, rolling back on failed updates can also be implemented. There |
122 | | is also a [browser:trunk/dports/devel/libCUDF/Portfile libCUDF] port |
123 | | that might be helpful to look at. |
| 95 | This task consists of implementing a new dependency engine for MacPorts. The current dependency engine works for everyday use, but it could be extended to support a number of features we would like to have, such as [[ticket:126|dependencies on variants]], versioned dependencies, pre-computing a plan of action (and asking the user for confirmation), conflict resolution proposals and metapackages. Note that we don't expect you to accomplish all of these ideas in one GSoC – setting the base would already be a huge help. |
| 96 | |
| 97 | This task requires understanding the dependency relations (required for fetching, building, configuring; static and dynamic linking; dependence at runtime). |
| 98 | |
| 99 | Instead of re-inventing the wheel it might be helpful to use software available to solve the problem of dependency calculation, e.g. by implementing an interface to a [http://www.mancoosi.org/cudf/ Common Upgradeability Description Format]-based SAT solver. Such a solver could generate an execution plan we could propose to the user and finally execute when confirmed. For this task, the MacPorts concept of variants needs to be transformed into a representation the SAT solvers will be able to optimize. If time permits, rolling back on failed updates can also be implemented. There is also a [browser:trunk/dports/devel/libCUDF/Portfile libCUDF] port that might be helpful to look at. |