From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id wCV/HTiPGGRNzQAASxT56A (envelope-from ) for ; Mon, 20 Mar 2023 17:52:08 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id OOiFHTiPGGT0GwEAauVa8A (envelope-from ) for ; Mon, 20 Mar 2023 17:52:08 +0100 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 24C0438B41 for ; Mon, 20 Mar 2023 17:52:08 +0100 (CET) Authentication-Results: aspmx1.migadu.com; dkim=none; 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" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1679331128; h=from:from:sender:sender:reply-to: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; bh=/WL/fuIHM+SuZDvEkMCQKUWAdlkTfk+5lILyBNBv/EY=; b=AV7bK9rCDDqbN8SsnNDLgeO2J75UDl/9AcpC4hDGWe4hElnD3PFcPXEpb30fPzxeTD8trg MhdX0OzHIJ+dKQY+ZLHWgV2nNsZDaWCh/gNaDJSRz1WyubGFvqMwHmdiq3SCUWJip3CAp2 6BolMq3GWCV7VTdnB5M/7HzmXmYM9tQh5ci4Upc+eoDH5RF0PcZN0YPGPuL+t4t8Dj3jbx RvMN3Iine04wiYFB36iD0JTkHH8BhT71FIMCDCRyX+kEvTpDabtlzO80FLxte35pZMpFgV 43kT4j3hR66on4/w/uJ/OfWw8dJGheYbDL5o/8BGAl9SNJgqVcGi0oiCn43rXA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; 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" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1679331128; a=rsa-sha256; cv=none; b=nZuKgyxGN8HP6Z0qEsoJtA2sH5AaUC15Os4fIj82XWpLVFHW9VxmuVEYK650ffTxbIQM/n 65nKwdBwhOtAFqjQG/JcehpCekOtHq2oLcke3fvtHdyhjMLYlS3ONd0Vvp3JUny3zn/G6G 3Fb67D37REpquNc+x+rvbEMce9RNRT3JNgUKWjI+jG0FYcdo1aR5TuGA4+ayaCCPgKZbRS 1ybH9RCjyhCrW1Tvwg9QMxogCEl4dNaQ9/ylJkUDPNNAQ+K9vEN5msa0u9LWrggTdsnCyR 5R7V10KsNA+KzOQSbKE1UYGwaZM6Zg1uDEJeJnwCsi/lJiOEHn+hzY/r2Lbr1w== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1peIjL-0001rJ-0U; Mon, 20 Mar 2023 12:51:31 -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 1peIjH-0001r7-SW for help-guix@gnu.org; Mon, 20 Mar 2023 12:51:28 -0400 Received: from smtp-out-2.univ-rouen.fr ([193.52.152.97] helo=mailhoc.univ-rouen.fr) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1peIjB-00007C-FY for help-guix@gnu.org; Mon, 20 Mar 2023 12:51:27 -0400 Received: from [10.196.65.97] (irihs-22-b69e-1657.univ-rouen.fr [10.196.65.97]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mailhoc.univ-rouen.fr (Postfix) with ESMTPSA id 5926D1C58; Mon, 20 Mar 2023 17:51:11 +0100 (CET) Message-ID: <5d4588a9-f08f-5386-75a6-095834ca959d@univ-rouen.fr> Date: Mon, 20 Mar 2023 17:51:11 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: Help packaging R Quarto Cli Content-Language: en-US From: =?UTF-8?Q?Rey-Coyrehourcq_S=c3=a9bastien?= To: Wojtek Kosior Cc: help-guix References: <87ilk9xwtq.fsf@univ-rouen.fr> <2630-6356b680-27b-1b6de000@83918831> <87359h2h4f.fsf@univ-rouen.fr> <20221215202931.15a9f0ee.koszko@koszko.org> <87v8m31k6b.fsf@univ-rouen.fr> In-Reply-To: <87v8m31k6b.fsf@univ-rouen.fr> X-Spamd-Bar: / X-Rspamd-Server: mailhoc X-Rspamd-Queue-Id: 5926D1C58 X-Spamd-Result: default: False [0.90 / 15.00]; ARC_NA(0.00)[]; HAS_REPLYTO(0.00)[sebastien.rey-coyrehourcq@univ-rouen.fr]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; REPLYTO_ADDR_EQ_FROM(0.00)[]; NEURAL_SPAM(0.00)[0.961,0]; URI_COUNT_ODD(1.00)[107]; TO_DN_ALL(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; RCVD_COUNT_ZERO(0.00)[0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; MID_RHS_MATCH_FROM(0.00)[] Received-SPF: pass client-ip=193.52.152.97; envelope-from=sebastien.rey-coyrehourcq@univ-rouen.fr; helo=mailhoc.univ-rouen.fr 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, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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: , X-Migadu-Queue-Id: 24C0438B41 X-Spam-Score: -3.86 X-Migadu-Spam-Score: -3.86 X-Migadu-Scanner: scn0.migadu.com Reply-To: =?UTF-8?Q?S=c3=a9bastien_Rey-Coyrehourcq?= Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-TUID: H8BErGDmuuUO Hi, Some news about *Quarto* Packaging : # Deno [Done] - the first big/huge dependency of Quarto is Deno, packaged in december : Deno (https://deno.land/) # Deno-Dom [Done] The problem of deno_dom plugin of deno (https://github.com/b-fuze/deno-dom), provided as a rust virtual manifest is also solved, i only need to specify this to .scm :  -  #skip-build? to false,  -  #:cargo-test-flag to --release  - #:install-source? to false  - replace `install phase of rust by a new that only copy libplugin.so file into /bin # Sass css preprocessor [Done] Quarto need also the sass executable to compile .scss into .css. Sass is written in Dart, but by change there is a js executable available in NPM Registry. I set a module to download sass (and 3 other dependencies) from npm registry, and by deleting configure and install phase, everything goes well. I create a new channel with this dependencies. # ESBuild [Done] EsBuild is available in Guix by luck. # Quarto Quarto is available to compile on github, defined as a dev version. ## Configure.sh The entry for this dev version is an horrible (from the guix point of view) ./configure.sh (https://github.com/quarto-dev/quarto-cli/blob/main/configure.sh) , that download binary of deno, pandoc, and other things. I first patch this configure and set correctly all the environnement variable correctly (Deno, Pandoc, ESbuild, Sass, Node, etc.). And now i thing this is probably the last pitfall ? before the end of this challenge... ## Packaging Quarto After running ./configure.sh i get the next step from conda recipe (https://github.com/quarto-dev/quarto-cli/tree/main/package/conda-recipe/build.sh). Conda recipe generate a standalone bundle (a ./quarto (sh) and a ./quarto.js) by using this shell script : https://github.com/quarto-dev/quarto-cli/blob/main/package/src/quarto-bld As you could see in the code, quarto-bld run Deno with some options, one refer to some .json, that contain lot of thing to download into /vendors. But it seems this part is not activated if the QUARTO_VENDOR_BINARIES env is set to false. (A) / quarto-bld update-html-dependencies (B) / quarto-bld prepare-dist The A step call this thing (https://github.com/quarto-dev/quarto-cli/blob/main/package/src/common/update-html-dependencies.ts) that download and patch some file into the project. So, A is a problem, and i need to patch this typescript file to give directly the file without downloading it from internet. *How could i create an archive that contain already these different files to my quarto build ? * *Do you think building a git repo with all of them is a good idea ?* Even if these files are linked to multiple sources : https://unpkg.com/; https://github.com/ ; https://github.com/mozilla/pdf.js/releases/download/ ; https://github.com/twbs/icons/releases/download/ If i download these file by running manually (A) in /tmp after a fail build, the (B) command build a working "./quarto --help" and "./quarto check" command, so end is near \o/ ## Running Quarto entry is a shell script with lot of environments variables, so we probably need to wrap it to run correctly. Thanks again, Best regards. On 22/12/2022 16:16, Sébastien Rey-Coyrehourcq wrote: > Hi, > > Wojtek Kosior writes: > > >>>>> I found only one crate that use this method `git-fetch’ in the list : >>>>> >>>> There are plenty in other package definition files, e.g. in >>>> gnu/packages/python-xyz.scm. It seems Rust is just that special case >>>> where git checkout is rarely needed. >>> Yes, i’m not sure this case (source only without crate) is well managed by the actual cargo-build-system ? >>> Anyway, discussions about “Rust Packaging” on IRC mention the building of a new system, something cargo-less. >> What do you mean by “source only without crate”? From my understanding, >> even when we use `(method uri-fetch)` with `(crate-uri)`, what gets >> downloaded is still just the source code and not a prebuilt crate. The >> crates repo serves both the crates and their corresponding source >> tarballs, right? >> >> Even though there is a difference from the `(method git-fetch)` case — >> the output is a tarball instead of a directory — it’s still just source >> code and the untaring of it is — I believe — done automatically. >> >> Or it is something else you meant? >> > Yes, you’re right. > >>>> I wanted to instead suggest not creating a separate Guix package >>>> nor derivation for test_util. That’s what I meant when I wrote “it >>>> seems awkward to be required to provide the test_util package as a >>>> separate crate”. Sorry if I accidently mislead you with this. >>> Yes you’re right, this is probably awkard to maintain. >>> >>> Hum, i will retry. What’s motivating me to try this packaging way is >>> the duration of compilation… This fail only occur at the test phase, >>> so after 2 hours of compilation… >>> >>> When i use the “–keep-failed” option, and run a new build after fail >>> from the /tmp/guix-deno-xxx/ folder, everything finish well … >>> >>> So this is more a problem at frontier between this nested package and >>> “cargo-build-system” that don’t run some nested crate build. >> Did you *just* run a new build inside `/tmp/guix-deno-xxx/`? Or did you >> as well run a `cargo test` or similar command after it? Because I >> understand it is `cargo test` invoked by cargo-build-system that is >> failing[1]. >> >>> I will revert my code to manage the deno compilation without test phase. >>> My objective is quarto, and i don’t know much about the next obstacle :) >>> I see later for this nested crate. >> Yup, it’s a sane approach. >> > No this is done i started Quarto packaging, i encouter some new difficulties … more in the bottom of mail … > >>>>> How do you reference/call/reuse a package that already exist in your /gnu/store in a .scm file ? >>>> You don’t :) >>>> >>>> That’s the point of a functional package manager - there’s never need >>>> to *explicitly* reference files in the store. They are always referenced >>>> indirectly through packages, derivations, plain-file’s, gexps, etc. And >>>> they get created or reused automatically. >>>> >>> So you directly say into the scm, passing this unique path `/gnu/store/xxxxx-deno-util-1-0-1’ to input function ?? >> No no no. >> >> Let’s recall what you wanted to do in the first place >> >>> Another way is to first compile deno-test-util.scm, that install the >>> corresponding crate into /gnu/store, and after that i give this local >>> path to the inputs of my main rust-deno.scm . But i don’t know how to >>> give this path to my cargo build system input . How do you >>> reference/call/reuse a package that already exist in your /gnu/store >>> in a .scm file ? >> I’d say we already reached the decision that we don’t want to make >> rust-deno-test-util a distinct guix package. But for the sake of >> learning, let’s imagine that we do and that we want to reference its >> crate manually in another package recipe. >> >> Recall that you had the crate file at >> `/gnu/store/ma04jfp0f33kf38cdn66qai60nhqxx7d-rust-deno-test-util-0.1.0/share/cargo/registry/test_util-0.1.0.crate`. >> In the rust-deno recipe you were importing the record describing that >> crate’s package. It was being imported under the name >> `rust-deno-test-util-0.1.0`. >> >> So the `(arguments)` field of the recipe could contain sth like >> >> #:phases >> #~(modify-phases %standard-phases >> (add-after ’build ’do-sth-with-test-util-crate >> (lambda _ >> (do-something-with >> #$(file-append rust-deno-test-util-0.1.0 >> "/share/cargo/registry/test_util-0.1.0.crate"))))) >> >> For simplicity I omitted other extra phases that you might put there. >> Notice that the phases are now computed using `#~` which is syntactic >> sugar for `(gexp)`. Also note that the crate file path gets introduced >> with `#$(file-append …)` where `#$` is syntactic sugar for `ungexp`. >> `(file-append)` itself as well as `#~` and `#$` become available when >> the `(guix gexp)` module is imported. >> >> This is a relatively low-level, gexp-based approach to using other >> packages during the build (and only the build). It probably looks like >> black magic now. To better understand it, please consult your copy of >> the “Guix black magic” handbook (aka the “G-Expressions” chapter of the >> GNU Guix manual[2]). > Yes, nice guix people give me some hint about that on Irc. I read the help page, i understand some of the examples, > but you well resumed my actual comprehension of the build process. > > I miss a global view on the build process, and “why this is interesting/needed to use gexp at this point”. It seems this is a fact, so i try to use it without understanding all like often when you learn something :) > >> If rust-deno-test-util was instead meant to be one of the `(inputs)` >> (i.e. if it was one of the runtime deps), we could instead use the >> following common idiom. >> >> #:phases >> `(modify-phases %standard-phases >> (add-after ’build ’do-sth-with-test-util-crate >> (lambda* (#:key inputs #:allow-other-keys) >> (let ((test-util (assoc-ref inputs “rust-deno-test-util”))) >> (do-something-with >> (string-append test-util >> “/share/cargo/registry/test_util-0.1.0.crate”)))))) >> >> Here I assumed that “rust-deno-test-util” is the name of the >> rust-deno-test-util Guix package and that this name is being >> automatically used as its key in the inputs association list. It is >> possible to explicitly assign different, non-default string keys to the >> packages listed among `(inputs)`. It is, however, not highly relevant >> now — let’s ignore this possibility. >> >> I already showed 2 ways of accessing a file produced by some >> prerequisite package/derivation. In both cases Guix shall automatically >> recognize that rust-deno-test-util is a prerequisite and build it if it >> is not yet present in `/gnu/store`. None of this approaches should be >> needed, however. That’s because in the case of cargo-build-system the standard >> way of providing crates is by listing the required crate packages among >> `#:cargo-inputs` or `#:cargo-development-inputs`. Just as you were >> doing. cargo-build-system then by itself takes care of collecting the >> crates inside the listed packages and instructing the `cargo` command >> to find those crates. >> > Thanks for theses explanation, i better understand how to access data from other derivation, that could help me for the next step. > >> I don’t know what was still causing the error *after* you placed >> rust-deno-test-util among `#:cargo-development-inputs`. I guess the >> reason was specific to Deno build system and not to Guix nor to >> cargo-build-system. >> > About my progress on Quarto packaging, well, there are some interesting difficulties :) > > • The Quarto main script () try to download Deno binary, now that Deno is packaged, it’s easy to remove. I set `$QUARTO_VENDOR_BINARIES' to false, and set `$DENO_BIN' and `$QUARTO_DENO' env to the `/gnu/store/deno/bin'. > > • Next step try to download `deno_std' : . Quarto use `deno cache' capacity to propose some offline scripting capacity to user of Quarto. The command `deno cache' is run here : > > The list of packaged downloaded by deno cache (`deno_std.ts'), with a corresponding lock file (`deno_std.lock'), is described here : > > Because this is not possible to download thing during guix build packaging (that create a deno `.cache' folder into `/homeless-shelter' …. ), i search how nixer do that . The good way to do that is to create something that reproduce the `deno cache' structure : > > By doing that, i could create a derivation that invoke a `deno cache' command to build a read-only `.cache' content described by `deno_std.ts' and give this folder (using `$DENO_DIR' variable ? ) to deno embedded / used by Quarto ? I also see there is possibility to set an `--importmap' command that use a command standard that is already used by quarto here () and point to folder uri and not to http: uri () > > I have no idea why there is two different way to manage these import, by caching (`deno cache') or directly by importing into `./vendor/' using `--importmap' folder … I’m not sure but there is the possibility to use `deno cache' + `--importmap' to solve this problem. > > Anyway…. because i think this is not an *urgent feature* needed by common user of Quarto (), i simply comment this line 79 to remove caching, in main configure script of Quarto. > > • Next step is setting the `$DENO_DOM' variable needed by quarto command … > > The repository is here,, this is not a published crate … and a virtual-manifest … I discover new thing each day :( > > The build phase run well but now i have problem with package and install phase, because this is a `virtual-manifest' > Packaging failed, this is not a problem, i removed it (using `install-source?' flag) because i only need the `/bin' generated by build phase. > > The actual trace of failed : > > ┌──── > │ Compiling core v0.1.0 (/tmp/guix-build-rust-deno-test-util-0.1.17-alpha.drv-0/source/html-parser/core) > │ Compiling plugin v0.1.0 (/tmp/guix-build-rust-deno-test-util-0.1.17-alpha.drv-0/source/html-parser/plugin) > │ Finished release [optimized] target(s) in 24.74s > │ phase `build' succeeded after 24.8 seconds > │ starting phase `package' > │ Not installing cargo sources, skipping `cargo package`. > │ phase `package' succeeded after 0.0 seconds > │ starting phase `check' > │ Compiling core v0.1.0 (/tmp/guix-build-rust-deno-test-util-0.1.17-alpha.drv-0/source/html-parser/core) > │ Compiling plugin v0.1.0 (/tmp/guix-build-rust-deno-test-util-0.1.17-alpha.drv-0/source/html-parser/plugin) > │ Finished release [optimized] target(s) in 0.69s > │ Running unittests (target/release/deps/core-9e5a32d2886ce63b) > │ > │ running 0 tests > │ > │ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s > │ > │ Running unittests (target/release/deps/plugin-098ef3d813af0253) > │ > │ running 0 tests > │ > │ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s > │ > │ Doc-tests core > │ > │ running 0 tests > │ > │ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s > │ > │ phase `check' succeeded after 0.8 seconds > │ starting phase `install' > │ error: manifest path `/tmp/guix-build-rust-deno-test-util-0.1.17-alpha.drv-0/source/Cargo.toml` is a virtual manifest, but this command requires running against an actual package in this workspace > │ error: in phase 'install': uncaught exception: > │ json-error # > │ phase `install' failed after 0.0 seconds > │ Backtrace: > │ 12 (primitive-load "/gnu/store/2f9fp1iyqdxsybnln8lb5j2q1jr…") > │ In guix/build/gnu-build-system.scm: > │ 906:2 11 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #) > │ In ice-9/boot-9.scm: > │ 1752:10 10 (with-exception-handler _ _ #:unwind? _ # _) > │ In srfi/srfi-1.scm: > │ 634:9 9 (for-each # …) > │ In ice-9/boot-9.scm: > │ 1752:10 8 (with-exception-handler _ _ #:unwind? _ # _) > │ In guix/build/gnu-build-system.scm: > │ 927:23 7 (_) > │ In guix/build/cargo-build-system.scm: > │ 242:13 6 (install #:inputs _ #:outputs _ #:skip-build? _ # _ # _) > │ 58:19 5 (has-executable-target?) > │ 48:15 4 (manifest-targets) > │ In guix/build/json.scm: > │ 308:16 3 (read-json #) > │ 32:2 2 (json-error #) > │ In ice-9/boot-9.scm: > │ 1685:16 1 (raise-exception _ #:continuable? _) > │ 1685:16 0 (raise-exception _ #:continuable? _) > │ > │ ice-9/boot-9.scm:1685:16: In procedure raise-exception: > │ Throw to key `json-error' with args `(#)'. > │ builder for `/gnu/store/fsyrsm3wx60zjkcghx8inmfw3y6y8am8-rust-deno-test-util-0.1.17-alpha.drv' failed with exit code 1 > │ la compilation de /gnu/store/fsyrsm3wx60zjkcghx8inmfw3y6y8am8-rust-deno-test-util-0.1.17-alpha.drv a échoué > │ Vous trouverez le journal de compilation dans « /var/log/guix/drvs/fs/yrsm3wx60zjkcghx8inmfw3y6y8am8-rust-deno-test-util-0.1.17-alpha.drv.gz ». > │ guix build: erreur : build of `/gnu/store/fsyrsm3wx60zjkcghx8inmfw3y6y8am8-rust-deno-test-util-0.1.17-alpha.drv' failed > │ > └──── > > Looking to crate-io.scm and by doing some googling, i didn’t find an easy way to manage the `install' phase when we encouter a `virtual-manifest' … One way to do that is replacing `install' phases defined by `cargo-build-system' () > > But this is an hard job for beginner like me… Perhaps there is another way by modifying this wtf `virtual manifest' directly. > > ┌──── > │ (build-system cargo-build-system) > │ (arguments > │ `(#:skip-build? #f > │ #:install-source? #f ; virtual manifest > │ ; #:phases > │ ; (modify-phases %standard-phases > │ ; (replace 'install > │ ; (lambda _ > │ ; #t))) > │ #:cargo-inputs > │ (("rust-html5ever" ,rust-html5ever-0.25.1) ;;0.25.1 > │ ("rust-markup5ever" ,rust-markup5ever-0.10.0) ;0.10.0 > │ ("rust-serde_json", rust-serde-json-1) ;1.0 > │ ("rust-serde", rust-serde-1)) ; 1.0.111 > │ )) > └──── > > Well, long road never ends… > > And ! an ! happy ! Christmas Hollidays ! for all of guixers !! > >>> Thanks for your support and your kind word, that help me to continue :) >> Glad I could help even with my small Guix experience ^^ >> >>> Hi, >>> >>> I’m happy to say, Deno is packaged (except the test, see the last conversion on this thread) compile and run on my machine :D >>> >>> ┌──── >>> │ /-> /gnu/store/xvjymz07g2dy112cz4x6pz7v4q8p7c6a-rust-deno-1.25.2/bin/deno –version >>> │ deno 1.25.2 (release, x86_64-unknown-linux-gnu) >>> │ v8 10.6.194.5 >>> │ typescript 4.7.4 >>> │ >>> │ /-> /gnu/store/xvjymz07g2dy112cz4x6pz7v4q8p7c6a-rust-deno-1.25.2/bin/deno run hello-world.js >>> │ Hello John >>> │ Hello Sarah >>> │ Hello Kai >>> │ >>> └──── >> Great! 👏 >> >>> Next steps : >>> • Packaging Quarto (that need Deno). >>> • Merge and Cleaning mess with dependency. >> Just a question, out of curiosity - are there any serious freedom >> issues? I saw you are using some custom Guix channels in addition to >> your own one and that made me wonder >> >> Wojtek >> >> >> [1] >> [2] >> >> – (sig_start) >> website: >> PGP: >> fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A >> >> Meet Kraków saints! #16: saint Jan z Dukli >> Poznaj świętych krakowskich! #16: święty Jan z Dukli >> >> – (sig_end) >> >> >> On Thu, 15 Dec 2022 09:32:48 +0100 >> Sébastien Rey-Coyrehourcq wrote: >> >>> Hi, >>> >>> I’m happy to say, Deno is packaged (except the test, see the last conversion on this thread) compile and run on my machine :D >>> >>> ┌──── >>> │ /-> /gnu/store/xvjymz07g2dy112cz4x6pz7v4q8p7c6a-rust-deno-1.25.2/bin/deno –version >>> │ deno 1.25.2 (release, x86_64-unknown-linux-gnu) >>> │ v8 10.6.194.5 >>> │ typescript 4.7.4 >>> │ >>> │ /-> /gnu/store/xvjymz07g2dy112cz4x6pz7v4q8p7c6a-rust-deno-1.25.2/bin/deno run hello-world.js >>> │ Hello John >>> │ Hello Sarah >>> │ Hello Kai >>> │ >>> └──── >>> >>> Next steps : >>> • Packaging Quarto (that need Deno). >>> • Merge and Cleaning mess with dependency. >>> >>> If you want to try : >>> >>> >>> Best regards, >>> SR >>> >>> “Sebastien Rey-Coyrehourcq” writes: >>> >>>> Le Lundi, Octobre 24, 2022 13:43 CEST, Sébastien Rey-Coyrehourcq a écrit: >>>> >>>>> Hi, >>>>> >>>>> I’m trying to package Quarto Cli ( >>>>> ), used in combination with >>>>> Pandoc to publish -reproducible- scientific document : website, blog, etc. >>>>> >>>>> I first think this is a classic gnu build : ./configure && make && make >>>>> install BUT, there is a problem because the ./configure script bootstrap >>>>> “Deno” during the run of configure.sh. >>>>> >>>>> Because this download and compilation of Deno occur during ./configure.sh >>>>> running, guix cannot patch the #!/bin/bash path, so ./configure failed. >>>>> Deno seems also not packaged into guix. >>>>> >>>>> Do you have an idea to resolve this ? Perhaps we could try all together to do this. >>>>> >>>>> I’m starting with this quarto-cli.scm : >>>>> >>>>> ┌──── >>>>> │ (use-modules >>>>> │ (guix packages) >>>>> │ (guix download) >>>>> │ (guix build-system gnu) >>>>> │ (guix licenses) >>>>> │ ) >>>>> │ >>>>> │ (define-public quarto-cli >>>>> │ (package >>>>> │ (name “Quarto-CLI”) >>>>> │ (version “1.1.251”) >>>>> │ (source (origin >>>>> │ (method url-fetch) >>>>> │ (uri (string-append “”)) >>>>> │ (sha256 >>>>> │ (base32 >>>>> │ “1ycwrjndrrrciymnm3l0lhcd375fddkvjibvc0n084irg6z1lxn6”)))) >>>>> │ (build-system gnu-build-system) >>>>> │ (synopsis “Quarto-cli”) >>>>> │ (description >>>>> │ “Quarto-cli description”) >>>>> │ (home-page “”) >>>>> │ (license gpl3+))) >>>>> │ quarto-cli >>>>> │ >>>>> └──── >>>>> >>>>> To compile and fail : >>>>> guix build -f quarto-cli.scm >>>>> >>>>> Best, >>>>> Sebastien RC. >>>> Deno contain lot of packages dependencies actually, >>>> here i comment all packages not packaged in rust after a simple run of guix import … >>>> >>>> #+BEGIN_SRC scheme >>>> >>>> (use-modules >>>> (guix packages) >>>> (guix build-system cargo) >>>> (guix download) >>>> (guix licenses) >>>> (gnu packages rust) >>>> (gnu packages crates-io) >>>> ) >>>> >>>> (define-public rust-deno-1 >>>> (package >>>> (name “rust-deno”) >>>> (version “1.26.2”) >>>> (source (origin >>>> (method url-fetch) >>>> (uri (crate-uri “deno” version)) >>>> (file-name (string-append name “-” version “.tar.gz”)) >>>> (sha256 >>>> (base32 >>>> “1yzvdkj8sq475kfbkms1lfysjddkfwcyqhp1ggalfbk4hqhbiz29”)))) >>>> (build-system cargo-build-system) >>>> (arguments >>>> `(#:cargo-inputs ((“rust-atty” ,rust-atty-0.2) >>>> (“rust-base64” ,rust-base64-0.13) >>>> ; (“rust-cache-control” ,rust-cache-control-0.2) >>>> (“rust-chrono” ,rust-chrono-0.4) >>>> ; (“rust-clap” ,rust-clap-3) >>>> ; (“rust-clap-complete” ,rust-clap-complete-3) >>>> ; (“rust-clap-complete-fig” ,rust-clap-complete-fig-3) >>>> (“rust-data-url” ,rust-data-url-0.1) >>>> ; (“rust-deno-ast” ,rust-deno-ast-0.19) >>>> ; (“rust-deno-broadcast-channel” ,rust-deno-broadcast-channel-0.67) >>>> ; (“rust-deno-cache” ,rust-deno-cache-0.5) >>>> ; (“rust-deno-console” ,rust-deno-console-0.73) >>>> ; (“rust-deno-core” ,rust-deno-core-0.155) >>>> ; (“rust-deno-core” ,rust-deno-core-0.155) >>>> ; (“rust-deno-crypto” ,rust-deno-crypto-0.87) >>>> ; (“rust-deno-doc” ,rust-deno-doc-0.46) >>>> ; (“rust-deno-emit” ,rust-deno-emit-0.9) >>>> ; (“rust-deno-fetch” ,rust-deno-fetch-0.96) >>>> ; (“rust-deno-graph” ,rust-deno-graph-0.34) >>>> ; (“rust-deno-lint” ,rust-deno-lint-0.33) >>>> ; (“rust-deno-net” ,rust-deno-net-0.65) >>>> ; (“rust-deno-node” ,rust-deno-node-0.10) >>>> ; (“rust-deno-runtime” ,rust-deno-runtime-0.81) >>>> ; (“rust-deno-task-shell” ,rust-deno-task-shell-0.5) >>>> ; (“rust-deno-url” ,rust-deno-url-0.73) >>>> ; (“rust-deno-web” ,rust-deno-web-0.104) >>>> ; (“rust-deno-webgpu” ,rust-deno-webgpu-0.74) >>>> ; (“rust-deno-websocket” ,rust-deno-websocket-0.78) >>>> ; (“rust-deno-webstorage” ,rust-deno-webstorage-0.68) >>>> (“rust-dissimilar” ,rust-dissimilar-1) >>>> ; (“rust-dprint-plugin-json” ,rust-dprint-plugin-json-0.15) >>>> ; (“rust-dprint-plugin-markdown” ,rust-dprint-plugin-markdown-0.14) >>>> ; (“rust-dprint-plugin-typescript” ,rust-dprint-plugin-typescript-0.74) >>>> (“rust-encoding-rs” ,rust-encoding-rs-0.8) >>>> (“rust-env-logger” ,rust-env-logger-0.9) >>>> ; (“rust-eszip” ,rust-eszip-0.28) >>>> ; (“rust-fancy-regex” ,rust-fancy-regex-0.10) >>>> (“rust-flate2” ,rust-flate2-1) >>>> (“rust-fwdansi” ,rust-fwdansi-1) >>>> ; (“rust-glibc-version” ,rust-glibc-version-0.1) >>>> (“rust-http” ,rust-http-0.2) >>>> ; (“rust-import-map” ,rust-import-map-0.12) >>>> (“rust-indexmap” ,rust-indexmap-1) >>>> ; (“rust-indicatif” ,rust-indicatif-0.17) >>>> ; (“rust-jsonc-parser” ,rust-jsonc-parser-0.21) >>>> ; (“rust-junction” ,rust-junction-0.2) >>>> (“rust-libc” ,rust-libc-0.2) >>>> (“rust-log” ,rust-log-0.4) >>>> ; (“rust-mitata” ,rust-mitata-0.0.7) >>>> ; (“rust-monch” ,rust-monch-0.2) >>>> ; (“rust-napi-sym” ,rust-napi-sym-0.3) >>>> (“rust-notify” ,rust-notify-5) >>>> (“rust-once-cell” ,rust-once-cell-1) >>>> (“rust-os-pipe” ,rust-os-pipe-1) >>>> (“rust-percent-encoding” ,rust-percent-encoding-2) >>>> (“rust-pin-project” ,rust-pin-project-1) >>>> (“rust-rand” ,rust-rand-0.8) >>>> (“rust-regex” ,rust-regex-1) >>>> (“rust-regex” ,rust-regex-1) >>>> (“rust-ring” ,rust-ring-0.16) >>>> ; (“rust-rustyline” ,rust-rustyline-10) >>>> ; (“rust-rustyline-derive” ,rust-rustyline-derive-0.7) >>>> (“rust-semver” ,rust-semver-1) >>>> (“rust-serde” ,rust-serde-1) >>>> (“rust-serde” ,rust-serde-1) >>>> (“rust-serde-json” ,rust-serde-json-1) >>>> (“rust-serde-repr” ,rust-serde-repr-0.1) >>>> (“rust-shell-escape” ,rust-shell-escape-0.1) >>>> (“rust-tar” ,rust-tar-0.4) >>>> (“rust-tempfile” ,rust-tempfile-3) >>>> (“rust-text-size” ,rust-text-size-1) >>>> ; (“rust-text-lines” ,rust-text-lines-0.6) >>>> (“rust-tokio” ,rust-tokio-1) >>>> ; (“rust-tokio-util” ,rust-tokio-util-0.7) >>>> ; (“rust-tower-lsp” ,rust-tower-lsp-0.17) >>>> (“rust-twox-hash” ,rust-twox-hash-1) >>>> (“rust-typed-arena” ,rust-typed-arena-2) >>>> ; (“rust-uuid” ,rust-uuid-1) >>>> (“rust-walkdir” ,rust-walkdir-2) >>>> (“rust-winapi” ,rust-winapi-0.3) >>>> (“rust-winapi” ,rust-winapi-0.3) >>>> (“rust-winres” ,rust-winres-0.1) >>>> ; (“rust-zstd” ,rust-zstd-0.11) >>>> ) >>>> #:cargo-development-inputs ( >>>> ;(“rust-deno-bench-util” ,rust-deno-bench-util-0.67) >>>> (“rust-dotenv” ,rust-dotenv-0.15) >>>> ;(“rust-flaky-test” ,rust-flaky-test-0.1) >>>> ;(“rust-nix” ,rust-nix-0.24) >>>> (“rust-once-cell” ,rust-once-cell-1) >>>> (“rust-os-pipe” ,rust-os-pipe-1) >>>> (“rust-pretty-assertions” ,rust-pretty-assertions-1) >>>> ;(“rust-trust-dns-client” ,rust-trust-dns-client-0.22) >>>> ;(“rust-trust-dns-server” ,rust-trust-dns-server-0.22)))) >>>> (home-page “”) >>>> (synopsis “Provides the deno executable”) >>>> (description “This package provides the deno executable”) >>>> (license expat))) >>>> >>>> rust-deno-1 >>>> >>>> #+END_SRC >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>