Anonymous
musl?
Dmitry
не пойдет, надо интегрировать в билдрут, где используется uclibc
Dmitry
ну и данный таргет есть в списке
Dmitry
tier3
Dmitry
dmz@zen ~ $ rustc --print target-list | grep mipsel mipsel-unknown-linux-gnu mipsel-unknown-linux-musl mipsel-unknown-linux-uclibc
Anonymous
хм, у меня uclib нет в списке
Anonymous
~ ➤ rustup target list | grep mipsel mipsel-unknown-linux-gnu mipsel-unknown-linux-musl
Dmitry
тут заявлен https://forge.rust-lang.org/platform-support.html
Vladimir
а в расте есть
Anonymous
а
Dmitry
есть, но собрать с ним ничего не могу - не может найти std crate например
Dmitry
ну и вообще говорит что таргет не установлен
Vladimir
xargo юзал?
Vladimir
кинь конфиг
Dmitry
по мануалу не получилось ничего. сейчас попробую
Vladimir
точнее даже залей на гитхаб
Dmitry
да нечего заливать на самом деле, я его скопипастил с мануала который нагуглил, никакой ценности там нет
Anonymous
https://github.com/rust-lang/rust/issues/38172
Dmitry
ну, собрать 1.22.1 у меня так не получилось
Dmitry
ошибки при сборке
Dmitry
т.е да, я пробовал всё, что нагуглил
Anonymous
какая ошибка?
Anonymous
если ошибка при сборке компилятора, то лучше у разрабов на гитхабе спросить чо как
Dmitry
примерно такого рода: error[E0432]: unresolved import `sys::net::netc::IPV6_ADD_MEMBERSHIP` --> src/libstd/sys_common/net.rs:33:5 | 33 | use sys::net::netc::IPV6_ADD_MEMBERSHIP; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `IPV6_ADD_MEMBERSHIP` in the root. Did you mean to use `IP_ADD_MEMBERSHIP`?
Anonymous
ой, не, братюнь, это уже к тем, кто шарит в кишках
Dmitry
я их и ищу
Anonymous
а ты на каком дистрибутиве сидишь?
Dmitry
но оно ж должно с гитхаба собираться вообще по идее
Dmitry
ubuntu 16.04
Vladimir
с гитхаба должно, но лучше свои сорцы собери
Vladimir
вроде как растап тащит с собой сорцы
Dmitry
а как его обычно собирают вообще? поставил сорцы, скопировал configure/make вот это всё?
Vladimir
хз вообще никогда не было нужнды компилить раст
Vladimir
но если ты скинешь пример проекта я бы мог попробовать заюзать xargo
Dmitry
ну hello world собрать для mipsel-unknown-linux-uclibc
Dmitry
что бы хотя бы собралось
Dmitry
или хотя бы дошло до стадии, когда линкер нужен
Anonymous
падажжи, ебана
Vladimir
ну окей ща попробу
Anonymous
тебе надо под опенврт что ли?
Dmitry
ну физически там не опенврт, но отдаленно похоже
Anonymous
а тут читал? https://github.com/japaric/rust-cross
Dmitry
да
Dmitry
собственно, по этому мануалу и пытался делать
Anonymous
попробуй собрать это https://github.com/japaric/docker/tree/master/rust-uclibc
Vladimir
@voidlizard https://github.com/rust-lang/rust/issues/43503 As mipsel-*-ulibc is a obscure platform without a full-time maintainer, the fastest way to have this fixed would be to send the necessary fixes as a PR.
Vladimir
у меня такая же ошибка если че
Vladimir
т.е. если поправить сорцы, то может и получится собрать, тебе точно нужна вся стд?
Vladimir
может ограничешься каким-то субсетом?
Vladimir
например мусл у меня на линкере вывалился error: linking with `cc` failed: exit code: 1 |
Dmitry
пока не могу сказать, но конкретно IPV6 выглядит нужной вещью
Dmitry
при этом непонятно, что в ней такого, что на какой-нибудь arm собирается, а на мипс - нет
Anonymous
я хз, короч. если захочешь собирать на линуксах под макось - приходи. а эти ваши мипсы
Dmitry
да
Vladimir
есть гдето линк на доку ulibc
Dmitry
мусл у нас тёк, кстати
Dmitry
вернулись на uclibc с тех пор и на мусл забили
Vladimir
посмотрел я короче сорцы
Vladimir
там столько костылей для mips
Vladimir
мусл у нас тёк, кстати
может дело в алокаторе?
Vladimir
или тек стек?
Dmitry
там мутная история была, но не существенно. все равно обратно на мусл никто не будет переходить больше
Dmitry
а эти врапперы они не автоматом генерятся откуда нибудь?
Vladimir
да, там походу с импортами косяк
Vladimir
но там такая лапша с этими макросами, что без сто грамм не разберешься
Vladimir
кстати стд так быстро компилится
Vladimir
неожиданно
Vladimir
в общем @voidlizard нужно патчить растовую либу
Vladimir
mips 64 pub struct sigaction { pub sa_flags: ::c_int, pub sa_sigaction: ::sighandler_t, pub sa_mask: sigset_t, _restorer: *mut ::c_void, } mips 32 pub struct sigaction { pub sa_flags: ::c_uint, pub sa_sigaction: ::sighandler_t, pub sa_mask: sigset_t, _restorer: *mut ::c_void, }
Vladimir
кайф
Vladimir
кто интересно девелопер ulibc
Vladimir
@voidlizard в общем удалось у меня до линкер ерора дойти note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-L" "/Users/=/.xargo/lib/rustlib/mipsel-unknown-linux-uclibc/lib" "/var/folders/cb/xwk7всего два места поправить
Vladimir
Index: libstd/sys_common/net.rs IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- libstd/sys_common/net.rs (revision ) +++ libstd/sys_common/net.rs (revision ) @@ -24,22 +24,26 @@ #[cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "ios", target_os = "macos", target_os = "openbsd", target_os = "netbsd", - target_os = "solaris", target_os = "haiku", target_os = "l4re", target_env = "uclibc"))] + target_os = "solaris", target_os = "haiku", + target_os = "l4re", target_env = "uclibc"))] use sys::net::netc::IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP; #[cfg(not(any(target_os = "dragonfly", target_os = "freebsd", target_os = "ios", target_os = "macos", target_os = "openbsd", target_os = "netbsd", - target_os = "solaris", target_os = "haiku", target_os = "l4re", target_env = "uclibc")))] + target_os = "solaris", target_os = "haiku", + target_os = "l4re", target_env = "uclibc")))] use sys::net::netc::IPV6_ADD_MEMBERSHIP; #[cfg(any(target_os = "dragonfly", target_os = "freebsd", target_os = "ios", target_os = "macos", target_os = "openbsd", target_os = "netbsd", - target_os = "solaris", target_os = "haiku", target_os = "l4re", target_env = "uclibc"))] + target_os = "solaris", target_os = "haiku", + target_os = "l4re", target_env = "uclibc"))] use sys::net::netc::IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP; #[cfg(not(any(target_os = "dragonfly", target_os = "freebsd", target_os = "ios", target_os = "macos", target_os = "openbsd", target_os = "netbsd", - target_os = "solaris", target_os = "haiku", target_os = "l4re", target_env = "uclibc")))] + target_os = "solaris", target_os = "haiku", + target_os = "l4re", target_env = "uclibc")))] use sys::net::netc::IPV6_DROP_MEMBERSHIP; #[cfg(any(target_os = "linux", target_os = "android", Index: liblibc/src/unix/uclibc/mips/mips32.rs IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- liblibc/src/unix/uclibc/mips/mips32.rs (revision ) +++ liblibc/src/unix/uclibc/mips/mips32.rs (revision ) @@ -66,7 +66,7 @@ } pub struct sigaction { - pub sa_flags: ::c_uint, + pub sa_flags: ::c_int, pub sa_sigaction: ::sighandler_t, pub sa_mask: sigset_t, _restorer: *mut ::c_void, На, можешь отправить в rustc
պլհկ
кто интересно девелопер ulibc
Да в мусле та же фигня
Vladimir
зачем может быть нужно кому-то так извращаться?
Vladimir
кстати я не нашел сорца откуда раст это нагенерил, вроде в репе uclibc всё ок
պլհկ
Руками скорей всего написано, возможно для старой версии
Vladimir
я думал там bindgen активно юзают
Vladimir
столько однообразного кода, что можно ебануться