help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help packaging R Quarto Cli


From: Sébastien Rey-Coyrehourcq
Subject: Re: Help packaging R Quarto Cli
Date: Wed, 14 Dec 2022 11:30:16 +0100
User-agent: mu4e 1.8.11; emacs 28.2

Hi,

After two weeks of suffering and pain with this complex rust packaging, and 
thanks to people on the libera #guix chat, my “rust packaging adventure” is 
near ending… at least with deno, i see quarto after that…

Everything compile by parts, and i need a final help to merge things.

I only have a problem at `testing-phase', with a local rust package defined on 
Deno `/test_util' folder. This package is not published at all on crates.io and 
it’s needed at test-phase…

This nested crate package is not detected/compiled by actual 
`cargo-build-system', so i decide to package it myself , as 
`rust-deno-test-util-0.1.0'

I tested and this crate compile well, with two derivation :

• `/gnu/store/ma04jfp0f33kf38cdn66qai60nhqxx7d-rust-deno-test-util-0.1.0/'
• `/gnu/store/zp5flzykz7y5n35kqrlryqkynvrvcw3z-rust-deno-test-util-0.1.0.drv'

`/gnu/store/ma04jfp0f33kf38cdn66qai60nhqxx7d-rust-deno-test-util-0.1.0/share/cargo/registry/'
  contain the test_util-0.1.0.crate

So … i added this *.scm* to my *deno/deno-dep* list of package in the 
*rust-channel* needed by deno to compile :
<https://git.sr.ht/~reyman/rust-channel/tree/543fee4cc3626ae27da5b41a7884cecb71b9dcf8/item/deno-dep/rust-deno-test-util-0-1-0.scm>

*My problem is simple?* i added this crate as a dependency of my main 
`rust-deno.scm' :
• `#:use-module (deno-dep rust-deno-test-util-0-1-0)'
• `#:cargo-development-inputs `((("rust-deno-test-util", 
rust-deno-test-util-0.1.0) ... )'

BUT BUT BUT … rust-deno-test-util is not found and not added to `/guix-vendor' 
during deno crate retrieval, so there is a problem somewhere during packaging 
retrieval from local `/gnu/store'. I found in the log that

`/gnu/store/8479xfpn9hp2b3kc9d3596kpncan9d8w-rust-deno-test-util-0.1.0.tar.gz/' 
 contain the sources and not a `tar.gz' like others crates. I suppose this is 
part of the problem, but i don’t know how to solve that.

See by yourself using :

guix time-machine -C channels.scm – build -f rust-deno.scm

that return :

error: no matching package named `deno_test_util` found

**Info to reproduce**

• All these package needed by Deno are defined into my-rust channel here : 
<https://git.sr.ht/~reyman/rust-channel>
• The building and channel scm needed to build deno are here : 
<https://git.sr.ht/~reyman/build-deno-guix>
• /Final Warning :/ Deno build (outside rust build) take at least 2 hours on my 
machine, rusty-v8 is huge and take itself ~30 to 45 minutes.

Any *final* help appreciated !

Best ,
Sébastien Rey-Coyrehourcq


Sébastien Rey-Coyrehourcq <sebastien.rey-coyrehourcq@univ-rouen.fr> writes:

>
> Hi,
>
> Thanks a lot, that helps me to make one more step :)
>
> I set :
>
> ┌────
> │     (arguments
> │         `(#:phases
> │            (modify-phases %standard-phases
> │          (add-before ’configure ’set-source
> │            (lambda _
> │              (setenv “V8_FROM_SOURCE” “1”)
> │              (setenv “RUST_BACKTRACE” “1”)
> │              (setenv “CLANG_BASE_PATH” (getenv “CMAKE_PREFIX_PATH”))
> │              #t)))
> └────
>
> I also try C_INCLUDE_PATH
>
> and native input :
>
> ┌────
> │     (native-inputs (list ninja gn clang-toolchain ccache clang))
> └────
>
> I have now another problem during compilation of v8, i don’t understand why 
> “clang” path is not well recognized by the buildscript, test is defined here :
>
> <https://github.com/denoland/rusty_v8/blob/main/build.rs#L517>
>
> The backtrace :
>
> error: failed to run custom build command for `v8 v0.49.0`
>
> Caused by:
>   process didn’t exit successfully: 
> `/tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/target/release/build/v8-bbb68ec56db1d802/build-script-build`
>  (exit status: 101)
>   — stdout
>   cargo:rerun-if-changed=.gn
>   cargo:rerun-if-changed=BUILD.gn
>   cargo:rerun-if-changed=src/binding.cc
>   cargo:rerun-if-env-changed=CCACHE
>   cargo:rerun-if-env-changed=CLANG_BASE_PATH
>   cargo:rerun-if-env-changed=DENO_TRYBUILD
>   cargo:rerun-if-env-changed=DOCS_RS
>   cargo:rerun-if-env-changed=GN
>   cargo:rerun-if-env-changed=GN_ARGS
>   cargo:rerun-if-env-changed=HOST
>   cargo:rerun-if-env-changed=NINJA
>   cargo:rerun-if-env-changed=OUT_DIR
>   cargo:rerun-if-env-changed=RUSTY_V8_ARCHIVE
>   cargo:rerun-if-env-changed=RUSTY_V8_MIRROR
>   cargo:rerun-if-env-changed=SCCACHE
>   cargo:rerun-if-env-changed=V8_FORCE_DEBUG
>   cargo:rerun-if-env-changed=V8_FROM_SOURCE
>   cargo:rustc-link-lib=static=rusty_v8
>   using Chromiums clang
>   clang_base_path 
> /tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/target/release/clang
>
> — stderr
> thread ’main’ panicked at ’called `Result::unwrap()` on an `Err` value: Os { 
> code: 2, kind: NotFound, message: “No such file or directory” }’, 
> /tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/guix-vendor/rust-v8-0.49.0.tar.gz/build.rs:537:6
> stack backtrace:
>    0: rust_begin_unwind
>    1: core::panicking::panic_fmt
>    2: core::result::unwrap_failed
>    3: core::result::Result<T,E>::unwrap
>    4: build_script_build::clang_download
>    5: build_script_build::build_v8
>    6: build_script_build::main
>    7: core::ops::function::FnOnce::call_once
> note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 
> backtrace.
>
> Best,
>
>
> Wojtek Kosior <koszko@koszko.org> writes:
>
>>> Hi,
>>>
>>> You’re both right, seems there is a flag to skip binary downloading and
>>> compile the V8 lib.
>>>
>>> […]
>>
>> Good to see you found it :)
>>
>>> So, my packaging friend :), what’s the best way to push an “export
>>> V8_FROM_SOURCE=1” or something like that into my rust-deno.scm ?
>>>
>>> Best,
>>>
>>> SR
>>
>> When I first read your question, I did not know the exact function. But
>> I knew where to look. So I thought I’d better share my way of learning
>> rather than just the solution ;)
>>
>> I started with
>>
>>     grep -R ’export’ 
>> ~/.config/guix/current/share/guile/site/3.0/gnu/packages/ | less
>>
>> That showed a lot of results. I noticed a line like this
>>
>>> /home/urz/.config/guix/current/share/guile/site/3.0/gnu/packages/engineering.scm:
>>>              (setenv “HOME” (getcwd)) ;; cmake needs this to export modules
>>
>> Thought it might be the thing I was looking for, so I did
>>
>>     less 
>> /home/urz/.config/guix/current/share/guile/site/3.0/gnu/packages/engineering.scm
>>
>> and navigated to this line. This seems to be it. The (setenv) function.
>> Can be used as from a modified packaging phase function (as you can see
>> in engineering.scm).
>>
>> Hope I helped. Good luck once again!
>>
>> W.
>>
>> P.S. Make sure you know some ’less’ shortcuts if you’re going to do
>>      things this way. It cad speed things up ^^
>>
>> – (sig_start)
>> website: <https://koszko.org/koszko.html>
>> PGP: <https://koszko.org/key.gpg>
>> fingerprint: E972 7060 E3C5 637C 8A4F  4B42 4BC5 221C 5A79 FD1A
>>
>> Meet Kraków saints!           #12: saint Jadwiga Andegaweńska
>> Poznaj świętych krakowskich!  #12: święta Jadwiga Andegaweńska
>> <https://pl.wikipedia.org/wiki/Jadwiga_Andegaweńska>
>> – (sig_end)
>>
>>
>> On Wed, 16 Nov 2022 21:38:47 +0100
>> Sebastien Rey-Coyrehourcq <sebastien.rey-coyrehourcq@univ-rouen.fr> wrote:
>>
>>> Hi,
>>>
>>> You’re both right, seems there is a flag to skip binary downloading and
>>> compile the V8 lib.
>>>
>>>  From the githubpage (<https://github.com/denoland/rusty_v8>) : “V8 is
>>> very large and takes a long time to compile. Many users will prefer to
>>> use a prebuilt version of V8. We publish static libs for every version
>>> of rusty v8 on Github <https://github.com/denoland/rusty_v8/releases>.
>>>
>>> Binaries builds are turned on by default: |cargo build| will initiate a
>>> download from github to get the static lib. To disable this build using
>>> the |V8_FROM_SOURCE| environmental variable.
>>>
>>> When making changes to rusty_v8 itself, it should be tested by build
>>> from source. The CI always builds from source”
>>>
>>> So, my packaging friend :), what’s the best way to push an “export
>>> V8_FROM_SOURCE=1” or something like that into my rust-deno.scm ?
>>>
>>> Best,
>>>
>>> SR
>>>
>>> Le 15/11/2022 à 08:58, Efraim Flashner a écrit :
>>> > On Mon, Nov 14, 2022 at 11:30:47PM +0100, Sébastien Rey-Coyrehourcq wrote:
>>> >> Hi,
>>> >>
>>> >> After some day of packaging rust crate, i progress and deno start to 
>>> >> compile … but after 1min i have this error when cargo start compiling 
>>> >> *rust-v8-0.49* . Any rust + guix help appreciated.
>>> >>
>>> >> I push the channel to reproduce the problem here :
>>> >>
>>> >> The rust scm repo : git.sr.ht:~reyman/rust-channel
>>> >> Channel info to put into *channels.scm* 
>>> >> :<https://paste.debian.net/1260722>
>>> >> The *rust-deno.scm* file to build :<https://paste.debian.net/1260723>
>>> >> The command : guix time-machine -C channels.scm – build -f rust-deno.scm
>>> >>
>>> >> And the rust error :
>>> >>
>>> >> —
>>> >>
>>> >> error: failed to run custom build command for `v8 v0.49.0`
>>> >>
>>> >> Caused by:
>>> >>    process didn’t exit successfully: 
>>> >> `/tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/target/release/build/v8-bbb68ec56db1d802/build-script-build`
>>> >>  (exit status: 101)
>>> >>    — stdout
>>> >>    cargo:rerun-if-changed=.gn
>>> >>    cargo:rerun-if-changed=BUILD.gn
>>> >>    cargo:rerun-if-changed=src/binding.cc
>>> >>    cargo:rerun-if-env-changed=CCACHE
>>> >>    cargo:rerun-if-env-changed=CLANG_BASE_PATH
>>> >>    cargo:rerun-if-env-changed=DENO_TRYBUILD
>>> >>    cargo:rerun-if-env-changed=DOCS_RS
>>> >>    cargo:rerun-if-env-changed=GN
>>> >>    cargo:rerun-if-env-changed=GN_ARGS
>>> >>    cargo:rerun-if-env-changed=HOST
>>> >>    cargo:rerun-if-env-changed=NINJA
>>> >>    cargo:rerun-if-env-changed=OUT_DIR
>>> >>    cargo:rerun-if-env-changed=RUSTY_V8_ARCHIVE
>>> >>    cargo:rerun-if-env-changed=RUSTY_V8_MIRROR
>>> >>    cargo:rerun-if-env-changed=SCCACHE
>>> >>    cargo:rerun-if-env-changed=V8_FORCE_DEBUG
>>> >>    cargo:rerun-if-env-changed=V8_FROM_SOURCE
>>> >>    cargo:rustc-link-lib=static=rusty_v8
>>> >>    download lockfile: 
>>> >> “/tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/target/release/build/lib_download.fslock”
>>> >>    static lib 
>>> >> URL:<https://github.com/denoland/rusty_v8/releases/download/v0.49.0/librusty_v8_release_x86_64-unknown-linux-gnu.a>
>>> >>    
>>> >> cargo:rustc-link-search=/tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/target/release/gn_out/obj
>>> >>    
>>> >> Downloading<https://github.com/denoland/rusty_v8/releases/download/v0.49.0/librusty_v8_release_x86_64-unknown-linux-gnu.a>
>>> >>    Python downloader failed, trying with curl.
>>> > Looks like you need to patch rust-v8-0.49 to not try to download
>>> > librusty_v8_release… but instead you’ll have to build it from source
>>> > and let it know where to find it.
>>> >
>>> >>    — stderr
>>> >>    thread ’main’ panicked at ’called `Result::unwrap()` on an `Err` 
>>> >> value:
>>> >> Os { code: 2, kind: NotFound, message: “No such file or directory” }’,
>>> >> /tmp/guix-build-rust-deno-1.25.2.drv-0/deno-1.25.2/guix-vendor/rust-v8-0.49.0.tar.gz/build.rs:405:10
>>> >>    note: run with `RUST_BACKTRACE=1` environment variable to display a 
>>> >> backtrace
>>> >> warning: build failed, waiting for other jobs to finish…
>>> >> error: build failed
>>> >> error: in phase ’build’: uncaught exception:
>>> >> %exception #<&invoke-error program: “cargo” arguments: (“build” 
>>> >> “–release”) exit-status: 101 term-signal: #f stop-signal: #f>
>>> >> phase `build’ failed after 105.5 seconds
>>> >> command “cargo” “build” “–release” failed with status 101
>>> >> builder for 
>>> >> `/gnu/store/g4m5c558l1q4g1kggzg2v9vkw352nnaj-rust-deno-1.25.2.drv’ 
>>> >> failed with exit code 1
>>> >> la compilation de 
>>> >> /gnu/store/g4m5c558l1q4g1kggzg2v9vkw352nnaj-rust-deno-1.25.2.drv a échoué
>>> >> Vous trouverez le journal de compilation dans « 
>>> >> /var/log/guix/drvs/g4/m5c558l1q4g1kggzg2v9vkw352nnaj-rust-deno-1.25.2.drv.gz
>>> >>  ».
>>> >> guix build: erreur : build of 
>>> >> `/gnu/store/g4m5c558l1q4g1kggzg2v9vkw352nnaj-rust-deno-1.25.2.drv’ failed
>>> >
>>
>>
>

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]