The requirements in META.yml seem to be too aggressive. This causes
difficulty compiling on RHEL 5, which can be overcome by ignoring
dependencies, but that makes RPM bundling it awkward.
I've included a patch for META.yml, and .SPEC file to go with it.
Subject: | perl-TaskForest-1.37.meta.patch |
Lower version requirements for compatibility with RHEL 5, which passes almost
all tests as is.
Nico Kadel-Garcia <nkadel@gmail.com>
2011/01/07
*** TaskForest-1.37/META.yml.meta 2010-03-24 00:15:00.000000000 -0400
--- TaskForest-1.37/META.yml 2011-01-07 14:21:01.348031000 -0500
***************
*** 10,21 ****
requires:
Config::General: 2.38
DateTime: 0
! HTTP::Daemon: 5.818
! HTTP::Request: 5.818
! HTTP::Response: 5.82
! HTTP::Status: 5.817
! Log::Log4perl: 1.16
! Net::SMTP: 2.31
Test::Simple: 0.44
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.3.html
--- 10,21 ----
requires:
Config::General: 2.38
DateTime: 0
! HTTP::Daemon: 1.36
! HTTP::Request: 1.40
! HTTP::Response: 1.53
! HTTP::Status: 1.28
! Log::Log4perl: 1.13
! Net::SMTP: 2.29
Test::Simple: 0.44
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.3.html
Subject: | perl-TaskForest.spec |
#
# - TaskForest -
# This spec file was automatically generated by cpan2rpm [ver: 2.028]
# The following arguments were used:
# TaskForest-1.37.tar.gz --no-depchk
# For more information on cpan2rpm please visit: http://perl.arix.com/
#
%define pkgname TaskForest
%define filelist %{pkgname}-%{version}-filelist
%define NVR %{pkgname}-%{version}-%{release}
%define maketest 0
name: perl-TaskForest
summary: TaskForest - Simple, powerful task scheduler
version: 1.37
release: 0%{?dist}
vendor: Aijaz A. Ansari (v-cpan@enoor.com)
packager: Nico Kadel-Garcia <nkadel@gmail.com>
license: Artistic
group: Applications/CPAN
url: http://www.cpan.org
buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n)
buildarch: noarch
prefix: %(echo %{_prefix})
source: TaskForest-%{version}.tar.gz
BuildRequires: perl(Config::General) >= 2.38
BuildRequires: perl(DateTime)
BuildRequires: perl(Test::Simple) >= 0.44
Patch: perl-TaskForest-1.37.meta.patch
# Above patch rolls back these dependencies as described below
BuildRequires: perl(HTTP::Daemon) >= 1.36
BuildRequires: perl(HTTP::Request) >= 1.40
BuildRequires: perl(HTTP::Response) >= 1.53
BuildRequires: perl(HTTP::Status) >= 1.28
BuildRequires: perl(Log::Log4perl) >= 1.13
BuildRequires: perl(Net::SMTP) >= 2.29
#BuildRequires: perl(HTTP::Daemon) >= 5.818
#BuildRequires: perl(HTTP::Request) >= 5.818
#BuildRequires: perl(HTTP::Response) >= 5.82
#BuildRequires: perl(HTTP::Status) >= 5.817
#BuildRequires: perl(Log::Log4perl) >= 1.16
#BuildRequires: perl(Net::SMTP) >= 2.31
%description
The TaskForest Job Scheduler (TF) is a simple but expressive job
scheduling system. A job is defined as any executable program that
resides on the file system. Jobs can depend on each other. Jobs can
also have start times before which a job may not by run. Jobs can be
grouped together into "Families." A family has a start time
associated with it before which none of its jobs may run. A family
also has a list of days-of-the-week associated with it. Jobs within a
family may only run on these days of the week.
Jobs and families are given simple names. A family is described in a
family file whose name is the family name. Each family file is a text
file that contains 1 or more job names. The layout of the job names
within a family file determine the dependencies between the jobs (if
any).
Family names and job names should contain only the characters shown below:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
Let's see a few examples. In these examples the dashes (-), pipes (|)
and line numbers are not parts of the files. They're only there for
illustration purposes. The main script expects environment variables
or command line options or configuration file settings that specify
the locations of the directory that contain family files, the
directory that contains job files, and the directory where the logs
will be written. The directory that contains family files should
contain only family files.
#
# This package was generated automatically with the cpan2rpm
# utility. To get this software or for more information
# please visit: http://perl.arix.com/
#
%prep
%setup -q -n %{pkgname}-%{version}
%patch -p1 -b .meta
chmod -R u+w %{_builddir}/%{pkgname}-%{version}
%build
grep -rsl '^#!.*perl' . |
grep -v '.bak$' |xargs --no-run-if-empty \
%__perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'
CFLAGS="$RPM_OPT_FLAGS"
%{__perl} Makefile.PL `%{__perl} -MExtUtils::MakeMaker -e ' print qq|PREFIX=%{buildroot}%{_prefix}| if \$ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ '`
%{__make}
%if %maketest
%{__make} test
%endif
%install
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%{makeinstall} `%{__perl} -MExtUtils::MakeMaker -e ' print \$ExtUtils::MakeMaker::VERSION <= 6.05 ? qq|PREFIX=%{buildroot}%{_prefix}| : qq|DESTDIR=%{buildroot}| '`
cmd=/usr/share/spec-helper/compress_files
[ -x $cmd ] || cmd=/usr/lib/rpm/brp-compress
[ -x $cmd ] && $cmd
# SuSE Linux
if [ -e /etc/SuSE-release -o -e /etc/UnitedLinux-release ]
then
%{__mkdir_p} %{buildroot}/var/adm/perl-modules
%{__cat} `find %{buildroot} -name "perllocal.pod"` \
| %{__sed} -e s+%{buildroot}++g \
> %{buildroot}/var/adm/perl-modules/%{name}
fi
# remove special files
find %{buildroot} -name "perllocal.pod" \
-o -name ".packlist" \
-o -name "*.bs" \
|xargs -i rm -f {}
# no empty directories
find %{buildroot}%{_prefix} \
-type d -depth \
-exec rmdir {} \; 2>/dev/null
%{__perl} -MFile::Find -le '
find({ wanted => \&wanted, no_chdir => 1}, "%{buildroot}");
print "%doc Changes Todo htdocs INSTALL LICENSE README";
for my $x (sort @dirs, @files) {
push @ret, $x unless indirs($x);
}
print join "\n", sort @ret;
sub wanted {
return if /auto$/;
local $_ = $File::Find::name;
my $f = $_; s|^\Q%{buildroot}\E||;
return unless length;
return $files[@files] = $_ if -f $f;
$d = $_;
/\Q$d\E/ && return for reverse sort @INC;
$d =~ /\Q$_\E/ && return
for qw|/etc %_prefix/man %_prefix/bin %_prefix/share|;
$dirs[@dirs] = $_;
}
sub indirs {
my $x = shift;
$x =~ /^\Q$_\E\// && $x ne $_ && return 1 for @dirs;
}
' > %filelist
[ -z %filelist ] && {
echo "ERROR: empty %files listing"
exit -1
}
%clean
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%files -f %filelist
%defattr(-,root,root)
%changelog
* Fri Jan 7 2011 nkadel@bosinfdevlvm003
- Initial build.
- Roll back dependencies in META.xml with patch for RHEL 5 or earlier.
HTTP::Status, Net::SMTP, HTTP::Response, HTTP::Daemon,
HTTP::Request, and Log::Log4perl