From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ricardo Wurmus Subject: Re: propagating inputs in ghc-* packages Date: Sun, 02 Oct 2016 06:21:37 +0200 Message-ID: <87twcv8jou.fsf@elephly.net> References: <871t00v7fy.fsf@elephly.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42744) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bqcET-0005Rb-6I for guix-devel@gnu.org; Sun, 02 Oct 2016 04:34:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bqcEN-0001hk-7C for guix-devel@gnu.org; Sun, 02 Oct 2016 04:34:48 -0400 Received: from sender163-mail.zoho.com ([74.201.84.163]:21453) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bqcEM-0001h8-Tx for guix-devel@gnu.org; Sun, 02 Oct 2016 04:34:43 -0400 In-reply-to: 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: Federico Beffa Cc: Guix-devel Federico Beffa writes: >>> Ricardo Wurmus writes: >>> >>>> Hi Guix, >>>> >>>> I’m in the middle of upgrading our Haskell packages. (Actually, I’m >>>> just yak shaving. I need “pandoc-citeproc” for “r-knitr”…) >>>> >>>> I noticed that upgrading Haskell packages is a pain in the neck because >>>> of propagated inputs. It seems that not all packages have fully >>>> declared dependencies and just work accidentally because of propagated >>>> inputs of a related package. This also makes upgrades more difficult >>>> because I can get substitutes from Hydra that depend on older versions >>>> of some Haskell packages. >>>> >>>> It looks like Haskell binaries actually embed references to other >>>> Haskell packages, so I’m not sure we actually need to propagate anything >>>> at all. Could someone please confirm this? >>> >>> From what I recall, binary executables include references to packages, >>> but libraries do not. So, at least at the time I wrote the first >>> version of the haskell-build-system, propagated inputs seemed to be >>> necessary for packages providing libraries, but not for ones providing >>> applications. >> >> Thanks for this comment. With Eric Bavier’s patch this seems no longer >> necessary. I’ve already rebuilt a lot of Haskell packages without any >> propagation (and some added inputs), and I’ve got working libraries and >> executables. I’m still rebuilding remaining Haskell packages but I’m >> now convinced that propagation is no longer needed with the current >> version of the build system. >> >> I’m preparing a patch to remove propagation from all Haskell packages. >> Now the question is only whether to do this all in one patch or in one >> patch per package… :) > > That sounds great! Just to be sure: you are saying that if you install > any library (call it A) and the GHC compiler into your profile then you > are able to compile your program (making use of library A) without > also having to manually install any input of library A? This seems to be the case. Here is an example ghci session in which I’m using “ghc-pandoc” as a library without having to install any of the numerous inputs to “ghc-pandoc” (and their inputs): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./pre-inst-env guix environment --ad-hoc ghc ghc-pandoc […] rekado in guix-wip [env]: ghci GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help Prelude> import Text.Pandoc Prelude Text.Pandoc> readMarkdown def "Hello" Right (Pandoc (Meta {unMeta = fromList []}) [Para [Str "Hello"]]) Prelude Text.Pandoc> :q Leaving GHCi. rekado in guix-wip [env]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This looks good to me. Did I misunderstand your query? ~~ Ricardo