From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 0BNuF3zlVGJXWAAAgWs5BA (envelope-from ) for ; Tue, 12 Apr 2022 04:35:40 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 0LgmFHzlVGLwDwEAauVa8A (envelope-from ) for ; Tue, 12 Apr 2022 04:35:40 +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 DC6A5346F4 for ; Tue, 12 Apr 2022 04:35:39 +0200 (CEST) Received: from localhost ([::1]:53012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ne6NX-0003pl-2X for larch@yhetil.org; Mon, 11 Apr 2022 22:35:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60380) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ne6N6-0003pJ-GH for help-guix@gnu.org; Mon, 11 Apr 2022 22:35:12 -0400 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:56647) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ne6N3-0005gx-CK for help-guix@gnu.org; Mon, 11 Apr 2022 22:35:12 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 4D6B932020BE for ; Mon, 11 Apr 2022 22:35:06 -0400 (EDT) Received: from imap49 ([10.202.2.99]) by compute3.internal (MEProxy); Mon, 11 Apr 2022 22:35:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1649730905; x=1649817305; bh=2bdHi6DmcHb82 EdWYMMQbgyn9uJ8U6/hkEkwD1BX3XY=; b=YyQ0jKXYTrnOKy2wtHvozQolqLV36 jy/rS01wIJ/DFS4Ni5SY//+9XbTYY4WxUOQ7us5IImeULzgsNF4iJcWhqcB3VCam P+futLepNWPUlEMlBNTZckS4Ejb5cltck9yDSXhpF3HTWSKkgu3yARwrXp3e3wKF 0v12Vm+toQyacU89EvuCO48yvmmeYBxPy7J68/9Ng2O9uNH8vdElupZMYSf2G4NX KzuzMNTwORwFLkUXcTKLRZPNbZ9q3puyeo/3DqcB6imWt1lRkq5HVYv/qtrFKNlC PvZDKh3xYUXommQhf7zaqVfIWx3Wo9eY4PmyIOE1ab+7g+LiH2jpAUL4Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrudekjedgheelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefofgggkfffhffvufgtsehmtderre erredtnecuhfhrohhmpedfffgrvhhiugcutehrrhhohihofdcuoegurghvihgusegrqhif rghrihdrnhgvtheqnecuggftrfgrthhtvghrnhepudeiieduleegtdfhuedvvdetveefke elkeejhfekfedutdfgkeeikeeiveehgfejnecuvehluhhsthgvrhfuihiivgeptdenucfr rghrrghmpehmrghilhhfrhhomhepuggrvhhiugesrghqfigrrhhirdhnvght X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id A6CCD15A005F; Mon, 11 Apr 2022 22:35:05 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.7.0-alpha0-386-g4174665229-fm-20220406.001-g41746652 Mime-Version: 1.0 Message-Id: Date: Mon, 11 Apr 2022 22:34:45 -0400 From: "David Arroyo" To: help-guix@gnu.org Subject: Defining a toolchain with musl libc Content-Type: multipart/mixed; boundary=e1f8d3d323c24233a4179ab492ff9b5b Received-SPF: pass client-ip=64.147.123.19; envelope-from=david@aqwari.net; helo=wout3-smtp.messagingengine.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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" 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=1649730940; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=2bdHi6DmcHb82EdWYMMQbgyn9uJ8U6/hkEkwD1BX3XY=; b=O0gVOBz6qgSJbpU1xvY/Uob/q/w3FOTmoOXOBXK+OxDPfAsrcMPFevuWeMl7ZaZye6yrtv r6YQ+F7LzPTStUsPZGRMSLcnJpobOuXDwa4UE+vHjFbOXbOUxFjKze+IkRtiZ225QXtYL+ JuV0WUiGjpV09IcTTpLSoGSqgI6HOcfryBakh0/H4IsdnGPqnwWT7xAC50Ov3gr/eJiq0b uGKZkEjPkJVwr/VUl12IVHqayUr1hNx16Bf43aMnoDzgSyI+Hv5ReFx2TiV4BHxOkNZZiN f7ceE0xM6pMfdh4kxINW/lYcM5NN0JGPFhGN9KgPfQVNsq/12L18cMSi45oR7Q== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1649730940; a=rsa-sha256; cv=none; b=cMQ8w6fo+oFoZ0iLiQwO0y4H4jT/gqN0lIlod4XDMe4T5VUPfr8p300NbhJK9hJAK9VaBY pBvwpqhuQ4UMBfF+wt5wuKz9USHVDOLBnrlBS6p7ohuOuoqx+o10IKd00QYUJHDlaoycFP UjJ36tpA5nyGZGBhAxASOayF3EUY2Fw+Dyr/FSPahjR3JJMSNbcjwC3Y5JkpwHfdGJfJJt q9Gmg5nugZTNo0NgFYaKDTBwDZh16DhqpHAm8UCeF2bdtfsmWp6Pz+CbqPPfPvnE1WNmCJ WE/uT65pB8w7G+FOQbFiDdZoZRKuYHUEb1PEDlikrzdDb10mRDZMTZOBrgmdUw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm3 header.b=YyQ0jKXY; dmarc=none; 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" X-Migadu-Spam-Score: 3.94 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm3 header.b=YyQ0jKXY; dmarc=none; 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" X-Migadu-Queue-Id: DC6A5346F4 X-Spam-Score: 3.94 X-Migadu-Scanner: scn0.migadu.com X-TUID: lts+wiUZX7T2 --e1f8d3d323c24233a4179ab492ff9b5b Content-Type: text/plain Hello, I want to rebuild the packages in the `skarnet` module to be statically linked with musl libc. I don't mind if my C/C++ toolchain itself does not use musl libc, so initially, I tried simply modifying the packages and their direct dependencies, like so: (define (compose . fns) (let ((call (lambda (f x) (f x)))) (lambda (p) (fold-right call p fns)))) (define (static-link p) (package/inherit p (arguments (substitute-keyword-arguments (package-arguments p) ((#:configure-flags flags ''()) `(cons* "LDFLAGS=-static" "--disable-shared" ,flags)))))) (define replace-glibc (package-input-rewriting `((,glibc . ,musl)) #:deep? #t)) (define (append-name suffix) (lambda (p) (package/inherit p (name (string-append p suffix))))) (define package-with-musl (package-mapping (compose static-link replace-glibc) #:deep? #f)) (define hello-musl (package-with-musl hello)) (define execline-musl (package-with-musl execline)) Then I tested with $ guix build -L /path/to/module -e '(@ (module path) hello-musl)' This worked with simple packages like `hello`, but other packages like `execline` still ended up with dynamically linked binaries: $ out=$(guix build -L $(pwd) -e '(@ (aqwari packages skaware) execline-musl)') $ file $out/bin/fdmove /gnu/store/82r5ilk3jir7cssmhc8bi87qqj46p29h-execline-2.8.1.0/bin/fdmove: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, not stripped $ guix gc --requisites $out /gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8 /gnu/store/hxxbjrm4iw6aj203zli6hj4ds1l27s3k-skalibs-2.11.0.0 /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33 /gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8 /gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib /gnu/store/82r5ilk3jir7cssmhc8bi87qqj46p29h-execline-2.8.1.0 I don't know how gcc and glibc ended up in there. I tried reading the code, but I am not familiar enough with it to follow it yet. I think they may get added as implicit inputs by gnu-build-system, and I might not be using the package-input-rewriting transform correctly. On my second try, I tried to create a GCC+musl toolchain and use that I tried to create a toolchain like so: (define my-toolchain (make-gcc-toolchain gcc musl)) But this failed with the error: guix build: error: reference to invalid output 'static' of derivation '/gnu/store/jmp8rccdwnrnl9x947xp7a75kmgdhylp-musl-1.2.2.drv' This is because the musl package does not have a "static" output, which the package builder in `make-gcc-toolchain` tries to access. To work around that issue, I added empty outputs to the musl package: (define musl-fix-outputs (package (inherit musl) (outputs '("out" "static" "debug")) (arguments (list #:phases #~(modify-phases %standard-phases (delete 'check) (add-after 'build 'ensure-outputs (lambda _ (mkdir-p #$output:static) (mkdir-p #$output:debug)))))))) (define my-toolchain (make-gcc-toolchain gcc musl-fix-outputs)) Then I tried to build the `hello` package: (package-with-c-toolchain hello my-toolchain) This rebuilds the musl package, and gets to the 'patch-source-shebangs phase of the gcc rebuild, where it fails with the error: error: in phase 'patch-source-shebangs': uncaught exception: encoding-error "scm_to_stringn" "cannot convert narrow string to output locale" 84 #f #f I've attached the full error trace to this email. I am not sure what to make of this error, or whether it is a red herring or not. Does anyone see what I'm doing wrong? Or does anyone have an example of building a non-trivial package against musl? Thanks, David --e1f8d3d323c24233a4179ab492ff9b5b Content-Disposition: attachment;filename="guix-build.log" Content-Type: text/x-log; name="guix-build.log" Content-Transfer-Encoding: BASE64 cGF0Y2gtc2hlYmFuZzogLi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni92cGVybS5w bDogY2hhbmdpbmcgYC91c3IvYmluL3BlcmwnIHRvIGAvZ251L3N0b3JlL2h5NmFic3d3djRk ODl6cDQ2NGZ3NTJ6NjVma3pyN2g1LXBlcmwtNS4zNC4wL2Jpbi9wZXJsJwpwYXRjaC1zaGVi YW5nOiAuL2djYy90ZXN0c3VpdGUvZ2NjLnRlc3QtZnJhbWV3b3JrL2dlbl9kaXJlY3RpdmVf dGVzdHM6IGNoYW5naW5nIGAvYmluL2Jhc2gnIHRvIGAvZ251L3N0b3JlLzR5NW05bGI4azNx a2IxeTltMDJzdzl3OWE2aGFjZDE2LWJhc2gtbWluaW1hbC01LjEuOC9iaW4vYmFzaCcKZXJy b3I6IGluIHBoYXNlICdwYXRjaC1zb3VyY2Utc2hlYmFuZ3MnOiB1bmNhdWdodCBleGNlcHRp b246CmVuY29kaW5nLWVycm9yICJzY21fdG9fc3RyaW5nbiIgImNhbm5vdCBjb252ZXJ0IG5h cnJvdyBzdHJpbmcgdG8gb3V0cHV0IGxvY2FsZSIgODQgI2YgI2YgCnBoYXNlIGBwYXRjaC1z b3VyY2Utc2hlYmFuZ3MnIGZhaWxlZCBhZnRlciA1LjEgc2Vjb25kcwpCYWNrdHJhY2U6CiAg ICAgICAgICAxMSAocHJpbWl0aXZlLWxvYWQgIi9nbnUvc3RvcmUvamc4enpmYWl2OTM4bHhp MXh5dmhjNXd6NjNwPyIpCkluIGd1aXgvYnVpbGQvZ251LWJ1aWxkLXN5c3RlbS5zY206CiAg ICA5MDY6MiAxMCAoZ251LWJ1aWxkICM6c291cmNlIF8gIzpvdXRwdXRzIF8gIzppbnB1dHMg XyAjOnBoYXNlcyAuICMpCkluIGljZS05L2Jvb3QtOS5zY206CiAgMTc1MjoxMCAgOSAod2l0 aC1leGNlcHRpb24taGFuZGxlciBfIF8gIzp1bndpbmQ/IF8gIyBfKQpJbiBzcmZpL3NyZmkt MS5zY206CiAgICA2MzQ6OSAgOCAoZm9yLWVhY2ggIzxwcm9jZWR1cmUgN2ZmZmVlZjk2N2Uw IGF0IGd1aXgvYnVpbGQvZ251LWI/PiA/KQpJbiBpY2UtOS9ib290LTkuc2NtOgogIDE3NTI6 MTAgIDcgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIgXyBfICM6dW53aW5kPyBfICMgXykKSW4g Z3VpeC9idWlsZC9nbnUtYnVpbGQtc3lzdGVtLnNjbToKICAgOTI3OjIzICA2IChfKQpJbiBz cmZpL3NyZmktMS5zY206CiAgICA2MzQ6OSAgNSAoZm9yLWVhY2ggIzxwcm9jZWR1cmUgN2Zm ZmVmZmRjODQwIGF0IGd1aXgvYnVpbGQvdXRpbHM/PiA/KQpJbiBndWl4L2J1aWxkL3V0aWxz LnNjbToKICAgIDI2ODo4ICA0IChjYWxsLXdpdGgtYXNjaWktaW5wdXQtZmlsZSAiLi9nY2Mv dGVzdHN1aXRlL2dkYy50ZXN0Lz8iID8pCiAgMTA5NDozNCAgMyAoXyAjPGlucHV0OiAuL2dj Yy90ZXN0c3VpdGUvZ2RjLnRlc3QvY29tcGlsYWJsZS90ZXN0MTM1Pz4pCkluIHVua25vd24g ZmlsZToKICAgICAgICAgICAyIChyZWdleHAtZXhlYyAjPHJlZ2V4cCA3ZmZmZWVmYzFmODA+ ICIvb3B0L2RtZC8/Pz8/Py9yZD8iID8pCkluIGljZS05L2Jvb3QtOS5zY206CiAgMTY4NTox NiAgMSAocmFpc2UtZXhjZXB0aW9uIF8gIzpjb250aW51YWJsZT8gXykKICAxNjg1OjE2ICAw IChyYWlzZS1leGNlcHRpb24gXyAjOmNvbnRpbnVhYmxlPyBfKQoKaWNlLTkvYm9vdC05LnNj bToxNjg1OjE2OiBJbiBwcm9jZWR1cmUgcmFpc2UtZXhjZXB0aW9uOgpUaHJvdyB0byBrZXkg YGVuY29kaW5nLWVycm9yJyB3aXRoIGFyZ3MgYCgic2NtX3RvX3N0cmluZ24iICJjYW5ub3Qg Y29udmVydCBuYXJyb3cgc3RyaW5nIHRvIG91dHB1dCBsb2NhbGUiIDg0ICNmICNmKScuCmJ1 aWxkZXIgZm9yIGAvZ251L3N0b3JlL3ZueXN2NmhiYjh6d3l5OGphd3kxYXlkMm5mdjM4bDR5 LWdjYy1tdXNsLTEuMi4yLTEwLjMuMC5kcnYnIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxCmJ1 aWxkIG9mIC9nbnUvc3RvcmUvdm55c3Y2aGJiOHp3eXk4amF3eTFheWQybmZ2MzhsNHktZ2Nj LW11c2wtMS4yLjItMTAuMy4wLmRydiBmYWlsZWQKVmlldyBidWlsZCBsb2cgYXQgJy92YXIv bG9nL2d1aXgvZHJ2cy92bi95c3Y2aGJiOHp3eXk4amF3eTFheWQybmZ2MzhsNHktZ2NjLW11 c2wtMS4yLjItMTAuMy4wLmRydi5iejInLgpjYW5ub3QgYnVpbGQgZGVyaXZhdGlvbiBgL2du dS9zdG9yZS9ta20wdzBtanNmNTVmaDljNm5pbDJjNjkwazI1NnhpbS1nY2MtbXVzbC0xLjIu Mi10b29sY2hhaW4tMTAuMy4wLmRydic6IDEgZGVwZW5kZW5jaWVzIGNvdWxkbid0IGJlIGJ1 aWx0CmNhbm5vdCBidWlsZCBkZXJpdmF0aW9uIGAvZ251L3N0b3JlL2lzbmt2bjU2OGI1MHd2 bGJiaW1mNWI1cTZmcXo5NmRmLWhlbGxvLW11c2wtc3RhdGljLTIuMTIuZHJ2JzogMSBkZXBl bmRlbmNpZXMgY291bGRuJ3QgYmUgYnVpbHQKZ3VpeCBidWlsZDogZXJyb3I6IGJ1aWxkIG9m IGAvZ251L3N0b3JlL2lzbmt2bjU2OGI1MHd2bGJiaW1mNWI1cTZmcXo5NmRmLWhlbGxvLW11 c2wtc3RhdGljLTIuMTIuZHJ2JyBmYWlsZWQK --e1f8d3d323c24233a4179ab492ff9b5b--