Рекомендации по упаковке Octave
Что такое Octave?
Определение с веб-сайта гласит:
«GNU Octave — это высокоуровневый язык, в первую очередь предназначенный для численных вычислений. Он предоставляет удобный интерфейс командной строки для численного решения линейных и нелинейных задач, а также для выполнения других численных экспериментов с использованием языка, в основном совместимого с Matlab. Его также можно использовать как язык пакетной обработки.»
Если вы заинтересованы в упаковке пакетов Octave, вам следует проверить здесь источники вышестоящего проекта:
RPM-макросы
Следующие макросы определены в /etc/rpm/macros.octave в пакете octave 3.4.0 (Fedora 15+) для помощи в упаковке:
# Предоставляемый бинарный API Octave
%octave_api %(octave-config -p API_VERSION || echo 0)}
# Каталоги пакетов Octave
%octshareprefix %{_datadir}/octave
%octprefix %{octshareprefix}/packages
%octarchprefix %{_libdir}/octave/packages
%octpkgdir %{octshareprefix}/%{octpkg}-%{version}
%octpkglibdir %{octarchprefix}/%{octpkg}-%{version}
# Выполнить команду octave — тихо, без стартовых файлов
%octave_cmd()
# Собрать исходный код в tar-файл пакета во временном расположении
%octave_pkg_build
# Установить пакет. Мы используем команду octave pkg install, чтобы установить
# собранный пакет в buildroot. Мы также оставляем заметку, чтобы предотвратить
# удаление пакета пользователем root с помощью команды octave pkg uninstall
%octave_pkg_install
# скрипт preun — нам нужно снять нашу защиту от удаления и, возможно,
# запустить собственный скрипт удаления пакета.
%octave_pkg_preun
Советы по упаковке Octave
Именование пакетов Octave
Упакованные пакеты Octave имеют собственную схему именования. Они должны учитывать имя пакета вышестоящего проекта. Это даёт формат имени пакета octave-$NAME. В случае сомнений используйте имя модуля, которое вы вводите для его импорта в octave.
'''Примеры: '''
octave-java (пакет Octave с именем java) octave-gsl (пакет Octave с именем gsl)
Ограничения в функции pkg octave (pkg.m) означают, что версионирование пакетов octave требует, чтобы версия пакета имела формат MAJOR.MINOR.MICRO. Неиспользование этого формата приводит к тому, что octave не распознаёт бинарные компоненты пакета в %prefix/libexec.
Обновление базы данных пакетов octave
Octave ведёт список установленных пакетов в /usr/share/octave/octave_packages, который нужно обновлять при установке и удалении пакета. Этот файл имеет текстовый формат octave.
Содержимое каталога /usr/share/octave/packages/ сканируется на наличие следующих файлов при выполнении pkg('rebuild') из octave.
-
/usr/share/octave/packages/NAMEOFPACKAGE/packinfo/COPYING
-
/usr/share/octave/packages/NAMEOFPACKAGE/packinfo/DESCRIPTION
Если этих файлов нет в каком-либо каталоге NAMEOFPACKAGE, то octave молча пропустит папку и не проиндексирует её правильно.
Octave будет использовать содержимое octave_packages для изменения своего пути при запуске, что позволяет octave находить плагины.
Шаблоны spec для пакетов Octave
Существует два типа пакетов Octave: зависящие от архитектуры и noarch.
Шаблон spec для зависящего от архитектуры пакета Octave
%global octpkg image
# Исключить файлы .oct из provides
%global __provides_exclude_from ^%{octpkglibdir}/.*\\.oct$
Name: octave-%{octpkg}
Version: 1.0.13
Release: 1%{?dist}
Summary: Обработка изображений для Octave
Group: Applications/Engineering
License: GPL-2.0-or-later
URL: https://octave.sourceforge.io/image/
Source: https://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildRequires: octave-devel
Requires: octave(api) = %{octave_api}
Requires(post): octave
Requires(postun): octave
%description
Пакет Octave-forge Image предоставляет функции для обработки изображений.
Пакет также предоставляет функции для извлечения признаков, статистики
изображений, пространственных и геометрических преобразований, морфологических
операций, линейной фильтрации и многого другого.
%prep
%setup -q -n %{octpkg}-%{version}
%build
%octave_pkg_build
%install
%octave_pkg_install
%post
%octave_cmd pkg rebuild
%preun
%octave_pkg_preun
%postun
%octave_cmd pkg rebuild
%files
%{octpkglibdir}
%dir %{octpkgdir}
%{octpkgdir}/*.m
%doc %{octpkgdir}/doc-cache
%{octpkgdir}/packinfo
%changelog
* Sat Feb 12 2011 Orion Poplawski <orion@cora.nwra.com> 1.0.13-1
- Initial Fedora package
Шаблон spec для noarch-пакета Octave
%global octpkg actuarial
Name: octave-%{octpkg}
Version: 1.1.0
Release: 1%{?dist}
Summary: Актуарные функции для Octave
Group: Applications/Engineering
License: GPLv2+
URL: https://octave.sourceforge.io
Source: https://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: octave-devel
Requires: octave
Requires(post): octave
Requires(postun): octave
%description
Актуарные функции для линий страхования от несчастных случаев и имущества.
%prep
%setup -q -n %{octpkg}-%{version}
%build
%octave_pkg_build
%install
%octave_pkg_install
%post
%octave_cmd pkg rebuild
%preun
%octave_pkg_preun
%postun
%octave_cmd pkg rebuild
%files
%dir %{octpkgdir}
%{octpkgdir}/*.m
%doc %{octpkgdir}/doc-cache
%{octpkgdir}/packinfo
%changelog
* Sat Feb 12 2011 Orion Poplawski <orion@cora.nwra.com> 1.1.0-1
- Initial Fedora package
Want to help? Learn how to contribute to Fedora Docs ›