PDA

Bekijk de volledige versie : Где можно скачать toolchain?



mockingbird
29-11-2015, 05:34
Я следую инструкциям для того, чтобы собрать самую последнюю версию.

Инструкции дать ссылку на набор инструментов на code.google.com, но это больше не существует.

Где можно скачать последнюю toolchain?

Кроме того что я должен делать специальные, чтобы заставить его работать с BCM4322 картой?

Спасибо

Извините за перевод Русский, но я думал, что я мог бы получить быстрый ответ на русской секции.

lly
29-11-2015, 08:52
Где можно скачать последнюю toolchain?
Project moved to github, moreover there is automatic redirect from googlecode page set.
Toolchain actual sources
https://github.com/wl500g/toolchain


Кроме того что я должен делать специальные, чтобы заставить его работать с BCM4322 картой?
It's too different task than your first question - say thanks to Broadcom for Wi-Fi driver blob(no sources). You have to read two forum threads:

http://wl500g.info/showthread.php?27717-Mini-PCI-mod-Asus-WL-500gPv1-%28WL-500W%29-%F1-2-4-5-GHz-DualBand
http://wl500g.info/showthread.php?29091-Mini-PCI-e-mod-Asus-RT-N16-%F1-256MB-RAM-%E8-2-4-5-GHz-DualBand

Omega
29-11-2015, 18:01
Проект переехал на GitHub: :)
https://github.com/wl500g
Можно еще посмотреть здесь: ;)
http://vampik.ru/wl500g/toolchain/
http://asus.vectormm.net/compiled%20tools/
Готовые сборки для Asus WL-500gP с картой BCM43222: :D
http://www.mediafire.com/download/c6ka5sda2xh1x0b/WL500gp%2BBRCM43222_Firmwares.exe
http://wl500g.info/showthread.php?24462-Mini-PCI-mod-%E4%E5%EB%E0%E5%EC-%E8%E7-WL-500gPv1-WL-500W-%E8-%EF%EE%EB%F3%F7%E0%E5%EC-Wi-Fi-N-!/page19

mockingbird
30-11-2015, 04:49
Project moved to github, moreover there is automatic redirect from googlecode page set.
Toolchain actual sources
https://github.com/wl500g/toolchain

Thanks.


It's too different task than your first question - say thanks to Broadcom for Wi-Fi driver blob(no sources). You have to read two forum threads:

http://wl500g.info/showthread.php?27717-Mini-PCI-mod-Asus-WL-500gPv1-%28WL-500W%29-%F1-2-4-5-GHz-DualBand
http://wl500g.info/showthread.php?29091-Mini-PCI-e-mod-Asus-RT-N16-%F1-256MB-RAM-%E8-2-4-5-GHz-DualBand
True. B43 is binary only. But this is not a problem anymore. I have heard that it is stable now. Anyways, open source Atheros is not much better. Using DIR-615 C1 with Gargoyle and it is pretty good but not 100%.


Готовые сборки для Asus WL-500gP с картой BCM43222: :D
http://www.mediafire.com/download/c6ka5sda2xh1x0b/WL500gp%2BBRCM43222_Firmwares.exe

Спасибо!

Стоит ли пытаться построить себе? Я прошу, потому что его последняя сборка R5631. Какие различные шаги нужно предпринять построить его для BCM43222?


редактировать: как имена файлов в архиве сказать «WL500W»? (Последний из них является «WL500W-1.9.2.7-РТН r5631M_BRCM_43222_T4.6.3.trx»).

Есть только два для WL - 500G Premium V1, и они являются:
WL500gp-1.9.2.7-РТН r4330M.trx
WL500gp-1.9.2.7-РТН r4717M.trx

редактировать #2:

What is the correct way to build the toolchain?

So far I do:
git clone http://github.com/wl500g/toolchain.git toolchain



Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'gawk'... ok.
Checking 'bison'... ok.
Checking 'flex'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'patch'... ok.
Checking 'perl'... ok.
Checking 'wget'... ok.
Checking 'gnutar'... ok.
Checking 'autoconf'... ok.
Checking 'gnu-find'... ok.
Checking 'git'... ok.
Checking 'non-root'... ok.
#
# using defaults found in .config
#


*** End of Toolchain configuration.
*** Execute 'make' to build the Toolchain or try 'make help'.

+ mkdir -p /opt/brcm/hndtools-mipsel-uclibc-4.6.4
mkdir: cannot create directory `/opt/brcm/hndtools-mipsel-uclibc-4.6.4': Permission denied
+ cd /opt/brcm/hndtools-mipsel-uclibc-4.6.4
bash: line 3: cd: /opt/brcm/hndtools-mipsel-uclibc-4.6.4: No such file or directory
+ mkdir -p bin lib include stamp
install: cannot create regular file `/opt/brcm/hndtools-mipsel-uclibc-4.6.4/info.mk': No such file or directory
/bin/sh: Syntax error: word unexpected
make: *** [world] Error 2


редактировать #3:

Ok, ran "sudo chmod -R user:user opt" to give user access to root directory opt.

Ran make again in toolchain. This time, different error:

"/bin/sh: Syntax error: Word unexpected"

Any idea?

редактировать #4:
Ok, so I think it has to do with the ancient versions of Binutils and GCC on Debian 6 "Squeeze". The only reason I tried on Debian 6 instead of 7 is that compiling on 7 gave me "Stop: Unsupported Target" or something like that. But I think I just need to download 2.6 Kernel headers or source on Debian 7. I'll give it a shot.

Otherwise I'll have to find backports for newer GCC and Binutils for Squeeze... Maybe I'll write a step-by-step process if I'm successful, because the current one, while not outdated, isn't exactly newbie-friendly... What I'd like to know in the meantime is how to modify the 500GPV1 target to use BCM4322. Anyone know?

редактировать #5:
Ok, Debian 7 Wheezy is also too old I think. I'll try to compile the Toolchain on a modern Linux distro.

mockingbird
30-11-2015, 05:13
Eugene,

Are you able to do a compile of the latest build for WL-500G Premium V1 with BCM4322 ?

Thanks

Евгений Л
01-12-2015, 03:21
...в очень важных онлайн играх. Можно ли это как-то побороть или может кто-нибудь встречался с такой проблемой и знает решение? Прошивка последняя от Вас r5631M.
Доброго времени суток. Что-то похожее я видел, но это было критично только для iPhone. Возможно это пофикшено в новой версии драйвера Broadcom, но где его взять я не знаю, я не занимался этим вопросом. Так что вопросы к Broadcom. Новыми сборками я не занимался.
Про "очень важные онлайн игры" - не используйте технологию для того, для чего она не предназначена. Кабельное соединение всегда гораздо стабильнее и не подвержено помехам\отражениям сигнала и прочим минусам, которые есть у радиоканала. Да и латентность у кабельного соединения теоретически ниже. Если вам действительно важны игры - пожалуйста используйте кабель. Все профессиональные геймеры сидят на кабеле.


Are you able to do a compile of the latest build for WL-500G Premium V1 with BCM4322 ?
Yes i am, but i have to fix the build before))) Didn't do that cause it's low priority task for me.

mockingbird
01-12-2015, 03:54
Yes i am, but i have to fix the build before))) Didn't do that cause it's low priority task for me.
Would you also be able to post instructions of how to change the 500GP V1 target to acommodate the BCM4322 please? I am trying to compile myself.

Thanks

I am out of ideas. I'm getting this error in Debian 8 when trying to run 'make' in the toolchain:

/bin/sh: 1: Syntax error: word unexpected
/home/moishe/Downloads/toolchain/include/toplevel.mk:99: recipe for target 'world' failed
make: *** [world] Error 2

lly
01-12-2015, 12:38
I am out of ideas. I'm getting this error in Debian 8 when trying to run 'make' in the toolchain:

/bin/sh: 1: Syntax error: word unexpected
/home/moishe/Downloads/toolchain/include/toplevel.mk:99: recipe for target 'world' failed
make: *** [world] Error 2
toolchain build not intended for end-users, so it has near zero fool-proof rules. You simply must prepare ".config" for it. For example:

make .config

mockingbird
01-12-2015, 22:56
toolchain build not intended for end-users, so it has near zero fool-proof rules. You simply must prepare ".config" for it. For example:

make .config
I tried that now, it gives me this error:


make .config
Checking 'non-root'... ok.
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'gawk'... ok.
Checking 'bison'... ok.
Checking 'flex'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'patch'... ok.
Checking 'perl'... ok.
Checking 'wget'... ok.
Checking 'gnutar'... ok.
Checking 'autoconf'... ok.
Checking 'gnu-find'... ok.
Checking 'git'... ok.
/bin/sh: 1: Syntax error: word unexpected
/home/debian/Downloads/toolchain/include/toplevel.mk:51: recipe for target 'scripts/config/conf' failed
make: *** [scripts/config/conf] Error 2

Zyxmon
02-12-2015, 06:47
I had no problems building this toolchain on debian 8 several months ago.
A couple of tips - add en_US.UTF-8 locale & install libtool-bin and gcc-multilib (for x64 host).

Here is a list of host packages that I use (not for this toolchain, for another project) - http://forums.zyxmon.org/viewtopic.php?f=8&t=17

mockingbird
02-12-2015, 08:39
I had no problems building this toolchain on debian 8 several months ago.
A couple of tips - add en_US.UTF-8 locale & install libtool-bin and gcc-multilib (for x64 host).

Here is a list of host packages that I use (not for this toolchain, for another project) - http://forums.zyxmon.org/viewtopic.php?f=8&t=17
Thank you for your response.

I installed all those packages that you listed in that post (I already had a lot of them), but I'm still getting the same error.

Can you please try to download it again and compile just to see if the problem is really on my end?

git clone http://github.com/wl500g/toolchain.git toolchain

lly
02-12-2015, 09:27
I tried that now, it gives me this error:


...
/bin/sh: 1: Syntax error: word unexpected
/home/debian/Downloads/toolchain/include/toplevel.mk:51: recipe for target 'scripts/config/conf' failed
make: *** [scripts/config/conf] Error 2

OK, there might be some problem in build scripts. To see what happens you have to increase verbosity:

make V=99 .config

mockingbird
02-12-2015, 21:18
OK, there might be some problem in build scripts. To see what happens you have to increase verbosity:

make V=99 .config

Success!

For some reason, with make v=99 it compiles successfully.

The only thing that needs changing in 'make .config' is the default 2.6 kernel source which has your directory specified. I downloaded the latest 2.6 from kernel.org, and voila!



...
....
.....
ln -sf mipsel-linux-gcc /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-linux-cc
ln -sf mipsel-linux-uclibc-g\+\+ /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-g\+\+
ln -sf mipsel-linux-uclibc-addr2line /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-addr2line
ln -sf mipsel-linux-uclibc-as /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-as
ln -sf mipsel-linux-uclibc-c\+\+filt /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-c\+\+filt
ln -sf mipsel-linux-uclibc-gcov /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-gcov
ln -sf mipsel-linux-uclibc-gprof /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-gprof
ln -sf mipsel-linux-uclibc-readelf /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-readelf
ln -sf mipsel-linux-uclibc-c\+\+ /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-c\+\+
ln -sf mipsel-linux-uclibc-cpp /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-cpp
ln -sf mipsel-linux-uclibc-ar /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-ar
ln -sf mipsel-linux-uclibc-gcc /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-gcc
ln -sf mipsel-linux-uclibc-gcc-4.8.5 /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-gcc-4.8.5
ln -sf mipsel-linux-uclibc-ld /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-ld
ln -sf mipsel-linux-uclibc-nm /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-nm
ln -sf mipsel-linux-uclibc-objcopy /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-objcopy
ln -sf mipsel-linux-uclibc-objdump /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-objdump
ln -sf mipsel-linux-uclibc-ranlib /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-ranlib
ln -sf mipsel-linux-uclibc-size /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-size
ln -sf mipsel-linux-uclibc-strings /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-strings
ln -sf mipsel-linux-uclibc-strip /opt/brcm/hndtools-mipsel-uclibc-4.8.5/bin/mipsel-uclibc-strip
make[1]: Leaving directory '/home/debian/Downloads/toolchain'

Thanks. Now it's time to compile the actual firmware.


lly - Do you think it will be simple enough for me to modify the WL500GP V1 target myself to the BCM4322? Or does that require advanced knowledge? It seems like the firmware should already support BCM4322, because the module is showing as selected in the config.

edit:
Got this error during compiling:


mipsel-uclibc-gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -g -O2 -mips32 -mtune=mips32 -Wno-pointer-sign -mno-branch-likely -DBCMWPA2 -I. -I/home/debian/Downloads/wl500g/broadcom/src/gateway/ppp/pppd/.. -idirafter/home/debian/Downloads/wl500g/broadcom/src/linux/linux-2.6/include -MT pptp.lo -MD -MP -MF .deps/pptp.Tpo -c pptp.c -fPIC -DPIC -o .libs/pptp.o
pptp.c: In function 'pptp_start_client':
pptp.c:151:18: error: 'union <anonymous>' has no member named 'pptp'
dst_addr.sa_addr.pptp.sin_addr=*(struct in_addr*)hostinfo->h_addr;
^
pptp.c:154:29: error: 'union <anonymous>' has no member named 'pptp'
route_add(dst_addr.sa_addr.pptp.sin_addr, &rt);
^
pptp.c:160:33: error: 'union <anonymous>' has no member named 'pptp'
addr.sin_addr=dst_addr.sa_addr.pptp.sin_addr;
^
pptp.c:171:19: error: 'union <anonymous>' has no member named 'pptp'
src_addr.sa_addr.pptp.sin_addr=addr.sin_addr;
^
pptp.c:180:23: error: 'PX_PROTO_PPTP' undeclared (first use in this function)
src_addr.sa_protocol=PX_PROTO_PPTP;
^
pptp.c:180:23: note: each undeclared identifier is reported only once for each function it appears in
pptp.c:181:18: error: 'union <anonymous>' has no member named 'pptp'
src_addr.sa_addr.pptp.call_id=0;
^
pptp.c:185:18: error: 'union <anonymous>' has no member named 'pptp'
dst_addr.sa_addr.pptp.call_id=0;
^
pptp.c:201:26: error: 'union <anonymous>' has no member named 'pptp'
call_ID=src_addr.sa_addr.pptp.call_id;
^
pptp.c:210:47: error: 'union <anonymous>' has no member named 'pptp'
callmgr_sock = open_callmgr(src_addr.sa_addr.pptp.call_id, dst_addr.sa_addr.pptp.sin_addr, pptp_phone, 50);
^
pptp.c:210:78: error: 'union <anonymous>' has no member named 'pptp'
callmgr_sock = open_callmgr(src_addr.sa_addr.pptp.call_id, dst_addr.sa_addr.pptp.sin_addr, pptp_phone, 50);
^
pptp.c:217:74: error: 'union <anonymous>' has no member named 'pptp'
} while (get_call_id(callmgr_sock, getpid(), getpid(), &dst_addr.sa_addr.pptp.call_id) < 0);
^
pptp.c:227:60: error: 'union <anonymous>' has no member named 'pptp'
sprintf(ppp_devnam,"pptp (%s)", inet_ntoa(dst_addr.sa_addr.pptp.sin_addr));
^
pptp.c: At top level:
pptp.c:403:1: warning: 'route_del' defined but not used [-Wunused-function]
route_del(struct rtentry *rt)
^
Makefile:298: recipe for target 'pptp.lo' failed
make[3]: *** [pptp.lo] Error 1
make[3]: Leaving directory '/home/debian/Downloads/wl500g/broadcom/src/gateway/accel-pptp/pppd_plugin/src'
Makefile:257: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/debian/Downloads/wl500g/broadcom/src/gateway/accel-pptp/pppd_plugin'
Makefile:186: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/debian/Downloads/wl500g/broadcom/src/gateway/accel-pptp/pppd_plugin'
Makefile:855: recipe for target 'accel-pptp' failed
make: *** [accel-pptp] Error 2
debian@debian:~/Downloads/wl500g/broadcom/src/gateway$


Should I symlink hndtools-mipsel-uclibc-4.6.4 or hndtools-mipsel-uclibc-4.8.5? Compiling toolchain produced both in /opt/brcm.

Thanks

edit: Indeed, the 4.8.5 is the correct version. It will not even start compiling with 4.6.4 symlinked. I will try to remove pptp from menuconfig and see what happens.

edit #2:

Ok, disabled PPTP but now getting this error:



mipsel-uclibc-gcc -Wall -O2 -DUSB_SUPPORT -DQOS -DWPA2_WMM -DASUS_EXT -mips32 -mtune=mips32 -Wno-pointer-sign -mno-branch-likely -DBCMWPA2 -DBCMWPS -ffunction-sections -fdata-sections -I. -I/home/debian/Downloads/wl500g/broadcom/src/gateway/shared -I/home/debian/Downloads/wl500g/broadcom/src/include -idirafter/home/debian/Downloads/wl500g/broadcom/src/linux/linux-2.6/include -Wall -DWEBSTRFILTER -c -o network.o network.c
network.c: In function 'prepare_wan_unit':
network.c:912:12: error: invalid storage class for function 'add_wan_routes'
static int add_wan_routes(const char *wan_ifname)
^
network.c:923:12: error: invalid storage class for function 'del_wan_routes'
static int del_wan_routes(const char *wan_ifname)
^
network.c:2032:13: error: invalid storage class for function 'lan_up'
static void lan_up(const char *lan_ifname)
^
network.c:2156:12: error: invalid storage class for function 'notify_nas'
static int notify_nas(const char *type, const char *ifname, const char *action)
^
network.c:2371:12: error: invalid storage class for function 'wait_for_ifup'
static int wait_for_ifup(const char *prefix, const char *wan_ifname, struct ifreq *ifr)
^
network.c:2412:1: error: expected declaration or statement at end of input
}
^
network.c: At top level:
network.c:45:13: warning: 'lan_up' used but never defined [enabled by default]
static void lan_up(const char *lan_ifname);
^
network.c:46:12: warning: 'wait_for_ifup' used but never defined [enabled by default]
static int wait_for_ifup(const char *prefix, const char *wan_ifname, struct ifreq *ifr);
^
<builtin>: recipe for target 'network.o' failed
make[1]: *** [network.o] Error 1
make[1]: Leaving directory '/home/debian/Downloads/wl500g/broadcom/src/gateway/rc'
Makefile:621: recipe for target 'rc' failed
make: *** [rc] Error 2
debian@debian:~/Downloads/wl500g/broadcom/src/gateway$

lly
03-12-2015, 14:29
For some reason, with make v=99 it compiles successfully.
Looks like no - see following firmware compilation problems.


lly - Do you think it will be simple enough for me to modify the WL500GP V1 target myself to the BCM4322? Or does that require advanced knowledge? It seems like the firmware should already support BCM4322, because the module is showing as selected in the config.

I don't know - it depends on your desire & free time.


edit:
Got this error during compiling:


mipsel-uclibc-gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -g -O2 -mips32 -mtune=mips32 -Wno-pointer-sign -mno-branch-likely -DBCMWPA2 -I. -I/home/debian/Downloads/wl500g/broadcom/src/gateway/ppp/pppd/.. -idirafter/home/debian/Downloads/wl500g/broadcom/src/linux/linux-2.6/include -MT pptp.lo -MD -MP -MF .deps/pptp.Tpo -c pptp.c -fPIC -DPIC -o .libs/pptp.o
pptp.c: In function 'pptp_start_client':
pptp.c:151:18: error: 'union <anonymous>' has no member named 'pptp'
dst_addr.sa_addr.pptp.sin_addr=*(struct in_addr*)hostinfo->h_addr;
Makefile:855: recipe for target 'accel-pptp' failed
make: *** [accel-pptp] Error 2
debian@debian:~/Downloads/wl500g/broadcom/src/gateway$


Something goes wrong and compiler trying to include bad if_pppox.h header file. It must contain both PX_PROTO_PPTP & struct pptp_addr definitions.



edit: Indeed, the 4.8.5 is the correct version. It will not even start compiling with 4.6.4 symlinked. I will try to remove pptp from menuconfig and see what happens.
I should notify you that gcc 4.8.5 still has some problems with global pointers on MIPS in some cases. So, 4.6.4 is default

mockingbird
03-01-2016, 02:23
Hello Eugene,

Have been using your build for a couple of weeks now on the WL-500GP V1 modded with BCM43222 Single Band (Dual Band card is no longer sold).

Have a few questions:

1) Is your modded firmware able to also support dual-band functionality if I was able to obtain such a card?
2) I flashed WL-500W firmware, because that was the latest one. It's working, but I noticed that when overclocking to 300MHZ,
it is displaying 295MHZ which is quite odd. Is this because the WL-500W and WL-500GPV1 CPU clock tables are incompatible?
3) Did you have any time yet to compile the latest build?

Thanks

--------
Здравствуйте Евгений,

Использую сборку в течение нескольких недель на WL-500gP V1 Modded с BCM43222 Single Band (Dual Band карта больше не продается).

Есть несколько вопросов:

1) Возможно ли также поддерживать функциональность двухдиапазонный, если я смог получить такую ​​карту. Является ли ваша прошивка модом?
2) Я залил прошивку WL-500W, потому что это была последняя из них. Это работает, но я заметил, что при разгоне до 300 МГц, это отображение
295MHZ что весьма странно. Является ли это потому, что таблицы тактовой частоты процессора WL-500W и WL-500GPV1 несовместимы?
3) Будет ли у Вас время еще скоро собрать последнюю версию?

Благодарю

mockingbird
26-05-2016, 20:42
WL500gp-1.9.2.7-rtn-r7440M-g736a62c.trx

from

http://asus.vectormm.net/rtn/7440/wl/

Будет ли это приспособить wl500g с BCM43222 мод? Извините за помощью перевода, нет никакой активности на английском разделе форума.

В настоящее время используется 1.9.2.7-RTN-r5631M, но никто не выпустил новый бинарный файл, и я не могу собрать себя. Кроме того, пришлось использовать прошивку WL-500W, но это работает, но хотелось бы использовать встроенное программное обеспечение.

благодаря

mockingbird
26-08-2016, 07:13
Доброго времени суток всем! На данный момент последнюю бету скачало 10 человек и судя по тому, что никаких негативных отзывов не было, бета работает нормально. Обновление беты ниже.

Hi guys! Last beta downloaded 10 times, and there was no negative posts, so seems to be it work fine. Beta firmware update below:

WL500gPv1+Broadcom 4322x r7492 beta firmware (http://www.mediafire.com/download/ltcg4uymqfatyrm/WL500W-1.9.2.7-rtn-r7492M_BRCM_43222-gd58ecca.trx)

Hi Eugene...

Thanks for the continued updates.

I'm experimenting with Shibby's TomatoUSB on the WL-500GP V1 for now (Tomato Firmware 1.28.0000 MIPSR1-138 K26 Mini). Downloaded from here (08/02/2016 build):
http://tomato.groov.pl/download/K26/build5x-138-MultiWAN/tomato-K26-1.28.RT-MIPSR1-138-Mini.zip

Seems more responsive than Oleg's firmware. Works with modified BCM43222 card by default without any modification.

Has an important feature which was lacking on Oleg's firmware which is to view traffic by IP.

voidshah
05-03-2017, 20:03
Gentoo x64
...
make install

make[1]: Leaving directory '/home/oleg/git-rt-n16/broadcom/src/gateway/busybox'
install -D dnsmasq/src/dnsmasq /home/oleg/git-rt-n16/broadcom/src/gateway/mipsel-uclibc/install/dnsmasq/usr/sbin/dnsmasq
install: cannot stat ‘dnsmasq/src/dnsmasq’: No such file or directory
Makefile:922: ошибка выполнения рецепта для цели «dnsmasq-install»
make: *** [dnsmasq-install] Ошибка 1

под Ubuntu 16-x64 аналогично

--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.
--------------------------------------------------

make[1]: Leaving directory `/home/oleg/rt-n16/toolchain/broadcom/src/gateway/busybox'
install -D dnsmasq/src/dnsmasq /home/oleg/rt-n16/toolchain/broadcom/src/gateway/mipsel-uclibc/install/dnsmasq/usr/sbin/dnsmasq
install: cannot stat ‘dnsmasq/src/dnsmasq’: No such file or directory
make: *** [dnsmasq-install] Error 1

voidshah
05-03-2017, 21:12
под Gentoo x64 собирается без проблем,
под Ubuntu 14-x64

make .config
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'gawk'... ok.
Checking 'bison'... ok.
Checking 'flex'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'patch'... ok.
Checking 'perl'... ok.
Checking 'wget'... ok.
Checking 'gnutar'... ok.
Checking 'autoconf'... ok.
Checking 'gnu-find'... ok.
Checking 'git'... ok.
Checking 'non-root'... ok.
/bin/sh: 1: Syntax error: word unexpected
make: *** [scripts/config/conf] Error 2
причем не работает только чистый make, с make V=99 все проходит

в Ubuntu 16-x64 собрать тулчейн в принципе не удается

/bin/bash ./libtool --mode=link x86_64-linux-gnu-gcc -O2 -I/home/oleg/rt-n16/toolchain/staging_dir/host/include -Wall -D_REENTRANT -L/home/oleg/rt-n16/toolchain/staging_dir/host/lib -o testglib testglib.o libglib.la
x86_64-linux-gnu-gcc -O2 -I/home/oleg/rt-n16/toolchain/staging_dir/host/include -Wall -D_REENTRANT -o testglib testglib.o -L/home/oleg/rt-n16/toolchain/staging_dir/host/lib ./.libs/libglib.a
./.libs/libglib.a(garray.o): In function `g_bit_nth_lsf':
garray.c:(.text+0x130): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(garray.o): In function `g_bit_nth_msf':
garray.c:(.text+0x160): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(garray.o): In function `g_bit_storage':
garray.c:(.text+0x1a0): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(ghash.o): In function `g_bit_nth_lsf':
ghash.c:(.text+0x230): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(ghash.o): In function `g_bit_nth_msf':
ghash.c:(.text+0x260): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(ghash.o): In function `g_bit_storage':
ghash.c:(.text+0x2a0): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(glist.o): In function `g_bit_nth_lsf':
glist.c:(.text+0x1a0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(glist.o): In function `g_bit_nth_msf':
glist.c:(.text+0x1d0): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(glist.o): In function `g_bit_storage':
glist.c:(.text+0x210): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gmem.o): In function `g_bit_nth_lsf':
gmem.c:(.text+0x50): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gmem.o): In function `g_bit_nth_msf':
gmem.c:(.text+0x80): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gmem.o): In function `g_bit_storage':
gmem.c:(.text+0xc0): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gmessages.o): In function `g_bit_nth_lsf':
gmessages.c:(.text+0x690): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gmessages.o): In function `g_bit_nth_msf':
gmessages.c:(.text+0x6c0): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gmessages.o): In function `g_bit_storage':
gmessages.c:(.text+0x700): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gmutex.o): In function `g_bit_nth_lsf':
gmutex.c:(.text+0x70): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gmutex.o): In function `g_bit_nth_msf':
gmutex.c:(.text+0xa0): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gmutex.o): In function `g_bit_storage':
gmutex.c:(.text+0xe0): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gnode.o): In function `g_bit_nth_lsf':
gnode.c:(.text+0x860): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gnode.o): In function `g_bit_nth_msf':
gnode.c:(.text+0x890): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gnode.o): In function `g_bit_storage':
gnode.c:(.text+0x8d0): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gprimes.o): In function `g_bit_nth_lsf':
gprimes.c:(.text+0x0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gprimes.o): In function `g_bit_nth_msf':
gprimes.c:(.text+0x30): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gprimes.o): In function `g_bit_storage':
gprimes.c:(.text+0x70): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(grel.o): In function `g_bit_nth_lsf':
grel.c:(.text+0x290): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(grel.o): In function `g_bit_nth_msf':
grel.c:(.text+0x2c0): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(grel.o): In function `g_bit_storage':
grel.c:(.text+0x300): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gslist.o): In function `g_bit_nth_lsf':
gslist.c:(.text+0xf0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gslist.o): In function `g_bit_nth_msf':
gslist.c:(.text+0x120): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gslist.o): In function `g_bit_storage':
gslist.c:(.text+0x160): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gstrfuncs.o): In function `g_bit_nth_lsf':
gstrfuncs.c:(.text+0x0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gstrfuncs.o): In function `g_bit_nth_msf':
gstrfuncs.c:(.text+0x30): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gstrfuncs.o): In function `g_bit_storage':
gstrfuncs.c:(.text+0x70): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gstring.o): In function `g_bit_nth_lsf':
gstring.c:(.text+0xa0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gstring.o): In function `g_bit_nth_msf':
gstring.c:(.text+0xd0): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gstring.o): In function `g_bit_storage':
gstring.c:(.text+0x110): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gtimer.o): In function `g_bit_nth_lsf':
gtimer.c:(.text+0x0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gtimer.o): In function `g_bit_nth_msf':
gtimer.c:(.text+0x30): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gtimer.o): In function `g_bit_storage':
gtimer.c:(.text+0x70): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gtree.o): In function `g_bit_nth_lsf':
gtree.c:(.text+0x960): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gtree.o): In function `g_bit_nth_msf':
gtree.c:(.text+0x990): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gtree.o): In function `g_bit_storage':
gtree.c:(.text+0x9d0): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
./.libs/libglib.a(gutils.o): In function `g_bit_nth_lsf':
gutils.c:(.text+0x0): multiple definition of `g_bit_nth_lsf'
testglib.o:testglib.c:(.text+0x120): first defined here
./.libs/libglib.a(gutils.o): In function `g_bit_nth_msf':
gutils.c:(.text+0x30): multiple definition of `g_bit_nth_msf'
testglib.o:testglib.c:(.text+0x150): first defined here
./.libs/libglib.a(gutils.o): In function `g_bit_storage':
gutils.c:(.text+0x70): multiple definition of `g_bit_storage'
testglib.o:testglib.c:(.text+0x190): first defined here
collect2: error: ld returned 1 exit status
Makefile:393: recipe for target 'testglib' failed
make[8]: *** [testglib] Error 1
make[8]: Leaving directory '/home/oleg/rt-n16/toolchain/build_dir/host/pkg-config-0.22/glib-1.2.8'
Makefile:481: recipe for target 'all-recursive' failed
make[7]: *** [all-recursive] Error 1

lly
06-03-2017, 09:00
Gentoo x64
...
make install

Забыл сделать

make
Исторически, в Makefile прописаны не 100% зависимостей для варианта "make install" БЕЗ "make"

lly
06-03-2017, 09:08
под Gentoo x64 собирается без проблем,
под Ubuntu 14-x64


Checking 'non-root'... ok.
/bin/sh: 1: Syntax error: word unexpected
make: *** [scripts/config/conf] Error 2
причем не работает только чистый make, с make V=99 все проходит

Ньюансы совместимости bash. Увы, у меня Ubuntu под рукой нет, надо выцеплять отладкой make какая конкретно команда не нравится.



в Ubuntu 16-x64 собрать тулчейн в принципе не удается

Это(pkg-config 0.22) единственное место где требуется glib2. Эта библиотека вообще есть в этом дистрибутиве?

Updated: Обновлю pkg-config до 0.28 и, как в OpenWRT, пробью ключ --with-internal-glib. Теоретически должно помочь.

voidshah
06-03-2017, 22:10
Это(pkg-config 0.22) единственное место где требуется glib2. Эта библиотека вообще есть в этом дистрибутиве?


как бы есть,
вот Ubuntu 16

libdbus-glib2.0-cil/xenial,xenial 0.6.0-1build1 all
libdbus-glib2.0-cil-dev/xenial,xenial 0.6.0-1build1 all
libfso-glib2/xenial 2012.07.27.2-2 amd64
libglib2.0-0/xenial-updates,now 2.48.2-0ubuntu1 amd64 [installed]
libglib2.0-0-dbg/xenial-updates 2.48.2-0ubuntu1 amd64
libglib2.0-0-refdbg/xenial-updates 2.48.2-0ubuntu1 amd64
libglib2.0-bin/xenial-updates,now 2.48.2-0ubuntu1 amd64 [installed]
libglib2.0-cil/xenial 2.12.10-6 amd64
libglib2.0-cil-dev/xenial 2.12.10-6 amd64
libglib2.0-data/xenial-updates,xenial-updates,now 2.48.2-0ubuntu1 all [installed]
libglib2.0-dev/xenial-updates 2.48.2-0ubuntu1 amd64
libglib2.0-doc/xenial-updates,xenial-updates 2.48.2-0ubuntu1 all
libglib2.0-tests/xenial-updates 2.48.2-0ubuntu1 amd64
libntrack-glib2/xenial 016-1.3 amd64
libpackagekit-glib2-16/xenial-updates,now 0.8.17-4ubuntu6~gcc5.4ubuntu1.1 amd64 [installed]
libpackagekit-glib2-dev/xenial-updates 0.8.17-4ubuntu6~gcc5.4ubuntu1.1 amd64
libtaglib2.1-cil/xenial,xenial 2.1.0.0-3build1 all
ruby-glib2/xenial 2.2.5-4build1 amd64
ruby-glib2-dbg/xenial 2.2.5-4build1 amd64
вот Ubuntu 14

libdbus-glib2.0-cil/trusty 0.6.0-1 all
libdbus-glib2.0-cil-dev/trusty 0.6.0-1 all
libfso-glib2/trusty 2012.07.27.2-2 amd64
libglib2.0-0/trusty-updates,now 2.40.2-0ubuntu1 amd64 [installed,automatic]
libglib2.0-0-dbg/trusty-updates 2.40.2-0ubuntu1 amd64
libglib2.0-0-refdbg/trusty-updates 2.40.2-0ubuntu1 amd64
libglib2.0-bin/trusty-updates,now 2.40.2-0ubuntu1 amd64 [installed,automatic]
libglib2.0-cil/trusty 2.12.10-5 amd64
libglib2.0-cil-dev/trusty 2.12.10-5 amd64
libglib2.0-data/trusty-updates,now 2.40.2-0ubuntu1 all [installed,automatic]
libglib2.0-dev/trusty-updates 2.40.2-0ubuntu1 amd64
libglib2.0-doc/trusty-updates 2.40.2-0ubuntu1 all
libglib2.0-tests/trusty-updates 2.40.2-0ubuntu1 amd64
libntrack-glib2/trusty 016-1.2ubuntu2 amd64
libpackagekit-glib2-16/trusty,now 0.8.12-1ubuntu5 amd64 [installed,automatic]
libpackagekit-glib2-dev/trusty 0.8.12-1ubuntu5 amd64
libtaglib2.1-cil/trusty 2.1.0.0-3 all
ruby-glib2/trusty 2.1.0-1 amd64
ruby-glib2-dbg/trusty 2.1.0-1 amd64
ruby-taglib2/trusty 0.1.5-2 amd64



Ньюансы совместимости bash. Увы, у меня Ubuntu под рукой нет, надо выцеплять отладкой make какая конкретно команда не нравится.
Как это делать? Как будет время, мог бы повыцеплять :)

lly
07-03-2017, 20:11
как бы есть
Я совсем упустил из виду, что в старье 0.22 аж glib1.
Возьми свежий срез тулчейна 4cc705f - проблема pkg-config должна быть решена.


Как это делать? Как будет время, мог бы повыцеплять :)
Отладочными ключами make (-n или -d), раз вариант V=99 работает. Или, для начала, понять на какой фазе/цели сбоит - "make prereq" или "make world"?

voidshah
08-03-2017, 19:03
make -d prereq


GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'Makefile'...
....
Checking 'non-root'... ok.
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'gawk'... ok.
Checking 'bison'... ok.
Checking 'flex'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'patch'... ok.
Checking 'perl'... ok.
Checking 'wget'... ok.
Checking 'gnutar'... ok.
Checking 'autoconf'... ok.
Checking 'gnu-find'... ok.
Checking 'git'... ok.
Reaping winning child 0x178f0d0 PID 3093
Live child 0x178f0d0 (staging_dir/host/.prereq-build) PID 3289
Reaping winning child 0x178f0d0 PID 3289
Live child 0x178f0d0 (staging_dir/host/.prereq-build) PID 3290
Reaping winning child 0x178f0d0 PID 3290
Removing child 0x178f0d0 PID 3290 from chain.
Successfully remade target file 'staging_dir/host/.prereq-build'.
Finished prerequisites of target file 'scripts/config/conf'.
Must remake target 'scripts/config/conf'.
Putting child 0x17937d0 (scripts/config/conf) PID 3293 on the chain.
Live child 0x17937d0 (scripts/config/conf) PID 3293
/bin/sh: 1: Syntax error: word unexpected
Reaping losing child 0x17937d0 PID 3293
/home/oleg/rt-n16/toolchain/include/toplevel.mk:38: recipe for target 'scripts/config/conf' failed
make: *** [scripts/config/conf] Error 2
Removing child 0x17937d0 PID 3293 from chain.

что ему не так - не понял :(

lly
09-03-2017, 09:34
что ему не так - не понял :(
Похоже, bash не нравятся перенаправления stdin/stderr в include/verbose.mk для случая QUIET=1

Давай только ещё раз убедимся, что я увидел твою проблему. Для этого добавь перед строкой 44 в include/verbose.mk (https://github.com/wl500g/toolchain/blob/master/include/verbose.mk#L44) следующее

$(warning $(call MESSAGE, make[$(MAKELEVEL)]$(if $(_DIR), -C $(_DIR)) $(MAKECMDGOALS)); )
и выполни команду

make scripts/config/conf QUIET=1

voidshah
09-03-2017, 17:30
ifeq ($(QUIET),1)
ifneq ($(CURDIR),$(TOPDIR))
_DIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
else
_DIR:=
endif
$(warning $(call MESSAGE, make[$(MAKELEVEL)]$(if $(_DIR), -C $(_DIR)) $(MAKECMDGOALS)); )
_NULL:=$(if $(MAKECMDGOALS),$(shell \
$(call MESSAGE, make[$(MAKELEVEL)]$(if $(_DIR), -C $(_DIR)) $(MAKECMDGOALS)); \
))
SUBMAKE=$(MAKE)

вывод make scripts/config/conf QUIET=1

make scripts/config/conf QUIET=1
/home/oleg/rt-n16/toolchain/include/verbose.mk:44: printf "\\033[33m%s\\033[m\n" " make[0] scripts/config/conf" >&254;
/bin/sh: 1: Syntax error: Bad fd number
conf.c: In function 'check_stdin':
conf.c:77:3: warning: format not a string literal and no format arguments [-Wformat-security]
printf(_("aborted!\n\n"));
^
conf.c:78:3: warning: format not a string literal and no format arguments [-Wformat-security]
printf(_("Console input/output is redirected. "));
^
conf.c:79:3: warning: format not a string literal and no format arguments [-Wformat-security]
printf(_("Run 'make oldconfig' to update configuration.\n\n"));
^
conf.c: In function 'conf_askvalue':
conf.c:89:3: warning: format not a string literal and no format arguments [-Wformat-security]
printf(_("(NEW) "));
^
conf.c: In function 'conf_choice':
conf.c:290:5: warning: format not a string literal and no format arguments [-Wformat-security]
printf(_(" (NEW)"));
^
conf.c: In function 'check_conf':
conf.c:438:6: warning: format not a string literal and no format arguments [-Wformat-security]
printf(_("*\n* Restart config...\n*\n"));
^
conf.c: In function 'main':
conf.c:615:6: warning: format not a string literal and no format arguments [-Wformat-security]
_("\n*** The configuration requires explicit update.\n\n"));
^
conf.c:669:4: warning: format not a string literal and no format arguments [-Wformat-security]
fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
^
conf.c:673:4: warning: format not a string literal and no format arguments [-Wformat-security]
fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
^
conf.c:684:4: warning: format not a string literal and no format arguments [-Wformat-security]
fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
^

lly
09-03-2017, 18:06
/bin/sh: 1: Syntax error: Bad fd number

Небольшой фикс запушил,эта ошибка аналогична полученной мною, пробуй. А вот предыдущая:
/bin/sh: 1: Syntax error: word unexpected мне пока непонятна.

voidshah
09-03-2017, 20:21
Спасибо, Лёня! Тулчейн собрался нормально!