From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 0AmYM5G8omDSKQEAgWs5BA (envelope-from ) for ; Mon, 17 May 2021 20:57:21 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id SBQuL5G8omAffwAAbx9fmQ (envelope-from ) for ; Mon, 17 May 2021 18:57:21 +0000 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 0035828A9E for ; Mon, 17 May 2021 20:57:19 +0200 (CEST) Received: from localhost ([::1]:35482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiQY-0005la-0B for larch@yhetil.org; Mon, 17 May 2021 14:57:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1liSaI-0004wH-OD for help-guix@gnu.org; Sun, 16 May 2021 22:02:18 -0400 Received: from out162-62-57-64.mail.qq.com ([162.62.57.64]:49751 helo=qq.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1liSaC-00057K-P5 for help-guix@gnu.org; Sun, 16 May 2021 22:02:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1621216925; bh=zou/fFOh7TStrZGUWWDSfM1v9v1bUm1BszFb5ClW1Pg=; h=References:From:To:Cc:Subject:In-reply-to:Date; b=Y9/gDzOp12zCgVELWg6Npeusb6kVeo8iSQdm7FwB/IfwozTsoC/n5mqby2yuilZbm snRH8F5cgTKD0mKhflxzMGjG812dN0fHfkBsqHomu6BxDZd+9ykwvGrVGSbEUIJn6x NtNipRqC8f7Pymd7z8yFi3GGFvqq5bfGgH+BJYzQ= Received: from Workstation ([117.136.87.204]) by newxmesmtplogicsvrsza6.qq.com (NewEsmtp) with SMTP id 2F96820; Mon, 17 May 2021 10:00:47 +0800 X-QQ-mid: xmsmtpt1621216847taqhlunaf Message-ID: X-QQ-XMAILINFO: MIl+eH1C/rsWy30hDYMIZwB6tCaMinPqDaIcioHBu8AVHaPr5Wec6UZ1Qa8jlv YTk33wiCdSRVfknT/pSilBeZAXV/NmxAbFGmp+H+rGTlNsCm1yPOMNEZ7uqemjYzSu9O7pYxbxGf 8U3fnQJ6SzMVbgDR+XWEu6z+y5XRQ6EvAuWFWPJyxilcCE0jOIcljLaPMJg4qTXnrwEhbdkbuV6U r+M9YUNe2yOCkwKtcQkS/LCXQv9QFDmxVOkcH3kZ5D37wdp2kUbJcJMvRHus+bCfv31yzEa1h1y8 rphSj3Q5Gzwn1ANoE2QArg9KcRtADzpgNQNhpRzwW6Mo+YrMCJXGJp/T2wyy9vvinPo5pPkrGSw0 WL6J1tXhZgcRGvzo5cnkXzYdvGSDCwDs8Y25xCXgvrQ3YPl2h6YJ0aN1GelmLKVLzuOnjOnZS0xL p0sEn9ZRGrcMAwmEtyNGUSDedlEbwlgmo7NxkhBrnC90XguekWX1YqOVUo43mHaE7uNnrF9t/j9s 82rougWrHf3IwywT4ZxOOqx4KQN1BOpjX8Q+/9dD1IVjiEyG4Ky1uZP41CxjfSE9795MuSZ6Ul+b OShO4CtPxkaICYLDxULfqNuyaz0GrRG+yY1Wlb2Am0EcBJCVAADTgZrKFprDGwjl5ALyq9kVPnvj /fClaJvchQjPTt8CPS9DkPK0u2izCkqG8ZIkChIc6uidhDQNkVHoEUcAUaNutAQveWVNVDlCI2kY 7uIwGD6ixYCyt7kP3wrqyBvdbpUegj2LVoVUst+coiz869L/m1W0v43sPSRJyhpuLkqmccbJLzQ+ dhexXiBtACcw== References: <20210517023829.13248200@tachikoma.lepiller.eu> User-agent: mu4e 1.4.15; emacs 27.2 From: c4droid To: Julien Lepiller Subject: Re: Using bootstrap seeds write package definitions In-reply-to: <20210517023829.13248200@tachikoma.lepiller.eu> Date: Mon, 17 May 2021 10:00:45 +0800 X-OQ-MSGID: <875yzixgoi.fsf@foxmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=162.62.57.64; envelope-from=c4droid@foxmail.com; helo=qq.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 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_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RDNS_DYNAMIC=0.982, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 17 May 2021 14:27:08 -0400 X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: help-guix Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1621277841; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=zou/fFOh7TStrZGUWWDSfM1v9v1bUm1BszFb5ClW1Pg=; b=oQoJUe/abLCnv6TJo+/hraXg1UoQjzM4hg1lVKOqvcI+SKA+qSP2kNfJIdYyrw42+2QfsV U0SjKe2k7W8Irdxx77bAC2xTWL6OCRtL32xTUpBX1zieE+1DB77ntMO0YMmcrT2t9N8ZLt u6wsSmwN6tc9CHtR3BVWIKluqQc0gwSeWHGRDPyJCPIHcPqYjqp4gZtcVXQLlOFdPthTeA pn1hB086x/gWpu7553NcIsLn6IP0IpKsx9HRw5NN1RGcQ0gk1jKHsGQiO8oaRLrOHM8T5P F6FBvwSKk08MtpVzXf28BInOlU3S71bllqKiekNy4B8gNKIdubEybO+esQdqbA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1621277841; a=rsa-sha256; cv=none; b=d7k6bIpogAzTDfGOm2q/HqU6CAtXD3qQoXibm5179FSX6EOu+ihU3/vQaIeisXd6ZJ0IkX qwStNgnfE7Qx5uuRueg3YTFfafAAiz9m/3TphaBpDi8p+Xd8avA0jW80iFVhkR0qCpDJxn 8iAY1k/0q8Sqe7Hy/nwSFyPcKMGn697ETpuhDy+FfQpV8jcAnXYeo4m4AwULQrasQNqKp7 DxBu+LXKwgDOPC4Ks7q3goNTFXjPYkEonnTIRLXVL3IZ5p2gT7uCYUbpTJlkGEGhunbOq+ t7jWsk1WJlRTEPPhD+JigV9d8rNjDv5biIRYbnVlrF+nzQkCGkEz9AWbPt8uFw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=foxmail.com header.s=s201512 header.b="Y9/gDzOp"; spf=pass (aspmx1.migadu.com: domain of help-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=help-guix-bounces@gnu.org X-Migadu-Spam-Score: 4.86 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=foxmail.com header.s=s201512 header.b="Y9/gDzOp"; dmarc=pass (policy=none) header.from=foxmail.com; spf=pass (aspmx1.migadu.com: domain of help-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=help-guix-bounces@gnu.org X-Migadu-Queue-Id: 0035828A9E X-Spam-Score: 4.86 X-Migadu-Scanner: scn0.migadu.com X-TUID: JyysCGchxjeF Julien Lepiller writes: > Hi c4droid, > > Le Sun, 16 May 2021 10:50:36 +0800, > "c4droid" a =C3=A9crit : > >> Hello guix! >> I was using the Linux From Scratch for a while as my mainly linux >> distro, use soft link as package management. when I heard guix, I >> think I found solution for my LFS package management. I tried guix >> and guix system few month, Is time for switch my LFS package manager >> to guix. > > I've been using LFS (and my own LFS-based "distro") for some years, so > I completely understand why you'd want to use guix. Actually I based my > "distro" on what I understood from Guix and the package manager from > Haiku. When I understood I implemented that badly, I switched to Guix > and Guix System entirely, no more LFS :D. I was use pkgtool from slackware and write some dirty shell script emulate GNU Stow for my package management. It's so difficult for manage soft link. > >> When I watched the manual talk about bootstrapping guix, I don't know >> how to writing some package definitions with bootstrap-seeds, I was >> searching on the google and ask questions on irc, because building >> the LFS, want build the cross toolchain (stage 1) then build final >> system (stage 2), last is kernel and initramfs (stage 3). after that >> is build Beyond LFS (stage 4). I stuck with using bootstrap seeds >> writing stage 1 package definitions. So I ask for help on community, >> because the power of community is great. :) > > So Guix comes with a set of packages, which are just recipes to build > them from source. There are two things you might want to do: you can > either use the existing packages or create your own recipes for the > whole system. If I can, I want create my own recipes for the whole system with the help of Guix power > > If you choose to use our packages, then there are again two options. > You can use the existing binary bootstrap (the only thing you wouldn't > build yourself), or build it yourself and replace the binaries used in > Guix by your own. Note that the bootstrap binaries are different from > the binaries built for the first chroot of LFS (the cross-compiler). We > do not use a binary GCC, but we instead start from mescc, a small C > compiler, and use it to build tcc, then gcc, with the goal of reducing > that down to stage0, which is only a few hundred bytes of binary, plus > sources of other packages. > > # Using our recipes and bootstrap binaries > > If you want to use our bootstrap binaries, there is nothing to do, > because Guix itself will be able to get the binary bootstrap and build > everything from it. Do not enable substitutes if you want to build > everything yourself. > > # Providing your own bootstrap binaries > > If you prefer to provide your own bootstrap, you'll have to build and > provide binaries for the bootstrap seeds we currently have in Guix, > that you see in the manual. > I want to build my own bootstrap binaries, hope get more help with create my own bootstraps > # Building your own packages > > If you decide not to use our recipes, you must write your own. The set > of packages is rooted in the bootstrap seeds, as you noticed. However, > if you want to provide your own recipes, you are basically free to > provide any bootstrap and further packages you want. What you could do > is to build stage1 (cross toolchain), use that as your binary seed, and > build the other stages as guix packages. Note that for that, you'll > need to have guix already installed on the host system. > > If you have never used Guix, or never written a package definition, you > might want to have a look at our short packaging tutorial at > https://guix.gnu.org/en/cookbook/en/html_node/Packaging-Tutorial.html#Pac= kaging-Tutorial > (French and German are also available if you prefer one of these > languages). > > There is some code in gnu/packages/bootstrap.scm that you might be > interested in. It has some interesting bits: first there are a few > binary seeds with hashes: they are statically linked binaries that are > needed to decompress other seeds. Then, we define a few special > procedures that replace the normal packaging procedures > (bootstrap-origin, package-from-tarball). You probably want to use them > or get inspiration from them to create your own bootstrap recipes > (packages that simply decompress a tarball containing a prebuilt > binary). The rest of the file lists these packages. > > Then gnu/packages/commencement.scm is the very beginning of the package > graph. These packages use the binary seeds to build up to gcc, that we > later use in the gnu-build-system, etc. You will be interested in the > comments in this file too :) > If I can, I think use the mescc to build stage0 then build stage1, stage2, stage3 is the best option. I'll watch gnu/packages/commencement.scm comments later for get some inspiration I'm currently use a Guix System VM for my build machine, and I have a ci for build continously > # My own experience with my package manager (not guix) > > If I recall correctly, what I did when I had my own "distro" (and > package manager), is that I first built the cross-toolchain and base > system from LFS (it was pre-10.0, and we built the cross-compiler and > use it firts outside the chroot to build the base build toolchain we > could then chroot to). I would first manually create a package from the > chroot, and install a first system with only that package, then chroot > to it. Then, from this system and the chroot package, I was able to > build the base system with my package manager. Once I had the base LFS > system (stage 2), that system had a dependency on the chroot package, > which was not acceptable for me, so I replaced all the recipes to > depend on the previously built version, turning stage2 into a set of > bootstrap binaries. I rebuilt stage2 from the new bootstrap, and > continued to write packages for other packages. > > Once I had my packages, I also wrote some code to create and install > the initramfs and kernel (stage3). > > At this point, I could boot the new system, and continue with stage 4 :) > > Note that, in order to use Guix, you'll need Guix in the chroot > package and all its dependencies, which is bigger than what LFS makes > you build initially. > > Hope this is useful! Before I can help you further, I think I need to > know which route you want to follow, as they are very different. > When I see your experience for the package manager, I'm sure using mes for build stage1 is right option=20 >> p.s.: Sorry for my poor english > > Hehe, don't worry. You can use your mother tongue if you prefer on this > mailing list, although I can only help in English or French. > Haha, my mother tongue is Mandarin Chinese, translate mandarin to english and make sure the meanings right is difficult. Because english is universal language in free software community, so I use english as possible. :D >> ------ >> Best reguards c4droid