Difference between revisions of "Template Spec Files"

From Rosalab Wiki
Jump to: navigation, search
(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 ==
(in progress)
+
  
 
<pre>
 
<pre>
Line 217: Line 216:
 
Version: 1.0
 
Version: 1.0
 
Release: 1
 
Release: 1
License: Apache 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

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

%py2_migration_meta

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