Ada_Ru форум

Обсуждение языка Ада

Re: [ada_ru] оПНАКЕЛЮ БШАНПЮ ЪГШЙЮ Х ЯПЕДШ ПЮГПЮАНРЙХ ДКЪ ЙНЛЛЕПВЕЯЙНЦН ОПНЕЙРЮ

Оставить новое сообщение

Сообщения

Boris Samorodov
Re: [ada_ru] оПНАКЕЛЮ БШАНПЮ ЪГШЙЮ Х ЯПЕДШ ПЮГПЮАНРЙХ ДКЪ ЙНЛЛЕПВЕЯЙНЦН ОПНЕЙРЮ
2007-09-09 17:12:45

On Sun, 09 Sep 2007 16:56:25 -0000 vladimir.chujkov wrote:

бНОПНЯ НРМНЯХРЯЪ МЕ Й ЪГШЙС Ada, Ю Й ОНМХЛЮМХЧ КХЖЕМГХХ GNU GPL, МН ГЮДЮЧ ЕЦН Б ЩРС ЦПСООС, Р.Й. ОПНДСЙР ЯНАХПЮЕЛЯЪ ОХЯЮРЭ МЮ Ada.

[...]

В заголовках указана кодировка koi8-r, а на самом деле... В общем, бнопня...

WBR

--

Boris Samorodov (bsam)

Research Engineer, http://www.ipt.ru Telephone & Internet SP

FreeBSD committer, http://www.FreeBSD.org The Power To Serve

Воистину бНОПНЯ получилась! Буду внимательнее... Далее текст мессаги в правильной (как я надеюсь) кодировке.

 

Вопрос относится не к языку Ada, а к пониманию лицензии GNU GPL, но задаю его в эту группу, т.к. продукт собираемся писать на Ada.

 

Скоро стартует коммерческий проект компьютерной игры "про танки,

авиацию и артиллерию".

Целевые ОС, под которыми будет идти игрушка - Windows - 90%, MacOS - 9.9%, Linux - 0.1% (в процентах указаны приоритеты оптимизации и

тестирования). В этом проекте мы хотим полностью мигрировать с Visual C++ на Ada, благо язык нам знаком (все когда-то учились на ФКН в

университете им. Каразина). Первые "прицельные выстрелы" -

собственный бинд для OpenGL 2.1, интеграция с MESA 3D, создание

тестов для прогонки шейдеров под Win/Lin и т.д. потихоньку делаются, результаты говорят о том, что игровой проект среднего размера на Ada можно сделать так же успешно, как и на С++.

Купить Gnat Pro молодой команде не по карману (за 14 000 евро можно полностью студию организовать, а не только годовую лицензию купить), поэтому используем Gnat GPL.

Возникают вопросы:

 

1. Можно ли приложение, скомпилированное с помощью Gnat GPL,

выпускать по проприетарной лицензии?

Все используемые библиотеки - из обычной поставки Gnat GPL.

 

2. Игровой продукт - это ПО и некая база данных для него (диалоги, сценарии, модели, анимации, текстуры). Можно ли выпустить ПО по GPL, а базу данных к нему - по проприетарной?

 

3. Если приложение построено по архитектуре клиент/сервер, причем сервер не будет распространяться, может ли он быть скомпилирован с использованием GNU, но исходники открываться не будут, т.к. не было факта распространения?

 

Вопросы очень болезненные, так как издатель не будет смотреть в

сторону игрушки, выпускаемой по GPL лицензии, а собрав проект

полностью на opensource и GNU компонентах и уменьшив тем самым

стоимость разработки, мы не сможем продавать его по лицензии EULA.

Варианты "забить на лицензию и делать как все" даже не

рассматриваются :).

vladimir.chujkov wrote:

 

Возникают вопросы:

 

В данной тусовке есть люди, которые заведомо лучше меня разбираются

в тонкостях, но я все же попробую ответить в меру своего понимания.

 

1. Можно ли приложение, скомпилированное с помощью Gnat GPL,

выпускать по проприетарной лицензии?

Все используемые библиотеки - из обычной поставки Gnat GPL.

 

99.9% за то, что НЕЛЬЗЯ.

 

2. Игровой продукт - это ПО и некая база данных для него (диалоги,

сценарии, модели, анимации, текстуры). Можно ли выпустить ПО по GPL,

а базу данных к нему - по проприетарной?

 

Почему бы и нет?

 

3. Если приложение построено по архитектуре клиент/сервер, причем

сервер не будет распространяться, может ли он быть скомпилирован с

использованием GNU, но исходники открываться не будут, т.к. не было

факта распространения?

 

"Нет трупа - нет убийства". Здесь я вообще не вижу проблем. Вы совершенно

НЕ ОБЯЗАНЫ так или иначе РАСПРОСТРАНЯТЬ GPL-программу.

 

Варианты "забить на лицензию и делать как все" даже не

рассматриваются :).

 

То есть, вы ребята серьезные, так? :)

1. Можно ли приложение, скомпилированное с помощью Gnat GPL,

выпускать по проприетарной лицензии?

Все используемые библиотеки - из обычной поставки Gnat GPL.

 

Нет, нельзя. (Бестолковый случай когда можно юлить: это когда программа не линкуется со стандартными библиотеками GNAT: libgnat и libgnarl.)

 

Второй вариант - использование GNAT из GNU GCC. Может быть вполне приемлимым вариантом если не стремиться яростно использовать "продвинутые" возможности Ada95 и избежать использования Ada2005. Кстати, даже при использовании GNAT GPL использовать "продвинутые" возможности Ada2005 не рекомендую ("простейшие" можно использовать спокойно).

 

(GNAT из GCC 3.4.x мы использовали много лет к ряду, пока не появилась возможность купить официальную версию)

 

2. Игровой продукт - это ПО и некая база данных для него (диалоги,

сценарии, модели, анимации, текстуры). Можно ли выпустить ПО по GPL,

а базу данных к нему - по проприетарной?

 

Запросто.

 

3. Если приложение построено по архитектуре клиент/сервер, причем

сервер не будет распространяться, может ли он быть скомпилирован с

использованием GNU, но исходники открываться не будут, т.к. не было

факта распространения?

 

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

 

Вопросы очень болезненные, так как издатель не будет смотреть в

сторону игрушки, выпускаемой по GPL лицензии, а собрав проект

полностью на opensource и GNU компонентах и уменьшив тем самым

стоимость разработки, мы не сможем продавать его по лицензии EULA.

 

В нынешних играх уже нередко используются LGPL части, и вполне успешно.

On Sun, Sep 09, 2007 at 05:38:36PM -0000, vladimir.chujkov wrote:

Присоединяюсь к ответам, присланным выше. А именно:

 

Возникают вопросы:

 

1. Нет

2. Да

3. Да

 

По поводу компилятора, можно попробовать gnat-3.15p - последнюю

версию от AdaCore с runtime под GMGPL. Был довольно стабильный

релиз. Хотя есть несколько минусов:

- для Linux нужно немного

пропатчить runtime (т.к. поменялась модель потоков в glibc)

это обычно делается если ставить gnat из какго-то дистрибутива

Linux (Debian, Gentoo, etc).

- для MacOs наверное прийдеться собирать его самому :-/

- там Ада 2005 и не пахнет :)

 

Из плюсов, только субьективное мнение :)

 

--

Maxim Reznik

Здравствуйте,

я с очередной проблемой линковки разноязыких модулей.

Есть программа с порядком вызовы функций.

Delphi.exe => Ada.dll => Delphi.dll, т.е. нужно написать на аде библиотеку, которая будет вызывать функции из dll на Delphi.

При помощи мастера проектов GPS был создан проект dll

--------mid.gpr------------------------------

project Mid is

for Source_Dirs use (".\/**");

for Library_Name use "mid";

for Library_Dir use ".";

for Library_Ali_Dir use "ali";

for Library_Kind use "dynamic";

for Library_Version use "1.0";

for Library_Src_Dir use ".";

for Object_Dir use "obj"

for Library_Auto_Init use "False";

package Linker is

for Linker_Options use ("-lPdll");

end Linker;

end Mid;

------------------------------------------------

Спецификация пакета

---------mid.ads------------------------------

package mid is

procedure midtest(i: integer);

pragma Export(C,midtest);

end mid;

-------------------------------------------------

Тело пакета

---------mid.adb----------------------------------

package body mid is

procedure test(i: integer);

pragma Import(C,test);--импортируется из "Pdll.dll"

procedure midtest(i: integer) is

begin

test(i);

end midtest;

begin

null;

end mid;

-------------------------------------------------

Попытка скомпилировать этот проект неизбежно приводит к сообщению: " undefined reference to `test'"

------------------------------------------------------------

gnatmake -PC:\Ada_Projects\dlltest\mid.gpr -d

building dynamic library for project mid

C:\GNAT\2007\bin\gcc.exe -shared -o c:\ada_projects\dlltest\mid.dll -LC:/GNAT/2007/lib/gcc/pentium-mingw32msv/4.1.3/adalib/

c:\ada_projects\dlltest\obj\mid.o ...

-LC:/GNAT/2007/lib/gcc/pentium-mingw32msv/4.1.3/adalib/ -lgnat-2007 c:\ada_projects\dlltest\obj\mid.o:mid.adb:(.text+0x17): undefined reference to `test'

collect2: ld returned 1 exit status

gnatmake: gcc execution error

process exited with status 4

---------------------------------------------------------------------------

При переключении Library_Kind в "static" проект успешно компилируется в lib*.a

Если не вызывать внешние функции ("test"), то проект успешно компилируется в *.dll

При компиляции dll gnat не требует def-файл, но экспортирует из библиотеки всё подряд с неизвестным соглашением о вызовах.

Также при компиляции dll gnat не позволяет вызвать Adainit (аналогично функции test).

При использовании утилиты gnatdll для линковки библиотека собирается нормально.

Вариант с gnatdll меня устраивает всем, но возникает сомнение, удастся ли использовать встроенный отладчик GPS.

No virus found in this outgoing message.

Checked by AVG Free Edition.

Version: 7.5.487 / Virus Database: 269.13.21/1010 - Release Date: 15.09.2007 19:54

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти