.timer — юнит systemd, который при истечении заданного времени вызывает скрипт .py, выводящий уведомление о дате и времени. После срабатывания таймер снова начинает отсчет времени до запуска скрипта;
.service — содержит описание, расположение скрипта .py и интерпретатора, который будет его обрабатывать.
git clone:
$ git clone https://github.com/danila-Skachedubov/DBusTimer_example.git
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 9 (delta 1), reused 8 (delta 1), pack-reused 0
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (1/1), done
DBusTimer_Example.
DBusTimer_Example и создайте в нем каталог .gear:
$cd DBusTimer_example$mkdir .gear
.gear создайте два файла: файл правил для gear — rules и spec-файл — dbustimer.spec:
$ touch .gear/rules .gear/dbustimer.spec
$ ls -a1
.
..
.gear
.git
script_dbus.py
script_dbus.service
script_dbus.timer
.gear/rules следующим содержимым:
tar: . spec: .gear/dbustimer.specПервая строка указывает, что проект будет упакован в .tar архив. Вторая строка задаёт путь к spec-файлу.
Name, Version, Release, Summary, License, Group, BuildArch, BuildRequires, Source0.
Name: dbustimer Version: 0.4 Release: alt1 Summary: Display system time License: GPLv3+ Group: Other BuildArch: noarch BuildRequires: rpm-build-python3
Name-Version-Release, содержит имя пакета, его версию и релиз сборки. Поле Summary содержит краткое описание пакета. License — лицензия, под которой распространяется ПО (в данном случае — GPLv3+). Group — категория пакета. Так как это тестовый пакет, можно указать группу «Other». BuildRequires — пакеты, необходимые для сборки. Поскольку исходный код написан на Python 3, требуется пакет rpm-build-python3, который содержит макросы для сборки скриптов Python. Source0 — путь к архиву с исходниками (%name-%version.tar).
%description приводится краткое описание программы.
%prep отвечает за подготовку к сборке. Макрос %setup распаковывает исходный код перед компиляцией. Пример заполнения полей %description и %prep:
%description This program displays notifications about the system time with a frequency of one hour. %prep %setup -q
%install указываются пути установки файлов. Чтобы не указывать пути установки файлов вручную, можно использовать предопределенные макросы. Например, %python3_sitelibdir_noarch раскрывается в путь /usr/lib/python3/site-packages. По этому пути будет создан каталог с именем пакета, в который будет помещен файл script_dbus.py с правами доступа 755. Аналогичная операция будет проведена с файлами script_dbus.timer и script_dbus.service. Они должны быть скопированы в каталог /etc/xdg/systemd/user. Так как макроса, раскрывающегося в данный каталог нет, можно использовать макрос %_sysconfdir, который раскрывается в путь /etc. Пример заполнения секции %install:
%install
mkdir -p \
%buildroot%python3_sitelibdir_noarch/%name/
install -Dm0755 script_dbus.py \
%buildroot%python3_sitelibdir_noarch/%name/
mkdir -p \
%buildroot%_sysconfdir/xdg/systemd/user/
cp script_dbus.timer script_dbus.service \
%buildroot%_sysconfdir/xdg/systemd/user/
mkdir -p \ %buildroot%python3_sitelibdir_noarch/%name/ создает каталог dbustimer в окружении buildroot по пути /usr/lib/python3/site-packages.
script_dbus.py копируется с правами 755 в каталог /usr/lib/python3/site-packages/dbustimer/ в окружении buildroot.
%buildroot%_sysconfdir/xdg/systemd/user/, в который копируются файлы .service и .timer.
%files описывается, какие файлы и каталоги с соответствующими атрибутами должны быть скопированы из дерева сборки в rpm-пакет, а затем будут копироваться в целевую систему при установке этого пакета. Все три файла из пакета будут распакованы по путям, описанным в секции %install. Пример заполнения секции %files:
%files %python3_sitelibdir_noarch/%name/script_dbus.py /etc/xdg/systemd/user/script_dbus.service /etc/xdg/systemd/user/script_dbus.timer
%changelog фиксируются изменения:
%changelog * Thu Apr 13 2023 Danila Skachedubov <dan@altlinux.org> 0.4-alt1 - Update system - Changed access rights
Name: dbustimer
Version: 0.4
Release: alt1
Summary: Display system time
License: GPLv3+
Group: Other
BuildArch: noarch
BuildRequires: rpm-build-python3
Source0: %name-%version.tar
%description
This program displays notifications about the system time with a frequency of one hour.
%prep
%setup
%install
mkdir -p \
%buildroot%python3_sitelibdir_noarch/%name/
install -Dm0755 script_dbus.py \
%buildroot%python3_sitelibdir_noarch/%name/
mkdir -p \
%buildroot%_sysconfdir/xdg/systemd/user/
cp script_dbus.timer script_dbus.service \
%buildroot%_sysconfdir/xdg/systemd/user/
%files
%python3_sitelibdir_noarch/%name/script_dbus.py
/etc/xdg/systemd/user/script_dbus.service
/etc/xdg/systemd/user/script_dbus.timer
%changelog
* Thu Apr 13 2023 Danila Skachedubov <dan@altlinux.org> 0.4-alt1
- Update system
- Changed access rights
$ git add .gear/rules .gear/dbustimer.spec
$ gear-hsh ~/.hasher --no-sisyphus-check --commit –v
Примечание
~/.hasher/repo/x86_64/RPMS.hasher/.