Package: guix-patches;
Reported by: Roman Scherer <roman <at> burningswell.com>
Date: Sat, 4 Mar 2023 14:45:01 UTC
Severity: normal
Tags: patch
Message #59 received at 61959 <at> debbugs.gnu.org (full text, mbox):
From: Roman Scherer <roman.scherer <at> burningswell.com> To: Ricardo Wurmus <rekado <at> elephly.net> Cc: 61959 <at> debbugs.gnu.org, winter <at> winter.cafe Subject: Re: [PATCH 0/7] Add some Asahi Linux packages Date: Sun, 05 Mar 2023 12:15:58 +0100
[Message part 1 (text/plain, inline)]
Hi Ricardo & Winter, I didn't receive Winter's email and just saw it in the web interface after I sent v2 of the patch series. Should I be subscribed to the whole guix-patches mailing list as well to receive them? I'm new to the email based workflow and sometimes still a bit lost. I will address the feedback I got from Winter and send a v3. @Winter, I will address your comments. You are right about the order of libdrm, it should come before mesa-asahi. > The next step would be to support building a Linux with Rust > modules. I'm waiting for some patches from the Rust team to do this. About this next step. The Asahi Linux team has a version of the Linux kernel that contains a GPU kernel module written in Rust. To build this module I used customize-linux and added the rust and the rust-bindgen-cli packages to its native inputs. This is what I currently did: ``` (define (make-asahi-linux name config) (let* ((version "6.2-rc3-6") (base (customize-linux #:linux linux-libre-arm64-generic #:name name #:source (origin (method url-fetch) (uri (string-append "https://github.com/AsahiLinux/linux/archive/" "asahi-" version ".tar.gz")) (sha256 (base32 "0bk4grzcizk48hhalyyaa4alk5069z102vx5ddw12jfqzsrdfccn")))))) (package (inherit base) (version version) (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases '%standard-phases) #~(modify-phases #$phases (add-before 'configure 'configure-rust (lambda* (#:key inputs #:allow-other-keys) (setenv "LIBCLANG_PATH" (string-append (assoc-ref inputs "clang") "/lib")) (setenv "RUST_LIB_SRC" (string-append (assoc-ref inputs "rust-src") "/lib/rustlib/src/rust/library")))) (replace 'configure (lambda* (#:key inputs #:allow-other-keys) (copy-file #$config ".config") (chmod ".config" #o644))))))) (native-inputs `(("clang" ,clang) ("llvm" ,llvm) ("python" ,python) ("rust" ,(replace-jemalloc (@@ (gnu packages rust) rust-1.62))) ("rust-bindgen-cli" ,(replace-jemalloc rust-bindgen-cli)) ("rust-src" ,rust-src-1.62) ("zstd" ,zstd) ,@(package-native-inputs base))) (home-page "https://asahilinux.org") (synopsis "Linux on Apple Silicon") (description "Asahi Linux is a project and community with the goal of porting Linux to Apple Silicon Macs, starting with the 2020 M1 Mac Mini, MacBook Air, and MacBook Pro.")))) (define-public asahi-linux (make-asahi-linux "asahi-linux" (local-file "kernel.config"))) (define-public asahi-linux-edge (make-asahi-linux "asahi-linux-edge" (local-file "kernel.edge.config"))) ``` However, rust-bindgen-cli isn't yet packaged, and the version I used previously (0.59.2) somehow disappeared from crates.io. They now only have versions > 0.61.0 available, which I plan to package. The rust team is updating many packages at the moment, so my plan was to wait until those made it into the main branch. I think the differences of package/inherit vs (inherit) aren't very clear to me. I'm guess I should use package/inherit to be able to use input transformations. Is that correct? Roman Roman Scherer <roman.scherer <at> burningswell.com> writes: > [[PGP Signed Part:Undecided]] > > Hi Ricardo, > > I updated the patch series and sent v2 of it. > > Thanks for your review! > > Roman > > Ricardo Wurmus <rekado <at> elephly.net> writes: > >> Thank you for the patches. >> >> Here a couple of comments: >> >> * Please do not use Github archive URLs like >> "https://github.com/AsahiLinux/m1n1/archive/v….tar.gz". These are >> automatically generated and have changed in the past, leading to >> different hashes. In the interest of reproducibility please use >> “git-fetch” with plain commit hashes instead. >> >> * Please use G-expressions instead of simple quoting with (assoc-ref >> outputs "out"). Instead of this: >> >> --8<---------------cut here---------------start------------->8--- >> (arguments >> `(#:phases >> (modify-phases %standard-phases >> (replace 'configure >> (lambda _ >> (setenv "RELEASE" "1"))) >> (replace 'install >> (lambda* (#:key outputs #:allow-other-keys) >> (let ((dir (string-append (assoc-ref outputs "out") "/libexec/"))) >> (mkdir-p dir) >> (copy-file "build/m1n1.bin" (string-append dir "m1n1.bin"))))) >> ;; There are no tests >> (delete 'check)))) >> --8<---------------cut here---------------end--------------->8--- >> >> >> Please do this: >> >> --8<---------------cut here---------------start------------->8--- >> (arguments >> (list >> ;; There are no tests >> #:tests? #false >> #:phases >> #~(modify-phases %standard-phases >> (replace 'configure >> (lambda _ >> (setenv "RELEASE" "1"))) >> (replace 'install >> (lambda _ >> (let ((dir (string-append #$output "/libexec/"))) >> (mkdir-p dir) >> (copy-file "build/m1n1.bin" (string-append dir "m1n1.bin")))))))) >> --8<---------------cut here---------------end--------------->8--- >> >> This also applies to “asahi-fwextract”. >> >> * The string labels for inputs are a deprecated style. Please use plain >> lists of package variables. If you want to modify an inherited list >> of inputs such as in “asahi-mesa” please use “modify-inputs”. >> >> * In “asahi-fwextract” the build phase “'remove-vendor” should be a >> source snippet instead. >> >> * Please use pyproject-build-system instead of python-build-system. The >> pyproject-build-system is going to be the default in the future, and >> it would be good to use it already to address any incompatibilities >> early. >> >> Could you please send a new version of this patch set? Thanks again! > > [[End of PGP Signed Part]]
[signature.asc (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.