We have various individual tools to automate parts of the Haskell packaging process, like cabal-rpm, but those tools aren't integrated into a fully automated system that keeps Haskell packages up-to-date with as little human intervention as possible. I would like to build that system. Stackage provides us with an accurate list of packages and versions that are known to work together well, and there are basically two flavors: the nightly snapshot (bleeding edge) and the LTS release (stable API). The former is appropriate for Tumbleweed, IMHO, and the latter is appropriate for stable releases like SLE or Leap.

Now, we can use cabal-rpm to generate spec files automatically for all packages in a Stackage release and check them into OBS. The process does need some tweaking, however, because cabal-rpm generates spec files that don't always work well for SUSE. We could (a) branch cabal-rpm and add SUSE-specific know-how to remedy that issue or we could (b) maintain a set of patches that adapt the generated spec files to our needs. Once the Stackage releases are available in an OBS development project, we need another automated process that submits all updated packages to openSUSE:Factory, etc.

Getting that entire system up and running within a week is probably a bit ambitious, but it should be quite possible to achieve a working prototype that solves 70-90% of the tasks we do manually these days.

Looking for hackers with the skills:

haskell ci obs bash

This project is part of:

Hack Week 14


  • almost 8 years ago: evshmarnev liked this project.
  • almost 8 years ago: pluskalm liked this project.
  • almost 8 years ago: osukup liked this project.
  • almost 8 years ago: osukup joined this project.
  • almost 8 years ago: psimons started this project.
  • almost 8 years ago: psimons added keyword "haskell" to this project.
  • almost 8 years ago: psimons added keyword "ci" to this project.
  • almost 8 years ago: psimons added keyword "obs" to this project.
  • almost 8 years ago: psimons added keyword "bash" to this project.
  • almost 8 years ago: psimons originated this project.

  • Comments

    • osukup
      almost 8 years ago by osukup | Reply

      @psimons prepared new way to automate creating haskell packages for rpm based distributions

      results are in opensuse-haskell github repository

      we moved to statically linked haskell applications

      and began with preparing OBS repositories for automated submitting haskell packages

      now wee need prepare config and patch files for differences between generated spec files and suse/distribution specific changes

    • psimons
      almost 8 years ago by psimons | Reply

      The automated generation of OBS projects from a Hackage/Stackage config file works nicely. We have added a few thousand Haskell packages to OBS in https://build.opensuse.org/project/show/devel:languages:haskell:lts:6 (LTS Haskell 6.x) and https://build.opensuse.org/project/show/devel:languages:haskell:lts:next (Stackage Nightly). There is more effort necessary to clean up the build process and to create manual patches to remedy issues in the auto-generated spec files, but all things considered we were are quite happy with the results accomplished during Hackweek.

    Similar Projects

    Update Haskell ecosystem in Tumbleweed to GHC-9.6.x by psimons

    [comment]: # (Please use the project descriptio...

    Test Results for openQA on GitHub by livdywan

    Project Description

    Jobs in openQA are us...

    Package MONAI Machine Learning Models for Medical Applications by jordimassaguerpla

    Project Description

    MONAI Deploy aims to ...

    Support for OVA build in OBS and better support for vmdk disks in kiwi by gmoro

    Project Description

    Implement support for O...

    Improve database_cleaner.rb script in OBS by enavarro_suse

    Project Description

    There is some code to...

    Reduce the amount of TODOs for RuboCop in OBS by enavarro_suse

    Project Description

    The OBS project has a...

    Adapt Bootstrap code in OBS to support theming by enavarro_suse

    Project Description

    After the release of ...

    Elixir LiveView clone of Etherpad (running on ALP) by socon

    Project Description

    Etherpad (etherpad.org)...