GNUstep: различия между версиями

Материал из ALT Linux Wiki
(libgnustep-objc2 vs. gcc-objc)
(%set_verify_elf_method unresolved=strict)
Строка 1: Строка 1:
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.
==
В начале спека необходимо вставить:
  %set_verify_elf_method unresolved=strict
Без этой строчки недолинковки могут остаться вне внимания, а недолинковок быть на должно.
==


Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор, впрочем, используется от gcc. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты:
Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор, впрочем, используется от gcc. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты:
Строка 5: Строка 14:
   libgnustep-objc2-devel
   libgnustep-objc2-devel
   gnustep-make-devel
   gnustep-make-devel
==


Учитывая, что заголовочные файлы Objective-C от gcc располагаются в подкатологе objc, во избежание конфликтов заголовочные файлы от GNUstep помещаются в подкатологе objc2. Апстримы об этом не знают (ибо это ALT-специфика), поэтому там обычно встречаются конструкции вида
Учитывая, что заголовочные файлы Objective-C от gcc располагаются в подкатологе objc, во избежание конфликтов заголовочные файлы от GNUstep помещаются в подкатологе objc2. Апстримы об этом не знают (ибо это ALT-специфика), поэтому там обычно встречаются конструкции вида
Строка 15: Строка 26:
   done
   done


==


Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc .
Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc .
==


Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная
Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная
GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .
GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .
==


Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf .
Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf .
==


Минимальный шаблон вызова конфигуратора:
Минимальный шаблон вызова конфигуратора:
Строка 28: Строка 46:
     --libexecdir=%_libdir \
     --libexecdir=%_libdir \
     --with-installation-domain=SYSTEM
     --with-installation-domain=SYSTEM
==


Минимальный шаблон запуска сборки:
Минимальный шаблон запуска сборки:
Строка 36: Строка 56:
     strip=no \
     strip=no \
     shared=yes
     shared=yes
==


Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build .
Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build .
==


Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build .
Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build .
Строка 50: Строка 74:
     AUXILIARY_CPPFLAGS='-O2' \
     AUXILIARY_CPPFLAGS='-O2' \
     CONFIG_SYSTEM_LIBS='-lm'
     CONFIG_SYSTEM_LIBS='-lm'
==


После сборки стандартным вариантом установки является:
После сборки стандартным вариантом установки является:
Строка 55: Строка 81:
   %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
   %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM


==


Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:
Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:

Версия от 07:53, 13 декабря 2012

Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.

==

В начале спека необходимо вставить:

 %set_verify_elf_method unresolved=strict

Без этой строчки недолинковки могут остаться вне внимания, а недолинковок быть на должно.

==

Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор, впрочем, используется от gcc. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты:

 gcc-objc
 libgnustep-objc2-devel
 gnustep-make-devel

==

Учитывая, что заголовочные файлы Objective-C от gcc располагаются в подкатологе objc, во избежание конфликтов заголовочные файлы от GNUstep помещаются в подкатологе objc2. Апстримы об этом не знают (ибо это ALT-специфика), поэтому там обычно встречаются конструкции вида

 #include <objc/objc.h>

Чтобы пакеты GNUstep собирались с Objective-C от GNUstep, в секции %pre спек-файлов после %setup рекомендуется использовать следующий код:

 for i in $(find ./ -type f); do
   sed -i 's|objc/|objc2/|g' $i
 done

==

Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc .

==

Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .

==

Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf .

==

Минимальный шаблон вызова конфигуратора:

 %configure \
   --libexecdir=%_libdir \
   --with-installation-domain=SYSTEM

==

Минимальный шаблон запуска сборки:

 %make_build \
   messages=yes \
   debug=yes \
   strip=no \
   shared=yes

==

Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build .

==

Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build .

Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким:

 %make_build \
   messages=yes \
   debug=yes \
   strip=no \
   shared=yes \
   AUXILIARY_CPPFLAGS='-O2' \
   CONFIG_SYSTEM_LIBS='-lm'

==

После сборки стандартным вариантом установки является:

 %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM

==

Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:

 %make_build -C Documentation \
   messages=yes \
   GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles

Установка будет такой:

 %makeinstall_std -C Documentation \
   GNUSTEP_INSTALLATION_DOMAIN=SYSTEM \
   GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles

После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки).

Файлы документации устанавливаются в %_docdir/GNUstep .