From mboxrd@z Thu Jan 1 00:00:00 1970 From: Federico Beffa Subject: Re: updating many haskell packages Date: Sat, 18 Feb 2017 21:23:58 +0100 Message-ID: References: <148639459210.5455.4004512896538726304@what> <148641482905.2874.1459989202091260937@what> <148718709098.32672.6688568200387118544@what> <148735363629.2068.10173874369279597347@what> <148743961548.2035.9177897023989128359@what> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60416) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cfBY1-0007Vm-1g for guix-devel@gnu.org; Sat, 18 Feb 2017 15:24:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cfBY0-00068v-1m for guix-devel@gnu.org; Sat, 18 Feb 2017 15:24:01 -0500 Received: from mail-ua0-x22b.google.com ([2607:f8b0:400c:c08::22b]:35335) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cfBXz-00068h-TZ for guix-devel@gnu.org; Sat, 18 Feb 2017 15:23:59 -0500 Received: by mail-ua0-x22b.google.com with SMTP id k3so11828076uak.2 for ; Sat, 18 Feb 2017 12:23:59 -0800 (PST) In-Reply-To: <148743961548.2035.9177897023989128359@what> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Troy Sankey Cc: Guix-devel On Sat, Feb 18, 2017 at 6:40 PM, Troy Sankey wrote: > Quoting Federico Beffa (2017-02-18 04:43:51) >> On Fri, Feb 17, 2017 at 6:47 PM, Troy Sankey wrote: >> > Forgive me if my understanding of build systems in Guix is flawed, but >> > let me explain my idea with more detail: >> > >> > First, make a data-only package called "ghc-all-cabal-files" containing >> > the checkout of a specific commit of the all-cabal-files repository from >> > github. We can periodically update this package, but there is no >> > traditional "release"---we just keep pulling the HEAD of the hackage >> > branch. This package would then act as a helper package for the haskell >> > build system---every haskell package should implicitly use this package >> > as input. Then we can write a post-unpack phase for the >> > haskell-build-system which updates the unpacked .cabal file iff it finds >> > a newer .cabal file in ghc-all-cabal-files (we know how to determine if >> > the cabal file is newer: it will have a higher "x-revision" value, or >> > that key will merely exist). >> > >> > One problem I have not fully solved is the technical debt associated >> > with keeping the proposed ghc-all-cabal-files package up-to-date. I >> > believe updating it would require all haskell packages to be rebuilt. >> > We could create a build system argument called use-newest-cabal-file to >> > toggle the feature, in which case we would only switch it to #t if we >> > already know the .cabal file to be stale. Then only a small subset of >> > packages would need to be rebuilt, and there is less technical debt than >> > the current solution which involves monkey-patching every cabal file >> > that needs it. >> >> My worry with this approach is that every time that a single cabal >> file in 'ghc-all-cabal-files' is updated all packages will fail to >> build (the implicit input will fail). Given that there are several >> thousands of cabal files, I suspect that this could occur quite often. > > Can you elaborate on how all packages will fail to build? I was thinking that the 'ghc-all-cabal-files' would come from a released tar file that would change and therefore the hash would not match. However, as you mentioned, the package would really come from a git checkout and would therefore not become unavailable. My bad, sorry. Fede