From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id IHdPCq3flWKZegAAbAwnHQ (envelope-from ) for ; Tue, 31 May 2022 11:28:13 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id UF1YCa3flWKyBgAAG6o9tA (envelope-from ) for ; Tue, 31 May 2022 11:28:13 +0200 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 A5EA6ED06 for ; Tue, 31 May 2022 11:28:12 +0200 (CEST) Received: from localhost ([::1]:46518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nvyAd-0000tG-QF for larch@yhetil.org; Tue, 31 May 2022 05:28:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53468) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nvyA8-0000p2-5U for guix-devel@gnu.org; Tue, 31 May 2022 05:27:40 -0400 Received: from albert.telenet-ops.be ([2a02:1800:110:4::f00:1a]:48868) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nvy9y-00006x-AH for guix-devel@gnu.org; Tue, 31 May 2022 05:27:32 -0400 Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a]) by albert.telenet-ops.be with bizsmtp id dMTS270084UW6Th06MTSia; Tue, 31 May 2022 11:27:26 +0200 Message-ID: <39ec083e8e2532dc8c0734774ee7e80cfa22d4a5.camel@telenet.be> Subject: Re: antioxidant-build-system can be tested as a channel, + GTK app 'castor' builds From: Maxime Devos To: Ludovic =?ISO-8859-1?Q?Court=E8s?= Cc: guix-devel@gnu.org Date: Tue, 31 May 2022 11:27:26 +0200 In-Reply-To: <87r14b2ga6.fsf@gnu.org> References: <17e661777e86b343822d814917a9940fe6e15618.camel@telenet.be> <87r14b2ga6.fsf@gnu.org> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-btmGOvXXMXgGcy3Ka0Xt" User-Agent: Evolution 3.38.3-1 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22; t=1653989246; bh=P3LN/I+hyqids/R8ioMIdqhWtbLEgsdYFJt+Gs3GiGc=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=mXpiMaBbQkX88ItnasWVuNiZUtlhuzzzsyYrPNs04PtarDG4f+LE8OU4EQzBDTQua Gh4BJqgAUPkU47InUqs9rN9hcpGZUHKc3mdEGSGMtzmunJmhv6ukb0N4nVR4+ThbXt uSfrAvodwjnuMWTixS/ke78fDyE7eKV59OAzkFu91J+nBRU9VxoBLfnph+XxR/NHNR /AW1342eHR/qN5b+Oz6xES4gOw6wNX0IsDqbaPcWQ/CAsRFue70qL7r+P2r2bunKwD aNIAunJrhDtMb0QE2ckFbcv/NCmuiBmSiAMu4B/4m2PVYyXnjXyC4piY7HAGMqg4lf df3EwaTTOTH4A== Received-SPF: pass client-ip=2a02:1800:110:4::f00:1a; envelope-from=maximedevos@telenet.be; helo=albert.telenet-ops.be 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list 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+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1653989292; 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=P3LN/I+hyqids/R8ioMIdqhWtbLEgsdYFJt+Gs3GiGc=; b=M4Gnmd7iYOaGJ4guPdDSdi6yu+fHvE8ByGH7GhKrYH8pAWZArqJkG++1ezfOdmKkywR9oG UvD4zDMgKyIbOtbEMMW5TS7tzVP6CK/75cwxJZ2VKxOGZCwW2s1Zzuhdnn+iwj/Dz44HMw Hpy29N6F2pG8rjzc3BQCYReYwqDOPUm8krDVY/pDBSRF2V7chclx6yg/t/vecjOSwmRT+b xzV/gHAo8/qBaq3pWDP6ubgiFSVJXSyvomSp/b4zcxiDUqKZFwiKJFrdj1Bd/NKUEPvW6n 0/Ih6j+FKHvkBzl4piPzvr4YNx0EwcbZMnMhT8lpMPeSSDpL38sOlUeun5hsJQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1653989292; a=rsa-sha256; cv=none; b=ODl5U2vd0MVLL50zQKsRfBBvvD++e5sb8zespBfaC1S2l3FiuWnrv9/Wa3CW9a5gVVAf3S pGZiWH47o8CXUYW0Q4o60IcdPDjFXaV0GixQSBO6RLEvCP9FJZsvtx8ORsejnhl5Eli1dv j2YYsP48n6ldWPsDVg/MNpIBOHaWghfdPRTryKG3XwS+Q74ZWlqQclBIxzJPQ7z/xj+zVk DRjWS7wWG5MF5yDqYY0I1J+gO/bsFP6IDOQp7s+h2NOaXrEmIiaztcDW9RN5HUJLY0ZycE O5RnB43RmctSIfsJOpOeSil65iXNyIOwCQRdYPqlWim+3cycT6bHZJZwagZN3w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=telenet.be header.s=r22 header.b=mXpiMaBb; dmarc=pass (policy=none) header.from=telenet.be; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -8.13 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=telenet.be header.s=r22 header.b=mXpiMaBb; dmarc=pass (policy=none) header.from=telenet.be; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: A5EA6ED06 X-Spam-Score: -8.13 X-Migadu-Scanner: scn0.migadu.com X-TUID: Ap/tvNlVPKoe --=-btmGOvXXMXgGcy3Ka0Xt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s schreef op ma 30-05-2022 om 17:26 [+0200]: [...] To make sure share a common understanding, could you post a summary of: =C2=A0=C2=A01. the goals; =C2=A0=C2=A02. the status; =C2=A0=C2=A03. pros and cons over the status quo and other options (if any!= ); =C2=A0=C2=A04. the next steps. > [...] (notabug.org is down, so I've made a copy at .) Goals: * Reduce rift between Guix and Rust by making Rust packages work nicely in Guix. * Eliminating #:skip-build? and making compile time faster, by not re-compiling dependencies and by reusing compiled dependencies in dependents. (solved) * Allow crates to be shared libraries, such that grafting can work and maybe for space usage. (not solved yet) * regular inputs/native-inputs (solved) Non-goals: * Produce exactly the same binaries with exactly the same dependencies as= with Cargo. If you want to reproduce a binary produced with Cargo, use Carg= o. * Cross-compilation is left for later. Side-goals: (not the main goal, but partially solved along the way) * Having multiple versions of the same dependency is inconvenient for antioxidant, so often only the latest version is preserved. Less package variants -> less space usage, less compilation time, less opportunities for sneaking malware through, less old buggy versions. * As part of resolving build failures caused by using antioxidant, some crates were updated or added. Solved issues: * =E2=80=98cargo build-system should be able to filter out target.cfg(win= dows) dependencies=E2=80=99 * =E2=80=98[PATCH RFC] Turning Rust/Cargo inputs into =E2=80=9Cregular=E2= =80=9D inputs?=E2=80=99 * =E2=80=98cargo-build-system hides the package dependency graph=E2=80=99 (at least, after transforming the packages appropriately) * =E2=80=98Rust packages are not reproducible=E2=80=99 (at least, "guix build --check" hasn't failed for me yet) Avoided issues: * =E2=80=98[PATCH 0/4] build-system/cargo: Propagations across the crate = closure.=E2=80=99 * =E2=80=98Cargo-build-system guix-vendor does not provide packages corre= ctly 2 levels down=E2=80=99 * =E2=80=98Handling source-only dependencies in a generic way=E2=80=99 Pros/cons of antioxidant: * pro: less compilation time: when rust-foo is compiled, antioxidant only compiles rust-foo and not its dependencies rust-bar0 ... rust-bar2= 00. * pro: theoretically less space usage (source code is not copied to the #= $output and build results of dependencies are linked to). However: not measure= d, and we're not setting LTO and -Os compilation flags yet. * pro: antioxidant just uses inputs/native-inputs, so "guix graph", "guix= refresh -l" will be useful after transforming existing package definitions. * cons: probably not everything of Cargo.toml is implemented yet Status: * Unless they have been broken, the following packages are known to build= : antioxidated-castor antioxidated-dutree antioxidated-diffr antioxidated-git-absorb antioxidated-hex antioxidated-hexyl antioxidated-ripgrep antioxidated-rtss antioxidated-sniffglue antioxidated-swayhide antioxidated-tealdeer * I wouldn't know how many fail to build Next steps : (a) The antioxidant channel has information on how to transform package definitions using cargo-build-sstem to antioxidant-build-system= . Maybe "guix style" could be taught to perform these changes to the source code? (b) To get a good grasp on what builds/what not, it would be useful to build the channel at ci.guix.gnu.org or such. More concretely, the CI would grab all cargo-build-system rust apps from (gnu packages .= ..), feed them to the package transformation procedure 'vitaminate/auto', and build the results. Then we can have a look at a dashboard like . (c) Maybe there could be some kind of transition period, where 'antioxidant.scm' and 'antioxidant-packages.scm' is added to the Guix repo, known-to-build packages are replaced by their antioxidated variant (using vitaminate/auto) and gradually all rust apps are becoming supported by antioxidant. Finally, when all are supported, the "guix style" from (a) could be run to clean up the source code? Though for now, I would prefer to do something like (b) first. (d) Implement support for "cdylib" such that things like librsvg can be bui= lt. (e) Make sure the optimisation settings are reasonable (LTO, -Os etc) Greetings, Maxime. --=-btmGOvXXMXgGcy3Ka0Xt Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYpXffhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7kiOAQDDEr8YuxWLad4XHVjahCf22KXE NuURyS0cexBJvDjMggD/ROTfzivDCAz7oeami0x6cYmF21B67wgA+bCw/ZrPqAc= =evQw -----END PGP SIGNATURE----- --=-btmGOvXXMXgGcy3Ka0Xt--