Genspec
Genspec | |
---|---|
Разработчик(и) | Андрей Черепанов |
Первый выпуск | 2015 |
Лицензия | GNU GPL v3 |
Сайт | altlinux.org |
Репозиторий | genspec |
Genspec - утилита по генерации файлов .spec на базе шаблонов.
Установка
$ su - # apt-get install genspec
Использование
usage: genspec [-h] [--version] -n MODULE [-t SPEC_TYPE] [-v VERSION] [-s SUMMARY] [-l LICENSE] [-u URL]
[-d DESCRIPTION] [-c LASTCHANGE] [-o OWNER] [-f] [--gitignore] [--no-gitignore] [--check]
[--no-check] [--disable-name-translation] [--no-empty-branch] [--empty-branch] [--verbose]
[--here] [--tag TAG] [--git] [--test ORIGINAL] [--date DATE]
[--after-git-command AFTER_GIT_COMMAND]
Параметры | ||
---|---|---|
№ | Команда | Описание |
1 | -h, --help | Отобразить данную справку и завершить работу |
2 | --version | Отобразить версию программы и завершить работу |
3 | -n MODULE | Пакет или название модуля |
4 | -t SPEC_TYPE | Тип шаблона для спека |
5 | -v VERSION | Версия пакета |
6 | -s SUMMARY | Краткое описание пакета |
7 | -l LICENSE | Лицензия пакета |
8 | -u URL | URL пакета |
9 | -d DESCRIPTION | Описание пакета |
10 | -c LASTCHANGE | Описание изменений в пакете |
11 | -o OWNER | Владелец репозитория Github |
12 | -f, --force | Принудительно перезаписать каталог или spec и .gear, если они уже существуют |
13 | --gitignore | Сохранить стандартный .gitignore в новый пакет. |
14 | --no-gitignore | Не сохранять стандартный .gitignore в новый пакет. |
15 | --check | Рассматривать все сбои при выполнении внешних программ как ошибки. |
16 | --no-check | Пропускать все ошибки при выполнении внешних программ. |
17 | --disable-name-translation | Не изменять заданное имя. |
18 | --no-empty-branch | Не создавать пустую ветку |
19 | --empty-branch | Создать пустую ветку |
20 | --verbose | Показать вывод выполняемых программ |
21 | --here | Создать спек из текущего каталога |
22 | --tag TAG | Тег git (Git tag) (используется в .gear/rules) |
23 | --git | Склонировать репозиторий Git из url, очистить репозиторий и настроить удаленные обновления |
24 | --test ORIGINAL | Запустить программу в тестовом режиме, чтобы сравнить результат с оригинальным каталогом |
25 | --date DATE | Передать дату в журнал изменений в формате YYYY-MM-DD. |
26 | --after-git-command AFTER_GIT_COMMAND | Выполнить команду после действий над git |
Скрипт генерирует RPM-спек на основе шаблона.
Поддерживаются переменные окружения:
Переменные окружения | ||
---|---|---|
№ | Переменная | Описание |
1 |
GENSPEC_TEMPLATES |
Путь к шаблонам spec (по-умолчанию в /usr/share/spectemplates/) |
2 | GENSPEC_PACKAGER | Имя разработчика (Packager name) (по-умолчанию из rpm --eval '%{packager}') |
Поддерживаемые шаблоны
Тип | Описание |
---|---|
cmake | «Чистый» cmake |
common | Сборка с помощью Autotools |
golang-bin | Проект на Go |
java-maven | Сборка проекта на Java с помощью Maven |
meson | Проект на Meson |
ninja | Сборка cmake с помощью ninja-build |
noarch | Простой архитектуро-независимый проект (например, шрифты) |
ocaml | Проект на Ocaml |
python2-bin | Исполняемый файл на Python 2.x |
python2 | Модуль на Python 2.x |
python3-bin | Исполняемый файл на Python 3.x |
python3 | Модуль на Python 3.x |
python-bin | Исполняемый файл на Python 2.x |
python | Модуль на Python 2.x |
ruby-bin | Исполняемый файл на Ruby |
ruby | Модуль на Ruby |
rust-bin | Исполняемый файл на Rust |
Конкретные примеры
Простое создание репозитория
1. Настройте окружение RPM
2. Перейдите в каталог, где будет будущий репозиторий
$ mkdir ~/myrepo $ cd ~/myrepo
3. Создаем репозиторий
Примечание: Модуль, версия, лицензия и URL - это базовая команда. Без настройки окружения и указания указанных здесь данных, команда не сработает
$ genspec -n supertux -v 0.5 -l GPLv3 -u http://www.supertux.org
Результаты:
1. Каталог и его содержимое
~/myrepo └── supertux ├── .gear │ └── rules └── supertux.spec
2. Содержимое .gear/rules
tar: .
3. Содержимое spec:
Name: supertux
Version: 0.5
Release: alt1
Summary:
License: GPLv3
Group: Other
Url: http://www.supertux.org
Packager: Petya Ivanov <petyaivanov@altlinux.org>
Source: %name-%version.tar
#BuildRequires:
%description
%prep
%setup
%build
%configure
%make_build
%install
%makeinstall_std
%check
%make_build check
%files
%doc *.md
%_bindir/*
%_man1dir/*
%changelog
* Thu Feb 20 2025 Petya Ivanov <petyaivanov@altlinux.org> 0.5-alt1
Добавляем описание
Добавляем строчки
-s - SUMMARY, добавит краткое описание пакета -d DESCRIPTION, добавит подробное описание пакета
SUMMARY и DESCRIPTION пишутся в кавычках, новые строки начинаются, очевидно, в новых строках без пробела, в кавычках.
-s "Classic 2D jump'n run sidescroller game in a Super Mario style" -d "SuperTux is a jump'n run like game, with strong inspiration from the Super Mario Bros games for Nintendo. Run and jump through multiple worlds, fighting off enemies by jumping on them or bumping them from below. Grabbing power-ups and other stuff on the way."
Создаем репозиторий:
$ genspec -n supertux -v 0.5 -l GPLv3 -u http://www.supertux.org -s "Classic 2D jump'n run sidescroller game in a Super Mario style" -d "SuperTux is a jump'n run like game, with strong inspiration from the Super Mario Bros games for Nintendo. Run and jump through multiple worlds, fighting off enemies by jumping on them or bumping them from below. Grabbing power-ups and other stuff on the way."
Результат:
Name: supertux
Version: 0.5
Release: alt1
Summary: Classic 2D jump'n run sidescroller game in a Super Mario style
License: GPLv3
Group: Other
Url: http://www.supertux.org/
Packager: Petya Ivanov <petyaivanov@altlinux.org>
Source: %name-%version.tar
#BuildRequires:
%description
SuperTux is a jump'n run like game, with strong inspiration from the Super Mario Bros games for Nintendo.
Run and jump through multiple worlds, fighting off enemies by jumping on them or bumping them from below. Grabbing power-ups and other stuff on the way.
%prep
%setup
%build
%configure
%make_build
%install
%makeinstall_std
%check
%make_build check
%files
%doc *.md
%_bindir/*
%_man1dir/*
%changelog
* Thu Feb 20 2025 Petya Ivanov <petyaivanov@altlinux.org> 0.5-alt1
Указание конкретного шаблона
Python
Например, мы хотим оформить модуль для pyfltk.
Добавляем строчку
-t
и добавляем тип шаблона.
В нашем случае:
-t python3
Создаем репозиторий:
$ genspec -n pyfltk -v 1.3.8 -l LGPL-2.0 -u https://pyfltk.sourceforge.io/ -t python3
Результат:
%define pypi_name pyfltk
%def_without check
Name: python3-module-%pypi_name
Version: 1.3.8
Release: alt1
Summary:
License: LGPL-2.0
Group: Development/Python3
URL: https://pyfltk.sourceforge.io/
Packager: Petya Ivanov <petyaivanov@altlinux.org>
BuildRequires(pre): rpm-build-python3
BuildRequires: python3-devel python3-module-setuptools python3-module-wheel
BuildArch: noarch
Source: %pypi_name-%version.tar
%description
%prep
%setup -n %pypi_name-%version
%build
%pyproject_build
%install
%pyproject_install
%check
#%%tox_create_default_config
%tox_check_pyproject
%files
%doc *.md
%python3_sitelibdir/%pypi_name/
%python3_sitelibdir/%{pyproject_distinfo %pypi_name}
%changelog
* Thu Feb 20 2025 Petya Ivanov <petyaivanov@altlinux.org> 1.3.8-alt1
Описание изменений
Добавляем строчку
-c
и в кавычках после нее описание изменений. Например:
-c "Собрана начальная версия" $ genspec -n pyfltk -v 1.3.8 -l LGPL-2.0 -u https://pyfltk.sourceforge.io/ -t python3 -c "Собрана начальная версия"
Результат:
%define pypi_name pyfltk
%def_without check
Name: python3-module-%pypi_name
Version: 1.3.8
Release: alt1
Summary:
License: LGPL-2.0
Group: Development/Python3
URL: https://pyfltk.sourceforge.io/
Packager: Petya Ivanov <petyaivanov@altlinux.org>
BuildRequires(pre): rpm-build-python3
BuildRequires: python3-devel python3-module-setuptools python3-module-wheel
BuildArch: noarch
Source: %pypi_name-%version.tar
%description
%prep
%setup -n %pypi_name-%version
%build
%pyproject_build
%install
%pyproject_install
%check
#%%tox_create_default_config
%tox_check_pyproject
%files
%doc *.md
%python3_sitelibdir/%pypi_name/
%python3_sitelibdir/%{pyproject_distinfo %pypi_name}
%changelog
* Thu Feb 20 2025 Petya Ivanov <petyaivanov@altlinux.org> 1.3.8-alt1
Собрана начальная версия