Message ID | 86pmoyrxyy.fsf@163.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#51747] : gnu: nix: Update to 2.4. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
Zhu Zihao schreef op wo 12-01-2022 om 01:19 [+0800]: > + (name "libcpuid") [...] > + (supported-systems '("x86_64-linux" "i686-linux")) Given that 'cpuid' is a CPU instruction, I don't think this is Linux-specific; presumably it works on the Hurd as well. According to the README, it also supports some BSDs, Mac OS and Windows! Could you change it to (filter (lambda (t) (or (x86-64-target? t) (or (x86-32-target? t)))) %supported-systems) instead (untested)? Also, the source code contains a blob <https://github.com/anrieff/libcpuid/blob/master/libcpuid/msrdriver.c>, could you remove it in an origin snippet? There might be more blobs, I didn't look at all files. Greetings, Maxime.
Another two blobs: <https://github.com/anrieff/libcpuid/blob/master/contrib/MSR Driver>
Maxime Devos <maximedevos@telenet.be> writes: > [[PGP Signed Part:Undecided]] > Zhu Zihao schreef op wo 12-01-2022 om 01:19 [+0800]: >> + (name "libcpuid") [...] >> + (supported-systems '("x86_64-linux" "i686-linux")) > > Given that 'cpuid' is a CPU instruction, I don't think > this is Linux-specific; presumably it works on the Hurd > as well. According to the README, it also supports some BSDs, > Mac OS and Windows! > > Could you change it to > > (filter (lambda (t) (or (x86-64-target? t) (or (x86-32-target? t)))) > %supported-systems) > > instead (untested)? > > Also, the source code contains a blob > <https://github.com/anrieff/libcpuid/blob/master/libcpuid/msrdriver.c>, > could you remove it in an origin snippet? > > There might be more blobs, I didn't look at all files. > > Greetings, > Maxime. > > [[End of PGP Signed Part]] Interesting, It looks that these blobs are for Windows system. I don't care about MS Windows, but blobs are tightly integrated in the source. The source reports that they're compiled from the source in contrib/MSR Driver/Kernel. They're PE COFF format, If we want to compile it ourself, we have to use mingw cross compiler. This increase the complexity of build script. AFAIK, nix use libcpuid only in linux context. My idea is replace these blobs with empty bytes. Maybe leave a note for who want mingw cross build.
Zhu Zihao <all_but_last@163.com> writes: […] > Interesting, It looks that these blobs are for Windows system. I don't > care about MS Windows, but blobs are tightly integrated in the source. > > The source reports that they're compiled from the source in contrib/MSR > Driver/Kernel. They're PE COFF format, If we want to compile it ourself, > we have to use mingw cross compiler. This increase the complexity of > build script. > > AFAIK, nix use libcpuid only in linux context. My idea is replace these > blobs with empty bytes. Maybe leave a note for who want mingw cross build. Does the current version 2.5.1 https://nixos.org/download.html contains those blobs? And in any case, could we update to 2.5.1 instead of 2.4?
Oleg Pykhalov <go.wigust@gmail.com> writes: > [[PGP Signed Part:Undecided]] > Zhu Zihao <all_but_last@163.com> writes: > > […] > >> Interesting, It looks that these blobs are for Windows system. I don't >> care about MS Windows, but blobs are tightly integrated in the source. >> >> The source reports that they're compiled from the source in contrib/MSR >> Driver/Kernel. They're PE COFF format, If we want to compile it ourself, >> we have to use mingw cross compiler. This increase the complexity of >> build script. >> >> AFAIK, nix use libcpuid only in linux context. My idea is replace these >> blobs with empty bytes. Maybe leave a note for who want mingw cross build. > > Does the current version 2.5.1 https://nixos.org/download.html contains > those blobs? > > And in any case, could we update to 2.5.1 instead of 2.4? > > [[End of PGP Signed Part]] Thank you for remind me the release of 2.5.1. We should update to 2.5.1 But the blob is contained in libcpuid, Nix 2.5.1 still use libcpuid for x86 machine.
Zhu Zihao schreef op wo 12-01-2022 om 12:21 [+0800]: > [ > ...] > Interesting, It looks that these blobs are for Windows system. I don't > care about MS Windows, but blobs are tightly integrated in the source. > > The source reports that they're compiled from the source in contrib/MSR > Driver/Kernel. They're PE COFF format, If we want to compile it ourself, > we have to use mingw cross compiler. This increase the complexity of > build script. > > AFAIK, nix use libcpuid only in linux context. My idea is replace these > blobs with empty bytes. Maybe leave a note for who want mingw cross build. Often (but not always, cf. rust), when software has files for specific architectures or operating systems, they will only be compiled if they match the architecture and operating system the software is compiled for. As such, there's a good chance the build will succeed (at least for Linux, for Hurd, ...) if they are simply deleted. Greetings, Maxime.
Maxime Devos <maximedevos@telenet.be> writes: > Could you change it to > > (filter (lambda (t) (or (x86-64-target? t) (or (x86-32-target? t)))) > %supported-systems) I found that it actually only supports Linux & Windows. There're only code stubs for other platform. I've created a patch to libcpuid, make it only link with msrdriver.c on Windows platform. See https://github.com/anrieff/libcpuid/pull/159.
Zhu Zihao <all_but_last@163.com> writes: > I found that it actually only supports Linux & Windows. There're only > code stubs for other platform. Correction, the MSR detection is limited to Linux & Windows, while other functionalities are not.
Zhu Zihao schreef op do 13-01-2022 om 12:54 [+0800]: > Maxime Devos <maximedevos@telenet.be> writes: > > > Could you change it to > > > > (filter (lambda (t) (or (x86-64-target? t) (or (x86-32-target? t)))) > > %supported-systems) > > I found that it actually only supports Linux & Windows. There're only > code stubs for other platform. I doubt this, since libcpuid.h mentions FreeBSD and Solaris support, and 'libcpuid/asm-bits.c' uses 'cpuid' whether it is Linux or Windows or not. Possibly there's more information available for Linux and Windows than for the hurd (see e.g. 'libcpuid/rdmsr.c'), but it would seem that _some_ usable information is available elsewhere. Also, 'libcpuid/rdmsr.c' uses 'modprobe', does this need to be absolutised? Greetings, Maxime.
From e442322866f6edd625ada09573afb7bff51f269e Mon Sep 17 00:00:00 2001 From: Zhu Zihao <all_but_last@163.com> Date: Wed, 12 Jan 2022 00:42:32 +0800 Subject: [PATCH 5/5] gnu: nix: Use G-expression. * gnu/packages/package-management.scm (nix)[arguments]: Convert to G-expression. --- gnu/packages/package-management.scm | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 03f741dc2c..594d6e9d4b 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -676,19 +676,19 @@ (define-public nix (search-patches "nix-dont-build-html-doc.diff")))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--sysconfdir=/etc" "--enable-gc") - #:phases - (modify-phases %standard-phases - (replace 'install - ;; Don't try & fail to create subdirectories in /etc, but keep them - ;; in the output as examples. - (lambda* (#:key (make-flags '()) outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (etc (string-append out "/etc"))) - (apply invoke "make" "install" - (string-append "sysconfdir=" etc) - (string-append "profiledir=" etc "/profile.d") - make-flags))))))) + (list + #:configure-flags #~(list "--sysconfdir=/etc" "--enable-gc") + #:phases + #~(modify-phases %standard-phases + (replace 'install + ;; Don't try & fail to create subdirectories in /etc, but keep them + ;; in the output as examples. + (lambda* (#:key (make-flags '()) outputs #:allow-other-keys) + (let ((etc (string-append #$output "/etc"))) + (apply invoke "make" "install" + (string-append "sysconfdir=" etc) + (string-append "profiledir=" etc "/profile.d") + make-flags))))))) (native-inputs (list autoconf autoconf-archive -- 2.34.0