[MacPorts] SummerOfCode2015 modified

MacPorts noreply at macports.org
Tue Apr 28 11:35:48 PDT 2015


Page "SummerOfCode2015" was changed by cal at macports.org
Diff URL: <https://trac.macports.org/wiki/SummerOfCode2015?action=diff&version=2>
Revision 2
Changes:
-------8<------8<------8<------8<------8<------8<------8<------8<--------
Index: SummerOfCode2015
=========================================================================
--- SummerOfCode2015 (version: 1)
+++ SummerOfCode2015 (version: 2)
@@ -6,10 +6,38 @@
 || '''Project''' || '''Student''' || '''Mentor''' ||
 || [wiki:SummerOfCode2015#pallet Revitalizing Pallet] || [wiki:ksammons Kyle Sammons] || [wiki:michaelld Michael Dickens] ||
 || [wiki:SummerOfCode2015#port-create Portfile generation framework] || Chunyang Xu || [wiki:pixilla Bradley Giesbrecht] ||
-|| [wiki:SummerOfCode2015#sat Improve Dependency Calculation using SAT solving] || Jackson Isaac || [wiki:cal Clemens Lang] ||
+|| [wiki:SummerOfCode2015#dependencies Improve Dependency Calculation using SAT solving] || Jackson Isaac || [wiki:cal Clemens Lang] ||
 
 ==== Revitalizing Pallet ==== #pallet
 
-==== Portfile generation framework ==== #port-create
+Kyle is joining us again with an idea of his own. He noticed that Pallet is unmaintained and took on the task of bringing it back to life and improving it.
 
-==== Improve Dependency Calculation using SAT solving ==== #sat
+===== Generate Portfiles with auto-detection of build toolchain ===== #portfile-gen
+
+To ease creation of new ports, the helper script [http://trac.macports.org/browser/contrib/portfile-gen/portfile-gen portfile-gen] is able to generated a Portfile stub by taking the name, version and possible a port group as input. This should be extended to handle more things automatically. Lots of options in a Portfile need to be figured out by the maintainer, although they could be extracted automatically from the source.
+
+With just a URL to the tarball of a software, portfile-gen can usually automatically extract the name and the version from the filename. Furthermore, the master_sites and distfiles can be derived from the URL, with special handling for sites like sourceforge/gnu/github/etc. However, it should also be possible to specify this later and start portfile-gen with a pre-downloaded tarball. The checksums for the distfiles can be generated after fetching the tarball (portfile authors should be warned to verify these with upstream!) and even more information can be collected when extracting the tarball.
+
+Different build systems usually have a unique way to be detected. For example, if a `configure.ac` or `configure.in` exists, but no `configure`, we need to run autoconf. If there is also a `Makefile.am`, but no `Makefile.in` this is using automake and we should better use `autoreconf` instead. If there is a `CMakeLists.txt`, we should include the cmake port group. If there is just a Makefile, but no `configure`, chances are high we can skip the configure phase with `use_configure no`.
+
+There are a lot more of such heuristics similar the examples above. This tasks includes implementing a framework where more of these indicators and the resulting actions can be added.
+
+The goal of this task is to create an easy-to-use Portfile generator that derives the basic information of a Portfile automatically. This should lower the amount of lines to be written by Portfile authors and lower the barrier for writing the first Portfile. If this is implemented with Tcl modules in mind, this could probably even go into base as a `port new` or `port create` command.
+
+* Classification: Medium
+* Languages: Tcl
+* Potential mentors: raimue, pixilla
+
+Chunyang Xu will write an extensible framework for Portfile generation during GSoC.
+
+==== Dependency calculation using SAT solving ==== #dependencies
+
+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 dependencies on variants (ticket:126), 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.
+
+This task requires understanding the dependency relations (required for fetching, building, configuring; static and dynamic linking; dependence at runtime).
+
+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.
+
+* Difficulty: Challenging
+* Languages: Tcl, C
+* Potential mentors: cal
-------8<------8<------8<------8<------8<------8<------8<------8<--------

--
Page URL: <https://trac.macports.org/wiki/SummerOfCode2015>
MacPorts <https://www.macports.org/>
Ports system for OS X

This is an automated message. Someone added your email address to be
notified of changes on 'SummerOfCode2015' page.
If it was not you, please report to .


More information about the macports-changes mailing list