Changes between Version 209 and Version 210 of SummerOfCode


Ignore:
Timestamp:
Apr 16, 2013, 9:35:04 AM (11 years ago)
Author:
raimue (Rainer Müller)
Comment:

Add new idea for improving portfile-gen

Legend:

Unmodified
Added
Removed
Modified
  • SummerOfCode

    v209 v210  
    213213* Potential mentors: TBD
    214214
     215===== Generate Portfiles with auto-detection of build toolchain ===== #portfile-gen
     216
     217To 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.
     218
     219With 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/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.
     220
     221Different 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`.
     222
     223There 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.
     224
     225The 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.
     226
     227* Classification: Medium
     228* Languages: Tcl
     229* Potential mentors: raimue
     230
    215231==== Increase test coverage ==== #testing
    216232