From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Vollmert Subject: bug#36511: extraneous recompiles of scm files while editing gnu/packages/ Date: Mon, 8 Jul 2019 13:46:11 +0200 Message-ID: References: <87k1cwjjul.fsf@gnu.org> <878st8g7w0.fsf@gnu.org> Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:53158) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hkS6t-0003NK-QJ for bug-guix@gnu.org; Mon, 08 Jul 2019 07:47:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hkS6r-00031X-L5 for bug-guix@gnu.org; Mon, 08 Jul 2019 07:47:07 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:49159) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hkS6o-0002z1-C7 for bug-guix@gnu.org; Mon, 08 Jul 2019 07:47:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hkS6o-0003My-6m for bug-guix@gnu.org; Mon, 08 Jul 2019 07:47:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <878st8g7w0.fsf@gnu.org> List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 36511@debbugs.gnu.org > On 8. Jul 2019, at 12:03, Ludovic Court=C3=A8s wrote: >=20 > Robert Vollmert skribis: >=20 >>> On 5. Jul 2019, at 22:40, Ludovic Court=C3=A8s wrote: >>>=20 >>> Hi, >>>=20 >>> Robert Vollmert skribis: >>>=20 >>>> rob@garp ~/guix$ nano gnu/packages/haskell.scm=20 >>>> rob@garp ~/guix$ ./pre-inst-env guix build ghc-ansi-wl-pprint >>>=20 >>> I=E2=80=99d suggest running =E2=80=9Cmake=E2=80=9D once you=E2=80=99ve= edited a file. >>>=20 >>> It=E2=80=99s not strictly necessary (Guile then simply evaluates = code instead of >>> running compiled code), but it will allow you to get rid of these >>> warnings, the compiler might warn you ahead of time of possible >>> mistakes, and the whole thing will be slightly faster. >>>=20 >>> Does that make sense? >>=20 >> It does make sense. However once again my complaint is a bit more = about the >> developer experience than how to work around the current state. I = feel that >> a situation where the obvious thing works but is painful (guile debug = spam, >> slowness) and you need to learn to do things differently (always run = make first, >> which frequently causes work you don=E2=80=99t even care about, such = as a guix-daemon >> recompile or po-file work) could be improved upon. >=20 > Yes I agree. Things to have to be compiled at one point though. We > could let Guile auto-compile code, but unfortunately that comes with = its > own warts: the equivalent of =E2=80=9Cmake clean-go=E2=80=9D, for = instance when an ABI > incompatibility pops up, is =E2=80=9Crm -rf ~/.cache/guile/ccache=E2=80=9D= , and that too > is something a developer has too learn, and one could argue that = it=E2=80=99s > less familiar than =E2=80=9Cmake=E2=80=9D or =E2=80=9Cmake clean.=E2=80=9D= >=20 > So, I=E2=80=99m not satisfied with the ./pre-inst-env and =E2=80=98make=E2= =80=99 workflow, but > we have yet to come up with a concrete proposal for a better workflow. >=20 >> Concretely, this bug report is in response to >> https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00009.html >>=20 >> In that spirit, =E2=80=9Cyou should run make first=E2=80=9D is not = answer I=E2=80=99m completely >> happy with. :) >=20 > I was trying to address the =E2=80=9CI see recompilation messages=E2=80=9D= issue that > you raised in the current framework. I didn=E2=80=99t initially = interpret the > bug report as a call for a new workflow. It=E2=80=99s not meant to be a call for a new workflow, either. The = original suggestion from the =E2=80=9Cbeyond 1.0=E2=80=9D thread was a request = for a focus on the developer experience by working on the quality of error messages and command output. One of the instances where that applies is with respect to guile recompile scam, as I remarked there. This bug report specifically is in response to this part of the = exchange: >> =E2=80=94 currently it=E2=80=99s very easy to miss the >> actual cause of an error between a lot of noise, e.g. all those = =E2=80=9Crecompiling >> scheme module=E2=80=9D messages > When do you see =E2=80=9Crecompiling=E2=80=9D messages? > > It looks like a bug we could address soonish, not a long-term task. = :-) As a concrete proposal, I=E2=80=99d be perfectly happy if, instead of = printing a screen full of guile recompile notifications, I=E2=80=99d get a clear = warning that I should run make instead. Here=E2=80=99s another example, while working on a local checkout of a = channel. Calling `guild compile` just makes things worse. $ rm -rf ~/.cache/guile $ guix build -L . -L ../guix-postgrest puzzledb-frontend ;;; note: source file ../guix-postgrest/bytestring.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/bytestring.go ;;; note: source file ../guix-postgrest/check.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/check.go ;;; note: source file ../guix-postgrest/control.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/control.go ;;; note: source file ../guix-postgrest/text.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/text.go ;;; note: source file ../guix-postgrest/data.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/data.go ;;; note: source file ../guix-postgrest/more-data.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/more-data.go ;;; note: source file ../guix-postgrest/containers.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/containers.go ;;; note: source file ../guix-postgrest/core.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/core.go ;;; note: source file ../guix-postgrest/postgrest-deps.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/postgrest-deps.go ;;; note: source file ../guix-postgrest/postgrest.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/postgrest.go ;;; note: source file ../guix-postgrest/sql.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/sql.go ;;; note: source file ../guix-postgrest/template.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/template.go ;;; note: source file ../guix-postgrest/wai.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/wai.go ;;; note: source file ../guix-postgrest/service.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/service.go ;;; note: source file ./elm.scm ;;; newer than compiled = /gnu/store/amjb2461gsrcqiw4faifrf3vpyw46r36-elm/lib/guile/2.2/site-ccache/= elm.go ;;; note: source file ./elm2nix.scm ;;; newer than compiled = /gnu/store/amjb2461gsrcqiw4faifrf3vpyw46r36-elm/lib/guile/2.2/site-ccache/= elm2nix.go ;;; note: source file ./versions.scm ;;; newer than compiled = /gnu/store/amjb2461gsrcqiw4faifrf3vpyw46r36-elm/lib/guile/2.2/site-ccache/= versions.go = /gnu/store/xa65v4m6afmsimb0gg5rdr9v63i9qmd3-puzzledb-frontend-20190625-git= $ rob@garp ~/guix-elm$ guild compile -L . -L ../guix-postgrest *.scm ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=3D0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /run/current-system/profile/bin/guild ;;; compiled = /home/rob/.cache/guile/ccache/2.2-LE-8-3.A/gnu/store/9alic3caqhay3h8mx4iih= pmyj6ymqpcx-guile-2.2.4/bin/guild.go wrote = `/home/rob/.cache/guile/ccache/2.2-LE-8-3.A/home/rob/guix-elm/versions.scm= .go' wrote = `/home/rob/.cache/guile/ccache/2.2-LE-8-3.A/home/rob/guix-elm/elm.scm.go' wrote = `/home/rob/.cache/guile/ccache/2.2-LE-8-3.A/home/rob/guix-elm/elm2nix.scm.= go=E2=80=99 $ rob@garp ~/guix-elm$ guix build -L . -L ../guix-postgrest = puzzledb-frontend ;;; note: source file ../guix-postgrest/bytestring.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/bytestring.go ;;; note: source file ../guix-postgrest/check.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/check.go ;;; note: source file ../guix-postgrest/control.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/control.go ;;; note: source file ../guix-postgrest/text.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/text.go ;;; note: source file ../guix-postgrest/data.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/data.go ;;; note: source file ../guix-postgrest/more-data.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/more-data.go ;;; note: source file ../guix-postgrest/containers.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/containers.go ;;; note: source file ../guix-postgrest/core.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/core.go ;;; note: source file ../guix-postgrest/postgrest-deps.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/postgrest-deps.go ;;; note: source file ../guix-postgrest/postgrest.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/postgrest.go ;;; note: source file ../guix-postgrest/sql.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/sql.go ;;; note: source file ../guix-postgrest/template.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/template.go ;;; note: source file ../guix-postgrest/wai.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/wai.go ;;; note: source file ../guix-postgrest/service.scm ;;; newer than compiled = /gnu/store/sk1j6fkh855cm6ypp6799pgf8wvnlk76-postgrest/lib/guile/2.2/site-c= cache/service.go ;;; note: source file ./elm.scm ;;; newer than compiled = /gnu/store/amjb2461gsrcqiw4faifrf3vpyw46r36-elm/lib/guile/2.2/site-ccache/= elm.go ;;; found fresh local cache at = /home/rob/.cache/guile/ccache/2.2-LE-8-3.A/home/rob/guix-elm/elm.scm.go ;;; note: source file ./elm2nix.scm ;;; newer than compiled = /gnu/store/amjb2461gsrcqiw4faifrf3vpyw46r36-elm/lib/guile/2.2/site-ccache/= elm2nix.go ;;; found fresh local cache at = /home/rob/.cache/guile/ccache/2.2-LE-8-3.A/home/rob/guix-elm/elm2nix.scm.g= o ;;; note: source file ./versions.scm ;;; newer than compiled = /gnu/store/amjb2461gsrcqiw4faifrf3vpyw46r36-elm/lib/guile/2.2/site-ccache/= versions.go ;;; found fresh local cache at = /home/rob/.cache/guile/ccache/2.2-LE-8-3.A/home/rob/guix-elm/versions.scm.= go = /gnu/store/xa65v4m6afmsimb0gg5rdr9v63i9qmd3-puzzledb-frontend-20190625-git=