From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ricardo Wurmus Subject: Re: pre-release [PATCH] git-service Date: Fri, 08 Jul 2016 22:41:30 +0200 Message-ID: <87r3b33ls5.fsf@elephly.net> References: <87zipsgm8g.fsf@we.make.ritual.n0.is> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bLcaq-0004KR-AA for guix-devel@gnu.org; Fri, 08 Jul 2016 16:41:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bLcam-0003v5-9W for guix-devel@gnu.org; Fri, 08 Jul 2016 16:41:48 -0400 Received: from sender163-mail.zoho.com ([74.201.84.163]:24092) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bLcam-0003uk-0C for guix-devel@gnu.org; Fri, 08 Jul 2016 16:41:44 -0400 In-reply-to: List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: "Thompson, David" Cc: guix-devel Thompson, David writes: > On Fri, Jul 8, 2016 at 11:53 AM, ng0 wrote: >> I need some feedback on the git-service. >> The inserted patch gives me this output: >> >> >> +(define-record-type* >> + git-configuration make-git-configuration >> + git-configuration? >> + (git git-configuration-git ; >> + (default git)) >> + (base-path git-configuration-base-path) ; string >> + (port git-configuration-port)) ; string > > So, this is a record type... > >> + >> +(define git-shepherd-service >> + (match-lambda >> + (($ git base-path port) >> + (let ((conf (string-append >> + "--base-path="base-path >> + "--port="(number->string port)))) >> + (list (shepherd-service >> + (provision '(git)) >> + (requirement '(networking loopback syslogd)) >> + (documentation "Run the git-daemon server for git repositories") >> + (start #~(make-forkexec-constructor >> + (list (string-append #$git "/bin/git") >> + "daemon" "--syslog" "--informative-errors" >> + #$conf))) > > ...and you (ungexp conf), where conf is an instance of that record > type, into what is supposed to be a list of strings that form command > line arguments for git. See the issue? I might be misreading this, but “conf” here is literally the string “--base-path=something--port=1234” when “base-path” is the string “something” and “port” is the number “1234”. The let binding for “conf” is incorrect. First, you say earlier that “port” is a string: > + (port git-configuration-port)) ; string but then you pass it to “number->string”, so it’s actually expected to be a number. Second, the argument to “make-forkexec-constructor” is supposed to be a list of strings, each representing one argument. So defining “conf” as a concatenation is not okay. You don’t need a let-binding for “conf” at all. Just use “base-path” and “port” directly. (I haven’t tested this.) (list (string-append #$git "/bin/git") "daemon" "--syslog" "--informative-errors" (string-append "--base-path=" $#base-path) (string-append "--port=" $#port)) But the error you get stems from passing a value of “” to something that expects a package. I don’t see where this happens. Since I cannot see “~/testvm.scm” I cannot tell you anything more. ~~ Ricardo