From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Subject: bug#30706: Nginx service fails Date: Mon, 05 Mar 2018 11:09:34 +0100 Message-ID: <87k1uqbzq9.fsf__10201.4264361516$1520244511$gmane$org@gnu.org> References: <20180304222749.GA23799@jurong> <20180304230637.GA24077@jurong> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1esn4H-0005mQ-Mc for bug-guix@gnu.org; Mon, 05 Mar 2018 05:10:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1esn4E-0005sn-H1 for bug-guix@gnu.org; Mon, 05 Mar 2018 05:10:05 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:37252) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1esn4E-0005sJ-DH for bug-guix@gnu.org; Mon, 05 Mar 2018 05:10:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1esn4E-0000sB-2W for bug-guix@gnu.org; Mon, 05 Mar 2018 05:10:02 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <20180304230637.GA24077@jurong> (Andreas Enge's message of "Mon, 5 Mar 2018 00:06:37 +0100") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Andreas Enge Cc: guix-devel@gnu.org, 30706@debbugs.gnu.org Andreas Enge skribis: > guix system: loading new services: user-homes term-auto nginx... > shepherd: Evaluating user expression (register-services (primitive-load "= /gnu/st?") ?). > guix system: error: exception caught while executing 'eval' on service 'r= oot': > find-long-options: unbound variable The problem we have here is that the agetty service expects =E2=80=98find-long-options=E2=80=99 from linux-boot.scm, and it expects it = at the top level. So what happens above is that we evaluate in PID=C2=A01 code like: (make ;; =E2=80=A6 #:start (let ((tty =E2=80=A6 (find-long-options =E2=80=A6) =E2=80=A6)) =E2=80=A6)) If you run this on an =E2=80=9Cold=E2=80=9D GuixSD, =E2=80=98find-long-opti= ons=E2=80=99 is undefined. Thus the whole (register-services =E2=80=A6) expression fails to evaluate, = and we end up with some of the services missing. Conclusions: 1. =E2=80=98guix system reconfigure=E2=80=99 should probably register ser= vices one by one so that if one of the service expressions is erroneous, we don=E2=80=99t bork everything. See =E2=80=98upgrade-shepherd-services= =E2=80=99. 2. IWBN to delay execution of this whole default-tty thing to the #:start method. Ideas, Danny? In general we should do as little as possible at the top level in the Shepherd config file. Ludo=E2=80=99.