Changes between Version 3 and Version 4 of SoC2007Hackage

Jul 9, 2007 1:27:32 PM (10 years ago)
Sascha Böhme



  • SoC2007Hackage

    v3 v4  
    1010The plan is for a daemon to build HackageDB packages and add the resulting build logs and Haddock documentation to the package pages.
    1111Since building Cabal packages may execute arbitrary code, it must be done in a protected environment (e.g. chroot).
     12Currently, there are two tools for this purpose, a bash script to set up an appropriate chroot environment and a Haskell application to perform the generation of Haddock documentation.
    13 === Done ===
     14The general idea is as follows. In the secure environment, an unprivileged user downloads a package (the work unit), inspects it dependencies from the package's Cabal file and downloads necessary dependency packages, if not already available on the system. After the dependencies have been built and their documentation was generated, the work unit is processed in the same way. During that, a build log is generated which is uploaded to the corresponding package's HackageDB website along with the package's Haddock documentation.
    15  * setup_chroot script: sets up a chroot environment based on debootstrap and the testing version of Debian
    16  * autodoc tool: downloads packages and their dependencies, builds them in a choot environment, creates the Haddock documentation and build logs
    18 === TODO ===
     17== Other extensions of the HackageDB website ==
    20  * identify C libraries needed to build packages (e.g. SDL, X11, OpenGL, ...) and add them to the chroot environment
    21  * improve autodoc output, especially more readable build logs
    22  * Hoogle output
    23  * run test suites of packages
    24  * allow for different compilers and compiler versions
     19See [ HackageDB ToDo list], especially ''Package properties'' and ''Queries''.
     22== Progress ==
     26  The setup_chroot script, based on [ debootstrap], allows to create a basic environment to build Cabal packages. It consists of GHC 6.6, Cabal 1.1.7 (taken from the darcs repository) and Haddock 0.8, along with Alex and Happy and other necessary tools. It lacks several libraries needed to build all packages currently available at HackageDB.
     28  The autodoc tool already fulfills the above the requirements (ignoring the packages whose dependencies cannot be met, i.e. SDL and alike). In a test run, 102 package documentations could be built. For now, the tool uses the approach of cabal_install, that is, it builds all dependency packages before processing the actual package. This can be sped up by storing already built packages in the global package repository. Additionally, the autodoc tool currently relies explicitly on a chroot environment, although this is not strictly needed.
     30  * '''Todo list'''
     31    * identify C libraries needed to build packages (e.g. SDL, X11, OpenGL, ...) and add them to what the setup_chroot script is already requiring
     32    * rewrite the autodoc tool to use a bottom-up approach for building packages, that is, successfully built packages are stored in the system and not rebuilt again afterwards
     33    * remove the dependency on a chroot environment from the autodoc tool, thus improve platform-independency
     34    * improve autodoc output, especially more readable build logs
     37  * ''' Possible extensions '''
     38    * Hoogle output
     39    * run test suites of packages
     40    * allow for different compilers and compiler versions