<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.rosa.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=A.proklov</id>
	<title>ROSA Wiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.rosa.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=A.proklov"/>
	<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/A.proklov"/>
	<updated>2026-05-08T18:59:23Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=687</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=687"/>
		<updated>2026-04-12T12:17:33Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file to build python3 module with pyproject.toml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3dist(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Rust with vendor =&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Foo&lt;br /&gt;
Group:		Foo&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and use &#039;cargo vendor&#039;&lt;br /&gt;
# archve vendor directory &#039;tar -c -I &amp;quot;zstd -6&amp;quot; -f ../%%{name}-vendor-%%{version}.tar.zst vendor&#039;&lt;br /&gt;
# or use upd.sh script&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.zst&lt;br /&gt;
Source10:	upd.sh&lt;br /&gt;
BuildRequires:	rust-packaging&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -a1&lt;br /&gt;
%cargo_prep -v vendor&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cargo_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
#%%cargo_install&lt;br /&gt;
# or&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 ./target/release/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example upd.sh script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
NAME=$(rpmspec -q --srpm --qf &#039;%{name}&#039; *.spec)&lt;br /&gt;
VERSION=$(rpmspec -q --srpm --qf &#039;%{version}&#039; *.spec)&lt;br /&gt;
&lt;br /&gt;
if [ ! -f ${NAME}-${VERSION}.tar.gz ]; then&lt;br /&gt;
	echo &amp;quot;${NAME}: Downloading source&amp;quot;&lt;br /&gt;
	spectool --get-files --source 0 *.spec&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${NAME}: Preparing&amp;quot;&lt;br /&gt;
tar xfz ${NAME}-${VERSION}.tar.gz&lt;br /&gt;
&lt;br /&gt;
if [ ! -d ${NAME}-${VERSION} ]; then&lt;br /&gt;
echo &amp;quot;Unpacked ${NAME}-${VERSION} directory not found!&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
pushd ${NAME}-${VERSION}&lt;br /&gt;
    echo &amp;quot;${NAME}: Running cargo vendor&amp;quot;&lt;br /&gt;
    cargo vendor&lt;br /&gt;
    echo &amp;quot;${NAME}: Compressing the archive&amp;quot;&lt;br /&gt;
    tar -c -I &#039;zstd -6&#039; -f ../${NAME}-vendor-${VERSION}.tar.zst vendor&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
rm .abf.yml&lt;br /&gt;
abf put&lt;br /&gt;
&lt;br /&gt;
rm -rf ./${NAME}-${VERSION}&lt;br /&gt;
echo &amp;quot;${NAME}: Done&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=658</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=658"/>
		<updated>2026-03-22T01:01:15Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a Rust with vendor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Rust with vendor =&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Foo&lt;br /&gt;
Group:		Foo&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and use &#039;cargo vendor&#039;&lt;br /&gt;
# archve vendor directory &#039;tar -cpJf ../vendor-%%{version}.tar.xz vendor&#039;&lt;br /&gt;
# or use upd.sh script&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.xz&lt;br /&gt;
Source10:	upd.sh&lt;br /&gt;
BuildRequires:	rust-packaging&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -a1&lt;br /&gt;
%cargo_prep -v vendor&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cargo_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
#%%cargo_install&lt;br /&gt;
# or&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 ./target/release/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example upd.sh script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
NAME=$(rpmspec -q --srpm --qf &#039;%{name}&#039; *.spec)&lt;br /&gt;
VERSION=$(rpmspec -q --srpm --qf &#039;%{version}&#039; *.spec)&lt;br /&gt;
&lt;br /&gt;
if [ ! -f ${NAME}-${VERSION}.tar.gz ]; then&lt;br /&gt;
	echo &amp;quot;${NAME}: Downloading source&amp;quot;&lt;br /&gt;
	spectool --get-files --source 0 *.spec&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${NAME}: Preparing&amp;quot;&lt;br /&gt;
tar xfz ${NAME}-${VERSION}.tar.gz&lt;br /&gt;
&lt;br /&gt;
if [ ! -d ${NAME}-${VERSION} ]; then&lt;br /&gt;
echo &amp;quot;Unpacked ${NAME}-${VERSION} directory not found!&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
pushd ${NAME}-${VERSION}&lt;br /&gt;
    echo &amp;quot;${NAME}: Running cargo vendor&amp;quot;&lt;br /&gt;
    cargo vendor&lt;br /&gt;
    echo &amp;quot;${NAME}: Compressing the archive&amp;quot;&lt;br /&gt;
    tar cfJ ../${NAME}-vendor-${VERSION}.tar.xz vendor&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
rm .abf.yml&lt;br /&gt;
abf put&lt;br /&gt;
&lt;br /&gt;
rm -rf ./${NAME}-${VERSION}&lt;br /&gt;
echo &amp;quot;${NAME}: Done&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Autoupdate_templates&amp;diff=656</id>
		<title>Autoupdate templates</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Autoupdate_templates&amp;diff=656"/>
		<updated>2026-02-18T05:39:14Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Разработчику]]&lt;br /&gt;
Примеры содержимого .nvchecker.toml (используется для автоматической проверки версии программ)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Замечания:&lt;br /&gt;
[foo] - имя должно совпадать с Name в спек-файле&lt;br /&gt;
&lt;br /&gt;
Для репозитария github:&lt;br /&gt;
* prefix = &amp;quot;v&amp;quot; - принимает значение из tags (например если тег v1.2.3)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;github&amp;quot;&lt;br /&gt;
github = &amp;quot;&amp;lt;github_user&amp;gt;/foo&amp;quot;&lt;br /&gt;
prefix = &amp;quot;v&amp;quot;&lt;br /&gt;
use_max_tag = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для репозитария git (можно использовать и для github):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;git&amp;quot;&lt;br /&gt;
git = &amp;quot;https://gitlab.com/user/foo.git&amp;quot;&lt;br /&gt;
prefix = &amp;quot;v&amp;quot;&lt;br /&gt;
use_max_tag = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Репозитарий git с префиксом и исключением alpha или beta или rc версий&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;git&amp;quot;&lt;br /&gt;
git = &amp;quot;https://gitlab.com/user/foo.git&amp;quot;&lt;br /&gt;
prefix = &amp;quot;foo-&amp;quot;&lt;br /&gt;
exclude_regex = &amp;quot;.*(alpha|beta|rc).*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поиск по http странице, ищется совпадение по regex&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;regex&amp;quot;&lt;br /&gt;
url = &amp;quot;http://packages.foo.com/pool/main/f/foo/&amp;quot;&lt;br /&gt;
regex = &amp;quot;foo-([0-9\\.\\-]+).tar.*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поиск по http странице с заменой символов, ищется совпадение по regex, символы &amp;quot;-&amp;quot; заменяются на &amp;quot;_&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;regex&amp;quot;&lt;br /&gt;
url = &amp;quot;https://company.com/foo/&amp;quot;&lt;br /&gt;
regex = &amp;quot;foo-([0-9\\.\\-]+).tar.*&amp;quot;&lt;br /&gt;
from_pattern = &amp;quot;\\-&amp;quot;&lt;br /&gt;
to_pattern = &amp;quot;_&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Для pypi.org:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[python-foo]&lt;br /&gt;
source = &amp;quot;pypi&amp;quot;&lt;br /&gt;
pypi = &amp;quot;foo&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для perl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[perl-foo]&lt;br /&gt;
source = &amp;quot;cpan&amp;quot;&lt;br /&gt;
cpan = &amp;quot;foo&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поиск версии по repology:&lt;br /&gt;
* repo = &amp;quot;alpine_edge&amp;quot; - репозитарий для поиска (см. https://repology.org/repositories/statistics)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;repology&amp;quot;&lt;br /&gt;
repology = &amp;quot;foo&amp;quot;&lt;br /&gt;
repo = &amp;quot;alpine_edge&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Autoupdate_templates&amp;diff=655</id>
		<title>Autoupdate templates</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Autoupdate_templates&amp;diff=655"/>
		<updated>2026-02-18T05:29:35Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Разработчику]]&lt;br /&gt;
Примеры содержимого .nvchecker.toml (используется для автоматической проверки версии программ)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Замечания:&lt;br /&gt;
[python-foo] - имя должно совпадать с Name: в спеке&lt;br /&gt;
&lt;br /&gt;
Для pypi.org:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[python-foo]&lt;br /&gt;
source = &amp;quot;pypi&amp;quot;&lt;br /&gt;
pypi = &amp;quot;foo&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для perl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[perl-foo]&lt;br /&gt;
source = &amp;quot;cpan&amp;quot;&lt;br /&gt;
cpan = &amp;quot;foo&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для репозитария github:&lt;br /&gt;
* prefix = &amp;quot;v&amp;quot; - принимает значение из tags (например если тег v1.2.3)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;github&amp;quot;&lt;br /&gt;
github = &amp;quot;&amp;lt;github_user&amp;gt;/foo&amp;quot;&lt;br /&gt;
prefix = &amp;quot;v&amp;quot;&lt;br /&gt;
use_max_tag = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для репозитария git (можно использовать и для github):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;git&amp;quot;&lt;br /&gt;
git = &amp;quot;https://gitlab.com/user/foo.git&amp;quot;&lt;br /&gt;
prefix = &amp;quot;v&amp;quot;&lt;br /&gt;
use_max_tag = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поиск версии по repology:&lt;br /&gt;
* repo = &amp;quot;alpine_edge&amp;quot; - репозитарий для поиска (см. https://repology.org/repositories/statistics)&lt;br /&gt;
[foo]&lt;br /&gt;
source = &amp;quot;repology&amp;quot;&lt;br /&gt;
repology = &amp;quot;foo&amp;quot;&lt;br /&gt;
repo = &amp;quot;alpine_edge&amp;quot;&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Autoupdate_templates&amp;diff=654</id>
		<title>Autoupdate templates</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Autoupdate_templates&amp;diff=654"/>
		<updated>2026-02-18T05:13:02Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: init&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Примеры содержимого .nvchecker.toml (используется для автоматического обновления программ)&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=653</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=653"/>
		<updated>2026-02-17T02:49:29Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a Rust with vendor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Rust with vendor =&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Foo&lt;br /&gt;
Group:		Foo&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and use &#039;cargo vendor&#039;&lt;br /&gt;
# archve vendor directory &#039;tar -cpJf ../vendor-%%{version}.tar.xz vendor&#039;&lt;br /&gt;
# or use upd.sh script&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.xz&lt;br /&gt;
Source10:	upd.sh&lt;br /&gt;
BuildRequires:	rust-packaging&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
%cargo_prep -v vendor&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cargo_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
#%%cargo_install&lt;br /&gt;
# or&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 ./target/release/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example upd.sh script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
NAME=$(rpmspec -q --srpm --qf &#039;%{name}&#039; *.spec)&lt;br /&gt;
VERSION=$(rpmspec -q --srpm --qf &#039;%{version}&#039; *.spec)&lt;br /&gt;
&lt;br /&gt;
if [ ! -f ${NAME}-${VERSION}.tar.gz ]; then&lt;br /&gt;
	echo &amp;quot;${NAME}: Downloading source&amp;quot;&lt;br /&gt;
	spectool --get-files --source 0 *.spec&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${NAME}: Preparing&amp;quot;&lt;br /&gt;
tar xfz ${NAME}-${VERSION}.tar.gz&lt;br /&gt;
&lt;br /&gt;
if [ ! -d ${NAME}-${VERSION} ]; then&lt;br /&gt;
echo &amp;quot;Unpacked ${NAME}-${VERSION} directory not found!&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
pushd ${NAME}-${VERSION}&lt;br /&gt;
    echo &amp;quot;${NAME}: Running cargo vendor&amp;quot;&lt;br /&gt;
    cargo vendor&lt;br /&gt;
    echo &amp;quot;${NAME}: Compressing the archive&amp;quot;&lt;br /&gt;
    tar cfJ ../${NAME}-vendor-${VERSION}.tar.xz vendor&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
rm .abf.yml&lt;br /&gt;
abf put&lt;br /&gt;
&lt;br /&gt;
rm -rf ./${NAME}-${VERSION}&lt;br /&gt;
echo &amp;quot;${NAME}: Done&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=652</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=652"/>
		<updated>2026-02-17T02:45:54Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a Rust with vendor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Rust with vendor =&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Foo&lt;br /&gt;
Group:		Foo&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and use &#039;cargo vendor&#039;&lt;br /&gt;
# archve vendor directory &#039;tar -cpJf ../vendor-%%{version}.tar.xz vendor&#039;&lt;br /&gt;
# or use upd.sh script&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.xz&lt;br /&gt;
Source10:	upd.sh&lt;br /&gt;
BuildRequires:	rust-packaging&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
%cargo_prep -v vendor&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cargo_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
#%%cargo_install&lt;br /&gt;
# or&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 ./target/release/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=651</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=651"/>
		<updated>2026-02-17T02:35:44Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a golang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Rust with vendor =&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=635</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=635"/>
		<updated>2026-02-04T07:53:36Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a program built using Meson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=634</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=634"/>
		<updated>2026-02-04T07:53:24Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a program written in Qt5 and built using cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=633</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=633"/>
		<updated>2026-02-04T07:53:03Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a program written in Qt4 and built using cmake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=632</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=632"/>
		<updated>2026-02-04T07:52:45Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a program built using CMake */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=627</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=627"/>
		<updated>2026-02-02T12:33:25Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a program built using Perl/Makefile.PL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=626</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=626"/>
		<updated>2026-02-02T12:32:33Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a program built using Perl/Build.PL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		perl-%{upstream_name}&lt;br /&gt;
Version:	%perl_convert_version %{upstream_version}&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		Development/Perl&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:	perl-devel&lt;br /&gt;
BuildRequires:	perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=625</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=625"/>
		<updated>2026-02-02T12:30:29Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=624</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=624"/>
		<updated>2026-02-02T12:28:33Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for a golang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	%{name}-vendor-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE1}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=623</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=623"/>
		<updated>2026-02-02T12:26:46Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	vendor.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE2}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=622</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=622"/>
		<updated>2026-02-02T12:26:07Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* Spec file to build python2 module (ROSA &amp;lt;= 2016.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	vendor.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE2}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=621</id>
		<title>Template Spec Files</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Template_Spec_Files&amp;diff=621"/>
		<updated>2026-02-02T12:24:46Z</updated>

		<summary type="html">&lt;p&gt;A.proklov: /* fix autosetup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spec file for a program built using GNU Autotools =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using CMake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt4 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt4-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt4&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program written in Qt5 and built using cmake =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:  cmake&lt;br /&gt;
BuildRequires:  qt5-devel&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%cmake_qt5&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install -C build&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Meson =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo	&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	meson&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%meson&lt;br /&gt;
%meson_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%meson_install&lt;br /&gt;
&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Makefile.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(ExtUtils::MakeMaker)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Makefile.PL INSTALLDIRS=vendor&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
make test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a program built using Perl/Build.PL =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define upstream_name foo&lt;br /&gt;
%define upstream_version 1.0&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:           perl-%{upstream_name}&lt;br /&gt;
Version:        %perl_convert_version %{upstream_version}&lt;br /&gt;
Release:        1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{upstream_name}-%{upstream_version}.tar.gz&lt;br /&gt;
BuildRequires:  perl-devel&lt;br /&gt;
BuildRequires:  perl(Module::Build)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{upstream_name}-%{upstream_version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
perl Build.PL installdirs=vendor&lt;br /&gt;
./Build CFLAGS=&amp;quot;%{optflags}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
./Build test&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
./Build install destdir=%{buildroot}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Python module =&lt;br /&gt;
== Spec file to build python3 module with setup.py ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
# for files in /usr/lib64/python3.8/site-packages&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
&lt;br /&gt;
# for files in /usr/lib/python3.8/site-packages uncomment next lines&lt;br /&gt;
#%%{python3_sitelib}/*&lt;br /&gt;
#%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py3_install&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python3 module with pyproject.toml ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	GPL&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
#if source available on pypi.org&lt;br /&gt;
Source0:	%pypi_source&lt;br /&gt;
# if source not available on pypi.org uncomment line below and comment Source0 upper&lt;br /&gt;
#Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
BuildRequires:	pyproject-rpm-macros&lt;br /&gt;
# for %%check if needed&lt;br /&gt;
BuildRequires:	python3egg(pytest)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name} -f %{pyproject_files}&lt;br /&gt;
%license LICENSE&lt;br /&gt;
%doc README*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pypi_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
# for autoinstall BuildRequires&lt;br /&gt;
%generate_buildrequires&lt;br /&gt;
%pyproject_buildrequires -r&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%pyproject_wheel&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%pyproject_install&lt;br /&gt;
%pyproject_save_files %{pypi_name}&lt;br /&gt;
&lt;br /&gt;
# uncomment for fix rpmlint error &amp;quot;set python3 shebang&amp;quot;&lt;br /&gt;
#%%py3_shebang_fix&lt;br /&gt;
&lt;br /&gt;
%check&lt;br /&gt;
%pytest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;lt;= 2016.1) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define module	mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{module}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{module}-%{version}.tar.gz&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Example Python module.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc *.txt&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file to build python2 module (ROSA &amp;gt;= 2021.1) ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	%{summary}&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description} &lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spec file for both python2 and python3 modules, ROSA &amp;gt;= 2021.1 ==&lt;br /&gt;
python-mymodule.spec:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define pypi_name mymodule&lt;br /&gt;
&lt;br /&gt;
Summary:	Example module&lt;br /&gt;
Name:		python-%{pypi_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	Apache License&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
Url:		http://mypage.org/mymodule&lt;br /&gt;
Source0:	%{pypi_name}-%{version}.tar.gz&lt;br /&gt;
#if source available on pypi.org uncoment next line, and remove line Source0: above&lt;br /&gt;
#Source0:	%pypi_source&lt;br /&gt;
&lt;br /&gt;
%define _description %{expand:&lt;br /&gt;
Text about&lt;br /&gt;
example Python module&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python2-%{pypi_name}&lt;br /&gt;
Summary:	Example python2 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python2)&lt;br /&gt;
%py2_migration_meta python-%{pypi_name}&lt;br /&gt;
&lt;br /&gt;
%description -n python2-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python2-%{pypi_name}&lt;br /&gt;
%{python2_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n python3-%{pypi_name}&lt;br /&gt;
Summary:	Example python3 module&lt;br /&gt;
Group:		Development/Python&lt;br /&gt;
BuildRequires:	pkgconfig(python3)&lt;br /&gt;
&lt;br /&gt;
%description -n python3-%{pypi_name}&lt;br /&gt;
%{_description}&lt;br /&gt;
&lt;br /&gt;
%files -n python3-%{pypi_name}&lt;br /&gt;
%{python3_sitearch}/*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%py2_build&lt;br /&gt;
%py3_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%py2_install&lt;br /&gt;
%py3_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rpm-openmandriva-setup/blob/rosa2019.1/0513-python2-macro-and-py2_migration_meta.patch %py2_migration_info]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
# Usually we don&#039;t need to build static library&lt;br /&gt;
# But let&#039;s add it to spec template anyway&lt;br /&gt;
%define sdevname %mklibname %{name} -d -s&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{version}.tar.gz&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
Summary:	%{name} shared library&lt;br /&gt;
Group:		System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
%{name} shared library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
%{_libdir}/lib%{name}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:	%{name} development files&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{libname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
%{name} development files.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{sdevname}&lt;br /&gt;
Summary:	%{name} development files (static library)&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Requires:	%{devname} = %{EVRD}&lt;br /&gt;
Provides:	%{name}-static-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{sdevname}&lt;br /&gt;
%{name} development files (static library).&lt;br /&gt;
&lt;br /&gt;
%files -n %{sdevname}&lt;br /&gt;
%{_libdir}/*.a&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure&lt;br /&gt;
%make_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%make_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [[Libraries policy]]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Node.js module =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define oname foo&lt;br /&gt;
&lt;br /&gt;
Summary:        foo&lt;br /&gt;
Name:           nodejs-%{oname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
License:        foo&lt;br /&gt;
Group:          Development/Other&lt;br /&gt;
Url:            foo&lt;br /&gt;
Source0:        %{oname}-%{version}.tgz&lt;br /&gt;
BuildRequires:  nodejs-packaging&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%doc LICENSE&lt;br /&gt;
%{nodejs_sitelib}/%{oname}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n package&lt;br /&gt;
rm -rf node_modules&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname}&lt;br /&gt;
%nodejs_symlink_deps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;gt;= 2021.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define gem_name  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{gem_name}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{gem_name}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems-devel &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%dir %{gem_instdir}&lt;br /&gt;
%license %{gem_instdir}/LICENSE.txt&lt;br /&gt;
%{gem_libdir}&lt;br /&gt;
%exclude %{gem_cache}&lt;br /&gt;
%{gem_spec}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%doc %{gem_docdir}&lt;br /&gt;
%doc %{gem_instdir}/CHANGELOG.md&lt;br /&gt;
%{gem_instdir}/Gemfile&lt;br /&gt;
%doc %{gem_instdir}/README.md&lt;br /&gt;
%doc %{gem_instdir}/SECURITY.md&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{gem_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
mkdir -p %{buildroot}%{gem_dir}&lt;br /&gt;
cp -a .%{gem_dir}/* \&lt;br /&gt;
        %{buildroot}%{gem_dir}/&lt;br /&gt;
cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Ruby Gem (ROSA &amp;lt;= 2016.1) =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define rbname  foo&lt;br /&gt;
&lt;br /&gt;
Summary:        Foo&lt;br /&gt;
Name:           rubygem-%{rbname}&lt;br /&gt;
Version:        1.0&lt;br /&gt;
Release:        1&lt;br /&gt;
Group:          Development/Ruby&lt;br /&gt;
License:        GPLv2+ or Ruby&lt;br /&gt;
URL:            foo&lt;br /&gt;
Source0:        %{rbname}-%{version}.gem&lt;br /&gt;
BuildRequires:  rubygems &lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{ruby_gemdir}/gems/%{rbname}-%{version}&lt;br /&gt;
%{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package        doc&lt;br /&gt;
Summary:        Documentation for %{name}&lt;br /&gt;
Group:          Books/Computer books&lt;br /&gt;
Requires:       %{name} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description    doc&lt;br /&gt;
Documents, RDoc &amp;amp; RI documentation for %{name}.&lt;br /&gt;
&lt;br /&gt;
%files doc&lt;br /&gt;
%{ruby_gemdir}/doc/%{rbname}-%{version}&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
%apply_patches&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gem_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%gem_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file for a Haskell Library =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define _disable_ld_no_undefined 1&lt;br /&gt;
%global debug_package %{nil}&lt;br /&gt;
&lt;br /&gt;
%global pkg_name Foo&lt;br /&gt;
%global pkgver %{pkg_name}-%{version}&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		ghc-%{pkg_name}&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	BSD&lt;br /&gt;
Group:		Development/Haskell&lt;br /&gt;
Url:            https://hackage.haskell.org/package/%{pkg_name}&lt;br /&gt;
Source0:        https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz&lt;br /&gt;
BuildRequires:  ghc-devel&lt;br /&gt;
BuildRequires:  ghc-prof&lt;br /&gt;
BuildRequires:  ghc-rpm-macros&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
%package devel&lt;br /&gt;
Summary:        %{summary}&lt;br /&gt;
Provides:       %{name}-static = %{EVRD}&lt;br /&gt;
Provides:       %{name}-static%{?_isa} = %{EVRD}&lt;br /&gt;
%if %{defined ghc_version}&lt;br /&gt;
Requires:       ghc = %{ghc_version}&lt;br /&gt;
%endif&lt;br /&gt;
Requires:       %{name}%{?_isa} = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description devel&lt;br /&gt;
This package provides the Haskell %{pkg_name} library development files.&lt;br /&gt;
&lt;br /&gt;
%files devel -f %{name}-devel.files&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with haddock}&lt;br /&gt;
%package doc&lt;br /&gt;
Summary:        Haskell %{pkg_name} library documentation&lt;br /&gt;
BuildArch:      noarch&lt;br /&gt;
&lt;br /&gt;
%description doc&lt;br /&gt;
This package provides the Haskell %{pkg_name} library documentation.&lt;br /&gt;
&lt;br /&gt;
%files doc -f %{name}-doc.files&lt;br /&gt;
%license LICENSE&lt;br /&gt;
&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%if %{with ghc_prof}&lt;br /&gt;
%package prof&lt;br /&gt;
Summary:        Haskell %{pkg_name} profiling library&lt;br /&gt;
Requires:       %{name}-devel%{?_isa} = %{EVRD}&lt;br /&gt;
Supplements:    (%{name}-devel and ghc-prof)&lt;br /&gt;
&lt;br /&gt;
%description prof&lt;br /&gt;
This package provides the Haskell %{pkg_name} profiling library.&lt;br /&gt;
&lt;br /&gt;
%files prof -f %{name}-prof.files&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{pkgver}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%ghc_lib_build&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
%ghc_lib_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Spec file when building a git snapshot =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%define commit 0123456789abcdef101112131415161718191a1b&lt;br /&gt;
%define commit_short %(echo %{commit} | head -c6)&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	foo&lt;br /&gt;
Release:	0.git%{commit_short}.1&lt;br /&gt;
License:	foo&lt;br /&gt;
Group:		foo&lt;br /&gt;
Url:		foo&lt;br /&gt;
Source0:	%{name}-%{commit}.tar.gz&lt;br /&gt;
%description&lt;br /&gt;
foo.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%autosetup -p1 -n %{name}-%{commit}&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source example for Github, Gogs, Gitea, Forgejo:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://github.com/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for Gitlab, MosHub:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitlab.com/owner/repo/-/archive/%{commit}/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitWeb:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
Source example for GitVerse:&lt;br /&gt;
&lt;br /&gt;
 Source0:	https://gitverse.ru/api/repos/owner/repo/archive/%{commit}.tar.gz?/%{name}-%{commit}.tar.gz&lt;br /&gt;
&lt;br /&gt;
To update such a package:&lt;br /&gt;
# Change Version to the latest tagged release&lt;br /&gt;
# Change commit hash in the spec&lt;br /&gt;
# Change the first number of the Release tag to &amp;quot;0&amp;quot; if the Version was incrimented, otherwise incriment that first number&lt;br /&gt;
# Change the last number in the Release to 1&lt;br /&gt;
# Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -fv .abf.yml&lt;br /&gt;
spectool -g *.spec&lt;br /&gt;
abf put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If upstream has no tagged versions at all, use &amp;quot;Version: 0&amp;quot;, example: [https://web.archive.org/web/20240703053451/https://abf.io/import/just-backup-btrfs/blob/225cac97e9/just-backup-btrfs.spec]&lt;br /&gt;
&lt;br /&gt;
= Spec file for a golang =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use bundled golang modules (from Source1)&lt;br /&gt;
%global gomodulesmode GO111MODULE=off&lt;br /&gt;
# see Source0&lt;br /&gt;
%global goipath github.com/foo/bar&lt;br /&gt;
&lt;br /&gt;
Summary:	foo&lt;br /&gt;
Name:		foo&lt;br /&gt;
Version:	1.0&lt;br /&gt;
Release:	1&lt;br /&gt;
License:	MIT&lt;br /&gt;
Group:		Development/Other&lt;br /&gt;
Url:		http://github.com/foo/bar&lt;br /&gt;
Source0:	http://github.com/foo/bar/archive/refs/tags/v%{version}.tar.gz?/%{name}-%{version}.tar.gz&lt;br /&gt;
# unpack source and run &#039;go mod vendor&#039; in source dir, tar.gz &#039;vendor&#039; dir&lt;br /&gt;
Source1:	vendor.tar.gz&lt;br /&gt;
BuildRequires:	golang&lt;br /&gt;
%gometa&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
%{summary}.&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%{_bindir}/%{name}&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%goprep&lt;br /&gt;
&lt;br /&gt;
# prepare vendored modules&lt;br /&gt;
tar -xf %{SOURCE2}&lt;br /&gt;
cp -r ./vendor/* _build/src/&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%gobuild -o %{gobuilddir}/bin/%{name} %{goipath}/cmd/%{name}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
install -d %{buildroot}%{_bindir}&lt;br /&gt;
install -Dm0755 %{gobuilddir}/bin/%{name} %{buildroot}%{_bindir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: [https://abf.io/import/rclone]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Управление пакетами]]&lt;/div&gt;</summary>
		<author><name>A.proklov</name></author>
	</entry>
</feed>