Page 2 of 7

Re: Heliothryx (игра на конкурс) - технодемка, протестите?

Posted: Mon Dec 08, 2014 10:19 pm
by ALPINE
CleverMouse wrote:Образы собираются, когда есть, что собирать. Список того, что входит в образ, находится в data/Tupfile.lua, и это отнюдь не всё, что есть на svn и что собирается автосборкой.
Оу, так мне надо вписаться в этот файл? Сейчас впишусь.

Про kpack - ок, ясно.

Re: Heliothryx (игра на конкурс) - технодемка, протестите?

Posted: Mon Dec 08, 2014 10:40 pm
by ALPINE
Собралось в iso! :D
Только этот iso лежит в rus/data/data/, а файл latest-iso пока не обновился. Он обновляется через какое-то время, или его обновление модерирует админ или как-то еще?

Re: Heliothryx (игра на конкурс) - технодемка, протестите?

Posted: Mon Dec 08, 2014 10:46 pm
by yogev_ezra
ALPINE wrote:Только этот iso лежит в rus/data/data/, а файл latest-iso пока не обновился. Он обновляется через какое-то время, или его обновление модерирует админ или как-то еще?
Ты не в том месте добавил. DOOM не собирается из исходников, а копируется из готового бинарника "as is". Нужно добавить в том разделе, где QUAKE (а там, где DOOM, удалить).
ALPINE wrote:Ой, мои три вопроса переместили в эту тему что ли? Или это я их сам сюда разместил?
Вопросы я перенёс, да, так как всё равно они относились именно к твоей игре.

Re: Heliothryx (игра на конкурс) - технодемка, протестите?

Posted: Mon Dec 08, 2014 10:46 pm
by ALPINE

Code: Select all

-- Programs that require GCC to compile.
Угу, увидел. Исправляю. Решил вписаться рядом с думом, думая, что он как раз-таки собирается на нужном мне языке.

Исправлено.

Re: Heliothryx (игра на конкурс) - технодемка, протестите?

Posted: Mon Dec 08, 2014 11:07 pm
by CleverMouse
ALPINE wrote:Собралось в iso! :D
Только этот iso лежит в rus/data/data/, а файл latest-iso пока не обновился. Он обновляется через какое-то время, или его обновление модерирует админ или как-то еще?
Создание трёх архивов для каждого из пяти разных языков требует некоторого времени, они появляются через несколько минут после коммита.

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 2:58 am
by ALPINE
Четвёртый час, а архив все еще старый:

Code: Select all

 latest-iso.7z  2014-Dec-06 09:40:04    14.6M       application/octet-stream
Надеюсь, я ничего не сломал?

Вопрос про зависимости (обновление: проблему решил, но вопрос остался). Делаю поддержку нескольких языков, по аналогии с асм-примерами пишу

Code: Select all

tup.rule("echo \"#define LANG_" .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. "\" > lang.h", {"lang.h"})
Получаю
tup error: Missing input dependency - a file was read from, and was not specified as an input link for the command. This is an issue because the file was created from another command, ...
Погуглил, суть проблемы понял. Надо указать явную зависимость исходников от только что сгенерированного файла lang.h, чтобы его генерирование выполнилось раньше. На сайте tup есть пример, но он не для Lua, попытка адаптировать для Lua ни к чему не привела.

В use_gcc.lua увидел следующее:

Code: Select all

function compile_gcc(input, output)
  if not output then output = '%B.o' end
  tup.append_table(OBJS,
    tup.foreach_rule(input, "kos32-gcc -c " .. CFLAGS .. "$(CFLAGS_%e) " .. INCLUDES .. " -o %o %f", output)
  )
end

function link_gcc(input, output)
  if not output then input,output = OBJS,input end
  if STARTUP then
    table.insert(LIBDEPS, STARTUP)
    LDFLAGS = LDFLAGS .. " " .. STARTUP
  end
  if tup.getconfig("HELPERDIR") == "" and #LIBDEPS then
    if type(input) == "string" then input = {input} end              --   <===
    if not input.extra_inputs then input.extra_inputs = {} end
    tup.append_table(input.extra_inputs, LIBDEPS)
  end

  if type(output) == "string" then output = {output} end
  if not output.extra_outputs then output.extra_outputs = {} end
  table.insert(output.extra_outputs, output[1] .. ".map")

  tup.rule(input,
    "kos32-ld " .. LDFLAGS .. " -o %o %f -Map %o.map " .. LIBS .. " && kos32-objcopy %o -O binary " .. tup.getconfig("KPACK_CMD"),
    output)
end
extra_inputs - это оно? Указание на зависимость? Но оно мне нужно не в компоновщике ld, а в компиляторе gcc, но в функции compile_gcc() не реализована возможность передать в input объект, содержащий extra_inputs. Я правильно понимаю, что её надо там реализовать и это решит проблему? Или я малость намудрил? Image

P.S. Естественно, перемудрил. В шашках отличный пример.

Code: Select all

if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RU"
else C_LANG = "LANG_EN" -- this includes default case without config
end
CFLAGS = CFLAGS .. " -DRS_KOLIBRI -D" .. C_LANG .. " "
Проблемы у меня больше нет, но хочется знать, верно ли то, что я написал выше. Про зависимости gcc от сгенерированных tup'ом файлов, если таковые вдруг когда-нибудь появятся.

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 9:43 am
by Mario_r4
.

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 1:38 pm
by ALPINE
В целевом это в каком?

Вот здесь iso новый:
http://builds.kolibrios.org/rus/data/data/

А вот здесь - старый:
http://builds.kolibrios.org/rus/

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 2:00 pm
by yogev_ezra
ALPINE wrote:Четвёртый час, а архив все еще старый:

Code: Select all

 latest-iso.7z	2014-Dec-06 09:40:04	14.6M	application/octet-stream
Надеюсь, я ничего не сломал?
Mario_r4 wrote:У меня есть предположение, что надо чего-нибудь поменять в целевом проекте, дабы дать принудительного пинка системе. Хотя я могу и ошибаться.
ALPINE wrote:В целевом это в каком?
Он хотел сказать, что для того, чтобы дистрибутив пересобрался, нужно что-то изменить в одном из файлов, которые в него входят (например, в твоей игре). Так что беспокоиться не о чем - при следующем твоём коммите архив должен обновиться.

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 2:34 pm
by CleverMouse
Отставить панику. Никаких принудительных пинков не нужно. Я вчера добавляла в скрипты пост-обработки код, предотвращающий параллельную работу при слишком быстрых коммитах, скрипты немного поломались. Сейчас всё должно быть нормально.

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 2:41 pm
by ALPINE
Так что беспокоиться не о чем - при следующем твоём коммите архив должен обновиться.
Ок, только я уже три коммита сделал. И новый iso уже лежит в /data/data. А в файле latest до сих пор старый. Ладно, пока не беспокоюсь и веду разработку дальше. Потом видно будет, в порядке всё или не в порядке.

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

P.S. CleverMouse, ок, спасибо. За быстрые коммиты прошу прощения - при первых пробах так всегда, в дальнейшем коммиты будут уже реже и объёмистей. 8)

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 2:52 pm
by CleverMouse
Alpine wrote:А в файле latest до сих пор старый
Новый, r5228.
Сейчас с быстрыми коммитами не должно быть проблем.

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 3:44 pm
by CleverMouse
ALPINE wrote:Вопрос про зависимости (обновление: проблему решил, но вопрос остался). Делаю поддержку нескольких языков, по аналогии с асм-примерами пишу

Code: Select all

tup.rule("echo \"#define LANG_" .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. "\" > lang.h", {"lang.h"})
Получаю
tup error: Missing input dependency - a file was read from, and was not specified as an input link for the command. This is an issue because the file was created from another command, ...
Погуглил, суть проблемы понял. Надо указать явную зависимость исходников от только что сгенерированного файла lang.h, чтобы его генерирование выполнилось раньше. На сайте tup есть пример, но он не для Lua, попытка адаптировать для Lua ни к чему не привела.
extra_inputs - это оно? Указание на зависимость? Но оно мне нужно не в компоновщике ld, а в компиляторе gcc, но в функции compile_gcc() не реализована возможность передать в input объект, содержащий extra_inputs. Я правильно понимаю, что её надо там реализовать и это решит проблему? Или я малость намудрил?
Проблемы у меня больше нет, но хочется знать, верно ли то, что я написал выше. Про зависимости gcc от сгенерированных tup'ом файлов, если таковые вдруг когда-нибудь появятся.
Всё верно. В fasm нет параметра, аналогичного -D, позволяющего из командной строки указывать настройки компиляции, поэтому приходится использовать дополнительный файл. В gcc/msvc лучше использовать настройку командной строки - по крайней мере, если это один параметр LANG_xxx с разумным значением по умолчанию.
При использовании echo надо быть готовым к проблемам с кроссплатформенностью - под Windows и под Linux echo ведёт себя по-разному. Например, правило в форме из цитаты под Windows создаст файл из строчки

Code: Select all

"#define LANG_en" 
в кавычках. Без кавычек в Windows строка будет нормальной, но в Linux символ # будет воспринят как комментарий, и файл будет создан с пустой строкой. Если очень хочется именно echo и именно с #, придётся писать два разных правила в зависимости от tup.getconfig("TUP_PLATFORM") == "win32".

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 3:46 pm
by CleverMouse
extra_inputs в синтаксисе Lua можно добавить примерно так:

Code: Select all

compile_gcc{"1.c", "2.c", "3.c", extra_inputs="lang.h"} -- files that use lang.h
compile_gcc{"4.c", "5.c", "6.c"} -- files that don't use lang.h

Re: Heliothryx (игра на конкурс)

Posted: Tue Dec 09, 2014 5:09 pm
by ALPINE
Спасибо за разъяснения. Про кавычки не знал. Про extra_inputs учту, возможно, пригодится.

Вопрос про мышь (ничего, что я так много вопросов задаю? :D): событие нажатия/отжатия/drag'n'drop надо ловить вручную, да? Всё через событие №6 и, сохраняя предыдущие состояния кнопок, ловить нажатие кнопки мыши и её отжатие? Я уже это сделал, просто уточняю на случай, если вдруг я опять слепой и ловля нажатий-отжатий кнопки мыши уже реализована, как в случае с клавиатурой и сканкодами, которые я упустил.