ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:96499] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
@ 2019-12-26 20:03 ` luizluca
  2019-12-26 22:29 ` [ruby-core:96504] " mame
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: luizluca @ 2019-12-26 20:03 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been reported by luizluca (Luiz Angelo Daros de Luca).

----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
https://bugs.ruby-lang.org/issues/16455

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt
 -linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:96504] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
  2019-12-26 20:03 ` [ruby-core:96499] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl luizluca
@ 2019-12-26 22:29 ` mame
  2019-12-27  4:19 ` [ruby-core:96509] " nobu
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: mame @ 2019-12-26 22:29 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been updated by mame (Yusuke Endoh).

Assignee set to ioquatix (Samuel Williams)

----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
https://bugs.ruby-lang.org/issues/16455#change-83436

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt
 -linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:96509] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
  2019-12-26 20:03 ` [ruby-core:96499] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl luizluca
  2019-12-26 22:29 ` [ruby-core:96504] " mame
@ 2019-12-27  4:19 ` nobu
  2019-12-30 22:22 ` [ruby-core:96601] " luizluca
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: nobu @ 2019-12-27  4:19 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been updated by nobu (Nobuyoshi Nakada).


luizluca (Luiz Angelo Daros de Luca) wrote:
> I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

Does `—-with-coroutine=copy` work?

----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
https://bugs.ruby-lang.org/issues/16455#change-83442

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:96601] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
                   ` (2 preceding siblings ...)
  2019-12-27  4:19 ` [ruby-core:96509] " nobu
@ 2019-12-30 22:22 ` luizluca
  2019-12-31  1:09 ` [ruby-core:96603] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc luizluca
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: luizluca @ 2019-12-30 22:22 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been updated by luizluca (Luiz Angelo Daros de Luca).


nobu (Nobuyoshi Nakada) wrote:
> luizluca (Luiz Angelo Daros de Luca) wrote:
> > I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.
> 
> Does `—-with-coroutine=copy` work?

Yes. And it also affects uclibc.

autoconf should test for getcontext/swapcontext/makecontext at link time as musl do have them declared (but not implemented). uclibc fails even before, while building as it does not even declare them.

For those cases, copy might work.

----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl
https://bugs.ruby-lang.org/issues/16455#change-83568

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:96603] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
                   ` (3 preceding siblings ...)
  2019-12-30 22:22 ` [ruby-core:96601] " luizluca
@ 2019-12-31  1:09 ` luizluca
  2019-12-31  3:06 ` [ruby-core:96605] " luizluca
  2020-01-17 20:07 ` [ruby-core:96931] " samuel
  6 siblings, 0 replies; 7+ messages in thread
From: luizluca @ 2019-12-31  1:09 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been updated by luizluca (Luiz Angelo Daros de Luca).

Subject changed from coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl to coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc

nobu (Nobuyoshi Nakada) wrote:
> luizluca (Luiz Angelo Daros de Luca) wrote:
> > I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.
> 
> Does `—-with-coroutine=copy` work?

I created a patch to fix the build with musl/uclibc:

```
--- a/configure.ac
+++ b/configure.ac
@@ -2344,7 +2344,10 @@ AS_CASE([$rb_cv_coroutine], [yes|''], [
             rb_cv_coroutine=copy
         ],
         [*], [
-            rb_cv_coroutine=ucontext
+            AC_CHECK_FUNCS([getcontext swapcontext makecontext],
+                [rb_cv_coroutine=ucontext],
+                [rb_cv_coroutine=copy; break]
+            )
         ]
     )
     AC_MSG_RESULT(${rb_cv_coroutine})
```

It is ugly as it outputs AC_CHECK_FUNCS tests in the middle of checking coroutine implementations.

----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc
https://bugs.ruby-lang.org/issues/16455#change-83571

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:96605] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
                   ` (4 preceding siblings ...)
  2019-12-31  1:09 ` [ruby-core:96603] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc luizluca
@ 2019-12-31  3:06 ` luizluca
  2020-01-17 20:07 ` [ruby-core:96931] " samuel
  6 siblings, 0 replies; 7+ messages in thread
From: luizluca @ 2019-12-31  3:06 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been updated by luizluca (Luiz Angelo Daros de Luca).


There is also a missing include for copy to work with musl:

```
+--- a/coroutine/copy/Context.h
++++ b/coroutine/copy/Context.h
+@@ -13,6 +13,7 @@
+ #include <string.h>
+ #include <stdlib.h>
+ #include <alloca.h>
++#include <sys/types.h>
+ 
+ #define COROUTINE __attribute__((noreturn)) void
+
``` 


----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc
https://bugs.ruby-lang.org/issues/16455#change-83573

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt
 -linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:96931] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc
       [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
                   ` (5 preceding siblings ...)
  2019-12-31  3:06 ` [ruby-core:96605] " luizluca
@ 2020-01-17 20:07 ` samuel
  6 siblings, 0 replies; 7+ messages in thread
From: samuel @ 2020-01-17 20:07 UTC (permalink / raw)
  To: ruby-core

Issue #16455 has been updated by ioquatix (Samuel Williams).


Copy implementation is the right one. But what architecture are you compiling for because copy coroutine is so slow.

----------------------------------------
Bug #16455: coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc
https://bugs.ruby-lang.org/issues/16455#change-83958

* Author: luizluca (Luiz Angelo Daros de Luca)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091)
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hello,

While building ruby 2.7.0 for mips with musl, it fails:


```
linking miniruby                                                                                   /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `coroutine_initialize_main':                                                                                cont.c:(.text+0x36c): undefined reference to `getcontext'                                          /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt-linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_setcontext':                                                                                         cont.c:(.text+0xde6): undefined reference to `swapcontext'                                         /home/luizluca/prog-local/openwrt/trunk/staging_dir/toolchain-mips_24kc_gcc-8.3.0_musl/lib/gcc/mips-openwrt
 -linux-musl/8.3.0/../../../../mips-openwrt-linux-musl/bin/ld: cont.o: in function `fiber_switch':                                                                                             cont.c:(.text+0x16b8): undefined reference to `makecontext'                                        collect2: error: ld returned 1 exit status                                                         make[3]: *** [Makefile:271: miniruby] Error 1
```

It seems that now ruby either uses native ASM code or ucontext for coroutine.
Both are unavailable in my crossbuild. It was building and running with 2.6.x:

```
configure:25935: checking native coroutine implementation for mips-linux-gnu                       configure:25976: result: no
```

With 2.7.0:

```
configure:26536: checking native coroutine implementation for mips-linux-gnu                       configure:26601: result: ucontext
```

I tried to disable it with --without-coroutine, --with-out-coroutine and --with-coroutine=no, but it is innocuous or try to use a "no" implementation.

It looks like this introduced the change https://github.com/ruby/ruby/commit/7291fef55c90b9ab6b3c22018b16972861b98c9d

And musl might never fix it:
https://wiki.musl-libc.org/open-issues.html





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-01-17 20:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <redmine.issue-16455.20191226200344@ruby-lang.org>
2019-12-26 20:03 ` [ruby-core:96499] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl luizluca
2019-12-26 22:29 ` [ruby-core:96504] " mame
2019-12-27  4:19 ` [ruby-core:96509] " nobu
2019-12-30 22:22 ` [ruby-core:96601] " luizluca
2019-12-31  1:09 ` [ruby-core:96603] [Ruby master Bug#16455] coroutine ucontext uses deprecated POSIX getcontext/swapcontext/makecontext, absent in musl and uclibc luizluca
2019-12-31  3:06 ` [ruby-core:96605] " luizluca
2020-01-17 20:07 ` [ruby-core:96931] " samuel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).