Difference between revisions of "Template Spec Files"
From Rosalab Wiki
Proklov av (Talk | contribs) |
Proklov av (Talk | contribs) (Add template for python3 build pyproject.toml) |
||
Line 207: | Line 207: | ||
=Spec file for a Python module= | =Spec file for a Python module= | ||
− | == Spec file to build python3 module == | + | == Spec file to build python3 module with setup.py == |
− | + | ||
<pre> | <pre> | ||
Line 217: | Line 216: | ||
Version: 1.0 | Version: 1.0 | ||
Release: 1 | Release: 1 | ||
− | License: | + | License: GPL |
Group: Development/Python | Group: Development/Python | ||
Url: http://mypage.org/mymodule | Url: http://mypage.org/mymodule | ||
Line 242: | Line 241: | ||
%files -n python3-%{pypi_name} | %files -n python3-%{pypi_name} | ||
+ | # for files in /usr/lib64/python3.8/site-packages | ||
%{python3_sitearch}/* | %{python3_sitearch}/* | ||
%{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info | %{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info | ||
+ | # for files in /usr/lib/python3.8/site-packages uncomment next lines | ||
+ | #%%{python3_sitelib}/* | ||
+ | #%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info | ||
#------------------------------------------------------------------ | #------------------------------------------------------------------ | ||
Line 255: | Line 258: | ||
%install | %install | ||
%py3_install | %py3_install | ||
+ | |||
+ | %check | ||
+ | %pytest | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | == Spec file to build python3 module with pyproject.toml == | ||
+ | |||
+ | <pre> | ||
+ | %define pypi_name mymodule | ||
+ | |||
+ | Summary: Example module | ||
+ | Name: python-%{pypi_name} | ||
+ | Version: 1.0 | ||
+ | Release: 1 | ||
+ | License: GPL | ||
+ | Group: Development/Python | ||
+ | Url: http://mypage.org/mymodule | ||
+ | Source0: %{pypi_name}-%{version}.tar.gz | ||
+ | #if source available on pypi.org uncoment next line, and remove line Source0: above | ||
+ | #Source0: %pypi_source | ||
+ | BuildRequires: pkgconfig(python3) | ||
+ | BuildRequires: pyproject-rpm-macros | ||
+ | |||
+ | %define _description \ | ||
+ | Text about \ | ||
+ | example Python module | ||
+ | |||
+ | %description | ||
+ | %{_description} | ||
+ | |||
+ | # for autoinstall BuildRequires | ||
+ | %generate_buildrequires | ||
+ | %pyproject_buildrequires -r | ||
+ | #------------------------------------------------------------------ | ||
+ | |||
+ | %package -n python3-%{pypi_name} | ||
+ | Summary: %{summary} | ||
+ | Group: Development/Python | ||
+ | |||
+ | %description -n python3-%{pypi_name} | ||
+ | %{_description} | ||
+ | |||
+ | %files -n python3-%{pypi_name} -f %{pyproject_files} | ||
+ | %license LICENSE | ||
+ | %doc README* | ||
+ | |||
+ | #------------------------------------------------------------------ | ||
+ | |||
+ | %prep | ||
+ | %autosetup -p1 -n %{pypi_name}-%{version} | ||
+ | |||
+ | %build | ||
+ | %pyproject_wheel | ||
+ | |||
+ | %install | ||
+ | %pyproject_install | ||
+ | %pyproject_save_files %{pypi_name} | ||
+ | |||
+ | %check | ||
+ | %pytest | ||
</pre> | </pre> |
Revision as of 03:25, 29 November 2021
Contents
- 1 Spec file for a program built using GNU Autotools
- 2 Spec file for a program built using CMake
- 3 Spec file for a program written in Qt4 and built using cmake
- 4 Spec file for a program written in Qt5 and built using cmake
- 5 Spec file for a program built using Perl/Makefile.PL
- 6 Spec file for a program built using Perl/Build.PL
- 7 Spec file for a Python module
- 8 Spec file for a Library
- 9 Spec file for a Node.js module
- 10 Spec file for a Ruby Gem (ROSA >= 2021.1)
- 11 Spec file for a Ruby Gem (ROSA <= 2016.1)
- 12 Spec file for a Haskell Library
Spec file for a program built using GNU Autotools
Summary: foo Name: foo Version: 1.0 Release: 1 License: foo Group: foo Url: foo Source0: %{name}-%{version}.tar.bz2 %description foo. %files -f %{name}.lang #------------------------------------------------------------------ %prep %setup -q %build %configure %make %install %makeinstall_std %find_lang %{name}
Spec file for a program built using CMake
Summary: foo Name: foo Version: 1.0 Release: 1 License: foo Group: foo Url: foo Source0: %{name}-%{version}.tar.bz2 BuildRequires: cmake %description foo. %files -f %{name}.lang #------------------------------------------------------------------ %prep %setup -q %build %cmake %make %install %makeinstall_std -C build %find_lang %{name}
Spec file for a program written in Qt4 and built using cmake
Summary: foo Name: foo Version: 1.0 Release: 1 License: foo Group: foo Url: foo Source0: %{name}-%{version}.tar.bz2 BuildRequires: cmake BuildRequires: qt4-devel %description foo. %files -f %{name}.lang #------------------------------------------------------------------ %prep %setup -q %build %cmake_qt4 %make %install %makeinstall_std -C build %find_lang %{name}
Spec file for a program written in Qt5 and built using cmake
Summary: foo Name: foo Version: 1.0 Release: 1 License: foo Group: foo Url: foo Source0: %{name}-%{version}.tar.bz2 BuildRequires: cmake BuildRequires: qt5-devel %description foo. %files -f %{name}.lang #------------------------------------------------------------------ %prep %setup -q %build %cmake_qt5 %make %install %makeinstall_std -C build %find_lang %{name}
Spec file for a program built using Perl/Makefile.PL
%define upstream_name foo %define upstream_version 1.0 Summary: foo Name: perl-%{upstream_name} Version: %perl_convert_version %{upstream_version} Release: 1 License: foo Group: foo Url: foo Source0: %{upstream_name}-%{upstream_version}.tar.bz2 BuildRequires: perl-devel %description foo. %files #------------------------------------------------------------------ %prep %setup -qn %{upstream_name}-%{upstream_version} %build perl Makefile.PL INSTALLDIRS=vendor %make %check %make test %install %makeinstall_std
Spec file for a program built using Perl/Build.PL
%define upstream_name foo %define upstream_version 1.0 Summary: foo Name: perl-%{upstream_name} Version: %perl_convert_version %{upstream_version} Release: 1 License: foo Group: foo Url: foo Source0: %{upstream_name}-%{upstream_version}.tar.bz2 BuildRequires: perl-devel BuildRequires: perl(Module::Build) %description foo. %files #------------------------------------------------------------------ %prep %setup -qn %{upstream_name}-%{upstream_version} %build perl Build.PL installdirs=vendor ./Build CFLAGS="%{optflags}" %check ./Build test %install ./Build install destdir=%{buildroot}
Spec file for a Python module
Spec file to build python3 module with setup.py
%define pypi_name mymodule Summary: Example module Name: python-%{pypi_name} Version: 1.0 Release: 1 License: GPL Group: Development/Python Url: http://mypage.org/mymodule Source0: %{pypi_name}-%{version}.tar.gz #if source available on pypi.org uncoment next line, and remove line Source0: above #Source0: %pypi_source BuildRequires: pkgconfig(python3) %define _description \ Text about \ example Python module %description %{_description} #------------------------------------------------------------------ %package -n python3-%{pypi_name} Summary: %{summary} Group: Development/Python %description -n python3-%{pypi_name} %{_description} %files -n python3-%{pypi_name} # for files in /usr/lib64/python3.8/site-packages %{python3_sitearch}/* %{python3_sitearch}/%{pypi_name}-%{version}-py*.egg-info # for files in /usr/lib/python3.8/site-packages uncomment next lines #%%{python3_sitelib}/* #%%{python3_sitelib}/%{pypi_name}-%{version}-py*.egg-info #------------------------------------------------------------------ %prep %setup -q %build %py3_build %install %py3_install %check %pytest
Spec file to build python3 module with pyproject.toml
%define pypi_name mymodule Summary: Example module Name: python-%{pypi_name} Version: 1.0 Release: 1 License: GPL Group: Development/Python Url: http://mypage.org/mymodule Source0: %{pypi_name}-%{version}.tar.gz #if source available on pypi.org uncoment next line, and remove line Source0: above #Source0: %pypi_source BuildRequires: pkgconfig(python3) BuildRequires: pyproject-rpm-macros %define _description \ Text about \ example Python module %description %{_description} # for autoinstall BuildRequires %generate_buildrequires %pyproject_buildrequires -r #------------------------------------------------------------------ %package -n python3-%{pypi_name} Summary: %{summary} Group: Development/Python %description -n python3-%{pypi_name} %{_description} %files -n python3-%{pypi_name} -f %{pyproject_files} %license LICENSE %doc README* #------------------------------------------------------------------ %prep %autosetup -p1 -n %{pypi_name}-%{version} %build %pyproject_wheel %install %pyproject_install %pyproject_save_files %{pypi_name} %check %pytest
Spec file to build python2 module (ROSA <= 2016.1)
%define module mymodule Summary: Example module Name: python-%{module} Version: 1.0 Release: 1 License: Apache License Group: Development/Python Url: http://mypage.org/mymodule Source0: %{module}-%{version}.tar.gz BuildRequires: pkgconfig(python2) %description Example Python module. %files %doc *.txt %{python2_sitearch}/* #------------------------------------------------------------------ %prep %setup -q %build %py2_build %install %py2_install
Spec file to build python2 module (ROSA >= 2021.1)
%define pypi_name mymodule Summary: Example module Name: python-%{pypi_name} Version: 1.0 Release: 1 License: Apache License Group: Development/Python Url: http://mypage.org/mymodule Source0: %{pypi_name}-%{version}.tar.gz #if source available on pypi.org uncoment next line, and remove line Source0: above #Source0: %pypi_source BuildRequires: pkgconfig(python2) %define _description \ Text about \ example Python module %description %{_description} #------------------------------------------------------------------ %package -n python2-%{pypi_name} Summary: %{summary} Group: Development/Python %description -n python2-%{pypi_name} %{_description} %files -n python2-%{pypi_name} %{python2_sitearch}/* #------------------------------------------------------------------ %prep %setup -q %build %py2_build %install %py2_install
Spec file for both python2 and python3 modules, ROSA >= 2021.1
%define pypi_name mymodule Summary: Example module Name: python-%{pypi_name} Version: 1.0 Release: 1 License: Apache License Group: Development/Python Url: http://mypage.org/mymodule Source0: %{pypi_name}-%{version}.tar.gz #if source available on pypi.org uncoment next line, and remove line Source0: above #Source0: %pypi_source %define _description \ Text about \ example Python module %description %{_description} #------------------------------------------------------------------ %package -n python2-%{pypi_name} Summary: Example python2 module Group: Development/Python BuildRequires: pkgconfig(python2) %py2_migration_meta python-%{pypi_name} %description -n python2-%{pypi_name} %{_description} %files -n python2-%{pypi_name} %{python2_sitearch}/* #------------------------------------------------------------------ %package -n python3-%{pypi_name} Summary: Example python3 module Group: Development/Python BuildRequires: pkgconfig(python3) %description -n python3-%{pypi_name} %{_description} %files -n python3-%{pypi_name} %{python3_sitearch}/* #------------------------------------------------------------------ %prep %setup -q %build %py2_build %py3_build %install %py2_install %py3_install
See also
Spec file for a Library
%define major 1 %define libname %mklibname %{name} %{major} %define devname %mklibname %{name} -d # Usually we don't need to build static library # But let's add it to spec template anyway %define sdevname %mklibname %{name} -d -s Summary: foo Name: foo Version: 1.0 Release: 1 License: foo Group: foo Url: foo Source0: %{name}-%{version}.tar.bz2 %description foo. #------------------------------------------------------------------ %package -n %{libname} Summary: foo shared library Group: System/Libraries %description -n %{libname} foo shared library. %files -n %{libname} %{_libdir}/lib%{name}.so.%{major}* #------------------------------------------------------------------ %package -n %{devname} Summary: foo development files Group: Development/Other Requires: %{libname} = %{EVRD} Provides: %{name}-devel = %{EVRD} %description -n %{devname} foo development files. %files -n %{devname} %{_includedir}/*.h %{_libdir}/*.so #------------------------------------------------------------------ %package -n %{sdevname} Summary: foo development files (static library) Group: Development/Other Requires: %{devname} = %{EVRD} Provides: %{name}-static-devel = %{EVRD} %description -n %{sdevname} foo development files (static library). %files -n %{sdevname} %{_libdir}/*.a #------------------------------------------------------------------ %prep %setup -q %build %configure %make %install %makeinstall_std
See also
Spec file for a Node.js module
%define oname foo Summary: foo Name: nodejs-%{oname} Version: 1.0 Release: 1 License: foo Group: Development/Other Url: foo Source0: %{oname}-%{version}.tgz BuildRequires: nodejs-packaging BuildArch: noarch %description %{summary}. %files %doc LICENSE %{nodejs_sitelib}/%{oname} #------------------------------------------------------------------ %prep %setup -q -n package rm -rf node_modules %build %install mkdir -p %{buildroot}/%{nodejs_sitelib}/%{oname} cp -r package.json index.js %{buildroot}/%{nodejs_sitelib}/%{oname} %nodejs_symlink_deps
Spec file for a Ruby Gem (ROSA >= 2021.1)
%define gem_name foo Summary: Foo Name: rubygem-%{gem_name} Version: 1.0 Release: 1 Group: Development/Ruby License: GPLv2+ or Ruby URL: foo Source0: %{gem_name}-%{version}.gem BuildRequires: rubygems-devel BuildArch: noarch %description %{summary}. %files %dir %{gem_instdir} %license %{gem_instdir}/LICENSE.txt %{gem_libdir} %exclude %{gem_cache} %{gem_spec} %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec #------------------------------------------------------------------ %package doc Summary: Documentation for %{name} Group: Books/Computer books Requires: %{name} = %{EVRD} %description doc Documents, RDoc & RI documentation for %{name}. %files doc %doc %{gem_docdir} %doc %{gem_instdir}/CHANGELOG.md %{gem_instdir}/Gemfile %doc %{gem_instdir}/README.md %doc %{gem_instdir}/SECURITY.md #------------------------------------------------------------------ %prep %setup -q -n %{gem_name}-%{version} %build %gem_build %install %gem_install mkdir -p %{buildroot}%{gem_dir} cp -a .%{gem_dir}/* \ %{buildroot}%{gem_dir}/ cp ../%{gem_name}-%{version}.gemspec %{buildroot}%{gem_dir}/specifications
Spec file for a Ruby Gem (ROSA <= 2016.1)
%define rbname foo Summary: Foo Name: rubygem-%{rbname} Version: 1.0 Release: 1 Group: Development/Ruby License: GPLv2+ or Ruby URL: foo Source0: %{rbname}-%{version}.gem BuildRequires: rubygems BuildArch: noarch %description %{summary}. %files %{ruby_gemdir}/gems/%{rbname}-%{version} %{ruby_gemdir}/specifications/%{rbname}-%{version}.gemspec #------------------------------------------------------------------ %package doc Summary: Documentation for %{name} Group: Books/Computer books Requires: %{name} = %{EVRD} %description doc Documents, RDoc & RI documentation for %{name}. %files doc %{ruby_gemdir}/doc/%{rbname}-%{version} #------------------------------------------------------------------ %prep %setup -q %build %gem_build %install %gem_install
Spec file for a Haskell Library
%define module foo Summary: foo Name: ghc-%{module} Version: 1.0 Release: 1 License: BSD Group: Development/Haskell Url: foo Source0: %{module}-%{version}.tar.gz BuildRequires: ghc-devel BuildRequires: haskell-macros Requires(post,preun): ghc %description %{summary}. %files %{_libdir}/%{module}-%{version} %{_cabal_rpm_deps_dir} %{_cabal_haddoc_files} #---------------------------------------------------------------------------- %prep %setup -q -n %{module}-%{version} %build %_cabal_build %install %_cabal_install %_cabal_rpm_gen_deps %_cabal_scriptlets