Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Maxim Cournoyer <maxim.cournoyer@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 2 Jun 2020 12:25:33 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 02 08:25:33 2020 Received: from localhost ([127.0.0.1]:38140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1jg5z3-0002wi-3Z for submit <at> debbugs.gnu.org; Tue, 02 Jun 2020 08:25:33 -0400 Received: from mx.h4ck.space ([159.69.146.50]:41000) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <andi@HIDDEN>) id 1jg5z1-0002wS-Dx for 20272 <at> debbugs.gnu.org; Tue, 02 Jun 2020 08:25:32 -0400 Date: Tue, 2 Jun 2020 14:25:24 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=notmuch.email; s=mail; t=1591100724; bh=J+gT8z88nqk17QnYix00r00eAvPqqzV/JhNHBS1k3dI=; h=Date:From:To:Subject; b=o0ug7q/fWeu3/Rsq3K66OGD7UA2DVYpUlbMEOtaSDt7NhmHb5+mI1T0RR2f3RcehT B4umPlgm4MQJu6CFBU/WDuFvAZth/Z9mn0E9I7Uqp99wNIsaoeCyRFG1In9pbJ+vPQ DMrFw2wN3Tx9f8rVX7BmoeFfKklauJ17OfgeZWg0= From: Andreas Rammhold <andi@HIDDEN> To: 20272 <at> debbugs.gnu.org Subject: Support reproducible builds Message-ID: <20200602122524.tknz2vuhskmiu56j@wrt> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) I've just stumpled upon this as within Nixpkgs we have a pending [PR] that references this issue. Since it reads as if it should be solved in Guile 2.1+ but still occurs for us in nixpkgs when using parallel builds (aka using multiple cores in a single build) I thought it might be a good to get in touch. Updating our expression to Guile 3.0.2 did not fix the reproducibility issues either (when built using multiple cores). I've just now tried a Guix 1.1.0 QEMU image and invoked `guix build --round=2 -K guile --check -c 8` and it also wasn't reproducible. A bunch of .go files showed differences between the builds. Am I missings something? Would gladly help if there is something I can do. [PR]: https://github.com/NixOS/nixpkgs/pull/78778
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 1 Jun 2020 21:00:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 01 17:00:41 2020 Received: from localhost ([127.0.0.1]:37207 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1jfrY0-0007lg-U0 for submit <at> debbugs.gnu.org; Mon, 01 Jun 2020 17:00:41 -0400 Received: from mx.h4ck.space ([159.69.146.50]:41218) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <andi@HIDDEN>) id 1jfrXv-0007lO-41 for 20272 <at> debbugs.gnu.org; Mon, 01 Jun 2020 17:00:39 -0400 Resent-From: andi@HIDDEN DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=notmuch.email; s=mail; t=1591045229; bh=J+gT8z88nqk17QnYix00r00eAvPqqzV/JhNHBS1k3dI=; h=Resent-From:Resent-Date:Resent-To:Date:From:To:Subject; b=qKzdiwcls8GX1oa7YOikfBHGHWbFtMvARitjEoSmD+QrQsQRAM8SZrHzLqW4BMEpo BUkMuuJ2+JhjCD7YntqZHBOpgPETdt8HHDmfCTC+dQsjuqOPLrnfu4ahBp09+PhTPY 7wLtWsVPt9ZLQJhXxUiBV6mXQ/4EN+YRryEuGV78= Resent-Date: Mon, 1 Jun 2020 23:00:27 +0200 Resent-Message-ID: <20200601210027.sqowsauzpqinqfxw@wrt> Resent-To: 20272 <at> debbugs.gnu.org Date: Mon, 1 Jun 2020 22:45:51 +0200 From: Andreas Rammhold <andi@HIDDEN> To: 20272 <at> debbugs.gnu.org Subject: Re: Support reproducible builds Message-ID: <20200601204550.4mevbvzltq5pqzru@wrt> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Tags: inbox X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) I've just stumpled upon this as within Nixpkgs we have a pending [PR] that references this issue. Since it reads as if it should be solved in Guile 2.1+ but still occurs for us in nixpkgs when using parallel builds (aka using multiple cores in a single build) I thought it might be a good to get in touch. Updating our expression to Guile 3.0.2 did not fix the reproducibility issues either (when built using multiple cores). I've just now tried a Guix 1.1.0 QEMU image and invoked `guix build --round=2 -K guile --check -c 8` and it also wasn't reproducible. A bunch of .go files showed differences between the builds. Am I missings something? Would gladly help if there is something I can do. [PR]: https://github.com/NixOS/nixpkgs/pull/78778
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.andi@HIDDEN
to control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Received: (at 20272-done) by debbugs.gnu.org; 7 Mar 2017 19:56:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 07 14:56:59 2017 Received: from localhost ([127.0.0.1]:45031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1clLE9-00040f-41 for submit <at> debbugs.gnu.org; Tue, 07 Mar 2017 14:56:57 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1clLE7-00040S-Av for 20272-done <at> debbugs.gnu.org; Tue, 07 Mar 2017 14:56:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1clLDy-0005Rs-TK for 20272-done <at> debbugs.gnu.org; Tue, 07 Mar 2017 14:56:50 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1clLCu-0004nG-7h; Tue, 07 Mar 2017 14:55:40 -0500 Received: from reverse-83.fdn.fr ([80.67.176.83]:35136 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1clLCt-0004bn-FJ; Tue, 07 Mar 2017 14:55:39 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> <87eg12fbog.fsf@HIDDEN> <871sx0vnyn.fsf@HIDDEN> <87mvfd874q.fsf@HIDDEN> Date: Tue, 07 Mar 2017 20:55:36 +0100 In-Reply-To: <87mvfd874q.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Fri, 30 Dec 2016 22:00:21 +0100") Message-ID: <87innksvyf.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 20272-done Cc: 20272-done <at> debbugs.gnu.org, Mark H Weaver <mhw@HIDDEN>, Andy Wingo <wingo@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -5.0 (-----) ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > >> With the attached patch I can build =E2=80=98stable-2.0=E2=80=99 with --= rounds=3D2 and >> there are no discrepancies. >> >> I=E2=80=99ll apply it next week if there are no objections. > > Pushed as 458ae248ab353af24e27b8fb3e5fe7a8b78ae219! Applied as commit 84a740d86a5afd235f1b47ac66c88db010b1d56b in master (2.1). I haven=E2=80=99t yet done a --rounds=3D2 build of master, but hopefully th= at=E2=80=99ll be fine! Ludo=E2=80=99.
ludo@HIDDEN (Ludovic Courtès)
:ludo@HIDDEN (Ludovic Courtès)
:Received: (at 20272) by debbugs.gnu.org; 6 Mar 2017 20:13:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 06 15:13:12 2017 Received: from localhost ([127.0.0.1]:43237 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ckz0J-0001xn-Mq for submit <at> debbugs.gnu.org; Mon, 06 Mar 2017 15:13:12 -0500 Received: from pb-sasl1.pobox.com ([64.147.108.66]:62937 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1ckz0H-0001xf-RM for 20272 <at> debbugs.gnu.org; Mon, 06 Mar 2017 15:13:10 -0500 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id 38C2E7300F; Mon, 6 Mar 2017 15:13:09 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; s=sasl; bh=OVrb6oS4tESm IsXdarFsaXsd5PU=; b=fELI/1n18JayuOFzNSuT4VUXD0/gZjUmp0+TwLTYrl+z LilJKu0chCcUbZ3svxYKSIJENEM0nz99FSGj/hhS3pEMsB0KRicwYZBVr4IHKmrG Suxry7iDHF65rNGVPgX1DWdOoQ1I8S3vHSqWjZZda/9wyALhrGztS6SvPuEySXg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; q=dns; s=sasl; b=Lqda6I RRW5x6YfFOnBAnhSp5IgJeQQU9O5Qw6/SCB5jMEA4V3xMIGWB78LFfLmNuCMKq+B PeoHCBAIAWEb6H46uJqyNBDxLQwsAGBk2mhciECIEOO+aJGxxV62V/yColc0Jfxw yrmZDX/5FfYuyOHH0sy2Yc3JeKzKfGSoqMZYI= Received: from pb-sasl1.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl1.pobox.com (Postfix) with ESMTP id 315067300E; Mon, 6 Mar 2017 15:13:09 -0500 (EST) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl1.pobox.com (Postfix) with ESMTPSA id 5D4DD7300D; Mon, 6 Mar 2017 15:13:07 -0500 (EST) From: Andy Wingo <wingo@HIDDEN> To: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> <87eg12fbog.fsf@HIDDEN> <871sx0vnyn.fsf@HIDDEN> <87efyio399.fsf@HIDDEN> <8737er5tzd.fsf@HIDDEN> Date: Mon, 06 Mar 2017 21:13:00 +0100 In-Reply-To: <8737er5tzd.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Sun, 05 Mar 2017 21:49:58 +0100") Message-ID: <87varm9nar.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Pobox-Relay-ID: 50BFA772-02A9-11E7-84DF-B667064AB293-02397024!pb-sasl1.pobox.com X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Mark H Weaver <mhw@HIDDEN>, Jan Nieuwenhuizen <janneke@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) Hi, On Sun 05 Mar 2017 21:49, ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > Andy Wingo <wingo@HIDDEN> skribis: > >> On Thu 22 Dec 2016 00:53, ludo@HIDDEN (Ludovic Court=C3=A8s) writes: >> >>> +(define (module-generate-unique-id! m) >>> + (let ((i (module-next-unique-id m))) >>> + (set-module-next-unique-id! m (+ i 1)) >>> + i)) >> >> This introduces a race condition when expanding from multiple threads at >> once. Any plan here? > > Good point! We could grab a per-module mutex for that, though that=E2=80= =99s > again a fat mutex. > > Thoughts? I would use atomic boxes if possible, but they are in another module :/ Even mutexes aren't directly available in boot-9 any more... Alternately we can make a new primitive for module-generate-unique-id! which can obviously use C. That's probably the easiest option, sadly! Andy
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 5 Mar 2017 20:50:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 05 15:50:35 2017 Received: from localhost ([127.0.0.1]:41370 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ckd6x-0007Gw-9K for submit <at> debbugs.gnu.org; Sun, 05 Mar 2017 15:50:35 -0500 Received: from eggs.gnu.org ([208.118.235.92]:48931) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1ckd6u-0007Gj-Pu for 20272 <at> debbugs.gnu.org; Sun, 05 Mar 2017 15:50:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1ckd6l-0000MG-EG for 20272 <at> debbugs.gnu.org; Sun, 05 Mar 2017 15:50:27 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35046) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1ckd6Q-00009f-Rf; Sun, 05 Mar 2017 15:50:02 -0500 Received: from reverse-83.fdn.fr ([80.67.176.83]:53488 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1ckd6P-0001UJ-TC; Sun, 05 Mar 2017 15:50:02 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Andy Wingo <wingo@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> <87eg12fbog.fsf@HIDDEN> <871sx0vnyn.fsf@HIDDEN> <87efyio399.fsf@HIDDEN> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 15 =?utf-8?Q?Vent=C3=B4se?= an 225 de la =?utf-8?Q?R?= =?utf-8?Q?=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-unknown-linux-gnu Date: Sun, 05 Mar 2017 21:49:58 +0100 In-Reply-To: <87efyio399.fsf@HIDDEN> (Andy Wingo's message of "Tue, 28 Feb 2017 14:26:26 +0100") Message-ID: <8737er5tzd.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Mark H Weaver <mhw@HIDDEN>, Jan Nieuwenhuizen <janneke@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -5.0 (-----) Hi! Andy Wingo <wingo@HIDDEN> skribis: > On Thu 22 Dec 2016 00:53, ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > >> +(define (module-generate-unique-id! m) >> + (let ((i (module-next-unique-id m))) >> + (set-module-next-unique-id! m (+ i 1)) >> + i)) > > This introduces a race condition when expanding from multiple threads at > once. Any plan here? Good point! We could grab a per-module mutex for that, though that=E2=80= =99s again a fat mutex. Thoughts? Ludo=E2=80=99.
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 28 Feb 2017 13:26:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 28 08:26:40 2017 Received: from localhost ([127.0.0.1]:59196 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cihnb-0006ka-TL for submit <at> debbugs.gnu.org; Tue, 28 Feb 2017 08:26:40 -0500 Received: from pb-sasl2.pobox.com ([64.147.108.67]:58433 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1cihna-0006kS-Fk for 20272 <at> debbugs.gnu.org; Tue, 28 Feb 2017 08:26:38 -0500 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 5801E5F02F; Tue, 28 Feb 2017 08:26:36 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; s=sasl; bh=ll9V8Hv5WlDw +1qYjb3JDNAt/WU=; b=RRQNw0PlpUv/k2mXuGFbVshxrSkBf8S5owu1a3XKU5tT fRyqxhaGFYTtKKS6xWcL4/BVxL8qd7/6OIl+7QJs1ZfjuFIBs3bJntlyhiUp5inI 0KpVeYwtAhxRoCxwFcURBnKIGyOoDwv5Rk/UB0d8QzPk1ssgvsrwqIF6BGL5OzQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; q=dns; s=sasl; b=arFviW pSKat5xLs8OK9RI0D8bBLHNjJzHchHvx12Q2hIvvuLWfoz6+T30+pwgFFp0KdB1O HvOZ5oVST1O9S0JsMDySowe8N56qjUbeqgd33XkOACi4yUSSfRyAZ/A/vfiXRDGI bChAF6ndpCVMxuFD8libyjKuObw/8OA/Mqekw= Received: from pb-sasl2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 509165F02E; Tue, 28 Feb 2017 08:26:36 -0500 (EST) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl2.pobox.com (Postfix) with ESMTPSA id 81DC45F02D; Tue, 28 Feb 2017 08:26:35 -0500 (EST) From: Andy Wingo <wingo@HIDDEN> To: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> <87eg12fbog.fsf@HIDDEN> <871sx0vnyn.fsf@HIDDEN> Date: Tue, 28 Feb 2017 14:26:26 +0100 In-Reply-To: <871sx0vnyn.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Thu, 22 Dec 2016 00:53:20 +0100") Message-ID: <87efyio399.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Pobox-Relay-ID: 86FF0174-FDB9-11E6-8F56-6141F2301B6D-02397024!pb-sasl2.pobox.com X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Mark H Weaver <mhw@HIDDEN>, Jan Nieuwenhuizen <janneke@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) On Thu 22 Dec 2016 00:53, ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > +(define (module-generate-unique-id! m) > + (let ((i (module-next-unique-id m))) > + (set-module-next-unique-id! m (+ i 1)) > + i)) This introduces a race condition when expanding from multiple threads at once. Any plan here? Andy
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 30 Dec 2016 21:02:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 30 16:02:00 2016 Received: from localhost ([127.0.0.1]:60638 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cN4JL-00027I-Vn for submit <at> debbugs.gnu.org; Fri, 30 Dec 2016 16:02:00 -0500 Received: from eggs.gnu.org ([208.118.235.92]:51542) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1cN4JK-000275-8Q for 20272 <at> debbugs.gnu.org; Fri, 30 Dec 2016 16:01:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cN4JA-0001hr-7N for 20272 <at> debbugs.gnu.org; Fri, 30 Dec 2016 16:01:53 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:60764) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cN4Ho-0000CL-EJ; Fri, 30 Dec 2016 16:00:24 -0500 Received: from reverse-83.fdn.fr ([80.67.176.83]:52888 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1cN4Hn-0005Og-JM; Fri, 30 Dec 2016 16:00:23 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> <87eg12fbog.fsf@HIDDEN> <871sx0vnyn.fsf@HIDDEN> Date: Fri, 30 Dec 2016 22:00:21 +0100 In-Reply-To: <871sx0vnyn.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Thu, 22 Dec 2016 00:53:20 +0100") Message-ID: <87mvfd874q.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.2 (--------) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Mark H Weaver <mhw@HIDDEN>, Andy Wingo <wingo@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -8.2 (--------) ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > With the attached patch I can build =E2=80=98stable-2.0=E2=80=99 with --r= ounds=3D2 and > there are no discrepancies. > > I=E2=80=99ll apply it next week if there are no objections. Pushed as 458ae248ab353af24e27b8fb3e5fe7a8b78ae219! Ludo=E2=80=99.
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 21 Dec 2016 23:54:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 21 18:54:46 2016 Received: from localhost ([127.0.0.1]:50716 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cJqib-0004Af-Id for submit <at> debbugs.gnu.org; Wed, 21 Dec 2016 18:54:46 -0500 Received: from eggs.gnu.org ([208.118.235.92]:58506) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1cJqiZ-0004AQ-RO for 20272 <at> debbugs.gnu.org; Wed, 21 Dec 2016 18:54:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cJqiR-0000on-Kq for 20272 <at> debbugs.gnu.org; Wed, 21 Dec 2016 18:54:38 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:56341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cJqhI-0000Dr-ND; Wed, 21 Dec 2016 18:53:24 -0500 Received: from reverse-83.fdn.fr ([80.67.176.83]:35652 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1cJqhG-0006vh-La; Wed, 21 Dec 2016 18:53:24 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> <87eg12fbog.fsf@HIDDEN> Date: Thu, 22 Dec 2016 00:53:20 +0100 In-Reply-To: <87eg12fbog.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Wed, 21 Dec 2016 00:00:47 +0100") Message-ID: <871sx0vnyn.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.1 (--------) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Mark H Weaver <mhw@HIDDEN>, Andy Wingo <wingo@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -8.1 (--------) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable With the attached patch I can build =E2=80=98stable-2.0=E2=80=99 with --rou= nds=3D2 and there are no discrepancies. I=E2=80=99ll apply it next week if there are no objections. Next I=E2=80=99ll adjust it for =E2=80=98master=E2=80=99. Thanks, Ludo=E2=80=99. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-psyntax-Generate-identifiers-in-a-deterministic-fash.patch Content-Transfer-Encoding: quoted-printable Content-Description: the patch From 33ac270ad8d6f2fbb7fcb07294d1149aa82caf9e Mon Sep 17 00:00:00 2001 From: Mark H Weaver <mhw@HIDDEN> Date: Fri, 12 Feb 2016 11:19:38 -0500 Subject: [PATCH] psyntax: Generate identifiers in a deterministic fashion. MIME-Version: 1.0 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: 8bit Fixes <http://bugs.gnu.org/20272>. * module/ice-9/boot-9.scm (module-generate-unique-id!) (module-gensym): New procedures. (module): Add 'next-unique-id' field. (the-root-module): Inherit 'next-unique-id' value from early stub. (make-module, make-autoload-interface): Adjust calls to module-constructor. * module/ice-9/psyntax.scm (gen-label, new-mark): Generate unique identifiers from the module name and the per-module unique-id. (build-lexical-var, generate-temporaries): Use 'module-gensym' instead of 'gensym'. * module/ice-9/psyntax-pp.scm: Regenerate. * module/language/tree-il/fix-letrec.scm (fix-letrec!): Use 'module-gensym' instead of 'gensym'. * module/system/base/syntax.scm (define-record): Likewise. (transform-record): Likewise. Co-authored-by: Ludovic Court=C3=A8s <ludo@HIDDEN> --- module/ice-9/boot-9.scm | 42 +++++++++++++++-- module/ice-9/psyntax-pp.scm | 83 +++++++++++++++++++++---------= ---- module/ice-9/psyntax.scm | 15 +++--- module/language/tree-il/fix-letrec.scm | 6 ++- module/system/base/syntax.scm | 8 ++-- 5 files changed, 106 insertions(+), 48 deletions(-) diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index 426d831..7f35325 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -1,6 +1,6 @@ ;;; -*- mode: scheme; coding: utf-8; -*- =20 -;;;; Copyright (C) 1995-2014 Free Software Foundation, Inc. +;;;; Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -384,6 +384,13 @@ If there is no handler at all, Guile prints an error a= nd then exits." (define (module-ref module sym) (let ((v (module-variable module sym))) (if v (variable-ref v) (error "badness!" (pk module) (pk sym))))) +(define module-generate-unique-id! + (let ((next-id 0)) + (lambda (m) + (let ((i next-id)) + (set! next-id (+ i 1)) + i)))) +(define module-gensym gensym) (define (resolve-module . args) #f) =20 @@ -2021,7 +2028,8 @@ VALUE." submodules submodule-binder public-interface - filename))) + filename + next-unique-id))) =20 =20 ;; make-module &opt size uses binder @@ -2049,7 +2057,7 @@ VALUE." (make-hash-table %default-import-size) '() (make-weak-key-hash-table 31) #f - (make-hash-table 7) #f #f #f)) + (make-hash-table 7) #f #f #f 0)) =20 =20 @@ -2656,6 +2664,11 @@ VALUE." (let ((m (make-module 0))) (set-module-obarray! m (%get-pre-modules-obarray)) (set-module-name! m '(guile)) + + ;; Inherit next-unique-id from preliminary stub of + ;; %module-get-next-unique-id! defined above. + (set-module-next-unique-id! m (module-generate-unique-id! #f)) + m)) =20 ;; The root interface is a module that uses the same obarray as the @@ -2684,6 +2697,11 @@ VALUE." the-root-module (error "unexpected module to resolve during module boot" name))) =20 +(define (module-generate-unique-id! m) + (let ((i (module-next-unique-id m))) + (set-module-next-unique-id! m (+ i 1)) + i)) + ;; Cheat. These bindings are needed by modules.c, but we don't want ;; to move their real definition here because that would be unnatural. ;; @@ -2714,6 +2732,21 @@ VALUE." (nested-define-module! (resolve-module '() #f) name mod) (accessor mod)))))) =20 +(define* (module-gensym #:optional (id " mg") (m (current-module))) + "Return a fresh symbol in the context of module M, based on ID (a +string or symbol). As long as M is a valid module, this procedure is +deterministic." + (define (->string number) + (number->string number 16)) + + (if m + (string->symbol + (string-append id "-" + (->string (hash (module-name m) most-positive-fixnum= )) + "-" + (->string (module-generate-unique-id! m)))) + (gensym id))) + (define (make-modules-in module name) (or (nested-ref-module module name) (let ((m (make-module 31))) @@ -3013,7 +3046,7 @@ VALUE." #:warning "Failed to autoload ~a in ~a:\n" sym name)))) (module-constructor (make-hash-table 0) '() b #f #f name 'autoload #f (make-hash-table 0) '() (make-weak-value-hash-tabl= e 31) #f - (make-hash-table 0) #f #f #f))) + (make-hash-table 0) #f #f #f 0))) =20 (define (module-autoload! module . args) "Have @var{module} automatically load the module named @var{name} when o= ne @@ -4305,7 +4338,6 @@ when none is available, reading FILE-NAME with READER= ." syntax-locally-bound-identifiers syntax-session-id))) =20 - =20 ;;; Place the user in the guile-user module. diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm index 1ec5107..3df661d 100644 --- a/module/ice-9/psyntax-pp.scm +++ b/module/ice-9/psyntax-pp.scm @@ -310,9 +310,7 @@ (syntax-object-expression x) (join-marks (car w) (car (syntax-object-wrap x)))) (values x (car w))))) - (gen-label - (lambda () - (string-append "l-" (session-id) (symbol->string (gensym "-"))))) + (gen-label (lambda () (symbol->string (module-gensym "l")))) (gen-labels (lambda (ls) (if (null? ls) '() (cons (gen-label) (gen-labels (cdr ls)))))) @@ -960,7 +958,7 @@ ((transformer-environment (lambda (k) (k e r w s rib mod)))) (rebuild-macro-output (p (source-wrap e (anti-mark w) s mod)) - (gensym (string-append "m-" (session-id) "-"))))))) + (module-gensym "m")))))) (expand-body (lambda (body outer-form r w mod) (let* ((r (cons '("placeholder" placeholder) r)) @@ -1472,7 +1470,8 @@ s mod get-formals - (map (lambda (tmp-2 tmp-1 tmp) (co= ns tmp (cons tmp-1 tmp-2))) + (map (lambda (tmp-bde397a-a85 tmp-= bde397a-a84 tmp-bde397a-a83) + (cons tmp-bde397a-a83 (cons= tmp-bde397a-a84 tmp-bde397a-a85))) e2* e1* args*))) @@ -1504,7 +1503,7 @@ (gen-var (lambda (id) (let ((id (if (syntax-object? id) (syntax-object-expression id) id)= )) - (gensym (string-append (symbol->string id) "-"))))) + (module-gensym (symbol->string id))))) (lambda-var-list (lambda (vars) (let lvl ((vars vars) (ls '()) (w '(()))) @@ -1766,7 +1765,8 @@ (apply (lambda (args e1 e2) (build-it '() - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-= 1 tmp-2))) + (map (lambda (tmp-bde397a-c50 tmp-bde397a-c4f tmp-b= de397a-c4e) + (cons tmp-bde397a-c4e (cons tmp-bde397a-c4f = tmp-bde397a-c50))) e2 e1 args))) @@ -1778,7 +1778,8 @@ (apply (lambda (docstring args e1 e2) (build-it (list (cons 'documentation (syntax->datum docst= ring))) - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons = tmp-1 tmp-2))) + (map (lambda (tmp-bde397a-c66 tmp-bde397a-c65 t= mp-bde397a-c64) + (cons tmp-bde397a-c64 (cons tmp-bde397a-= c65 tmp-bde397a-c66))) e2 e1 args))) @@ -1801,7 +1802,8 @@ (apply (lambda (args e1 e2) (build-it '() - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-= 1 tmp-2))) + (map (lambda (tmp-bde397a-c86 tmp-bde397a-c85 tmp-b= de397a-c84) + (cons tmp-bde397a-c84 (cons tmp-bde397a-c85 = tmp-bde397a-c86))) e2 e1 args))) @@ -1813,7 +1815,8 @@ (apply (lambda (docstring args e1 e2) (build-it (list (cons 'documentation (syntax->datum docst= ring))) - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons = tmp-1 tmp-2))) + (map (lambda (tmp-bde397a-c9c tmp-bde397a-c9b t= mp-bde397a-c9a) + (cons tmp-bde397a-c9a (cons tmp-bde397a-= c9b tmp-bde397a-c9c))) e2 e1 args))) @@ -2329,7 +2332,7 @@ (if (not (list? x)) (syntax-violation 'generate-temporaries "invalid argument" x))) (let ((mod (cons 'hygiene (module-name (current-module))))) - (map (lambda (x) (wrap (gensym "t-") '((top)) mod)) ls)))) + (map (lambda (x) (wrap (module-gensym "t") '((top)) mod)) ls)))) (set! free-identifier=3D? (lambda (x y) (let ((x x)) @@ -2699,7 +2702,8 @@ #f k '() - (map (lambda (tmp-2 tmp-1 tmp) (list (cons tmp tm= p-1) tmp-2)) + (map (lambda (tmp-bde397a-10fd tmp-bde397a-10fc t= mp-bde397a-10fb) + (list (cons tmp-bde397a-10fb tmp-bde397a-1= 0fc) tmp-bde397a-10fd)) template pattern keyword))) @@ -2715,7 +2719,8 @@ #f k (list docstring) - (map (lambda (tmp-2 tmp-1 tmp) (list (cons tm= p tmp-1) tmp-2)) + (map (lambda (tmp-bde397a-2 tmp-bde397a-1 tmp= -bde397a) + (list (cons tmp-bde397a tmp-bde397a-1)= tmp-bde397a-2)) template pattern keyword))) @@ -2730,7 +2735,8 @@ dots k '() - (map (lambda (tmp-2 tmp-1 tmp) (list (con= s tmp tmp-1) tmp-2)) + (map (lambda (tmp-bde397a-112f tmp-bde397= a-112e tmp-bde397a-112d) + (list (cons tmp-bde397a-112d tmp-b= de397a-112e) tmp-bde397a-112f)) template pattern keyword))) @@ -2746,7 +2752,8 @@ dots k (list docstring) - (map (lambda (tmp-2 tmp-1 tmp) (list = (cons tmp tmp-1) tmp-2)) + (map (lambda (tmp-bde397a-114e tmp-bd= e397a-114d tmp-bde397a-114c) + (list (cons tmp-bde397a-114c t= mp-bde397a-114d) tmp-bde397a-114e)) template pattern keyword))) @@ -2865,7 +2872,9 @@ (apply (lambda (p) (if (=3D lev 0) (quasilist* - (map (lambda (tm= p) (list "value" tmp)) p) + (map (lambda (tm= p-bde397a-11b3) + (list "va= lue" tmp-bde397a-11b3)) + p) (quasi q lev)) (quasicons (quasicons @@ -2883,7 +2892,9 @@ (apply (lambda (p) (if (=3D lev 0) (quasiappend - (map (lambda= (tmp) (list "value" tmp)) p) + (map (lambda= (tmp-bde397a-11b8) + (list= "value" tmp-bde397a-11b8)) + p) (quasi q lev= )) (quasicons (quasicons @@ -2916,7 +2927,9 @@ (if tmp (apply (lambda (p) (if (=3D lev 0) - (quasilist* (map (lambda (tmp) = (list "value" tmp)) p) (vquasi q lev)) + (quasilist* + (map (lambda (tmp-bde397a-11c= e) (list "value" tmp-bde397a-11ce)) p) + (vquasi q lev)) (quasicons (quasicons '("quote" #(syntax-object u= nquote ((top)) (hygiene guile))) @@ -2932,7 +2945,7 @@ (apply (lambda (p) (if (=3D lev 0) (quasiappend - (map (lambda (tmp) (list = "value" tmp)) p) + (map (lambda (tmp-bde397a= -11d3) (list "value" tmp-bde397a-11d3)) p) (vquasi q lev)) (quasicons (quasicons @@ -3020,7 +3033,7 @@ (let ((tmp-1 ls)) (let ((tmp ($sc-dispatch tmp-1 'each-any))) (if tmp - (apply (lambda (t) (cons "vector" t)) = tmp) + (apply (lambda (t-bde397a-121c) (cons = "vector" t-bde397a-121c)) tmp) (syntax-violation #f "source expression failed to match a= ny pattern" @@ -3028,7 +3041,8 @@ (let ((tmp y)) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") each= -any)))) (if tmp-1 - (apply (lambda (y) (k (map (lambda (tmp) (list "q= uote" tmp)) y))) + (apply (lambda (y) + (k (map (lambda (tmp-bde397a) (list "quo= te" tmp-bde397a)) y))) tmp-1) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list") .= each-any)))) (if tmp-1 @@ -3037,7 +3051,8 @@ (if tmp-1 (apply (lambda (y z) (f z (lambda (ls) (k= (append y ls))))) tmp-1) (let ((else tmp)) - (let ((tmp x)) (let ((t tmp)) (list "li= st->vector" t))))))))))))))))) + (let ((tmp x)) + (let ((t-bde397a tmp)) (list "list->v= ector" t-bde397a))))))))))))))))) (emit (lambda (x) (let ((tmp x)) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") any)))) @@ -3050,7 +3065,8 @@ (let ((tmp-1 (map emit x))) (let ((tmp ($sc-dispatch tmp-1 'each-a= ny))) (if tmp - (apply (lambda (t) (cons '#(syntax= -object list ((top)) (hygiene guile)) t)) + (apply (lambda (t-bde397a) + (cons '#(syntax-object li= st ((top)) (hygiene guile)) t-bde397a)) tmp) (syntax-violation #f @@ -3066,8 +3082,10 @@ (let ((tmp-1 (list (emit (car x*= )) (f (cdr x*))))) (let ((tmp ($sc-dispatch tmp-1= '(any any)))) (if tmp - (apply (lambda (t-1 t) - (list '#(syntax-o= bject cons ((top)) (hygiene guile)) t-1 t)) + (apply (lambda (t-bde397a-= 125a t-bde397a) + (list '#(syntax-o= bject cons ((top)) (hygiene guile)) + t-bde397a-1= 25a + t-bde397a)) tmp) (syntax-violation #f @@ -3080,8 +3098,9 @@ (let ((tmp-1 (map emit x))) (let ((tmp ($sc-dispatch tmp-1= 'each-any))) (if tmp - (apply (lambda (t) - (cons '#(syntax-o= bject append ((top)) (hygiene guile)) t)) + (apply (lambda (t-bde397a) + (cons '#(syntax-o= bject append ((top)) (hygiene guile)) + t-bde397a)) tmp) (syntax-violation #f @@ -3094,8 +3113,9 @@ (let ((tmp-1 (map emit x))) (let ((tmp ($sc-dispatch t= mp-1 'each-any))) (if tmp - (apply (lambda (t) - (cons '#(synt= ax-object vector ((top)) (hygiene guile)) t)) + (apply (lambda (t-bde3= 97a) + (cons '#(synt= ax-object vector ((top)) (hygiene guile)) + t-bde39= 7a)) tmp) (syntax-violation #f @@ -3106,8 +3126,9 @@ (if tmp-1 (apply (lambda (x) (let ((tmp (emit x))) - (let ((t tmp)) - (list '#(syntax-obje= ct list->vector ((top)) (hygiene guile)) t)))) + (let ((t-bde397a-127e = tmp)) + (list '#(syntax-obje= ct list->vector ((top)) (hygiene guile)) + t-bde397a-127e= )))) tmp-1) (let ((tmp-1 ($sc-dispatch tmp '(= #(atom "value") any)))) (if tmp-1 diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 79b353d..c09a551 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -1,7 +1,7 @@ ;;;; -*-scheme-*- ;;;; ;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010, 2011, -;;;; 2012, 2013 Free Software Foundation, Inc. +;;;; 2012, 2013, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -460,9 +460,10 @@ (make-letrec src in-order? ids vars val-exps body-exp))))) =20 =20 - ;; FIXME: use a faster gensym (define-syntax-rule (build-lexical-var src id) - (gensym (string-append (symbol->string id) "-"))) + ;; Use a per-module counter instead of the global counter of + ;; 'gensym' so that the generated identifier is reproducible. + (module-gensym (symbol->string id))) =20 (define-structure (syntax-object expression wrap module)) =20 @@ -642,7 +643,7 @@ ;; labels must be comparable with "eq?", have read-write invariance, ;; and distinct from symbols. (define (gen-label) - (string-append "l-" (session-id) (symbol->string (gensym "-")))) + (symbol->string (module-gensym "l"))) =20 (define gen-labels (lambda (ls) @@ -671,7 +672,7 @@ (cons 'shift (wrap-subst w))))) =20 (define-syntax-rule (new-mark) - (gensym (string-append "m-" (session-id) "-"))) + (module-gensym "m")) =20 ;; make-empty-ribcage and extend-ribcage maintain list-based ribcages = for ;; internal definitions, in which the ribcages are built incrementally @@ -2591,7 +2592,9 @@ (lambda (ls) (arg-check list? ls 'generate-temporaries) (let ((mod (cons 'hygiene (module-name (current-module))))) - (map (lambda (x) (wrap (gensym "t-") top-wrap mod)) ls)))) + (map (lambda (x) + (wrap (module-gensym "t") top-wrap mod)) + ls)))) =20 (set! free-identifier=3D? (lambda (x y) diff --git a/module/language/tree-il/fix-letrec.scm b/module/language/tree-= il/fix-letrec.scm index 60c87e3..23d37a8 100644 --- a/module/language/tree-il/fix-letrec.scm +++ b/module/language/tree-il/fix-letrec.scm @@ -1,6 +1,6 @@ ;;; transformation of letrec into simpler forms =20 -;; Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +;; Copyright (C) 2009, 2010, 2011, 2012, 2016 Free Software Foundation, In= c. =20 ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -267,7 +267,9 @@ ;; bindings, in a `let' to indicate that order doesn't ;; matter, and bind to their variables. (list - (let ((tmps (map (lambda (x) (gensym)) c))) + (let ((tmps (map (lambda (x) + (module-gensym "fixlr")) + c))) (make-let #f (map cadr c) tmps (map caddr c) (make-sequence diff --git a/module/system/base/syntax.scm b/module/system/base/syntax.scm index 249961d..d280869 100644 --- a/module/system/base/syntax.scm +++ b/module/system/base/syntax.scm @@ -1,6 +1,6 @@ ;;; Guile VM specific syntaxes and utilities =20 -;; Copyright (C) 2001, 2009 Free Software Foundation, Inc +;; Copyright (C) 2001, 2009, 2016 Free Software Foundation, Inc =20 ;;; This library is free software; you can redistribute it and/or ;;; modify it under the terms of the GNU Lesser General Public @@ -72,7 +72,7 @@ '() (cons (car slots) (lp (cdr slots)))))) (opts (list-tail slots (length reqs))) - (tail (gensym))) + (tail (module-gensym "defrec"))) `(define (,(symbol-append 'make- stem) ,@reqs . ,tail) (let ,(map (lambda (o) `(,(car o) (cond ((null? ,tail) ,(cadr o)) @@ -243,8 +243,8 @@ ;; code looks good. =20 (define-macro (transform-record type-and-common record . clauses) - (let ((r (gensym)) - (rtd (gensym)) + (let ((r (module-gensym "rec")) + (rtd (module-gensym "rtd")) (type-stem (trim-brackets (car type-and-common)))) (define (make-stem s) (symbol-append type-stem '- s)) --=20 2.10.2 --=-=-=--
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 20 Dec 2016 23:01:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 20 18:01:15 2016 Received: from localhost ([127.0.0.1]:49423 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cJTPG-0008Pt-IQ for submit <at> debbugs.gnu.org; Tue, 20 Dec 2016 18:01:15 -0500 Received: from eggs.gnu.org ([208.118.235.92]:42292) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1cJTPF-0008Pe-0p for 20272 <at> debbugs.gnu.org; Tue, 20 Dec 2016 18:01:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cJTP6-0003PW-Rx for 20272 <at> debbugs.gnu.org; Tue, 20 Dec 2016 18:01:08 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38699) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cJTOt-0003G4-3j; Tue, 20 Dec 2016 18:00:51 -0500 Received: from reverse-83.fdn.fr ([80.67.176.83]:58850 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1cJTOr-0006XV-TV; Tue, 20 Dec 2016 18:00:50 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> <87mvfygjs1.fsf@HIDDEN> Date: Wed, 21 Dec 2016 00:00:47 +0100 In-Reply-To: <87mvfygjs1.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Thu, 15 Dec 2016 00:42:22 +0100") Message-ID: <87eg12fbog.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.1 (--------) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -8.1 (--------) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > To demonstrate non-reproducibility (with the attached patch, which is a > rebased version of Mark=E2=80=99s), just build the same module twice: onc= e with > its dependency evaluated, and then with its dependency compiled. The > results differ: [...] > In gnu.go.v2 the integers appended to generated symbols are lower > because fewer symbols had to be generated. This is fixed by introducing a =E2=80=9Cper-module gensym=E2=80=9D (patch a= ttached; to be applied on top of the previous one). That way, the sequence number in generated identifiers only depends on the module being compiled, not on whether other modules are being interpreted or not. The =E2=80=98module-gensym=E2=80=99 procedure I added adds a hash of the mo= dule name in the identifier, to distinguish from symbols introduced by =E2=80=98gensym= =E2=80=99. This makes symbols 3=E2=80=934 characters longer; perhaps we could avoid it. Thoughts? Thanks, Ludo=E2=80=99. --=-=-= Content-Type: text/x-patch Content-Disposition: inline diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index 8ef7e5f..5d0e727 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -390,6 +390,7 @@ If there is no handler at all, Guile prints an error and then exits." (let ((i next-id)) (set! next-id (+ i 1)) i)))) +(define module-gensym gensym) (define (resolve-module . args) #f) @@ -2731,6 +2732,20 @@ VALUE." (nested-define-module! (resolve-module '() #f) name mod) (accessor mod)))))) +(define* (module-gensym #:optional (id " mg") (m (current-module))) + "Return a fresh symbol in the context of module M, based on ID (a +string or symbol). As long as M is a valid module, this procedure is +deterministic." + (define (->string number) + (number->string number 16)) + + (if m + (string->symbol + (string-append id "-" + (->string (hash (module-name m) 10000)) "-" + (->string (module-generate-unique-id! m)))) + (gensym id))) + (define (make-modules-in module name) (or (nested-ref-module module name) (let ((m (make-module 31))) @@ -4322,7 +4337,6 @@ when none is available, reading FILE-NAME with READER." syntax-locally-bound-identifiers syntax-session-id))) - ;;; Place the user in the guile-user module. diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm index c81b69e..e46951d 100644 --- a/module/ice-9/psyntax-pp.scm +++ b/module/ice-9/psyntax-pp.scm @@ -1483,7 +1483,8 @@ s mod get-formals - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-1 tmp-2))) + (map (lambda (tmp-c0a-a89 tmp-c0a-a88 tmp-c0a-a87) + (cons tmp-c0a-a87 (cons tmp-c0a-a88 tmp-c0a-a89))) e2* e1* args*))) @@ -1515,7 +1516,7 @@ (gen-var (lambda (id) (let ((id (if (syntax-object? id) (syntax-object-expression id) id))) - (gensym (string-append (symbol->string id) "-"))))) + (module-gensym (symbol->string id))))) (lambda-var-list (lambda (vars) (let lvl ((vars vars) (ls '()) (w '(()))) @@ -1777,7 +1778,8 @@ (apply (lambda (args e1 e2) (build-it '() - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-1 tmp-2))) + (map (lambda (tmp-c0a-c54 tmp-c0a-c53 tmp-c0a-c52) + (cons tmp-c0a-c52 (cons tmp-c0a-c53 tmp-c0a-c54))) e2 e1 args))) @@ -1789,7 +1791,8 @@ (apply (lambda (docstring args e1 e2) (build-it (list (cons 'documentation (syntax->datum docstring))) - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-1 tmp-2))) + (map (lambda (tmp-c0a-c6a tmp-c0a-c69 tmp-c0a-c68) + (cons tmp-c0a-c68 (cons tmp-c0a-c69 tmp-c0a-c6a))) e2 e1 args))) @@ -1812,7 +1815,8 @@ (apply (lambda (args e1 e2) (build-it '() - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-1 tmp-2))) + (map (lambda (tmp-c0a-c8a tmp-c0a-c89 tmp-c0a-c88) + (cons tmp-c0a-c88 (cons tmp-c0a-c89 tmp-c0a-c8a))) e2 e1 args))) @@ -1824,7 +1828,8 @@ (apply (lambda (docstring args e1 e2) (build-it (list (cons 'documentation (syntax->datum docstring))) - (map (lambda (tmp-2 tmp-1 tmp) (cons tmp (cons tmp-1 tmp-2))) + (map (lambda (tmp-c0a-ca0 tmp-c0a-c9f tmp-c0a-c9e) + (cons tmp-c0a-c9e (cons tmp-c0a-c9f tmp-c0a-ca0))) e2 e1 args))) @@ -2340,7 +2345,7 @@ (if (not (list? x)) (syntax-violation 'generate-temporaries "invalid argument" x))) (let ((mod (cons 'hygiene (module-name (current-module))))) - (map (lambda (x) (wrap (gensym "t-") '((top)) mod)) ls)))) + (map (lambda (x) (wrap (module-gensym "t-") '((top)) mod)) ls)))) (set! free-identifier=? (lambda (x y) (let ((x x)) @@ -2710,7 +2715,8 @@ #f k '() - (map (lambda (tmp-2 tmp-1 tmp) (list (cons tmp tmp-1) tmp-2)) + (map (lambda (tmp-c0a-1 tmp-c0a tmp-c0a-10ff) + (list (cons tmp-c0a-10ff tmp-c0a) tmp-c0a-1)) template pattern keyword))) @@ -2726,7 +2732,8 @@ #f k (list docstring) - (map (lambda (tmp-2 tmp-1 tmp) (list (cons tmp tmp-1) tmp-2)) + (map (lambda (tmp-c0a-111a tmp-c0a-1 tmp-c0a) + (list (cons tmp-c0a tmp-c0a-1) tmp-c0a-111a)) template pattern keyword))) @@ -2741,7 +2748,8 @@ dots k '() - (map (lambda (tmp-2 tmp-1 tmp) (list (cons tmp tmp-1) tmp-2)) + (map (lambda (tmp-c0a-2 tmp-c0a-1 tmp-c0a) + (list (cons tmp-c0a tmp-c0a-1) tmp-c0a-2)) template pattern keyword))) @@ -2757,7 +2765,8 @@ dots k (list docstring) - (map (lambda (tmp-2 tmp-1 tmp) (list (cons tmp tmp-1) tmp-2)) + (map (lambda (tmp-c0a-2 tmp-c0a-1 tmp-c0a) + (list (cons tmp-c0a tmp-c0a-1) tmp-c0a-2)) template pattern keyword))) @@ -2876,7 +2885,7 @@ (apply (lambda (p) (if (= lev 0) (quasilist* - (map (lambda (tmp) (list "value" tmp)) p) + (map (lambda (tmp-c0a-11b7) (list "value" tmp-c0a-11b7)) p) (quasi q lev)) (quasicons (quasicons @@ -2894,7 +2903,8 @@ (apply (lambda (p) (if (= lev 0) (quasiappend - (map (lambda (tmp) (list "value" tmp)) p) + (map (lambda (tmp-c0a-11bc) (list "value" tmp-c0a-11bc)) + p) (quasi q lev)) (quasicons (quasicons @@ -2927,7 +2937,9 @@ (if tmp (apply (lambda (p) (if (= lev 0) - (quasilist* (map (lambda (tmp) (list "value" tmp)) p) (vquasi q lev)) + (quasilist* + (map (lambda (tmp-c0a-11d2) (list "value" tmp-c0a-11d2)) p) + (vquasi q lev)) (quasicons (quasicons '("quote" #(syntax-object unquote ((top)) (hygiene guile))) @@ -2943,7 +2955,7 @@ (apply (lambda (p) (if (= lev 0) (quasiappend - (map (lambda (tmp) (list "value" tmp)) p) + (map (lambda (tmp-c0a-11d7) (list "value" tmp-c0a-11d7)) p) (vquasi q lev)) (quasicons (quasicons @@ -3031,7 +3043,7 @@ (let ((tmp-1 ls)) (let ((tmp ($sc-dispatch tmp-1 'each-any))) (if tmp - (apply (lambda (t) (cons "vector" t)) tmp) + (apply (lambda (t--c0a) (cons "vector" t--c0a)) tmp) (syntax-violation #f "source expression failed to match any pattern" @@ -3039,7 +3051,8 @@ (let ((tmp y)) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") each-any)))) (if tmp-1 - (apply (lambda (y) (k (map (lambda (tmp) (list "quote" tmp)) y))) + (apply (lambda (y) + (k (map (lambda (tmp-c0a-122c) (list "quote" tmp-c0a-122c)) y))) tmp-1) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list") . each-any)))) (if tmp-1 @@ -3048,7 +3061,8 @@ (if tmp-1 (apply (lambda (y z) (f z (lambda (ls) (k (append y ls))))) tmp-1) (let ((else tmp)) - (let ((tmp x)) (let ((t tmp)) (list "list->vector" t))))))))))))))))) + (let ((tmp x)) + (let ((t--c0a-123b tmp)) (list "list->vector" t--c0a-123b))))))))))))))))) (emit (lambda (x) (let ((tmp x)) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") any)))) @@ -3061,7 +3075,8 @@ (let ((tmp-1 (map emit x))) (let ((tmp ($sc-dispatch tmp-1 'each-any))) (if tmp - (apply (lambda (t) (cons '#(syntax-object list ((top)) (hygiene guile)) t)) + (apply (lambda (t--c0a-124a) + (cons '#(syntax-object list ((top)) (hygiene guile)) t--c0a-124a)) tmp) (syntax-violation #f @@ -3077,8 +3092,10 @@ (let ((tmp-1 (list (emit (car x*)) (f (cdr x*))))) (let ((tmp ($sc-dispatch tmp-1 '(any any)))) (if tmp - (apply (lambda (t-1 t) - (list '#(syntax-object cons ((top)) (hygiene guile)) t-1 t)) + (apply (lambda (t--c0a-125e t--c0a-125d) + (list '#(syntax-object cons ((top)) (hygiene guile)) + t--c0a-125e + t--c0a-125d)) tmp) (syntax-violation #f @@ -3091,8 +3108,9 @@ (let ((tmp-1 (map emit x))) (let ((tmp ($sc-dispatch tmp-1 'each-any))) (if tmp - (apply (lambda (t) - (cons '#(syntax-object append ((top)) (hygiene guile)) t)) + (apply (lambda (t--c0a-126a) + (cons '#(syntax-object append ((top)) (hygiene guile)) + t--c0a-126a)) tmp) (syntax-violation #f @@ -3105,8 +3123,9 @@ (let ((tmp-1 (map emit x))) (let ((tmp ($sc-dispatch tmp-1 'each-any))) (if tmp - (apply (lambda (t) - (cons '#(syntax-object vector ((top)) (hygiene guile)) t)) + (apply (lambda (t--c0a) + (cons '#(syntax-object vector ((top)) (hygiene guile)) + t--c0a)) tmp) (syntax-violation #f @@ -3117,8 +3136,9 @@ (if tmp-1 (apply (lambda (x) (let ((tmp (emit x))) - (let ((t tmp)) - (list '#(syntax-object list->vector ((top)) (hygiene guile)) t)))) + (let ((t--c0a tmp)) + (list '#(syntax-object list->vector ((top)) (hygiene guile)) + t--c0a)))) tmp-1) (let ((tmp-1 ($sc-dispatch tmp '(#(atom "value") any)))) (if tmp-1 diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 7d12469..13e15be 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -1,7 +1,7 @@ ;;;; -*-scheme-*- ;;;; ;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010, 2011, -;;;; 2012, 2013 Free Software Foundation, Inc. +;;;; 2012, 2013, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -460,9 +460,10 @@ (make-letrec src in-order? ids vars val-exps body-exp))))) - ;; FIXME: use a faster gensym (define-syntax-rule (build-lexical-var src id) - (gensym (string-append (symbol->string id) "-"))) + ;; Use a per-module counter instead of the global counter of + ;; 'gensym' so that the generated identifier is reproducible. + (module-gensym (symbol->string id))) (define-structure (syntax-object expression wrap module)) @@ -2598,7 +2599,9 @@ (lambda (ls) (arg-check list? ls 'generate-temporaries) (let ((mod (cons 'hygiene (module-name (current-module))))) - (map (lambda (x) (wrap (gensym "t-") top-wrap mod)) ls)))) + (map (lambda (x) + (wrap (module-gensym "t-") top-wrap mod)) + ls)))) (set! free-identifier=? (lambda (x y) diff --git a/module/language/tree-il/fix-letrec.scm b/module/language/tree-il/fix-letrec.scm index 60c87e3..23d37a8 100644 --- a/module/language/tree-il/fix-letrec.scm +++ b/module/language/tree-il/fix-letrec.scm @@ -1,6 +1,6 @@ ;;; transformation of letrec into simpler forms -;; Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +;; Copyright (C) 2009, 2010, 2011, 2012, 2016 Free Software Foundation, Inc. ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -267,7 +267,9 @@ ;; bindings, in a `let' to indicate that order doesn't ;; matter, and bind to their variables. (list - (let ((tmps (map (lambda (x) (gensym)) c))) + (let ((tmps (map (lambda (x) + (module-gensym "fixlr")) + c))) (make-let #f (map cadr c) tmps (map caddr c) (make-sequence diff --git a/module/system/base/syntax.scm b/module/system/base/syntax.scm index 249961d..d280869 100644 --- a/module/system/base/syntax.scm +++ b/module/system/base/syntax.scm @@ -1,6 +1,6 @@ ;;; Guile VM specific syntaxes and utilities -;; Copyright (C) 2001, 2009 Free Software Foundation, Inc +;; Copyright (C) 2001, 2009, 2016 Free Software Foundation, Inc ;;; This library is free software; you can redistribute it and/or ;;; modify it under the terms of the GNU Lesser General Public @@ -72,7 +72,7 @@ '() (cons (car slots) (lp (cdr slots)))))) (opts (list-tail slots (length reqs))) - (tail (gensym))) + (tail (module-gensym "defrec"))) `(define (,(symbol-append 'make- stem) ,@reqs . ,tail) (let ,(map (lambda (o) `(,(car o) (cond ((null? ,tail) ,(cadr o)) @@ -243,8 +243,8 @@ ;; code looks good. (define-macro (transform-record type-and-common record . clauses) - (let ((r (gensym)) - (rtd (gensym)) + (let ((r (module-gensym "rec")) + (rtd (module-gensym "rtd")) (type-stem (trim-brackets (car type-and-common)))) (define (make-stem s) (symbol-append type-stem '- s)) --=-=-=--
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 14 Dec 2016 23:42:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 18:42:53 2016 Received: from localhost ([127.0.0.1]:42186 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cHJCG-0005Ny-5y for submit <at> debbugs.gnu.org; Wed, 14 Dec 2016 18:42:52 -0500 Received: from eggs.gnu.org ([208.118.235.92]:39994) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1cHJCE-0005Nl-B5 for 20272 <at> debbugs.gnu.org; Wed, 14 Dec 2016 18:42:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cHJC5-0003g1-Rb for 20272 <at> debbugs.gnu.org; Wed, 14 Dec 2016 18:42:45 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:40710) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cHJBq-0003Zx-R2; Wed, 14 Dec 2016 18:42:26 -0500 Received: from [37.120.80.33] (port=43650 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1cHJBp-0004Zw-UX; Wed, 14 Dec 2016 18:42:26 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> <87vaumgk80.fsf@HIDDEN> Date: Thu, 15 Dec 2016 00:42:22 +0100 In-Reply-To: <87vaumgk80.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Thu, 15 Dec 2016 00:32:47 +0100") Message-ID: <87mvfygjs1.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.1 (--------) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -8.1 (--------) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > >> Jan Nieuwenhuizen <janneke@HIDDEN> skribis: >> >>> I have been building quite some versions of Guile the past week. There >>> re a couple of .go files that keep giving me problems wrt >>> nondeterminism: >>> >>> web/server/http.go >>> >>> (define *timer* (gettimeofday)) seemed suspect, but seems harmless. >>> >>> rnrs/arithmetic/fixnums.go >>> >>> make-implementation-restriction-violation seemed suspect, but commenting >>> it out does not seem to help. >>> >>> After commenting out all of http.scm and fixnums.scm, yesterday I had 3 >>> Guix builds on two machines (GuixSD and one Ubuntu+Guix) that were >>> bit-identical, but one build showed differences in >>> >>> system/repl/commands.go >>> >>> Apparently most of the time this file builds deterministicly, but some >>> times it does not!? Ideas? >> >> Did you look at these differences with diffoscope? That would be >> useful. > > I built it with =E2=80=98guix build --rounds=3D2 -K=E2=80=99 and got 17 d= iffering .go > files. I looked at srfi/srfi-9/gnu.go with ediff + hexl-mode in Emacs > and found a dozen of =E2=80=9Ct-XYZ=E2=80=9D and =E2=80=9Ctmp-XYZ=E2=80= =9D identifiers with a different > value for XYZ (an integer). To demonstrate non-reproducibility (with the attached patch, which is a rebased version of Mark=E2=80=99s), just build the same module twice: once = with its dependency evaluated, and then with its dependency compiled. The results differ: --8<---------------cut here---------------start------------->8--- ludo@pluto ~/src/guile$ rm -f module/srfi/srfi-9/gnu.go module/srfi/srfi-9.= go ludo@pluto ~/src/guile$ make -C module srfi/srfi-9/gnu.go make: Entering directory '/home/ludo/src/guile/module' GUILEC srfi/srfi-9/gnu.go wrote `srfi/srfi-9/gnu.go' make: Leaving directory '/home/ludo/src/guile/module' ludo@pluto ~/src/guile$ mv module/srfi/srfi-9/gnu.go{,.v1} ludo@pluto ~/src/guile$ make -C module srfi/srfi-9.go make: Entering directory '/home/ludo/src/guile/module' GUILEC srfi/srfi-9.go wrote `srfi/srfi-9.go' make: Leaving directory '/home/ludo/src/guile/module' ludo@pluto ~/src/guile$ make -C module srfi/srfi-9/gnu.go make: Entering directory '/home/ludo/src/guile/module' GUILEC srfi/srfi-9/gnu.go wrote `srfi/srfi-9/gnu.go' make: Leaving directory '/home/ludo/src/guile/module' ludo@pluto ~/src/guile$ mv module/srfi/srfi-9/gnu.go{,.v2} ludo@pluto ~/src/guile$ diff -u module/srfi/srfi-9/gnu.go.{v1,v2} Ciferecaj dosieroj module/srfi/srfi-9/gnu.go.v1 kaj module/srfi/srfi-9/gnu.= go.v2 estas malsamaj --8<---------------cut here---------------end--------------->8--- In gnu.go.v2 the integers appended to generated symbols are lower because fewer symbols had to be generated. Ludo=E2=80=99. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-psyntax-Remove-uses-of-syntax-session-id.patch Content-Transfer-Encoding: quoted-printable Content-Description: the patch From 4301d4b53d7243012bbf6ee4d7558910dd712330 Mon Sep 17 00:00:00 2001 From: Mark H Weaver <mhw@HIDDEN> Date: Fri, 12 Feb 2016 11:19:38 -0500 Subject: [PATCH] psyntax: Remove uses of syntax-session-id. MIME-Version: 1.0 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: 8bit This is an attempted fix for <https://debbugs.gnu.org/20272>, but I'm not yet confident in its correctness. * module/ice-9/boot-9.scm (module-generate-unique-id!): New procedure. (module): Add 'next-unique-id' field. (the-root-module): Inherit 'next-unique-id' value from early stub. (make-module, make-autoload-interface): Adjust calls to module-constructor. * module/ice-9/psyntax.scm (gen-label, new-mark): Generate unique identifiers from the module name and the per-module unique-id. * module/ice-9/psyntax-pp.scm: Regenerate. Signed-off-by: Ludovic Court=C3=A8s <ludo@HIDDEN> --- module/ice-9/boot-9.scm | 25 +++++++++++++++++++++---- module/ice-9/psyntax-pp.scm | 15 +++++++++++++-- module/ice-9/psyntax.scm | 11 +++++++++-- 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index 426d831..8ef7e5f 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -1,6 +1,6 @@ ;;; -*- mode: scheme; coding: utf-8; -*- =20 -;;;; Copyright (C) 1995-2014 Free Software Foundation, Inc. +;;;; Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -384,6 +384,12 @@ If there is no handler at all, Guile prints an error a= nd then exits." (define (module-ref module sym) (let ((v (module-variable module sym))) (if v (variable-ref v) (error "badness!" (pk module) (pk sym))))) +(define module-generate-unique-id! + (let ((next-id 0)) + (lambda (m) + (let ((i next-id)) + (set! next-id (+ i 1)) + i)))) (define (resolve-module . args) #f) =20 @@ -2021,7 +2027,8 @@ VALUE." submodules submodule-binder public-interface - filename))) + filename + next-unique-id))) =20 =20 ;; make-module &opt size uses binder @@ -2049,7 +2056,7 @@ VALUE." (make-hash-table %default-import-size) '() (make-weak-key-hash-table 31) #f - (make-hash-table 7) #f #f #f)) + (make-hash-table 7) #f #f #f 0)) =20 =20 @@ -2656,6 +2663,11 @@ VALUE." (let ((m (make-module 0))) (set-module-obarray! m (%get-pre-modules-obarray)) (set-module-name! m '(guile)) + + ;; Inherit next-unique-id from preliminary stub of + ;; %module-get-next-unique-id! defined above. + (set-module-next-unique-id! m (module-generate-unique-id! #f)) + m)) =20 ;; The root interface is a module that uses the same obarray as the @@ -2684,6 +2696,11 @@ VALUE." the-root-module (error "unexpected module to resolve during module boot" name))) =20 +(define (module-generate-unique-id! m) + (let ((i (module-next-unique-id m))) + (set-module-next-unique-id! m (+ i 1)) + i)) + ;; Cheat. These bindings are needed by modules.c, but we don't want ;; to move their real definition here because that would be unnatural. ;; @@ -3013,7 +3030,7 @@ VALUE." #:warning "Failed to autoload ~a in ~a:\n" sym name)))) (module-constructor (make-hash-table 0) '() b #f #f name 'autoload #f (make-hash-table 0) '() (make-weak-value-hash-tabl= e 31) #f - (make-hash-table 0) #f #f #f))) + (make-hash-table 0) #f #f #f 0))) =20 (define (module-autoload! module . args) "Have @var{module} automatically load the module named @var{name} when o= ne diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm index 1ec5107..c81b69e 100644 --- a/module/ice-9/psyntax-pp.scm +++ b/module/ice-9/psyntax-pp.scm @@ -312,7 +312,12 @@ (values x (car w))))) (gen-label (lambda () - (string-append "l-" (session-id) (symbol->string (gensym "-"))))) + (let ((mod (current-module))) + (simple-format + #f + "l-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))) (gen-labels (lambda (ls) (if (null? ls) '() (cons (gen-label) (gen-labels (cdr ls)))))) @@ -960,7 +965,13 @@ ((transformer-environment (lambda (k) (k e r w s rib mod)))) (rebuild-macro-output (p (source-wrap e (anti-mark w) s mod)) - (gensym (string-append "m-" (session-id) "-"))))))) + (let ((mod (current-module))) + (string->symbol + (simple-format + #f + "m-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))))))) (expand-body (lambda (body outer-form r w mod) (let* ((r (cons '("placeholder" placeholder) r)) diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 79b353d..7d12469 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -642,7 +642,10 @@ ;; labels must be comparable with "eq?", have read-write invariance, ;; and distinct from symbols. (define (gen-label) - (string-append "l-" (session-id) (symbol->string (gensym "-")))) + (let ((mod (current-module))) + (simple-format #f "l-~s~s" + (module-generate-unique-id! mod) + (module-name mod)))) =20 (define gen-labels (lambda (ls) @@ -671,7 +674,11 @@ (cons 'shift (wrap-subst w))))) =20 (define-syntax-rule (new-mark) - (gensym (string-append "m-" (session-id) "-"))) + (let ((mod (current-module))) + (string->symbol + (simple-format #f "m-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))) =20 ;; make-empty-ribcage and extend-ribcage maintain list-based ribcages = for ;; internal definitions, in which the ribcages are built incrementally --=20 2.10.2 --=-=-=--
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 14 Dec 2016 23:33:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 18:33:14 2016 Received: from localhost ([127.0.0.1]:42177 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cHJ2v-00058A-UM for submit <at> debbugs.gnu.org; Wed, 14 Dec 2016 18:33:14 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37273) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1cHJ2v-00057y-6A for 20272 <at> debbugs.gnu.org; Wed, 14 Dec 2016 18:33:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cHJ2m-0007JB-3x for 20272 <at> debbugs.gnu.org; Wed, 14 Dec 2016 18:33:08 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_20,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:40566) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cHJ2Y-0007En-Hf; Wed, 14 Dec 2016 18:32:50 -0500 Received: from [37.120.80.33] (port=43642 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1cHJ2X-0002ph-RH; Wed, 14 Dec 2016 18:32:50 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> <87twa6iikd.fsf@HIDDEN> Date: Thu, 15 Dec 2016 00:32:47 +0100 In-Reply-To: <87twa6iikd.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Wed, 14 Dec 2016 17:25:38 +0100") Message-ID: <87vaumgk80.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.1 (--------) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -8.1 (--------) ludo@HIDDEN (Ludovic Court=C3=A8s) skribis: > Jan Nieuwenhuizen <janneke@HIDDEN> skribis: > >> I have been building quite some versions of Guile the past week. There >> re a couple of .go files that keep giving me problems wrt >> nondeterminism: >> >> web/server/http.go >> >> (define *timer* (gettimeofday)) seemed suspect, but seems harmless. >> >> rnrs/arithmetic/fixnums.go >> >> make-implementation-restriction-violation seemed suspect, but commenting >> it out does not seem to help. >> >> After commenting out all of http.scm and fixnums.scm, yesterday I had 3 >> Guix builds on two machines (GuixSD and one Ubuntu+Guix) that were >> bit-identical, but one build showed differences in >> >> system/repl/commands.go >> >> Apparently most of the time this file builds deterministicly, but some >> times it does not!? Ideas? > > Did you look at these differences with diffoscope? That would be > useful. I built it with =E2=80=98guix build --rounds=3D2 -K=E2=80=99 and got 17 dif= fering .go files. I looked at srfi/srfi-9/gnu.go with ediff + hexl-mode in Emacs and found a dozen of =E2=80=9Ct-XYZ=E2=80=9D and =E2=80=9Ctmp-XYZ=E2=80=9D = identifiers with a different value for XYZ (an integer). To be continued=E2=80=A6 Ludo=E2=80=99.
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 14 Dec 2016 16:26:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 11:26:08 2016 Received: from localhost ([127.0.0.1]:42009 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1cHCNb-0006E5-PH for submit <at> debbugs.gnu.org; Wed, 14 Dec 2016 11:26:07 -0500 Received: from eggs.gnu.org ([208.118.235.92]:57339) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1cHCNa-0006Da-Ct for 20272 <at> debbugs.gnu.org; Wed, 14 Dec 2016 11:26:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cHCNP-0000pq-Eb for 20272 <at> debbugs.gnu.org; Wed, 14 Dec 2016 11:26:01 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:35612) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1cHCNA-0000fB-Vf; Wed, 14 Dec 2016 11:25:41 -0500 Received: from 212-91-237-188.dynamic.dns-net.de ([212.91.237.188]:49108 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1cHCNA-0006Kp-Gs; Wed, 14 Dec 2016 11:25:40 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87bmxxnjd7.fsf@HIDDEN> <87shqtwxcb.fsf@HIDDEN> Date: Wed, 14 Dec 2016 17:25:38 +0100 In-Reply-To: <87shqtwxcb.fsf@HIDDEN> (Jan Nieuwenhuizen's message of "Mon, 14 Nov 2016 22:44:20 +0100") Message-ID: <87twa6iikd.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -8.1 (--------) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -8.1 (--------) Hello Jan! Jan Nieuwenhuizen <janneke@HIDDEN> skribis: > I have been building quite some versions of Guile the past week. There > re a couple of .go files that keep giving me problems wrt > nondeterminism: > > web/server/http.go > > (define *timer* (gettimeofday)) seemed suspect, but seems harmless. > > rnrs/arithmetic/fixnums.go > > make-implementation-restriction-violation seemed suspect, but commenting > it out does not seem to help. > > After commenting out all of http.scm and fixnums.scm, yesterday I had 3 > Guix builds on two machines (GuixSD and one Ubuntu+Guix) that were > bit-identical, but one build showed differences in > > system/repl/commands.go > > Apparently most of the time this file builds deterministicly, but some > times it does not!? Ideas? Did you look at these differences with diffoscope? That would be useful. > In the mean time, one more obviously correct and trivial patch attatched > that removes a build time stamp. I=E2=80=99ve committed something similar but that honors =E2=80=98SOURCE_DA= TE_EPOCH=E2=80=99. So by default there=E2=80=99s no difference compared to the previous behavi= or, but if =E2=80=98SOURCE_DATE_EPOCH=E2=80=99 is given, then it is used as the= build date. Thanks! Ludo=E2=80=99.
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 14 Nov 2016 21:44:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 14 16:44:51 2016 Received: from localhost ([127.0.0.1]:57427 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1c6P3X-0005GC-BN for submit <at> debbugs.gnu.org; Mon, 14 Nov 2016 16:44:51 -0500 Received: from eggs.gnu.org ([208.118.235.92]:34925) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <janneke@HIDDEN>) id 1c6P3V-0005Fy-ND for 20272 <at> debbugs.gnu.org; Mon, 14 Nov 2016 16:44:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <janneke@HIDDEN>) id 1c6P3M-0004Eq-LP for 20272 <at> debbugs.gnu.org; Mon, 14 Nov 2016 16:44:40 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43387) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <janneke@HIDDEN>) id 1c6P39-0004C9-7S; Mon, 14 Nov 2016 16:44:23 -0500 Received: from peder.onsbrabantnet.nl ([88.159.206.46]:43796 helo=dundal.peder.onsbrabantnet.nl) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <janneke@HIDDEN>) id 1c6P38-0001Sm-NJ; Mon, 14 Nov 2016 16:44:23 -0500 From: Jan Nieuwenhuizen <janneke@HIDDEN> To: 20272 <at> debbugs.gnu.org Subject: bug#20272: Support reproducible builds Organization: AvatarAcademy.nl References: <87bmxxnjd7.fsf@HIDDEN> X-Url: http://AvatarAcademy.nl Date: Mon, 14 Nov 2016 22:44:20 +0100 In-Reply-To: <87bmxxnjd7.fsf@HIDDEN> (Jan Nieuwenhuizen's message of "Thu, 03 Nov 2016 07:54:44 +0100") Message-ID: <87shqtwxcb.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -7.8 (-------) X-Debbugs-Envelope-To: 20272 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -7.8 (-------) --=-=-= Content-Type: text/plain Jan Nieuwenhuizen writes: I have been building quite some versions of Guile the past week. There re a couple of .go files that keep giving me problems wrt nondeterminism: web/server/http.go (define *timer* (gettimeofday)) seemed suspect, but seems harmless. rnrs/arithmetic/fixnums.go make-implementation-restriction-violation seemed suspect, but commenting it out does not seem to help. After commenting out all of http.scm and fixnums.scm, yesterday I had 3 Guix builds on two machines (GuixSD and one Ubuntu+Guix) that were bit-identical, but one build showed differences in system/repl/commands.go Apparently most of the time this file builds deterministicly, but some times it does not!? Ideas? In the mean time, one more obviously correct and trivial patch attatched that removes a build time stamp. Greetings, Jan --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Reproducible-build-Set-buildstamp-to-EPOCH.patch From 2050673bffaa0ba18fabb8e92c3bc388f40bcea5 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen <janneke@HIDDEN> Date: Fri, 4 Nov 2016 16:12:55 +0100 Subject: [PATCH] Reproducible build: Set buildstamp to EPOCH. * libguile/Makefile.am (libpath.h): Set buildstamp to EPOCH. --- libguile/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libguile/Makefile.am b/libguile/Makefile.am index 31cff75..4471d16 100644 --- a/libguile/Makefile.am +++ b/libguile/Makefile.am @@ -743,7 +743,7 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/config.status >> libpath.tmp @echo ' { "LIBS", "@GUILE_LIBS@" }, \' >> libpath.tmp @echo ' { "CFLAGS", "@GUILE_CFLAGS@" }, \' >> libpath.tmp - @echo ' { "buildstamp", "'`date -u +'%Y-%m-%d %T'`'" }, \' >> libpath.tmp + @echo ' { "buildstamp", "'`date -u -d@0`'" }, \' >> libpath.tmp @echo '}' >> libpath.tmp $(AM_V_GEN)mv libpath.tmp libpath.h -- 2.10.1 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable --=20 Jan Nieuwenhuizen <janneke@HIDDEN> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.nl= =20=20 --=-=-=--
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 3 Nov 2016 06:55:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 03 02:55:09 2016 Received: from localhost ([127.0.0.1]:41108 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1c2BvU-0000ck-Lu for submit <at> debbugs.gnu.org; Thu, 03 Nov 2016 02:55:09 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34067) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <janneke@HIDDEN>) id 1c2BvT-0000cE-Dd for 20272 <at> debbugs.gnu.org; Thu, 03 Nov 2016 02:55:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <janneke@HIDDEN>) id 1c2BvM-0008L8-C1 for 20272 <at> debbugs.gnu.org; Thu, 03 Nov 2016 02:54:58 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:49962) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <janneke@HIDDEN>) id 1c2BvD-0008JN-D5; Thu, 03 Nov 2016 02:54:47 -0400 Received: from [31.223.170.65] (port=6939 helo=dundal.peder.onsbrabantnet.nl) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from <janneke@HIDDEN>) id 1c2BvC-0005vk-QF; Thu, 03 Nov 2016 02:54:47 -0400 From: Jan Nieuwenhuizen <janneke@HIDDEN> To: 20272 <at> debbugs.gnu.org Subject: bug#20272: Support reproducible builds Date: Thu, 03 Nov 2016 07:54:44 +0100 Message-ID: <87bmxxnjd7.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -7.7 (-------) X-Debbugs-Envelope-To: 20272 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -7.7 (-------) --=-=-= Content-Type: text/plain Hi! [sent to guile-devel yesterday, probably should have gone here] I have rebased Mark's patch to master and added a fix on top of that, needed on 2.1 to pass make check. Also, I found that to pass make check these patches depend on (yesterday's) latest master commit Use atomics for async interrupts that patch seems to depend on (at least git rebase-wise) Deprecate user asyncs Deprecate arbiters Fold 2.1.4 news into 2.2 news Having these 6 patches on top op 2.1.4 has guile produce deterministic .go files...mostly. My client code is seems to be happy with this, however Guix tells me that some files are still not deterministic: lib/guile/2.2/ccache/ice-9/peg/cache.go lib/guile/2.2/ccache/system/repl/coop-server.go lib/libguile-2.2.so.0.0.0 and in Guix's debug output (only after I removed this hoping to get guile-next reproducible, guix informed me about the plain output nondeterminism?) lib/guile/2.2/ccache/ice-9/peg/cache.go.debug lib/guile/2.2/ccache/web/server/http.go.debug Any ideas on what's causing this remaining nondeterminism? Greetings, Jan. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-PRELIMINARY-psyntax-Remove-uses-of-syntax-session-id.patch From a52fe09b584a99ff39997c47c5aa7f4c0ca428db Mon Sep 17 00:00:00 2001 From: Mark H Weaver <mhw@HIDDEN> Date: Fri, 12 Feb 2016 11:19:38 -0500 Subject: [PATCH 1/2] PRELIMINARY: psyntax: Remove uses of syntax-session-id. This is an attempted fix for <https://debbugs.gnu.org/20272>, but I'm not yet confident in its correctness. * module/ice-9/boot-9.scm (module-generate-unique-id!): New procedure. (module): Add 'next-unique-id' field. (the-root-module): Inherit 'next-unique-id' value from early stub. (make-module, make-autoload-interface): Adjust calls to module-constructor. * module/ice-9/psyntax.scm (gen-label, new-mark): Generate unique identifiers from the module name and the per-module unique-id. --- module/ice-9/boot-9.scm | 25 +++++++++++++++++++++---- module/ice-9/psyntax-pp.scm | 15 +++++++++++++-- module/ice-9/psyntax.scm | 13 ++++++++++--- 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index 7f62097..f1d684d 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -1,6 +1,6 @@ ;;; -*- mode: scheme; coding: utf-8; -*- -;;;; Copyright (C) 1995-2014 Free Software Foundation, Inc. +;;;; Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -374,6 +374,12 @@ a-cont (define (module-ref module sym) (let ((v (module-variable module sym))) (if v (variable-ref v) (error "badness!" (pk module) (pk sym))))) +(define module-generate-unique-id! + (let ((next-id 0)) + (lambda (m) + (let ((i next-id)) + (set! next-id (+ i 1)) + i)))) (define (resolve-module . args) #f) @@ -1973,7 +1979,8 @@ written into the port is returned." submodules submodule-binder public-interface - filename))) + filename + next-unique-id))) ;; make-module &opt size uses binder @@ -1997,7 +2004,7 @@ written into the port is returned." (make-hash-table) '() (make-weak-key-hash-table 31) #f - (make-hash-table 7) #f #f #f)) + (make-hash-table 7) #f #f #f 0)) @@ -2579,6 +2586,11 @@ written into the port is returned." (let ((m (make-module 0))) (set-module-obarray! m (%get-pre-modules-obarray)) (set-module-name! m '(guile)) + + ;; Inherit next-unique-id from preliminary stub of + ;; %module-get-next-unique-id! defined above. + (set-module-next-unique-id! m (module-generate-unique-id! #f)) + m)) ;; The root interface is a module that uses the same obarray as the @@ -2607,6 +2619,11 @@ written into the port is returned." the-root-module (error "unexpected module to resolve during module boot" name))) +(define (module-generate-unique-id! m) + (let ((i (module-next-unique-id m))) + (set-module-next-unique-id! m (+ i 1)) + i)) + ;; Cheat. These bindings are needed by modules.c, but we don't want ;; to move their real definition here because that would be unnatural. ;; @@ -2936,7 +2953,7 @@ written into the port is returned." #:warning "Failed to autoload ~a in ~a:\n" sym name)))) (module-constructor (make-hash-table 0) '() b #f #f name 'autoload #f (make-hash-table 0) '() (make-weak-value-hash-table 31) #f - (make-hash-table 0) #f #f #f))) + (make-hash-table 0) #f #f #f 0))) (define (module-autoload! module . args) "Have @var{module} automatically load the module named @var{name} when one diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm index d797665..207d534 100644 --- a/module/ice-9/psyntax-pp.scm +++ b/module/ice-9/psyntax-pp.scm @@ -297,7 +297,12 @@ (values x (car w))))) (gen-label (lambda () - (string-append "l-" (session-id) (symbol->string (gensym "-"))))) + (let ((mod (current-module))) + (simple-format + #f + "l-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))) (gen-labels (lambda (ls) (if (null? ls) '() (cons (gen-label) (gen-labels (cdr ls)))))) @@ -1001,7 +1006,13 @@ (lambda () (rebuild-macro-output (p (source-wrap e (anti-mark w) s mod)) - (gensym (string-append "m-" (session-id) "-"))))))))) + (let ((mod (current-module))) + (string->symbol + (simple-format + #f + "m-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))))))))) (expand-body (lambda (body outer-form r w mod) (let* ((r (cons '("placeholder" placeholder) r)) diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 88df4c7..8fa0ff3 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -1,7 +1,7 @@ ;;;; -*-scheme-*- ;;;; ;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010, 2011, -;;;; 2012, 2013, 2015 Free Software Foundation, Inc. +;;;; 2012, 2013, 2015, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -632,7 +632,10 @@ ;; labels must be comparable with "eq?", have read-write invariance, ;; and distinct from symbols. (define (gen-label) - (string-append "l-" (session-id) (symbol->string (gensym "-")))) + (let ((mod (current-module))) + (simple-format #f "l-~s~s" + (module-generate-unique-id! mod) + (module-name mod)))) (define gen-labels (lambda (ls) @@ -661,7 +664,11 @@ (cons 'shift (wrap-subst w))))) (define-syntax-rule (new-mark) - (gensym (string-append "m-" (session-id) "-"))) + (let ((mod (current-module))) + (string->symbol + (simple-format #f "m-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))) ;; make-empty-ribcage and extend-ribcage maintain list-based ribcages for ;; internal definitions, in which the ribcages are built incrementally -- 2.10.1 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0002-psyntax-fix-gen-label-for-unset-module.patch From ff6ddce535d5cc02a6574fe3baf238cf6533d218 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen <janneke@HIDDEN> Date: Tue, 1 Nov 2016 15:10:01 +0100 Subject: [PATCH 2/2] psyntax: fix gen-label for unset module. * module/ice-9/boot-9.scm (generate-unique-id!): New function. (module-generate-unique-id!): Use it. * module/ice-9/psyntax.scm (gen-label): Use it to cater for unset module. * module/ice-9/psyntax-pp.scm: Regenerate. --- module/ice-9/boot-9.scm | 3 ++- module/ice-9/psyntax-pp.scm | 2 +- module/ice-9/psyntax.scm | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index f1d684d..e18818e 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -374,12 +374,13 @@ a-cont (define (module-ref module sym) (let ((v (module-variable module sym))) (if v (variable-ref v) (error "badness!" (pk module) (pk sym))))) -(define module-generate-unique-id! +(define generate-unique-id! (let ((next-id 0)) (lambda (m) (let ((i next-id)) (set! next-id (+ i 1)) i)))) +(define module-generate-unique-id! generate-unique-id!) (define (resolve-module . args) #f) diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm index 207d534..c47df7f 100644 --- a/module/ice-9/psyntax-pp.scm +++ b/module/ice-9/psyntax-pp.scm @@ -301,7 +301,7 @@ (simple-format #f "l-~s~s" - (module-generate-unique-id! mod) + (if mod (module-generate-unique-id! mod) (generate-unique-id! #f)) (module-name mod))))) (gen-labels (lambda (ls) diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 8fa0ff3..7e5c863 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -634,8 +634,10 @@ (define (gen-label) (let ((mod (current-module))) (simple-format #f "l-~s~s" - (module-generate-unique-id! mod) - (module-name mod)))) + (if mod + (module-generate-unique-id! mod) + (generate-unique-id! #f)) + (module-name mod)))) (define gen-labels (lambda (ls) -- 2.10.1 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable --=20 Jan Nieuwenhuizen <janneke@HIDDEN> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.nl= =20=20 --=-=-=--
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.ludo@HIDDEN (Ludovic Courtès)
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 23 Jun 2016 19:22:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 23 15:22:49 2016 Received: from localhost ([127.0.0.1]:52994 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bGADB-0004Fv-1A for submit <at> debbugs.gnu.org; Thu, 23 Jun 2016 15:22:49 -0400 Received: from pb-sasl2.pobox.com ([64.147.108.67]:60198 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bGAD9-0004Fo-I1 for 20272 <at> debbugs.gnu.org; Thu, 23 Jun 2016 15:22:47 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 2734025F8D; Thu, 23 Jun 2016 15:22:46 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=o8dox7vTyFUrJLHLW9TvH6NgyFk=; b=aFMfw1 EehhBy2hJmoqzu2AlERpY1eJ++OE0SAkYM0kcPRZJhGzwmGfrsNkd2v505/vcxYr DJ6XERoIIz+aMgBIucDrugBTigyt0nF7EXLbXSd+g4xRJbwK+lpNMX8UjY2t/2ON oBXwq9YLL55hEZuFMe5AS7jGecsQFBxFxkM2k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=ckiYCuLUpmfX8ul2A6VNuaZPMNisJqZG eAER1RB9DcR4J4j7ihCcCXIs3jJWDiPl/L8LpZNVpdmOjTREUmQ/SYZX4LRmW4g7 wzlraz/J0DypLtcT+B3+m/0I700QHvN0IQvlVrWh70MNR8JuadNn0GG7BRyngwNd zrSE2xAsP/4= Received: from pb-sasl2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 1F48025F8C; Thu, 23 Jun 2016 15:22:46 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl2.pobox.com (Postfix) with ESMTPSA id 2C94F25F8B; Thu, 23 Jun 2016 15:22:45 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: Mark H Weaver <mhw@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> <87vb5vn2nw.fsf@HIDDEN> <87a8n5vqn0.fsf@HIDDEN> <8737o7hndq.fsf@HIDDEN> Date: Thu, 23 Jun 2016 21:22:37 +0200 In-Reply-To: <8737o7hndq.fsf@HIDDEN> (Andy Wingo's message of "Mon, 20 Jun 2016 17:48:49 +0200") Message-ID: <8737o3n20y.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: DD200E42-3977-11E6-B367-28A6F1301B6D-02397024!pb-sasl2.pobox.com X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.4 (-) On Mon 20 Jun 2016 17:48, Andy Wingo <wingo@HIDDEN> writes: >>> Currently, we include both the session-id and a global gensym counter in >>> the names of freshly generated marks and labels in psyntax.scm. >>> Instead, let them include the module name and a per-module counter. >> >> I've attached a preliminary implementation of this idea, but I'm not yet >> confident in its correctness. > > Looks pretty good to me but I think we should put it off until after > 2.0.12, just so we can get the release out the door. WDYT? On the other hand, maybe including it in 2.0.12 is the right thing; dunno. What do you think? Andy
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.ludo@HIDDEN (Ludovic Courtès)
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 20 Jun 2016 15:48:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 20 11:48:59 2016 Received: from localhost ([127.0.0.1]:47892 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bF1Rb-0002ke-0q for submit <at> debbugs.gnu.org; Mon, 20 Jun 2016 11:48:59 -0400 Received: from pb-sasl2.pobox.com ([64.147.108.67]:56069 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bF1RZ-0002kX-Ui for 20272 <at> debbugs.gnu.org; Mon, 20 Jun 2016 11:48:58 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 8EE4D237F3; Mon, 20 Jun 2016 11:48:57 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; s=sasl; bh=23zxPSAqT2os iiN0xShfdmN+TrQ=; b=DRoG5YZMYd5eC5HJVWoWUfsTLp9bg6KEmNhyV9lpNXEv CQqSORody/vHNZ27rXa1YYBZEdkXVV1onvx80Nte7NAnij9ykl7YD91/J4fqznFO 5vvZwDevYkYocXGXpchZH2QPEEAzpbYHBRDULuDk/SUoOwZnIYTyt8mEfdviEwA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; q=dns; s=sasl; b=GHUC1d 2rQmvqor8DXRQSwXCZ6FGNERh0qG0bPyQee8vx5SztPnq/coqT1VHsLLSVdia1Cw gwnvZZk1EY+Ah3eumbDQF6FExsdeEu0oDLwcLS563VB9A/4beoeezqt6iK7YAGvg apIS6ZTia0RpRIVyp5X/DkjhCE0RX62GUnc7A= Received: from pb-sasl2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id 8750F237F2; Mon, 20 Jun 2016 11:48:57 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl2.pobox.com (Postfix) with ESMTPSA id A4E0D237F1; Mon, 20 Jun 2016 11:48:56 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: Mark H Weaver <mhw@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> <87vb5vn2nw.fsf@HIDDEN> <87a8n5vqn0.fsf@HIDDEN> Date: Mon, 20 Jun 2016 17:48:49 +0200 In-Reply-To: <87a8n5vqn0.fsf@HIDDEN> (Mark H. Weaver's message of "Fri, 12 Feb 2016 11:29:23 -0500") Message-ID: <8737o7hndq.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Pobox-Relay-ID: 7F79D564-36FE-11E6-9DF8-28A6F1301B6D-02397024!pb-sasl2.pobox.com X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.4 (-) On Fri 12 Feb 2016 17:29, Mark H Weaver <mhw@HIDDEN> writes: > Mark H Weaver <mhw@HIDDEN> writes: > >> ludo@HIDDEN (Ludovic Court=C3=A8s) writes: >> >>> Currently .go files embed randomly-generated symbols stemming from >>> =E2=80=98syntax-session-id=E2=80=99, which prevents reproducible builds= (see >>> <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html>.) >> >> I've given this more thought, and I think I have a way that avoids >> session-ids altogether. >> >> Currently, we include both the session-id and a global gensym counter in >> the names of freshly generated marks and labels in psyntax.scm. >> Instead, let them include the module name and a per-module counter. > > I've attached a preliminary implementation of this idea, but I'm not yet > confident in its correctness. Looks pretty good to me but I think we should put it off until after 2.0.12, just so we can get the release out the door. WDYT? Andy
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 20 Jun 2016 15:46:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jun 20 11:46:40 2016 Received: from localhost ([127.0.0.1]:47888 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1bF1PM-0002Ph-K3 for submit <at> debbugs.gnu.org; Mon, 20 Jun 2016 11:46:40 -0400 Received: from pb-sasl2.pobox.com ([64.147.108.67]:54187 helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <wingo@HIDDEN>) id 1bF1PJ-0002N2-Ga for 20272 <at> debbugs.gnu.org; Mon, 20 Jun 2016 11:46:39 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id EDD222377C; Mon, 20 Jun 2016 11:46:35 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; s=sasl; bh=g2VQHiF9H80j eJHPaMperTOn9EE=; b=nreNGNmw+5ouLshmsfYTY0TXizd7irBgYqxd6dUiy0MI SUilgwZYFkXWW4ZkQCvg41hVZD+Dv7rPwravXtFASr2RJ1C7yBXixWY3frT3/tNQ 2zv8jrir2SyWJW5DO3AhoHbiyA9B3aOeMb27M+at/onOvTC124TtAcDr8IT+0Gc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type:content-transfer-encoding; q=dns; s=sasl; b=wSdLW5 g5DwjlZFUyfYrXqNViny0s3Fp41aPDyIX5Y2FC3NOQvU+/wbYSrnP5ku5i1ltni/ 4Z7nE8a9E1s0nAcD91m6gBSUcHbecOxbWzbNaAEmG9bgZmzRTh+TGFvA74qK99EG jpXQVvYm9h5GZtmEl5XDZgPz2bLHQgxLkNTEs= Received: from pb-sasl2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-sasl2.pobox.com (Postfix) with ESMTP id D598223778; Mon, 20 Jun 2016 11:46:35 -0400 (EDT) Received: from clucks (unknown [88.160.190.192]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by pb-sasl2.pobox.com (Postfix) with ESMTPSA id ECC0423776; Mon, 20 Jun 2016 11:46:34 -0400 (EDT) From: Andy Wingo <wingo@HIDDEN> To: Mark H Weaver <mhw@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> <87d1sdqjs2.fsf@HIDDEN> Date: Mon, 20 Jun 2016 17:46:27 +0200 In-Reply-To: <87d1sdqjs2.fsf@HIDDEN> (Mark H. Weaver's message of "Wed, 03 Feb 2016 21:41:33 -0500") Message-ID: <877fdjhnho.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Pobox-Relay-ID: 2AFA8204-36FE-11E6-9094-28A6F1301B6D-02397024!pb-sasl2.pobox.com X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.4 (-) On Thu 04 Feb 2016 03:41, Mark H Weaver <mhw@HIDDEN> writes: >> Probably, =E2=80=98syntax-session-id=E2=80=99 would have to be a SRFI-39= parameter > > This might adversely affect the efficiency of our macro expander on > platforms with slow thread local variables I think you shouldn't worry about this. The VM keeps a pointer to the current thread, and accesses the dynamic state / dynamic stack from there. There are no pthread_getkey calls when accessing parameters in the normal case. Andy
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 12 Feb 2016 16:29:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 12 11:29:38 2016 Received: from localhost ([127.0.0.1]:38140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1aUGbB-0004D0-Jh for submit <at> debbugs.gnu.org; Fri, 12 Feb 2016 11:29:37 -0500 Received: from world.peace.net ([50.252.239.5]:49125 ident=hope9) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <mhw@HIDDEN>) id 1aUGb9-0004Cs-17 for 20272 <at> debbugs.gnu.org; Fri, 12 Feb 2016 11:29:35 -0500 Received: from [10.1.10.78] (helo=jojen) by world.peace.net with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <mhw@HIDDEN>) id 1aUGay-0000fF-Km; Fri, 12 Feb 2016 11:29:24 -0500 From: Mark H Weaver <mhw@HIDDEN> To: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> <87vb5vn2nw.fsf@HIDDEN> Date: Fri, 12 Feb 2016 11:29:23 -0500 In-Reply-To: <87vb5vn2nw.fsf@HIDDEN> (Mark H. Weaver's message of "Thu, 11 Feb 2016 02:09:55 -0500") Message-ID: <87a8n5vqn0.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mark H Weaver <mhw@HIDDEN> writes: > ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > >> Currently .go files embed randomly-generated symbols stemming from >> =E2=80=98syntax-session-id=E2=80=99, which prevents reproducible builds = (see >> <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html>.) > > I've given this more thought, and I think I have a way that avoids > session-ids altogether. > > Currently, we include both the session-id and a global gensym counter in > the names of freshly generated marks and labels in psyntax.scm. > Instead, let them include the module name and a per-module counter. I've attached a preliminary implementation of this idea, but I'm not yet confident in its correctness. Mark --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-PRELIMINARY-psyntax-Remove-uses-of-syntax-session-id.patch Content-Description: [PATCH] PRELIMINARY: psyntax: Remove uses of syntax-session-id From c5ce1d3ac0ccf76e0ceadf4980f2cd72379b31d8 Mon Sep 17 00:00:00 2001 From: Mark H Weaver <mhw@HIDDEN> Date: Fri, 12 Feb 2016 11:19:38 -0500 Subject: [PATCH] PRELIMINARY: psyntax: Remove uses of syntax-session-id. This is an attempted fix for <https://debbugs.gnu.org/20272>, but I'm not yet confident in its correctness. * module/ice-9/boot-9.scm (module-generate-unique-id!): New procedure. (module): Add 'next-unique-id' field. (the-root-module): Inherit 'next-unique-id' value from early stub. (make-module, make-autoload-interface): Adjust calls to module-constructor. * module/ice-9/psyntax.scm (gen-label, new-mark): Generate unique identifiers from the module name and the per-module unique-id. --- module/ice-9/boot-9.scm | 25 +++++++++++++++++++++---- module/ice-9/psyntax-pp.scm | 15 +++++++++++++-- module/ice-9/psyntax.scm | 13 ++++++++++--- 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index 872594b..1b1f185 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -1,6 +1,6 @@ ;;; -*- mode: scheme; coding: utf-8; -*- -;;;; Copyright (C) 1995-2014 Free Software Foundation, Inc. +;;;; Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -381,6 +381,12 @@ If there is no handler at all, Guile prints an error and then exits." (define (module-ref module sym) (let ((v (module-variable module sym))) (if v (variable-ref v) (error "badness!" (pk module) (pk sym))))) +(define module-generate-unique-id! + (let ((next-id 0)) + (lambda (m) + (let ((i next-id)) + (set! next-id (+ i 1)) + i)))) (define (resolve-module . args) #f) @@ -2018,7 +2024,8 @@ VALUE." submodules submodule-binder public-interface - filename))) + filename + next-unique-id))) ;; make-module &opt size uses binder @@ -2046,7 +2053,7 @@ VALUE." (make-hash-table %default-import-size) '() (make-weak-key-hash-table 31) #f - (make-hash-table 7) #f #f #f)) + (make-hash-table 7) #f #f #f 0)) @@ -2653,6 +2660,11 @@ VALUE." (let ((m (make-module 0))) (set-module-obarray! m (%get-pre-modules-obarray)) (set-module-name! m '(guile)) + + ;; Inherit next-unique-id from preliminary stub of + ;; %module-get-next-unique-id! defined above. + (set-module-next-unique-id! m (module-generate-unique-id! #f)) + m)) ;; The root interface is a module that uses the same obarray as the @@ -2681,6 +2693,11 @@ VALUE." the-root-module (error "unexpected module to resolve during module boot" name))) +(define (module-generate-unique-id! m) + (let ((i (module-next-unique-id m))) + (set-module-next-unique-id! m (+ i 1)) + i)) + ;; Cheat. These bindings are needed by modules.c, but we don't want ;; to move their real definition here because that would be unnatural. ;; @@ -3010,7 +3027,7 @@ VALUE." #:warning "Failed to autoload ~a in ~a:\n" sym name)))) (module-constructor (make-hash-table 0) '() b #f #f name 'autoload #f (make-hash-table 0) '() (make-weak-value-hash-table 31) #f - (make-hash-table 0) #f #f #f))) + (make-hash-table 0) #f #f #f 0))) (define (module-autoload! module . args) "Have @var{module} automatically load the module named @var{name} when one diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm index 1ec5107..c81b69e 100644 --- a/module/ice-9/psyntax-pp.scm +++ b/module/ice-9/psyntax-pp.scm @@ -312,7 +312,12 @@ (values x (car w))))) (gen-label (lambda () - (string-append "l-" (session-id) (symbol->string (gensym "-"))))) + (let ((mod (current-module))) + (simple-format + #f + "l-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))) (gen-labels (lambda (ls) (if (null? ls) '() (cons (gen-label) (gen-labels (cdr ls)))))) @@ -960,7 +965,13 @@ ((transformer-environment (lambda (k) (k e r w s rib mod)))) (rebuild-macro-output (p (source-wrap e (anti-mark w) s mod)) - (gensym (string-append "m-" (session-id) "-"))))))) + (let ((mod (current-module))) + (string->symbol + (simple-format + #f + "m-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))))))) (expand-body (lambda (body outer-form r w mod) (let* ((r (cons '("placeholder" placeholder) r)) diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index 79b353d..b9110f7 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -1,7 +1,7 @@ ;;;; -*-scheme-*- ;;;; ;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010, 2011, -;;;; 2012, 2013 Free Software Foundation, Inc. +;;;; 2012, 2013, 2016 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -642,7 +642,10 @@ ;; labels must be comparable with "eq?", have read-write invariance, ;; and distinct from symbols. (define (gen-label) - (string-append "l-" (session-id) (symbol->string (gensym "-")))) + (let ((mod (current-module))) + (simple-format #f "l-~s~s" + (module-generate-unique-id! mod) + (module-name mod)))) (define gen-labels (lambda (ls) @@ -671,7 +674,11 @@ (cons 'shift (wrap-subst w))))) (define-syntax-rule (new-mark) - (gensym (string-append "m-" (session-id) "-"))) + (let ((mod (current-module))) + (string->symbol + (simple-format #f "m-~s~s" + (module-generate-unique-id! mod) + (module-name mod))))) ;; make-empty-ribcage and extend-ribcage maintain list-based ribcages for ;; internal definitions, in which the ribcages are built incrementally -- 2.6.3 --=-=-=--
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 11 Feb 2016 07:10:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 11 02:10:09 2016 Received: from localhost ([127.0.0.1]:35634 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1aTlOD-0004Iy-Jc for submit <at> debbugs.gnu.org; Thu, 11 Feb 2016 02:10:09 -0500 Received: from world.peace.net ([50.252.239.5]:42599 ident=hope7) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <mhw@HIDDEN>) id 1aTlOB-0004Iq-Q8 for 20272 <at> debbugs.gnu.org; Thu, 11 Feb 2016 02:10:08 -0500 Received: from [10.1.10.78] (helo=jojen) by world.peace.net with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <mhw@HIDDEN>) id 1aTlO5-0001Xc-UG; Thu, 11 Feb 2016 02:10:02 -0500 From: Mark H Weaver <mhw@HIDDEN> To: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> Date: Thu, 11 Feb 2016 02:09:55 -0500 In-Reply-To: <87twws88hr.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 07 Apr 2015 13:48:16 +0200") Message-ID: <87vb5vn2nw.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > Currently .go files embed randomly-generated symbols stemming from > =E2=80=98syntax-session-id=E2=80=99, which prevents reproducible builds (= see > <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html>.) I've given this more thought, and I think I have a way that avoids session-ids altogether. Currently, we include both the session-id and a global gensym counter in the names of freshly generated marks and labels in psyntax.scm. Instead, let them include the module name and a per-module counter. More later... Mark
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 4 Feb 2016 09:36:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 04 04:36:01 2016 Received: from localhost ([127.0.0.1]:58927 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1aRGKX-0006xg-CL for submit <at> debbugs.gnu.org; Thu, 04 Feb 2016 04:36:01 -0500 Received: from eggs.gnu.org ([208.118.235.92]:58696) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <ludo@HIDDEN>) id 1aRGKW-0006xN-Ab for 20272 <at> debbugs.gnu.org; Thu, 04 Feb 2016 04:36:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1aRGKN-00058l-Sz for 20272 <at> debbugs.gnu.org; Thu, 04 Feb 2016 04:35:55 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46234) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1aRGKN-00058h-PH; Thu, 04 Feb 2016 04:35:51 -0500 Received: from pluto.bordeaux.inria.fr ([193.50.110.57]:32966 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from <ludo@HIDDEN>) id 1aRGKM-0008SG-QF; Thu, 04 Feb 2016 04:35:51 -0500 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: Mark H Weaver <mhw@HIDDEN> Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> <87d1sdqjs2.fsf@HIDDEN> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 16 =?utf-8?Q?Pluvi=C3=B4se?= an 224 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x3D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-unknown-linux-gnu Date: Thu, 04 Feb 2016 10:35:48 +0100 In-Reply-To: <87d1sdqjs2.fsf@HIDDEN> (Mark H. Weaver's message of "Wed, 03 Feb 2016 21:41:33 -0500") Message-ID: <878u30g6mj.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.5 (-----) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -5.5 (-----) Mark H Weaver <mhw@HIDDEN> skribis: > ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > >> Currently .go files embed randomly-generated symbols stemming from >> =E2=80=98syntax-session-id=E2=80=99, which prevents reproducible builds = (see >> <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html>.) >> >> One way to fix it would be to allow users to specify a random seed used >> when generating session ids, and to make that available as a >> command-line option to =E2=80=98guild compile=E2=80=99. (GCC does somet= hing similar >> with its =E2=80=98-frandom-seed=E2=80=99 option.) > > We could add this, but it is not analogous to the -frandom-seed option > where it is okay to give it the same value everywhere. Users would need > to ensure that distinct session-ids are used for every invocation of > Guile. With GCC the common idiom is to use =E2=80=98-frandom-seed=3D$source_file= =E2=80=99. However, it would be best if =E2=80=98guild compile=E2=80=99 would choose t= he seed deterministically by default somehow, because we cannot expect all users to add the new flag and use properly. What about having =E2=80=98guild compile=E2=80=99 use the canonical file na= me of the source being compiled (or a hash thereof) as the seed? > More precisely, users of this feature would need to observe the > following restriction, or else unspecified behavior may result: > > If A.go is generated by a Guile session with session-id A, and > B.go is generated by a Guile session with session-id B, and > they are both loaded into a Guile session with session-id C, then > A, B, and C must all be distinct session-ids. Right. I wonder if we could detect collisions. Ideally each .go could record its session ID, but that=E2=80=99s probably not feasible in 2.0. > One more thing: even with a deterministic session-id, the multi-threaded > compiling of *.go files recently added to Guix will lead to > non-deterministic outputs. I'm not sure how to make this work > deterministically with concurrency. Even if we switched to a fixed > number of concurrent processes with one thread each, when process A > attempts to load a .go file that is produced by process B, it is not > deterministic whether it will be there. If it is there, the macros in > that .go file will contain B's session-id, and if not, they will contain > A's session-id. Hmm, OK. Well, let=E2=80=99s keep this use case aside for now. >> Probably, =E2=80=98syntax-session-id=E2=80=99 would have to be a SRFI-39= parameter > > This might adversely affect the efficiency of our macro expander on > platforms with slow thread local variables, and I'm not sure what it > would buy us. If the idea is that it would allow us to build things in > multiple threads, I think that won't work anyway, for the reasons given > above. I was just thinking that it would be a convenient interface for (scripts compile) to specify the session ID to use. I think the first thing to do is to change =E2=80=98fresh_syntax_session_id= =E2=80=99 so that they can use a user-specified seed, when available, instead of =E2=80=98scm_i_random_bytes_from_platform=E2=80=99. WDYT? Thanks for working on it! :-) Ludo=E2=80=99.
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at 20272) by debbugs.gnu.org; 4 Feb 2016 02:41:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 03 21:41:49 2016 Received: from localhost ([127.0.0.1]:58569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1aR9rh-0007s0-FV for submit <at> debbugs.gnu.org; Wed, 03 Feb 2016 21:41:49 -0500 Received: from world.peace.net ([50.252.239.5]:57447 ident=hope0) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from <mhw@HIDDEN>) id 1aR9rg-0007rt-7d for 20272 <at> debbugs.gnu.org; Wed, 03 Feb 2016 21:41:48 -0500 Received: from [10.1.10.78] (helo=jojen) by world.peace.net with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <mhw@HIDDEN>) id 1aR9rY-0004v0-WF; Wed, 03 Feb 2016 21:41:41 -0500 From: Mark H Weaver <mhw@HIDDEN> To: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: bug#20272: Support reproducible builds References: <87twws88hr.fsf@HIDDEN> Date: Wed, 03 Feb 2016 21:41:33 -0500 In-Reply-To: <87twws88hr.fsf@HIDDEN> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 07 Apr 2015 13:48:16 +0200") Message-ID: <87d1sdqjs2.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20272 Cc: 20272 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) ludo@HIDDEN (Ludovic Court=C3=A8s) writes: > Currently .go files embed randomly-generated symbols stemming from > =E2=80=98syntax-session-id=E2=80=99, which prevents reproducible builds (= see > <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html>.) > > One way to fix it would be to allow users to specify a random seed used > when generating session ids, and to make that available as a > command-line option to =E2=80=98guild compile=E2=80=99. (GCC does someth= ing similar > with its =E2=80=98-frandom-seed=E2=80=99 option.) We could add this, but it is not analogous to the -frandom-seed option where it is okay to give it the same value everywhere. Users would need to ensure that distinct session-ids are used for every invocation of Guile. More precisely, users of this feature would need to observe the following restriction, or else unspecified behavior may result: If A.go is generated by a Guile session with session-id A, and B.go is generated by a Guile session with session-id B, and they are both loaded into a Guile session with session-id C, then A, B, and C must all be distinct session-ids. One more thing: even with a deterministic session-id, the multi-threaded compiling of *.go files recently added to Guix will lead to non-deterministic outputs. I'm not sure how to make this work deterministically with concurrency. Even if we switched to a fixed number of concurrent processes with one thread each, when process A attempts to load a .go file that is produced by process B, it is not deterministic whether it will be there. If it is there, the macros in that .go file will contain B's session-id, and if not, they will contain A's session-id. > Probably, =E2=80=98syntax-session-id=E2=80=99 would have to be a SRFI-39 = parameter This might adversely affect the efficiency of our macro expander on platforms with slow thread local variables, and I'm not sure what it would buy us. If the idea is that it would allow us to build things in multiple threads, I think that won't work anyway, for the reasons given above. I'm not entirely sure I've not made a mistake in my thinking, however. Regards, Mark
bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.Received: (at submit) by debbugs.gnu.org; 7 Apr 2015 11:48:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 07 07:48:36 2015 Received: from localhost ([127.0.0.1]:47059 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1YfRzf-0007Wm-Il for submit <at> debbugs.gnu.org; Tue, 07 Apr 2015 07:48:35 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47912) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <ludo@HIDDEN>) id 1YfRzd-0007WW-Az for submit <at> debbugs.gnu.org; Tue, 07 Apr 2015 07:48:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1YfRzX-0002If-03 for submit <at> debbugs.gnu.org; Tue, 07 Apr 2015 07:48:27 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37378) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1YfRzW-0002Ib-Te for submit <at> debbugs.gnu.org; Tue, 07 Apr 2015 07:48:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1YfRzV-0005Nt-Qn for bug-guile@HIDDEN; Tue, 07 Apr 2015 07:48:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1YfRzQ-0002Hu-61 for bug-guile@HIDDEN; Tue, 07 Apr 2015 07:48:25 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54431) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1YfRzQ-0002Hq-3X for bug-guile@HIDDEN; Tue, 07 Apr 2015 07:48:20 -0400 Received: from pluto.bordeaux.inria.fr ([193.50.110.57]:51968 helo=pluto) by fencepost.gnu.org with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from <ludo@HIDDEN>) id 1YfRzP-00072c-Lg; Tue, 07 Apr 2015 07:48:19 -0400 From: ludo@HIDDEN (Ludovic =?utf-8?Q?Court=C3=A8s?=) To: bug-guile@HIDDEN Subject: Support reproducible builds X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 18 Germinal an 223 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x3D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-unknown-linux-gnu Date: Tue, 07 Apr 2015 13:48:16 +0200 Message-ID: <87twws88hr.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit Cc: Mark H Weaver <mhw@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -5.0 (-----) Currently .go files embed randomly-generated symbols stemming from =E2=80=98syntax-session-id=E2=80=99, which prevents reproducible builds (see <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00159.html>.) One way to fix it would be to allow users to specify a random seed used when generating session ids, and to make that available as a command-line option to =E2=80=98guild compile=E2=80=99. (GCC does somethin= g similar with its =E2=80=98-frandom-seed=E2=80=99 option.) Probably, =E2=80=98syntax-session-id=E2=80=99 would have to be a SRFI-39 pa= rameter and we would need a =E2=80=98fresh-syntax-session-id=E2=80=99 procedure that wo= uld take a seed as a parameter. In turn, =E2=80=98fresh_syntax_session_id=E2=80=99 wo= uld need to take that extra argument, and it would need to be changed to not read directly from /dev/urandom. WDYT? Ludo=E2=80=99.
ludo@HIDDEN (Ludovic Courtès)
:bug-guile@HIDDEN
.
Full text available.bug-guile@HIDDEN
:bug#20272
; Package guile
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.