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 sLRaLLgsoWAHTQEAgWs5BA (envelope-from ) for ; Sun, 16 May 2021 16:31:20 +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 8EXjJ7gsoWC+SwAAbx9fmQ (envelope-from ) for ; Sun, 16 May 2021 14:31:20 +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 54D8514FDC for ; Sun, 16 May 2021 16:31:20 +0200 (CEST) Received: from localhost ([::1]:46034 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liHna-0005YZ-Vw for larch@yhetil.org; Sun, 16 May 2021 10:31:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38422) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1liHnM-0005Y8-ED for guix-patches@gnu.org; Sun, 16 May 2021 10:31:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:39751) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1liHnJ-0003iP-LT for guix-patches@gnu.org; Sun, 16 May 2021 10:31:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1liHnJ-0005Bu-I8 for guix-patches@gnu.org; Sun, 16 May 2021 10:31:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#48463] gnu: Add j. Resent-From: Leo Prikler Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 16 May 2021 14:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48463 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: elaexuotee@wilsonb.com, 48463@debbugs.gnu.org Received: via spool by 48463-submit@debbugs.gnu.org id=B48463.162117545619943 (code B ref 48463); Sun, 16 May 2021 14:31:01 +0000 Received: (at 48463) by debbugs.gnu.org; 16 May 2021 14:30:56 +0000 Received: from localhost ([127.0.0.1]:51297 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1liHnE-0005Bb-4I for submit@debbugs.gnu.org; Sun, 16 May 2021 10:30:56 -0400 Received: from mailrelay.tugraz.at ([129.27.2.202]:50715) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1liHnB-0005BR-BE for 48463@debbugs.gnu.org; Sun, 16 May 2021 10:30:54 -0400 Received: from nijino.local (91-114-247-246.adsl.highway.telekom.at [91.114.247.246]) by mailrelay.tugraz.at (Postfix) with ESMTPSA id 4Fjl6x5GDdz3wWP; Sun, 16 May 2021 16:30:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tugraz.at; s=mailrelay; t=1621175449; bh=pIgNQAAspZpyII6TZZzTCV8IKFtMhI4+SeW9AQz2ufk=; h=Subject:From:To:Date:In-Reply-To:References; b=KYW1C4IrChWHpjdC2YBwAqIODhhsfdoFhrmFWFrlVkpETpkGmFGdmlC9dLvOA6UQi AB+7aOwEWG2giZNsxXdo7Aauynx8+dVA1KFt2fcXR5WuSlZydhiUxUJZ7bniqAgUe4 ocA37aomvQeeiDyQa653wJrDMAblCfXcsR6eKPyw= Message-ID: <8b853d0585505ce29c9afc638b644fa34805e6c0.camel@student.tugraz.at> From: Leo Prikler Date: Sun, 16 May 2021 16:30:48 +0200 In-Reply-To: <3LOAUDT0FLL4U.2SOD925YP915T@wilsonb.com> References: <3LOAUDT0FLL4U.2SOD925YP915T@wilsonb.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-TUG-Backscatter-control: bt4lQm5Tva3SBgCuw0EnZw X-Spam-Scanner: SpamAssassin 3.003001 X-Spam-Score-relay: -1.9 X-Scanned-By: MIMEDefang 2.74 on 129.27.10.117 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1621175480; 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: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=pIgNQAAspZpyII6TZZzTCV8IKFtMhI4+SeW9AQz2ufk=; b=KdnFFrByFZSW4i9TmGI0KKUM4ZMWWJLxIOkFJNjCqRb8vIZ8+p52PAepSwED2mN5OrUVSU +C0d2ODxKZS5pqjadEYA1sPHuj+63W8qYCJ49QuMmn6UF+uHDOaU3fZXHe0AzkZPK8aiYS ee+68/ALGGeUbVjMEAlqObYYeHGZSUgEj0iXV276xM42jyFicamIbPwnV9xkCULrE0ihWI mQeoxSJn01xDEdGxSAqMYJ1+AXIaJprUGuwDE/YxDid/fxRs5seBjLPbHxmkXmzLc/DW26 u/TB5esj4qEotNqsQK7RRVl3i0yX/gTuqnrU2KQcYKarS23KWc2C9qfzBTaJjg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1621175480; a=rsa-sha256; cv=none; b=G6haM/ACjXoLLY8m84pLePHr/p66yQTK1z7+Awv4EFPgSzIam9ogEhX54KcsGuCH6fhQWA upeY/6ZjEJ004KTrMkT/HYb6hWcKh3C/MJ0cjzXL6cH3YO0L0KywXa5yBcGAr/vYv0Uf0u H03fuYwCc863TaG/FUTd2t/4tUvqisQpi+OB1ZBBipSEg0HOnTznUmwopXiu/TQt3CAvPI 8q2DZChanmeN1k9UosWGNLTRsh8cINTdRjAA7PGbL5hrNTHOIt05nSNOqdIDc096Z2Vqz0 EtGZOFF9dbKTaVKttSjIDLOopCI4xg5lQsmIRPt2fWqzwzC5FjfezIwnJ4cArQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tugraz.at header.s=mailrelay header.b=KYW1C4Ir; dmarc=fail reason="SPF not aligned (relaxed)" header.from=student.tugraz.at (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: 0.15 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tugraz.at header.s=mailrelay header.b=KYW1C4Ir; dmarc=fail reason="SPF not aligned (relaxed)" header.from=student.tugraz.at (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 54D8514FDC X-Spam-Score: 0.15 X-Migadu-Scanner: scn0.migadu.com X-TUID: iqRAYMvqyFHM Hi elaexuotee, Am Sonntag, den 16.05.2021, 19:54 +0900 schrieb elaexuotee@wilsonb.com: > Hey Guix, > > This packages up the J programming lanuage. The build scripts that > upstream provides are pretty hostile to package maintainers, so we > have to jump through quite a few hoops to get the build working. Yup, that much is visible from the package description. > I have had this in my personal, private channel for a while, tweaking > it over time, so I believe it works fairly well in practice. Here are > the high-level design decisions I have made: > > 1) Provide multiple J versions; > > It is extremely common for J users to have multiple versions > installed in parallel since there are often major, breaking changes > between (non-patch-level) releases. > > In addition, a very large fraction of J users keep the beta installed > as well, so I have elected to provide this too. That should be fine, we provide multiple versions for other packages where applicable as well. Do note, that we should try to keep the number limited, though. You may perhaps want to export make-jlib, so that the user can build their own. > 2) Bundle together all variants of the interpreter along with a > wrapper script that selects the most featureful one at runtime; > > There are 3 versions of the interpreter, supporting different CPU > feature-sets: vanilla, AVX, AVX2. This package elects to build all > these variants and provides a wrapper script that launches the "most > AVX-y" version possible at runtime. > > Essentially, this is trying to make up for upstream's lack of a fat > binary. Are fat binaries the accepted HPC way? I'm not up-to-date to this. > 3) Try to mirror the FHS standard for installation locations; > > For the most part, J uses idiosyncratic defaults for where it looks > for library files and the like. This package elects to configure > things so files sit in more standard locations---e.g. runtime scripts > sit under .../share/j; configuration files sit under .../etc/j; etc. > > 4) Point the J package manager to $HOME/.j/. > > J maintains its own mini package repository for "addons", which are > simply officially-supported J scripts. This package sets things up so > that these packages get installed to .j//addons. In > addition, other related directories are gathered under .j/. Those should be fine. > Items on the TODO list: > > 1) Write an importer and create packages for J addons; > > This is currently in progress. > > 2) Create a something like a jsoftware-union procedure to bundle up J > with user-selectable addons; > > This is necessary since the interpreter looks for addons at a > specified path. We probably want to mimick something like texlive and > provide both an "all batteries included" package along with one where > users can select which addons they want. Both sound like good ideas, although I'm a little less sure about the texlive one. Would a meta-package like gnome also be acceptable? > 3) Support more older versions of J. > > J is open source starting with j801, so it'd be nice to have packages > for the entire j80x series too. Unfortunately, those use an entirely > different set of build scripts from the current j90x series, so it > will require munging-work similar to what we already have. As above, I'd prefer if it was one procedure and one package pointing to the latest j80x, assuming all of our added patches can also be applied to earlier versions. > +(define-record-type* > + jlib-build-configuration make-jlib-build-configuration > + jlib-build-configuration? > + (builder jlib-build-configuration-builder (default > "guix.gnu.org")) > + (version jlib-build-configuration-version (default #f)) > + (revision jlib-build-configuration-revision (default #f)) > + (hash jlib-build-configuration-hash (default #f)) > + (type jlib-build-configuration-type (default 'release)) > + (patches jlib-build-configuration-patches (default '())) > + (extra-inputs jlib-build-configuration-extra-inputs (default '())) > + (extra-envars jlib-build-configuration-extra-envars (default > '()))) > + > +(define make-jlib > + (match-lambda > + (($ > + builder jversion revision hash type patches extra-inputs > extra-envars) Please try to use keyword arguments. > + (properties `((jversion . ,jversion) > + (jrevision . ,revision) > + (jtype . ,type))) Are those used anywhere? Can jversion and jrevision not be parsed from (package-version jlib)? Regards, Leo