Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Nov 15, 2019 2:40 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 102 posts ]  Go to page Previous 1 2 3 4 57 Next
Author Message
PostPosted: Mon Dec 08, 2014 10:19 pm 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
CleverMouse wrote:
Образы собираются, когда есть, что собирать. Список того, что входит в образ, находится в data/Tupfile.lua, и это отнюдь не всё, что есть на svn и что собирается автосборкой.
Оу, так мне надо вписаться в этот файл? Сейчас впишусь.

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

_________________
Roman Shuvalov


Top
   
PostPosted: Mon Dec 08, 2014 10:40 pm 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
Собралось в iso! :D
Только этот iso лежит в rus/data/data/, а файл latest-iso пока не обновился. Он обновляется через какое-то время, или его обновление модерирует админ или как-то еще?

_________________
Roman Shuvalov


Top
   
PostPosted: Mon Dec 08, 2014 10:46 pm 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
ALPINE wrote:
Только этот iso лежит в rus/data/data/, а файл latest-iso пока не обновился. Он обновляется через какое-то время, или его обновление модерирует админ или как-то еще?
Ты не в том месте добавил. DOOM не собирается из исходников, а копируется из готового бинарника "as is". Нужно добавить в том разделе, где QUAKE (а там, где DOOM, удалить).
ALPINE wrote:
Ой, мои три вопроса переместили в эту тему что ли? Или это я их сам сюда разместил?
Вопросы я перенёс, да, так как всё равно они относились именно к твоей игре.


Top
   
PostPosted: Mon Dec 08, 2014 10:46 pm 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
Code:
-- Programs that require GCC to compile.
Угу, увидел. Исправляю. Решил вписаться рядом с думом, думая, что он как раз-таки собирается на нужном мне языке.

Исправлено.

_________________
Roman Shuvalov


Top
   
PostPosted: Mon Dec 08, 2014 11:07 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
ALPINE wrote:
Собралось в iso! :D
Только этот iso лежит в rus/data/data/, а файл latest-iso пока не обновился. Он обновляется через какое-то время, или его обновление модерирует админ или как-то еще?

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

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Dec 09, 2014 2:58 am 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
Четвёртый час, а архив все еще старый:
Code:
 latest-iso.7z  2014-Dec-06 09:40:04    14.6M       application/octet-stream
Надеюсь, я ничего не сломал?

Вопрос про зависимости (обновление: проблему решил, но вопрос остался). Делаю поддержку нескольких языков, по аналогии с асм-примерами пишу
Code:
tup.rule("echo \"#define LANG_" .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. "\" > lang.h", {"lang.h"})
Получаю
Quote:
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:
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:
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'ом файлов, если таковые вдруг когда-нибудь появятся.

_________________
Roman Shuvalov


Top
   
PostPosted: Tue Dec 09, 2014 9:43 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Last edited by Mario_r4 on Sun Jan 04, 2015 9:49 pm, edited 1 time in total.

Top
   
PostPosted: Tue Dec 09, 2014 1:38 pm 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
В целевом это в каком?

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

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

_________________
Roman Shuvalov


Top
   
PostPosted: Tue Dec 09, 2014 2:00 pm 
Offline
Public Relations
User avatar

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


Top
   
PostPosted: Tue Dec 09, 2014 2:34 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Отставить панику. Никаких принудительных пинков не нужно. Я вчера добавляла в скрипты пост-обработки код, предотвращающий параллельную работу при слишком быстрых коммитах, скрипты немного поломались. Сейчас всё должно быть нормально.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Dec 09, 2014 2:41 pm 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
Quote:
Так что беспокоиться не о чем - при следующем твоём коммите архив должен обновиться.
Ок, только я уже три коммита сделал. И новый iso уже лежит в /data/data. А в файле latest до сих пор старый. Ладно, пока не беспокоюсь и веду разработку дальше. Потом видно будет, в порядке всё или не в порядке.

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

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

_________________
Roman Shuvalov


Top
   
PostPosted: Tue Dec 09, 2014 2:52 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Alpine wrote:
А в файле latest до сих пор старый

Новый, r5228.
Сейчас с быстрыми коммитами не должно быть проблем.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Dec 09, 2014 3:44 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
ALPINE wrote:
Вопрос про зависимости (обновление: проблему решил, но вопрос остался). Делаю поддержку нескольких языков, по аналогии с асм-примерами пишу
Code:
tup.rule("echo \"#define LANG_" .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. "\" > lang.h", {"lang.h"})
Получаю
Quote:
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:
"#define LANG_en" 
в кавычках. Без кавычек в Windows строка будет нормальной, но в Linux символ # будет воспринят как комментарий, и файл будет создан с пустой строкой. Если очень хочется именно echo и именно с #, придётся писать два разных правила в зависимости от tup.getconfig("TUP_PLATFORM") == "win32".

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Dec 09, 2014 3:46 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
extra_inputs в синтаксисе Lua можно добавить примерно так:
Code:
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

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Dec 09, 2014 5:09 pm 
Offline
User avatar

Joined: Tue Nov 25, 2014 5:08 pm
Posts: 109
Спасибо за разъяснения. Про кавычки не знал. Про extra_inputs учту, возможно, пригодится.

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

_________________
Roman Shuvalov


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 102 posts ]  Go to page Previous 1 2 3 4 57 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited