Changes between Version 220 and Version 221 of SummerOfCode


Ignore:
Timestamp:
Feb 3, 2014, 10:13:37 PM (10 years ago)
Author:
neverpanic (Clemens Lang)
Comment:

remove binary proposal (I don't know what's left to do there), reword dependency-rewrite proposal

Legend:

Unmodified
Added
Removed
Modified
  • SummerOfCode

    v220 v221  
    9191=== Core tasks ===
    9292
    93 ==== Binaries ==== #binaries
    94 
    95 MacPorts provides binaries but needs several enhancements. This task
    96 would include updating the chroot mechanism (ceased being functional
    97 with Snow Leopard) and adding support for variants. (See also
    98 [[MPAB|MacPorts AutoBuild]].)
    99 
    100 * Difficulty: Relatively challenging to challenging
    101 * Languages: Tcl
    102 * Potential mentors: TBD
    103 
    10493==== Dependency calculation using SAT solving ==== #dependencies
    10594
    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.
     95This 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
     97This task requires understanding the dependency relations (required for fetching, building, configuring; static and dynamic linking; dependence at runtime).
     98
     99Instead 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.
    124100
    125101* Difficulty: Challenging