Message ID | 20211129182108.54695-1-zimon.toutoune@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#52186,core-updates-frozen] gnu: libunwind-julia: Fix build on i686-linux. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
Hi, This patch fixes all broken Julia on i686 for core-updates-frozen. On Mon, 29 Nov 2021 at 19:21, zimoun <zimon.toutoune@gmail.com> wrote: > diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm > index 83aa8b1099..17f4a9a169 100644 > --- a/gnu/packages/julia.scm > +++ b/gnu/packages/julia.scm > @@ -71,13 +71,17 @@ (define libunwind-julia > (base32 > "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3")) > (patches > - (list > - (julia-patch "libunwind-prefer-extbl" > - "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1") > - (julia-patch "libunwind-static-arm" > - "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq") > - (julia-patch "libunwind-cfa-rsp" > - "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z"))))) > + (append > + ;; Fix linker issue for i686-linux because GCC10 changed default > + ;; (see '-fno-common' option). > + (search-patches "libunwind-julia-fix-GCC10-fno-common.patch") Here, the patch could be conditionally applied depending on the architecture. It would avoid to rebuild all Julia packages for x86_64. Although, they are not broke, I guess. ;-) Let me know or please go ahead. :-) Cheers, simon
Hi, This series allow the julia package itself to build on i686-linux. Then, it fixes julia-* packages for i686-linux. Note that julia and julia-* are currently broken on master for i686-linux. Both julia and julia-* are not impacted on x86_64 by these changes. These packages are still broken… /gnu/store/h97dzpkn7h4fxhl8xag8s7cfypg1l96d-julia-sundials-jll-5.2.1+0.drv /gnu/store/q489ygk7y0y3xxcyi1c72c9lwrvgkfvd-sundials-julia-5.2.0.drv /gnu/store/7g5443kq028lv44f0kdj5p14w5xcx9c4-julia-pyplot-2.10.0.drv /gnu/store/iy5liqrkdlvvx6bmiczxxi5zmyj4999v-julia-pycall-1.92.5.drv /gnu/store/x2na68r5qbyhnilmqpi50sr3iwf9y2fd-julia-gr-0.58.1.drv …but, IMHO, they can wait another round. Only pycall (so pyplot) and gr are failing on core-updates-frozen only. The 2 other (sundials) are currently broken on master. Cheers, simon zimoun (17): gnu: libunwind-julia: Fix build on i686-linux. gnu: julia-datastructures: Fix tests on i686-linux. gnu: julia-benchmarktools: Fix tests on i686-linux. gnu: julia-finitedifferences: Fix tests on i686-linux. gnu: julia-configurations: Fix tests on i686-linux. gnu: julia-lazyarrays: Fix tests on i686-linux. gnu: julia-blockarrays: Fix tests on i686-linux. gnu: julia-mappedarrays: Fix tests on i686-linux. gnu: julia-arrayinterface: Disable tests for i686. gnu: julia-interpolations: Disable tests in i686-linux. gnu: julia-reversediff: Disable tests on i686-linux. gnu: julia-intervalsets: Fix tests on i686-linux. gnu: julia-woodburymatrices: Fix tests on i686-linux. gnu: julia-mutablearithmetics: Fix tests on i686-linux. gnu: julia-structarrays: Fix tests on i686-linux. gnu: julia-geometrybasics: Fix tests on i686-linux. gnu: julia-forwarddiff: Disable tests on i686-linux. gnu/local.mk | 1 + gnu/packages/julia-xyz.scm | 189 +++++++++++++++++- gnu/packages/julia.scm | 18 +- ...libunwind-julia-fix-GCC10-fno-common.patch | 40 ++++ 4 files changed, 232 insertions(+), 16 deletions(-) create mode 100644 gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch base-commit: 68d090002a1a5623494006fca3e2c2c97d3ff676
On Wed, Dec 01, 2021 at 04:52:56PM +0100, zimoun wrote: > Hi, > > This series allow the julia package itself to build on i686-linux. Then, it > fixes julia-* packages for i686-linux. Note that julia and julia-* are > currently broken on master for i686-linux. > > Both julia and julia-* are not impacted on x86_64 by these changes. > > These packages are still broken… > > /gnu/store/h97dzpkn7h4fxhl8xag8s7cfypg1l96d-julia-sundials-jll-5.2.1+0.drv > /gnu/store/q489ygk7y0y3xxcyi1c72c9lwrvgkfvd-sundials-julia-5.2.0.drv > /gnu/store/7g5443kq028lv44f0kdj5p14w5xcx9c4-julia-pyplot-2.10.0.drv > /gnu/store/iy5liqrkdlvvx6bmiczxxi5zmyj4999v-julia-pycall-1.92.5.drv > /gnu/store/x2na68r5qbyhnilmqpi50sr3iwf9y2fd-julia-gr-0.58.1.drv > > …but, IMHO, they can wait another round. Only pycall (so pyplot) and gr are > failing on core-updates-frozen only. The 2 other (sundials) are currently > broken on master. > > > Cheers, > simon > I made a couple of changes, mostly to use target-x86-32? and target-64bit?. Patches pushed! Thanks.
Hi Efraim, Thanks! On Sat, 04 Dec 2021 at 19:54, Efraim Flashner <efraim@flashner.co.il> wrote: > I made a couple of changes, mostly to use target-x86-32? and > target-64bit?. Patches pushed! Thanks. I get 44 instances using ’string-prefix? “i686”’ vs 5 instance using ’target-x86-32’. For my information, why is target-x86-32 preferred here? --8<---------------cut here---------------start------------->8--- $ find . -name "*.scm" | xargs grep 'string-prefix' | grep i686 ./build-aux/compile-all.scm: (if (string-prefix? "i686" %host-type) ./guix/utils.scm: (string-prefix? "i686-" target))) ./gnu/build/bootloader.scm: ((string-prefix? "i686" system) ./gnu/packages/video.scm: (if (string-prefix? "i686" (%current-system)) ./gnu/packages/scheme.scm: (string-prefix? "i686" system)) ./gnu/packages/scheme.scm: (string-prefix? "i686" system)) ./gnu/packages/linux.scm: (or (string-prefix? "i686-" system) ./gnu/packages/maths.scm: ((string-prefix? "i686" system) ./gnu/packages/maths.scm: (string-prefix? "i686" system) ./gnu/packages/maths.scm: (string-prefix? "i686" system)) ./gnu/packages/maths.scm: (string-prefix? "i686" system)) ./gnu/packages/image.scm: ((string-prefix? "i686" target) ./gnu/packages/tls.scm: ((string-prefix? "i686" target) ./gnu/packages/databases.scm: ,@(if (string-prefix? "i686" (%current-system)) ./gnu/packages/music.scm: (string-prefix? "i686" system)) ./gnu/packages/music.scm: (string-prefix? "i686" system))) ./gnu/packages/music.scm: (string-prefix? "i686" system)) ./gnu/packages/gstreamer.scm: ,@(if (string-prefix? "i686" (or (%current-target-system) ./gnu/packages/gl.scm: ,@(if (string-prefix? "i686" (or (%current-target-system) ./gnu/packages/algebra.scm: ((string-prefix? "i686" system) ./gnu/packages/python-xyz.scm: (when (string-prefix? "i686" ,(%current-system)) ./gnu/packages/machine-learning.scm: ((string-prefix? "i686" system) ./gnu/packages/machine-learning.scm: (string-prefix? "i686" system))) ./gnu/packages/xorg.scm: (filter (lambda (system) (string-prefix? "i686-" system)) ./gnu/packages/xorg.scm: (filter (lambda (system) (or (string-prefix? "i686-" system) ./gnu/packages/compression.scm: ,@(if (string-prefix? "i686" (or (%current-target-system) ./gnu/packages/compression.scm: ((string-prefix? "i686" system) ./gnu/packages/compression.scm: ((string-prefix? "i686" system) ./gnu/packages/node.scm: ((? (cut string-prefix? "i686" <>)) ./gnu/packages/node.scm: ((? (cut string-prefix? "i686" <>)) ./gnu/packages/haskell-web.scm: #:tests? ,(not (string-prefix? "i686" (or (%current-target-system) ./gnu/packages/package-management.scm: (string-prefix? "i686" system))) ./gnu/packages/bioinformatics.scm: (string-prefix? "i686" system)) ./gnu/packages/graph.scm: ((string-prefix? "i686" system) ./gnu/packages/graph.scm: ((string-prefix? "i686" system) ./gnu/packages/lean.scm: (not (or (string-prefix? "i686" arch) ./gnu/packages/virtualization.scm: ((? (cut string-prefix? "i686" <>)) ./gnu/packages/virtualization.scm: ((string-prefix? "i686" system) ./gnu/packages/virtualization.scm: ((string-prefix? "i686" system) ./gnu/packages/password-utils.scm: (string-prefix? "i686" system)) "sse2") ./gnu/ci.scm: (and (or (string-prefix? "i686-" system) ./gnu/system/install.scm: (string-prefix? "i686" %host-type)))) ./gnu/tests/install.scm: ((string-prefix? "i686" system) ./gnu/tests/install.scm: ((string-prefix? "i686" #$system) --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- $ find . -name "*.scm" | xargs grep 'target-x86-32' ./guix/utils.scm: target-x86-32? ./guix/utils.scm:(define* (target-x86-32? #:optional (target (or (%current-target-system) ./tests/utils.scm:(test-equal "target-x86-32?" ./tests/utils.scm: (map target-x86-32? ./gnu/packages/webkit.scm: ,@(if (target-x86-32?) --8<---------------cut here---------------end--------------->8--- Cheers, simon
On Sat, Dec 04, 2021 at 07:27:45PM +0100, zimoun wrote: > Hi Efraim, > > Thanks! > > > On Sat, 04 Dec 2021 at 19:54, Efraim Flashner <efraim@flashner.co.il> wrote: > > > I made a couple of changes, mostly to use target-x86-32? and > > target-64bit?. Patches pushed! Thanks. > > I get 44 instances using ’string-prefix? “i686”’ vs 5 instance using > ’target-x86-32’. For my information, why is target-x86-32 preferred > here? > The string-prefix way is the current way on master to do it. On core-updates we now have the different target macros to try to make all the different times everything comes up have less chance of mistakes.
Hi, On Sun, 05 Dec 2021 at 11:49, Efraim Flashner <efraim@flashner.co.il> wrote: > The string-prefix way is the current way on master to do it. On > core-updates we now have the different target macros to try to make all > the different times everything comes up have less chance of mistakes. Thanks for explaining. On a side note, these macros are not documented in the manual, if I read correctly. Cheers, simon
diff --git a/gnu/local.mk b/gnu/local.mk index 604c6cf151..6e71ad404e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1386,6 +1386,7 @@ dist_patch_DATA = \ %D%/packages/patches/libtirpc-hurd.patch \ %D%/packages/patches/libtommath-fix-linkage.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ + %D%/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch \ %D%/packages/patches/libusb-0.1-disable-tests.patch \ %D%/packages/patches/libusb-for-axoloti.patch \ %D%/packages/patches/libutils-add-includes.patch \ diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 83aa8b1099..17f4a9a169 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -71,13 +71,17 @@ (define libunwind-julia (base32 "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3")) (patches - (list - (julia-patch "libunwind-prefer-extbl" - "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1") - (julia-patch "libunwind-static-arm" - "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq") - (julia-patch "libunwind-cfa-rsp" - "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z"))))) + (append + ;; Fix linker issue for i686-linux because GCC10 changed default + ;; (see '-fno-common' option). + (search-patches "libunwind-julia-fix-GCC10-fno-common.patch") + (list + (julia-patch "libunwind-prefer-extbl" + "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1") + (julia-patch "libunwind-static-arm" + "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq") + (julia-patch "libunwind-cfa-rsp" + "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))) (home-page "https://github.com/JuliaLang/tree/master/deps/"))) (define (julia-patch-url version name) diff --git a/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch b/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch new file mode 100644 index 0000000000..8ef4b111e4 --- /dev/null +++ b/gnu/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch @@ -0,0 +1,40 @@ +Fix compilation with -fno-common. + +Borrowed from upstream 29e17d8d2ccbca07c423e3089a6d5ae8a1c9cb6e. +Author: Yichao Yu <yyc1992@gmail.com> +AuthorDate: Tue Mar 31 00:43:32 2020 -0400 +Commit: Dave Watson <dade.watson@gmail.com> +CommitDate: Tue Mar 31 08:06:29 2020 -0700 + +diff --git a/src/x86/Ginit.c b/src/x86/Ginit.c +index f6b8dc2..9550efa 100644 +--- a/src/x86/Ginit.c ++++ b/src/x86/Ginit.c +@@ -54,13 +54,6 @@ tdep_uc_addr (ucontext_t *uc, int reg) + + # endif /* UNW_LOCAL_ONLY */ + +-HIDDEN unw_dyn_info_list_t _U_dyn_info_list; +- +-/* XXX fix me: there is currently no way to locate the dyn-info list +- by a remote unwinder. On ia64, this is done via a special +- unwind-table entry. Perhaps something similar can be done with +- DWARF2 unwind info. */ +- + static void + put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) + { +@@ -71,7 +64,12 @@ static int + get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) + { +- *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; ++#ifndef UNW_LOCAL_ONLY ++# pragma weak _U_dyn_info_list_addr ++ if (!_U_dyn_info_list_addr) ++ return -UNW_ENOINFO; ++#endif ++ *dyn_info_list_addr = _U_dyn_info_list_addr (); + return 0; + } +