nxming - он не получка, не аванс. (nxwin + Xming == nxming)

Модераторы: dimbor, Модераторы разделов

dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

nxming - он не получка, не аванс.

Сообщение dimbor »

Вдоволь накурощавшись nx-клиента для windows от номашин, вернее его основную открытую часть - nxwin, пришел к выводу, что тормознутость его работы непобедима без радикального шага. А шаг этот - переход от Cygwin к чистому WinAPI.
Тут, как по заказу приоткрылись исходники Xming, который заделан из общего папы xwin именно таким манером. Значит получить требуемого мутанта не является такой уж сверх-трудоемкой задачей. Было бы терпение. Так или иначе обо всем этом уже писано в "Курощении".
В этой теме мечтается увидеть бурное обсуждение процесса разработки и массу искрометных идей. ;) Этих идей пока в недостатке.
Также думаю, что эту тему не погонят из раздела "Бизнес и бухгалтерия под Линукс" по причинам: а) хороший терминальный вин-клиент способствует промышленному применению учетных программ под вайном там, где полный переход на OSS пока невозможен. б) давно тут сидим.

А еще конечно мечтается, что "старший брат"© не оставит без внимания данные потуги и поможет информацией с компетентных высот.
Засим вступительную часть кончаю.

История первая: Собираем для начала работающий Xming.


Хорошая новость - его надо собирать под линуксом. Собирал под ALS4 бранч. На других системах наверное все похоже плюс-минус лапоть.
Для вдохновения использовалась инструкция с родного сайта Xming.

1) Необходимо установить пакеты кросс-компилятора: i386-mingw32msvc, i386-mingw32msvc-binutils, i386-mingw32msvc-gcc, i386-mingw32msvc-gcc-c++, i386-mingw32msvc-runtime, i386-mingw32msvc-devel. (Для некоторых систем i586-* - не суть, окончание msvc тоже формальность конкретной системы, главное - чтобы mingw32 там было. ;) )
А также i386-mingw32msvc-zlib, i386-mingw32msvc-libjpeg, i386-mingw32msvc-libpng + *-devel + *-devel-static.

2) Перелопачивание конфигов и Imakefiles-ов Xming-а на тему исправления путей к нашей кросс-цветомузыке признано нецелесообразным. Проще последовать рецепту из инструкции и выполнить от рута файлик cross_prepare. Нужно для унификации имен компилера, линкера,... etc. Естественно, перед этим надо проверить действительность указанных там каталогов для конкретной системы - установки mingw32.

3) Дальше нужно собрать/установить pthreads. Сам я собрал пакет под Альт, src.rpm прилагаю, может кто не поленится довести его содержимое до ментейнеров, чтобы они его включили в дистрибы от своего имени. А вручную можно сделать так, как написано в оригинальной инструкции, только исходники с патчами брать здесь, а хидеры и либы копировать в свое дерево установки i386-mingw32msvc. (Внимание! Здесь и далее. Т.к. имеем кросс-компиляцию, каталоги инклудов, бинарей и либ ни в коем случае не должны пересекаться с "родными" - выйдет ну чистое порно.)

4) Создаем корневой каталог сборки (nxming), помещаем туда содержимое архива исходников Xming 3.6.9.31. Все родные патчи туда уже наложены. Переименовываем каталог xc0 в nx-X11 - пригодится на будущее.

5) Приложенный архив - в тот же каталог. В нем находятся отсутствующие ресурсы и мой патч под изменившуюся (???) структуру заголовочных файлов mingw-runtime. (Ресурсы/иконки может и не те, но собиралось только с позиции общей работоспособности).

6) Накладываем на дерево патч.

7) Запускаем в nx-X11 файл ./mktree, скрещиваем/расставляем пальцы на удачу.

8) Получаем в scratch/ бинарники, которыми можно заменить аналогичные установленного Xming. Оно в первом приближении работает.


Xming спекся. Можно двигаться дальше.

Добавляем из дерева исходников nx-клиента, каталоги nxcomp, nxcompsh, nxssh, потом интересуемся сделанными nomachine исправлениями в оригиналах (архив тоже здесь). Делаем выводы:
dimbor писал(а):
30.06.2009 04:37
Заморочился с "nxming". не по-детски. Напишу здесь, и может мне кто-нить даст идеи. В лучшем случае поможет. Работы там валом, один буду долго ковыряться. Даже не факт, что победю.
Задача стоит избавиться от цигвина, собрать под mingw: nxcomp, nxcompext, nxssh, nxwin. Также пересобрать новый libX, добавив туда патчи номашин на тему NX_TRANS_SOCKET.
Имею проблемы портирования:
- отсутствие fork() - решаемо like xming пользованием pthreads-win32, но надо ковыряться в букварях и в коде.
- linux sockets -> windows sockets - документация кой-какая в сети имеется, в xming тоже можно подсмотреть.
- отсутствие setuid/getuid и прочей польз. обвязки - даже где подсмотреть пока не знаю за исключением самого цигвина (MSYS не катит - крив).
- файловый доступ, пути и пр. - в принципе решаемо и даже проще, чем все остальное.


Репу чешем, чешем, чешем....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: nxming - он не получка, не аванс.

Сообщение bsavelev »

можно полный список mingw32 пакетов необходимых для сборки? ( rpm -qa |grep mingw )

у меня вылетает на
fsconvert.c: In function '_fs_convert_props':
fsconvert.c:110: error: 'SIZE_MAX' undeclared (first use in this function)
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: nxming - он не получка, не аванс.

Сообщение bsavelev »

а. туплю. патч был даден не зря ;-)
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: nxming - он не получка, не аванс.

Сообщение bsavelev »

gcc4 не компилит-(
rootlessScreen.c: In function 'RootlessAllocatePrivates':
rootlessScreen.c:571: error: lvalue required as left operand of assignment
make[4]: *** [rootlessScreen.o] Ошибка 1
make[4]: Leaving directory `/tmp/.private/boris/BUILD/nx-X11/programs/Xserver/miext/rootless'
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

Ужель там макросы отменили?
Имеем ашипку в таком месте:

Код: Выделить всё

RootlessScreenRec *s;
...
SCREENREC(pScreen) = s;


Меж тем:

Код: Выделить всё

#define SCREENREC(pScreen) \
   ((RootlessScreenRec *)(pScreen)->devPrivates[rootlessScreenPrivateIndex].ptr)


Вроде как смотрится как чики-пуки - самое что-ни-на-есть lvalue.
А матерые "сионисты" читают про бизнес с бухгалтерией под линукс?
Хотелось бы услышать их комментарии. Может там надоть при компиляции ключик хитровывернутый воткнуть?
А то чой-то этот gcc на VB похож.
Спасибо сказали:
prof
Сообщения: 119
ОС: gentoo

Re: nxming - он не получка, не аванс.

Сообщение prof »

dimbor писал(а):
30.07.2009 23:38

Код: Выделить всё

#define SCREENREC(pScreen) \
   ((RootlessScreenRec *)(pScreen)->devPrivates[rootlessScreenPrivateIndex].ptr)
А откуда возьмётся значение rootlessScreenPrivateIndex? Или это константа какая-то?
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

prof писал(а):
31.07.2009 00:25
А откуда возьмётся значение rootlessScreenPrivateIndex? Или это константа какая-то?

Глобальная переменная int, определена в том-же хидере, что макрос вру - extern . Устанавливается при инициализации. Дело-то в том, что этот код компилится под mingw gcc 3.4.5 (и потом работает), а под четверкой - нет. Мало того, никто туда еще не лез - код оригинальный от Xorg 3.6.9.
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: nxming - он не получка, не аванс.

Сообщение bsavelev »

грешил на криво собранный gcc4.4. но нет. проверил в fedora 11 та же фигня. мб это регресс в gcc?-)))
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: nxming - он не получка, не аванс.

Сообщение bsavelev »

кстати. на сколько важна версия?
есть вот альтернатива -- http://mirror.yandex.ru/mirrors/ftp.cygwin...rg/xorg-server/

там и патчи xming присутствуют
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

bsavelev писал(а):
31.07.2009 15:44
мб это регресс в gcc?-)))

Все мельчает. ;) От вайна заразилося. На самом деле, наверняка этому можно нарыть объяснения в доках гы-си-си, но ломливо - распыляться не хочется. Как-то вот так:

bsavelev писал(а):
31.07.2009 16:37
кстати. на сколько важна версия?

В дальнейшем будет очень даже не важна. Причем что версия XOrg, что - компилятора.
А на текущем этапе при "полу-портировании" nx-ного протокола надо наворачивать его на рабочую сборку. Вот и выбрана гарантированно рабочая пара 3.6.9.31 + 3.4.5.

Если получится, то можно и циферки увеличивать. Сейчас закопался в дебри портирования. Даже термин изобрел "полу-портирование". Означает - что нужно при всем старании учитывать, что закрытая часть клиента ведет себя с остальными компонентами как с цигвиновскими программами.

Т.ч. все еще выясняется не то что бы принципиальная возможность, а пытаюсь чтобы получающееся не оказалось тормознее, чем под цигвином ;). Трудюсь.
Спасибо сказали:
TheLT
Сообщения: 83
ОС: Gentoo

Re: nxming - он не получка, не аванс.

Сообщение TheLT »

А почему-бы Вам не сделать себе репозиторий? Может и народ подтянулся бы?
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

TheLT писал(а):
09.08.2009 19:11
А почему-бы Вам не сделать себе репозиторий? Может и народ подтянулся бы?

Дык, на одном из моих серваков таковой присутствует. Только вот оказалось, что трафик там зело дорогой. Так что пока юзаю в гордом одиночестве. Появлялся в соседней ветке господин, желал содействовать, предлагал хостинг. Я согласился конечно. Он сказал, что завтра усе будет и исчез. Пока особо не дергаюсь, т.к. сейчас закопался в буквари и определяю что, куда и как портировать - "стратегические" задачки. Без их решения какие-либо другие телодвижения бессмысленны.

Да и вот фактик: У клиента из "Курощения" SVN имелся уже давно, призывы присоединяться - тоже (шапка темы). За все время кодера там не появилось ни одного, комиты только мои. (И че-то кстати он лег)
Народ подтягивается на форум, ткнуть меня в какой-нить новый глюк, хорошо еще, если конкретный. В основном больше времени тратится на выяснение, чем на исправление. Да ладно.
Спасибо сказали:
TheLT
Сообщения: 83
ОС: Gentoo

Re: nxming - он не получка, не аванс.

Сообщение TheLT »

На самом деле снимаю перед Вами шляпу в который раз. Один в поле - воин. Поскольку сам ни разу не программист, то не предлагаю помощи, но поскольку активно пишу патчи ко всякой чужой кривописи и активно изучаю сее искусство, то было бы любопытно смотреть на Ваши коммиты по новому проекту.

Ну а правильно поставленный диагноз - это же уже почти пол-дела в некоторых случаях.

Если дело за хостингом то могу молча поднять пару трекеров. Скажите каких. Думаю народу будет любопытно изучать код и предлагать варианты.

ЗЫ: Если я не в тему со своим идиотизмом или же еще не время для всей этой бурды, то игнор ми плиз. ;)
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

TheLT писал(а):
10.08.2009 04:53
Ну а правильно поставленный диагноз - это же уже почти пол-дела в некоторых случаях.

Ну тады буду просить сестру все-таки катить в реанимацию.

TheLT писал(а):
10.08.2009 04:53
Если дело за хостингом то могу молча поднять пару трекеров. Скажите каких. Думаю народу будет любопытно изучать код и предлагать варианты.

Пару будет перебор, а если поднимете SVN плюс трекер, моя благодарность будет безграничной в пределах разумного ;)
Доменное имя nxming.ru я уже застолбил, так-что все по взрослому. (сейчас ресолвится посредством FreeDNS)
Созреете, присылайте личкой адрес/логин/пароль - залью то, что имею на данный момент.
Доступ стандартный для OSS: всем на чтение, за пиво/ласки/по блату - на запись.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

Личкой было спрошено. Отвечу здесь, поскольку все равно собирался писать мессагу похожего содержания.
А ещё такой вопрос, Вы не пробовали запустить клиент nomachine не в cygwin, а в mingw, например?

Вопрос некорректен (хотя суть понятна ;) ) Цигвин - эмулятор == среда исполнения, а mingw - компилятор. У mingw и Ко имеется среда разработки - MSYS, которая по сути очень ранний кастрированный цигвин.

Кручу я эту nx-овую хрень в разные стороны, и получается, что относительно безнапряжно можно перекинуть ее только с цигвина под MSYS.
Что не катит по соображениям: 1) MSYS его разработчики не рекомендуют использовать в качестве runtime environment явно неспроста, т.е проблем там будет - один только старый gcc2 чего стоит. 2) Имеется предчувствие, что на финише получится та же фигура, вид сбоку. По быстродействию. Поскольку, что одно - эмулятор, что другое.

После изучения кода возникло предположение, что вторая основная причина торможения nx-клиента (первая - "графическая") - использование его транспортом unix sockets (PF_UNIX). Она же вызывает 100% загрузку процессора на слабых машинах.
За транспорт отвечает "nx-клиентская" цепочка: nxssh - nxcomp (nxproxy), xtrans (XLib) - nxwin.

Пока вижу два пути избавления от использования эмуляции юникс-сокетов. Первый "тормозной" (насколько?), но относительно простой - использование вместо них инет-сокетов (PF_INET) localhost - localhost.
Второй путь - использование виндовых named pipes. Пока не нашел рабочего кода "на подсмотреть".

Здорово не хватает удачных примеров портирования лин - вин и комментариев компетентных лиц.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1572
Статус: Подвинутый участник

Re: nxming - он не получка, не аванс.

Сообщение dimbor »

dimbor писал(а):
12.08.2009 13:14
Пока вижу два пути избавления от использования эмуляции юникс-сокетов. Первый "тормозной" (насколько?), но относительно простой - использование вместо них инет-сокетов (PF_INET) localhost - localhost.
Второй путь - использование виндовых named pipes. Пока не нашел рабочего кода "на подсмотреть".


Первый путь видеть перестал, т.к. :
AF_UNIX (AF_LOCAL) sockets are not available in Winsock. They are implemented in Cygwin by using local AF_INET sockets instead.

Нашел здесь

Вопрос остается актуален. И гиде программеры?
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: nxming - он не получка, не аванс.

Сообщение Djelf »

В эту тему, думаю, наиболее актуально.

Удалось нарыть еще один открытый и с исходниками X-сервер http://vcxsrv.sourceforge.net/ http://sourceforge.net/projects/vcxsrv/
Отличия:
- последний X-сервер;
- компилируется на Visual C++ 2008 (Express Edition);

http://sunet.dl.sourceforge.net/project/vc...te_1.7.99.5.txt
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: nxming - он не получка, не аванс.

Сообщение bsavelev »

наткнулся тут случайно:
http://www.nomachine.com/ar/view.php?ar_id=AR09C00262
и далее по ссылке
http://www.nomachine.com/fr/view.php?id=FR03F02034

не только смелые парни отрывают cygwin от NX, но и сами создатели об этом думают
Спасибо сказали:
Аватара пользователя
DjSpike
Сообщения: 2265
Статус: в поисках истины
ОС: Lubuntu 12.04

Re: nxming - он не получка, не аванс.

Сообщение DjSpike »

Ждем выхода nxclient 4.0.0 ?
AvReg - По для организации Видеонаблюдения на Linux.
ДЭНСИ:КАССА - Рабочее место кассира под Linux.
Терминальные решения под Linux
Консультации по установке 1с+PostgreSQL+Ubuntu.
Спасибо сказали:
Аватара пользователя
warlomak
Сообщения: 384
ОС: Ubuntu 10.04

Re: nxming - он не получка, не аванс.

Сообщение warlomak »

DjSpike писал(а):
22.03.2010 15:05
Ждем выхода nxclient 4.0.0 ?

ага только это смущает:
Added on: 2008-03-21
Last Modified: 2008-10-24
Спасибо сказали: