The Red Hat Software Collection (RHSCL) perl516 contains only a part of the packages which are packaged in RHEL or Fedora. It is not hard to add a new package to RHSCL. The following steps show how to convert a conventional spec file into a Software Collection spec file. The SCL spec file can then be used in both the conventional package and the Software Collection. We will use perl-Pod-Perldoc is used for an example.
Before you start, spec2scl rpm has to be installed.
Run the following command to convert rpm specfile to be SCL ready:
spec2scl perl-Pod-Perldoc.spec < perl-Pod-Perldoc.spec.scl
Then the list of dependencies have to be checked:
-
- Remove
%{scl_prefix}
from all non-perl BuildRequires/Requires.
- Remove
@@ -20,3 +20,3 @@
# Pod::Perldoc::ToMan executes roff
-BuildRequires: %{?scl_prefix}groff-base
+BuildRequires: groff-base
BuildRequires: %{?scl_prefix}perl(Carp)
@@ -56,3 +56,3 @@
# Pod::Perldoc::ToMan executes roff
-Requires: %{?scl_prefix}groff-base
+Requires: groff-base
Requires: %{?scl_prefix}perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
-
- Use conditions if required is provided by different packages on RHEL 6 or 7 Beta.
@@ -20,3 +20,7 @@
# Pod::Perldoc::ToMan executes roff
+%if 0%{?rhel} && 0%{?rhel} < 7
+BuildRequires: groff
+%else
BuildRequires: groff-base
+%endif
BuildRequires: %{?scl_prefix}perl(Carp)
@@ -56,3 +60,7 @@
# Pod::Perldoc::ToMan executes roff
+%if 0%{?rhel} && 0%{?rhel} < 7
+Requires: groff
+%else
Requires: groff-base
+%endif
Requires: %{?scl_prefix}perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
-
- Update getting of value for Requirement:
perl(MODULE_COMPAT_<version>)
.
- Update getting of value for Requirement:
@@ -65,3 +65,3 @@
%endif
-Requires: %{?scl_prefix}perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+Requires: %{?scl_prefix}perl(:MODULE_COMPAT_%(%{?scl:scl enable %{scl} '}eval "`perl -V:version`"; echo $version%{?scl:'}))
Requires: %{?scl_prefix}perl(Encode)
-
- If there are any filters of Provides or Requires valid for rpm >= 4.9, then also add a filter which works for rpm < 4.9 to be able to build properly for rpm on RHEL 6.
@@ -82,6 +82,11 @@
# Remove underspecified dependencies
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\(Pod::Man|Pod::Simple::XMLOutStream|Pod::Simple::RTF\)\s*$
+%if ( 0%{?rhel} && 0%{?rhel} < 7 )
+%filter_from_requires /perl((Pod::Man|Pod::Simple::XMLOutStream|Pod::Simple::RTF))s*$/d
+%filter_setup
+%endif
+
%description
perldoc looks up a piece of documentation in .pod format that is embedded
in the perl installation tree or in a perl script, and displays it via
NOTE:
-
- The macro
%{perl_default_filter}
-
- works for both RHEL6 and 7 Beta.
- Increase Release and update the Changelog.
- works for both RHEL6 and 7 Beta.
@@ -6,5 +6,5 @@
# let's overwrite the module from perl.srpm
Version: %(echo '%{cpan_version}' | sed 's/_/./')
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Look up Perl documentation in Pod format
License: GPL+ or Artistic
@@ -125,4 +125,7 @@
%changelog
+* Thu Mar 27 2014 Jitka Plesnikova <jplesnik@redhat.com> - 3.21-2
+- Initial import to SCL
+
* Mon Jan 06 2014 Petr Pisar <ppisar@redhat.com> - 3.21-1
- 3.21 bump
All spec files used in this post are placed here.
Now, if you find RHSCL is missing your build-requires and run-requires, you should be able to build a new rpm.
More information about RHSCL can be found at Software Collections Guide.
Last updated: November 2, 2023