GNUstep

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(libgnustep-objc2 vs. gcc-objc)
 
(10 промежуточных версий не показаны.)
Строка 1: Строка 1:
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.
Несколько шаблонов, которые могут пригодиться при сборке софта под GNUstep.
-
Нужно заметить, что пакеты 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>
+
   %set_verify_elf_method unresolved=strict
-
Чтобы пакеты GNUstep собирались с Objective-C от GNUstep, в секции %pre спек-файлов после %setup рекомендуется использовать следующий код:
+
Без этой строчки недолинковки могут остаться вне внимания, а недолинковок быть на должно.
-
  for i in $(find ./ -type f); do
+
----
-
    sed -i 's|objc/|objc2/|g' $i
+
-
  done
+
 +
Нужно заметить, что пакеты GNUstep должны собираться с Objective-C не от gcc, а от GNUstep. Сам компилятор используется от clang. Таким образом, в BuildPreReq должны попасть как минимум вот такие пакеты:
 +
  clang-devel
 +
  libgnustep-objc2-devel
 +
  gnustep-make-devel
 +
  /proc
-
Для каждого пакета в спеке в секции BuildPreReq должен быть указан /proc .
+
----
Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная
Конфигуратору (configure) или сборочному файлу (GNUmakefile) может потребоваться переменная
GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .
GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles .
 +
 +
Или нужно перед сборкой и установкой выполнить команду, что предпочтительней:
 +
 +
. %_datadir/GNUstep/Makefiles/GNUstep.sh
 +
 +
----
Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf .
Если проект содержит файл configure.(ac|in), необходимо использовать %autoreconf .
 +
 +
----
Минимальный шаблон вызова конфигуратора:
Минимальный шаблон вызова конфигуратора:
Строка 28: Строка 36:
     --libexecdir=%_libdir \
     --libexecdir=%_libdir \
     --with-installation-domain=SYSTEM
     --with-installation-domain=SYSTEM
 +
 +
----
Минимальный шаблон запуска сборки:
Минимальный шаблон запуска сборки:
Строка 36: Строка 46:
     strip=no \
     strip=no \
     shared=yes
     shared=yes
 +
 +
----
Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build .
Если необходимо добавить какие-либо специфические флаги компилятора, используется AUXILIARY_CPPFLAGS как параметр для %make_build .
-
Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build .
+
Предопределённые флаги, которые указывать не надо:
 +
%optflags -fobjc-runtime=gnustep-1.7 -fobjc-nonfragile-abi -DGNUSTEP -DGNU_RUNTIME
 +
 
 +
----
 +
 
 +
Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build . Этот способ не рекомендуется, если есть возможность в GNUmakefile указать флаг ADDITIONAL_LDFLAGS с нужными библиотеками.
Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким:
Например, нужно добавить оптимизицию и долинковать собираемый модуль математической библиотекой, вызов может быть таким:
Строка 48: Строка 65:
     strip=no \
     strip=no \
     shared=yes \
     shared=yes \
-
     AUXILIARY_CPPFLAGS='-O2' \
+
     AUXILIARY_CPPFLAGS='-O3' \
     CONFIG_SYSTEM_LIBS='-lm'
     CONFIG_SYSTEM_LIBS='-lm'
 +
 +
----
 +
 +
Бывает, что софт не хочет собираться. Как правило, это старые проекты. Для решения проблемы нужно дополнительно указать параметры для %make_build:
 +
 +
  OBJCFLAGS='%optflags -DGNUSTEP' \
 +
  USE_NONFRAGILE_ABI=no \
 +
 +
----
После сборки стандартным вариантом установки является:
После сборки стандартным вариантом установки является:
Строка 55: Строка 81:
   %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
   %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
 +
----
Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:
Отдельно надо рассмотреть документацию. Необходимым (и зачастую достаточным) является такой код:
   %make_build -C Documentation \
   %make_build -C Documentation \
-
     messages=yes \
+
     messages=yes
-
    GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles
+
Установка будет такой:
Установка будет такой:
   %makeinstall_std -C Documentation \
   %makeinstall_std -C Documentation \
-
     GNUSTEP_INSTALLATION_DOMAIN=SYSTEM \
+
     GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
-
    GNUSTEP_MAKEFILES=%_datadir/GNUstep/Makefiles
+
После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки).
После всех установок основные файлы GNUstep помещаются внутри %_libdir/GNUstep . Другие места, где могут появиться новые файлы: %_bindir , %_includedir , %_libdir (как правило, это разделяемые библиотеки).
Строка 72: Строка 97:
Файлы документации устанавливаются в %_docdir/GNUstep .
Файлы документации устанавливаются в %_docdir/GNUstep .
 +
==См. также==
 +
*[[GNUstep/Applications|Приложения GNUstep]]
 +
 +
[[Категория:GNUstep]]
[[Категория:Packaging]]
[[Категория:Packaging]]

Текущая версия на 15:33, 18 декабря 2015

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


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

 %set_verify_elf_method unresolved=strict

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


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

 clang-devel
 libgnustep-objc2-devel
 gnustep-make-devel
 /proc

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

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

. %_datadir/GNUstep/Makefiles/GNUstep.sh


Если проект содержит файл 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 .

Предопределённые флаги, которые указывать не надо: %optflags -fobjc-runtime=gnustep-1.7 -fobjc-nonfragile-abi -DGNUSTEP -DGNU_RUNTIME


Если необходимо добавить какие-либо библиотеки для линковки, используется CONFIG_SYSTEM_LIBS как параметр для %make_build . Этот способ не рекомендуется, если есть возможность в GNUmakefile указать флаг ADDITIONAL_LDFLAGS с нужными библиотеками.

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

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

Бывает, что софт не хочет собираться. Как правило, это старые проекты. Для решения проблемы нужно дополнительно указать параметры для %make_build:

 OBJCFLAGS='%optflags -DGNUSTEP' \
 USE_NONFRAGILE_ABI=no \

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

 %makeinstall_std GNUSTEP_INSTALLATION_DOMAIN=SYSTEM

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

 %make_build -C Documentation \
   messages=yes

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

 %makeinstall_std -C Documentation \
   GNUSTEP_INSTALLATION_DOMAIN=SYSTEM

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

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

См. также

 
Личные инструменты