From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id qLa9LjbmxGX5yQAAqHPOHw:P1 (envelope-from ) for ; Thu, 08 Feb 2024 15:33:26 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id qLa9LjbmxGX5yQAAqHPOHw (envelope-from ) for ; Thu, 08 Feb 2024 15:33:26 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=millwood.earth header.s=fm1 header.b="d QrHHCy"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=rvmVqwIB; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1707402806; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=67waPyHylffmxRkIxspgmyS6oakSwgk3hSdLZDOFJig=; b=r2NvBH9iD4W3j4BxS6SqTRJtnahn5+0EozyZtUAATTm0AiSlQDCyPxEXEzen6KrIHw0vdP eLTdRl8E/cooUmPQG58+F8KqBMLLiLi3ScmUzjeKchxH6/1HhCs+XKvw0nO1KV+/vFHQd1 FFe+8soIYSor6Bp/S67SMghuUQgSfVh9AkMgVOuDJDlLBcw958fprONAYrelRBkN1JYtM4 reW98ipAb/0Yeb69/0QoZWpDfyjHakei4gu8Qupa/VooKqmF8I6ApBVc3Jfh6HxkkgHKA7 mDopw9Dq5eBL2JK1hXchZ+ZFlZkyCOa0PCHRl6rMtX5O5Gd2+KVpVbsWQdCFbw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=millwood.earth header.s=fm1 header.b="d QrHHCy"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=rvmVqwIB; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1707402806; a=rsa-sha256; cv=none; b=Dr6u4C3y35vRa3IwV3nKTUYKbNJVJUaQUAgHoySShhiy/hFafb89Efx8LwQuNxVBSMrBWa Ygd5k5DYuvqU3RGCy3vrj4WPPuop3VlBbwgPC+sqJRtWCVV46RiPIL3AHGrMpm+Q0DcZAU OdKtMCke40g3DbW+4q0bhK3EuoOY7xBEuhB/S7V1rShJOIgR0DbBeS2J8kzpmlHXiKmoP3 i1jPYYDJ+G2nySwdf33YpHwnq+X7X6JKFKuQ0IDttXG/R8fUlCLzMARrI8tKCofRTMxp7t iNA+qk0ECEiw8qBhx0600GnS7Mwh+YkraACBpPpn8TwBuaYBeg0DDhGVTI4oHg== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D4399424BF for ; Thu, 8 Feb 2024 15:33:25 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rY5SR-0004hD-UX; Thu, 08 Feb 2024 09:32:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rY5SO-0004dl-Mi for help-guix@gnu.org; Thu, 08 Feb 2024 09:32:53 -0500 Received: from fout2-smtp.messagingengine.com ([103.168.172.145]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rY5SL-00084q-6z for help-guix@gnu.org; Thu, 08 Feb 2024 09:32:52 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfout.nyi.internal (Postfix) with ESMTP id 97BDF1380055; Thu, 8 Feb 2024 09:32:46 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 08 Feb 2024 09:32:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=millwood.earth; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1707402766; x= 1707489166; bh=67waPyHylffmxRkIxspgmyS6oakSwgk3hSdLZDOFJig=; b=d QrHHCyitnlXLRY9B0yiDRtMNh8bTc39rsEsnnHyayOMoaGpaAPdoBIP1jVzFMEBN 7AQbldzz3JacKNMeaNPRCrDIHgbVlukZ1Mt/4LGLtr3S1mmWliO7NeAaF04X6JSS +JlOUaFzT/GZYZ2BNshmboseOj/eWxBgTHJG6EWZ/IWXBL1TDTxjxhDN9GDtTwM7 ANWGogjyIaHAukutGCt0vcWM74L+UbpZ5vDqq7qwwiE/qFx1i333VRz0dEKw53bJ Le+MuGqzneCFoAE/ObcZf13lg9sPgJseG3IghioczRO17SdxtVWDIylG/+zbTeSk opYUT1Be6GtVySRDOFfNw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1707402766; x=1707489166; bh=67waPyHylffmxRkIxspgmyS6oakS wgk3hSdLZDOFJig=; b=rvmVqwIBwfp4Uy/ylonQlVKEypNV0OC5gavSiwZ43EMD 5JnDJ9K6fvcIoaCUpVM+Tjss9VL44sSu5M3SuqLUoBqyVmzehIwdc7muBrxz8RTA c5F3sR8hhW5Rj/oUIMcwfxzfWUmNf+vD9RHCSbulHjs83uAQWXOKTBIw8yaOzxR6 0vSLrpBo60ZaRFZqwf7ULfrDi86F+R5keguLUIsU+tYgW3gQ+DQ4rQGyVm7j/bkq zf7qwByozF3+VHAosFsW1BuP8zh+C4LZqKMV3xZ/6IZAfOiNTG9OSX9V5vkVGw5e e4uW+Kg4/QBQKKB1XJ1uA5t3QzpJh6l+JDXT+kEDKA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrtdeggdeifecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpegtkfffgggfuffvvehfhfgjsehmtderredtvdejnecuhfhrohhmpeflvghsshgv uceouggvvhesmhhilhhlfihoohgurdgvrghrthhhqeenucggtffrrghtthgvrhhnpeffje fftefhuddvgfeltdffgeeigfffkeeiieejvedvgfejudevffduveduudfgieenucevlhhu shhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpeguvghvsehmihhllh ifohhougdrvggrrhhthh X-ME-Proxy: Feedback-ID: idd094634:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 8 Feb 2024 09:32:45 -0500 (EST) Content-Type: multipart/mixed; boundary="------------QtUI0c1qudGubZa0LcaMTot1" Message-ID: <77fd3fdc-d1cf-4abc-a9fd-a981c17510b0@millwood.earth> Date: Thu, 8 Feb 2024 09:32:44 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Help with channel build system and package Content-Language: en-US To: Carlo Zancanaro Cc: help-guix@gnu.org References: <68237c05-3c30-4d36-b733-6251f168ad9e@millwood.earth> <87v86zhbj0.fsf@zancanaro.id.au> From: Jesse In-Reply-To: <87v86zhbj0.fsf@zancanaro.id.au> Received-SPF: pass client-ip=103.168.172.145; envelope-from=dev@millwood.earth; helo=fout2-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -9.76 X-Migadu-Scanner: mx13.migadu.com X-Spam-Score: -9.76 X-Migadu-Queue-Id: D4399424BF X-TUID: 0uqQ785+2W4W This is a multi-part message in MIME format. --------------QtUI0c1qudGubZa0LcaMTot1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Thanks for taking a look Carlo! On 2/7/24 22:37, Carlo Zancanaro wrote: > Hi Jesse, > > I know very little about what you're trying to do, but there's one thing > that looked wrong to me: > > On Wed, Feb 07 2024, Jesse wrote: >> ... >>     (build-system crosstool-ng) >> ... > This isn't a build system, right? It's just the package? I think you may > want crosstool-ng-build-system here. You are totally correct here. I changed this to "(build-system crosstool-ng-build-system)" and I don't get the same error now. I also then realized I was missing "  #:use-module (embedded-dev build-system crosstool-ng)" from the list of modules in the package define-module expression in the packages/crosstool-ng.scm file. I also tracked down some other missing modules. However, now I get this: guix build -v3 -L embedded-dev ct-ng-riscv64-unknown-elf guix build: warning: invalid argument list guix build: warning: source expression failed to match any pattern error: crosstool-ng-build-system: unbound variable hint: Did you forget `(use-modules (embedded-dev build-system crosstool-ng))'? guix build: error: ct-ng-riscv64-unknown-elf: unknown package This confuses me a bit because it says that it is an unbound variable but it is defined in embedded-dev/build-system/crosstool-ng.scm. I believe I should be importing this module with the "#:use-module (embedded-dev build-system crosstool-ng)" line in the package file. The symbol should be exported with: (define-module (embedded-dev build-system crosstool-ng)   #:use-module (guix build-system)   #:use-module (guix build-system gnu)   #:export (%crosstool-ng-build-system-modules             crosstool-ng-build             crosstool-ng-build-system)) which is in the embedded-dev/build-system/crosstool-ng.scm file of my channel. I was mainly trying to follow some build-system setups like ruby where there are build/ruby-build-system.scm, which is used by build-system/ruby.scm, which defines and exports the ruby-build-system symbol, and that is used by the packages in packages/ruby.scm. If I was to manually trace how the build system guile files are used from a package definition, it would look like this: 1. In packages/crosstool-ng.scm I have a package definition that uses        (build-system crosstool-ng-build-system) 2. In that same file I have a line that should include the entry point to the crosstool-ng build system:         #:use-module (embedded-dev build-system crosstool-ng) 3. That line should use the guile module located at embedded-dev/build-system/crosstool-ng.scm, since my build invocation looks like: "guix build -v3 -L embedded-dev ct-ng-riscv64-unknown-elf" and my channel is in a directory called "embedded-dev". So the fulll path would be embedded-dev/embedded-dev/build-system/crosstool-ng.scm 4. In build-system/crosstool-ng.scm the beginning is defined as: (define-module (embedded-dev build-system crosstool-ng)   #:use-module (guix build-system)   #:use-module (guix build-system gnu)   #:export (%crosstool-ng-build-system-modules             crosstool-ng-build             crosstool-ng-build-system)) (define %crosstool-ng-build-system-modules   ;; Build-side modules imported by default.   `((embedded-dev build crosstool-ng-build-system)     ,@%gnu-build-system-modules)) (define (default-crosstool-ng )   "Return the default crosstool-ng package"   (let ((crosstool-ng (resolve-interface '(embedded-dev packages crosstool-ng))))     (module-ref crosstool-ng 'crosstool-ng))) Here I should be exporting the "crosstool-ng-build-system" symbol to be used by a guile script that uses it. The crosstool-ng-build-system-modules should be looking at embedded-dev/build/crosstool-ng-build-system.scm, again taking inspiration from other build system files like the ones associated with ruby. The default-crosstool-ng symbol should be grabbing from the embedded-dev/packages/crosstool-ng.scm file. 5. Later in that file I pass the crosstool-ng-build-system-modules symbol to the crosstool-ng-build function as well as the module located at embedded-dev/build/crosstool-ng-build-system.scm (define* (crosstool-ng-build name inputs                              #:key (sample "unknown")                              (test-target "test")                              (tests? #t)                              (phases '%standard-phases)                              (outputs '("out"))                              (search-paths '())                              (system (%current-system))                              (guile #f)                              (imported-modules %crosstool-ng-build-system-modules)                              (modules '((embedded-dev build crosstool-ng-build-system)                                         (guix build utils)))                              ) 6. Then the actual build system symbol that is exported from the top is defined at the bottom of this file: (define crosstool-ng-build-system   (build-system     (name 'crosstool-ng)     (description "Crosstool-ng build system")     (lower lower))) It all seems just as threaded together as the ones in the guix source. I must be missing something small here. I'm also confused about the "guix build: warning: invalid argument list". It looks like I'm invoking the build command properly. Is there something else you have to do when setting up a channel to pull in the build and build-system directories? I thought that by adding my channel to the load path with "-L", the elements passed to use-module were essentially directory paths. > > That might be what's causing the error: > >> ... >> In guix/build-system.scm: >>      94:2  3 (make-bag _ _ #:source _ #:inputs _ #:native-inputs _ # …) >> In ice-9/boot-9.scm: >>   1685:16  2 (raise-exception _ #:continuable? _) >>   1685:16  1 (raise-exception _ #:continuable? _) >>   1685:16  0 (raise-exception _ #:continuable? _) >> >> ice-9/boot-9.scm:1685:16: In procedure raise-exception: >> Throw to key `match-error' with args `("match" "no matching pattern" >> #> embedded-dev/embedded-dev/packages/crosstool-ng.scm:26 >> 7fd09cb334d0>)'. > Looking in make-bag (in guix/build-system.scm), the first think it does > it pattern match on the build system expecting a record of the > type. Your package doesn't match that pattern, so this > error is raised. Thanks for pointing this out, I didn't dig in enough. > > Carlo I've attached the version with the changes mentioned. Thanks, Jesse --------------QtUI0c1qudGubZa0LcaMTot1 Content-Type: application/gzip; name="embedded-dev.tar.gz" Content-Disposition: attachment; filename="embedded-dev.tar.gz" Content-Transfer-Encoding: base64 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 H9H+B+QC9RoAUAAA --------------QtUI0c1qudGubZa0LcaMTot1--