From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:306:2d92::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id KPlkGqn8I2VtRwAAauVa8A:P1 (envelope-from ) for ; Mon, 09 Oct 2023 15:14:17 +0200 Received: from aspmx1.migadu.com ([2001:41d0:306:2d92::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id KPlkGqn8I2VtRwAAauVa8A (envelope-from ) for ; Mon, 09 Oct 2023 15:14:17 +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 7FE4C3E584 for ; Mon, 9 Oct 2023 15:14:16 +0200 (CEST) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=wolfsden.cz header.s=mail header.b=L7Rh05bP; dkim=pass header.d=wolfsden.cz header.s=mail header.b=moEjVGZq; dmarc=pass (policy=none) header.from=wolfsden.cz; 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" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1696857257; 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=0E8XVc2EpuY1munrSUWrKmHkL2vNEOQOnD8qPb7P6DE=; b=VDNgbPtVJHxKtfJeWSRLoGSuNGu7HZt64e0TudRNx9D1uvmmwNVRGIhdBDIybPPq+nMYEh ACeHDw73IucRAzDUbdoF+xuY9/6DbRjO8Afr9TKw4Dcb3W/dke1+7N1yBolGM0ypyL0zQr +Lu5nMvmcrmQrfaORPHtZezPnUfPi2Pbs+pm7+qsoTZ3sU/5FQnQE9FILzlnHx8RbvONgM b7qjYgjbUYmVuVv1e/VVQPi2eB8tnv2txVUKHsXM2yNPQqOufJu6tO+ofSueTaywayKVC2 EeeUZ4Mh+iBqHZuY8VaUzOnzbpJGaio6eYwKDG5b2QeVVlcMNdHPMZD4CXfO1Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=wolfsden.cz header.s=mail header.b=L7Rh05bP; dkim=pass header.d=wolfsden.cz header.s=mail header.b=moEjVGZq; dmarc=pass (policy=none) header.from=wolfsden.cz; 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" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1696857257; a=rsa-sha256; cv=none; b=BUv7CwKY8IrczrdlEifMdJoaUaciLCluPj1MzNRF/tFfgE0F8Q+2xWz8qi1nvlIM0Q9K/M 8e3eVrIRnTWzzu4xN2I30Fa+Fwx9ohd1Mjqa4YOX4Oc8l8U3xtJ4y5dm+LTDtcpDV4dL73 mHHeDvKV2DSs8bYD2cw1n/U2e8XvY6aYznr9oN+s3Z2en0oFZ20jC3NAXPFRNXUkpJzLAh jEelWQEh/WhI0mnU3pSVnBAEPxGjvD443Q4huj4kohyTPk4IP36jTlGV4HT0MniNNqjj31 DBKFTmlyMVJIAnvtSrpLRvLchfS68jdZKR574ZWu4e4jx4WavSlwC68wicMGsw== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qpq4y-0002ku-Lw; Mon, 09 Oct 2023 09:13:48 -0400 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 1qpq4x-0002js-4R for help-guix@gnu.org; Mon, 09 Oct 2023 09:13:47 -0400 Received: from wolfsden.cz ([37.205.8.62]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qpq4u-0004Tn-R3 for help-guix@gnu.org; Mon, 09 Oct 2023 09:13:46 -0400 Received: by wolfsden.cz (Postfix, from userid 104) id 3450726963D; Mon, 9 Oct 2023 13:13:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1696857220; bh=brZ6ulQ5T7GhMg6ocVt1kOX8KBuAL7d6LkOjtKmXJKw=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=L7Rh05bPZlE58jL6EngBmda42paSXVqgThoCKxeV0O6Q7Z575Sph8mb1Zmlh7LSif KUzA45v0X6PHd3t0I/RHoeUOWunuRo/3KDjl4uDuXwmsIhibYtwSUf9OPJkHEzCyeS FO4wiNZsc1CHDOoZvpnobPGuijK4RUutsgyqEgFtkSWsqAIIu00OKEsdifa8+w7CZo R4JWWzQP7UKNgcY0EG7TfpBsl9Itdv9C5RvGkEC1O2JxbU1OV4COU26fdd+sBrApBE jbqg4wjD02jjgcx5Q9Cf7nO0eP081fnZETbPbepJTXu27JV1MDueArVat7mKZ5Xbcl lBAZkxPBBLPr2b68q/GdJAyT9FJo6FG3MOBih2U6DiASiS5X35ixcvAYrqVfxUX2XW FaQKrnBovJKeFK4UJk5jBWqdimB/DIxue1KMcVuGymEOhTH5Ow+Ta3YtX6UY1nk4bL I9o4fjtJo9Hub2Annb6NFEiL8duzB85Z0OzXOks4fRBGgzPSklSwndPydAiimEVIE0 HuHrV1v8YXcgLgdOkBzqjfPlf0bLliFTJjYzwP22Hr0yZYgaWwotmS+emaMP4THD+j Y3nOe+OWuj2BYgjTCHCjtJFeICzM+uRnIiYzPpemtpH447DkaVuPjenLeW0tIlsVuV /0cIIBikkyFDAgn82r3hKuLY= Received: from localhost (unknown [193.32.127.154]) by wolfsden.cz (Postfix) with ESMTPSA id 3C79D26816F; Mon, 9 Oct 2023 13:13:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1696857218; bh=brZ6ulQ5T7GhMg6ocVt1kOX8KBuAL7d6LkOjtKmXJKw=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=moEjVGZqchIjK95KXHe8JfrPzz/0lUwPnlyFBq9QNHryjXTaHxuM5BFXwMfckb3x0 /m1sDL0zBVnyYz+LrrMuSanU6IQL5nXisa8cwDV4o3DqvSuxBZ4xQM0i5IGfGvAjry j7tqrU+qUKDOoaGO26WnT6FAjYDSVbpNkJjBn7pGiM257rEbtMk9dBm/+Cjw79jlV1 g7ahS03j/RmjkKtBMqgX6T8HoyPfcQbIYpXyiVbR/+FZLpYMBCevruLGftB8dRTfeq cUeKuS6jZJEklAskw5sIzjrlWicTa3OLxNgP6Evn8wB1d9UNc/KjqweWxKZtOwKCb2 B4+e/liSJKowid7a0Rb1i9Q2paRF3sW9ghKONsE2vs7tR76u+8MZx7XpsZ9L4Juc5m KFQ9/RYEhICTUGslD7e1ZgSFzGem8Ziz15Aj366NvczaVWIzW7olYKaqVRnddBCfRL kC7NnwQkusoD69T8l1BPQIeMS5d9Ka2nhvQBsGq0eqpftccrDNyUzwCQU4DxaeJV86 jtERZasKirZz1apQf6zsl//ZU1QBUDDoP526V/dVL9TsjygBhqMBzPgEp+w3vbnbDN 11mwoL7bbMJsudBFdQjEM2Z5itfh/RYqCXkKSuIIMbrmMu+9ocgJs9qTXpgybvJi3Q 5ofAly7ILVhgdsGQnoiKIvAs= Received: from localhost (localhost [local]) by localhost (OpenSMTPD) with ESMTPA id 7f542bf8; Mon, 9 Oct 2023 13:13:36 +0000 (UTC) Date: Mon, 9 Oct 2023 15:13:36 +0200 From: wolf To: Lasse =?iso-8859-1?Q?Schl=F6r?= Cc: help-guix@gnu.org Subject: Re: Replicable environment with Python packages missing from Guix Message-ID: Mail-Followup-To: Lasse =?iso-8859-1?Q?Schl=F6r?= , help-guix@gnu.org References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="HXhlkngFf/mTFvdq" Content-Disposition: inline In-Reply-To: Received-SPF: none client-ip=37.205.8.62; envelope-from=ws@wolfsnet.cz; helo=wolfsden.cz X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_PASS=-0.001, SPF_NONE=0.001, UNPARSEABLE_RELAY=0.001 autolearn=no 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: -8.99 X-Spam-Score: -8.99 X-Migadu-Queue-Id: 7FE4C3E584 X-Migadu-Scanner: mx2.migadu.com X-TUID: kiRtI80X+qte --HXhlkngFf/mTFvdq Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2023-10-05 15:00:13 +0200, Lasse Schl=C3=B6r wrote: > Hello, >=20 > I am in the process of setting up a replicable environment (OS & software= versions) for a research project using Guix. This includes an installation= of the Python package PsychoPy. >=20 > As far as I understand, the ideal way to do this is to use a `manifest.sc= m` file that includes a `python-psychopy` package together with a `channels= =2Escm` to pin/freeze the exact software versions. >=20 > Currently, no PsychoPy package exists for Guix, and so I attempted to wri= te my own Guix packages for PsychoPy and those of its dependencies that don= 't exist as Guix packages either. >=20 > However, while I was able to successfully wrap a few Python packages as G= uix packages, the number of build and test dependencies turns out to be qui= te large, and I am not sure I have the knowledge and time to write Guix pac= kages for all of them. You could try to use output of `guix import'[0] as a base. 0: https://guix.gnu.org/manual/en/manual/devel/en/html_node/Invoking-guix-i= mport.html >=20 > As a workaround, I have instead written a manifest file that provides a f= ixed version of Python, Pip, and some of PsychoPy's dependencies. I can use= this to start a container with `guix time-machine [=E2=80=A6] -- shell --c= ontainer --share=3Dpath/to/persistent/.local=3D/home/username/.local [=E2= =80=A6]`, which has a persistent `~/.local` directory, into which the corre= ct version of PsychoPy can be installed via `python3 -m pip install -r path= /to/requirements.txt`. Making `~/.local` persistent allows to start new ins= tances of this container without having to re-install PsychoPy every time. >=20 > Of course, this doesn't feel as elegant as the purely functional Guix way= of doing things. I am sure others before me have had similar situations. T= hus, my question is: Is there a known/preferred/elegant way of creating rep= licable Guix environments with fixed versions of Python packages when these= packages do not exist as Guix packages? Maybe someone will correct me and provide a better way, but I am afraid the correct approach here is to indeed create the packages in the manifest file. Hm, maybe there is an ugly solution, which however might work. You could d= o the pip install and then archive and package the resulting directory. That wil= l be messy, but it might work. However, I would recommend just trying to make the packages, possibly using= guix import. >=20 > I'd appreciate any insight on this. >=20 > Thanks and best regards, > Lasse Schl=C3=B6r >=20 > W. --=20 There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors. --HXhlkngFf/mTFvdq Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmUj/IAACgkQL7/ufbZ/ walWwRAAl0yGpFsKO7P6m1qlKUnwCvYvA5wSzuKYBXDm3ZBqTNeaSKAAa03c0frU LX/fjiFHMnd79DLOT92EjvlM0Tfw3W/U6ZlBd1v2+b2nFRwwh0nocEwRfLYb95FV SShOJ0QnuOOUiHLQ1iLhV1J+TFDz73SiOURAna89R6IE7jGeTtn+/4b5H+4vpMl3 aL8UY+AjV51pOa6ZTf3kqw7rLjvluv5O+5lKLM4NZ14HjRt5koDARiCIfZCa4Q2x qrOLHPCmGf7ozlzhHZwFhwuN0+ABUq/3spSmjwH05O0JNcT6RFnTkBqhbC3ufm1N efFgyj+CTNgHzUVlIktuK4hwLvRcCOCHVy1fVQlPFY13s8tKwGT1vY0pmI2wdK/t oZGoNxRenMSeiqGuf9trCiAbyzb9BVBed4OECyb2dUSyNoPALMyPpB/iDq79R7Nb /9XYB7nG5mBWzpl5yWBFqMv9lIsdZtMNB5QapkcvaQg+PJdI6IJIFuWzRdi7EN/P WpHQzcFJjpFyxz0TY519yuds9MUcZVpxvqGCVGowFAoM2KYJ9iEVQC4I9rWsOPdn zDYGDDXgmzWvLZiWYsY4se+hCQv8xdDE3lYWNdC6ym4dnI2EIZtEbMzaPnGcEXcf 2ndVexcgx3blszDEulghQ8WpFTLbEsAnlXbHkJzZmOLSFdFmT1s= =1RB2 -----END PGP SIGNATURE----- --HXhlkngFf/mTFvdq--