Genspec

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
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
Собрана начальная версия