Author: gozer
Date: Mon Jun 27 19:00:56 2005
New Revision: 202113

URL: http://svn.apache.org/viewcvs?rev=202113&view=rev
Log:
RPM Friendly builds :
- make dist tarballs can now be built directly into RPMs with rpmbuild
- Added a new target 'make rpm' to directly build rpms from a checkout


Added:
    perl/modperl/trunk/build/make_rpm_spec   (with props)
Modified:
    perl/modperl/trunk/   (props changed)
    perl/modperl/trunk/Changes
    perl/modperl/trunk/Makefile.PL
    perl/modperl/trunk/lib/ModPerl/Manifest.pm

Propchange: perl/modperl/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jun 27 19:00:56 2005
@@ -4,8 +4,10 @@
 blib
 blibdirs
 blibdirs.ts
+mod_perl.spec
 pm_to_blib
 pm_to_blib.ts
+rpm
 scraps
 diff.txt
 smoke-report-*.txt

Modified: perl/modperl/trunk/Changes
URL: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/Changes?rev=202113&r1=202112&r2=202113&view=diff
==============================================================================
--- perl/modperl/trunk/Changes (original)
+++ perl/modperl/trunk/Changes Mon Jun 27 19:00:56 2005
@@ -12,6 +12,10 @@
 
 =item 2.0.2-dev
 
+RPM Friendly builds : [Gozer]
+- make dist tarballs can now be built directly into RPMs with rpmbuild
+- Added a new target 'make rpm' to directly build rpms from a checkout
+
 
 
 =item 2.0.1 - June 17, 2005

Modified: perl/modperl/trunk/Makefile.PL
URL: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/Makefile.PL?rev=202113&r1=202112&r2=202113&view=diff
==============================================================================
--- perl/modperl/trunk/Makefile.PL (original)
+++ perl/modperl/trunk/Makefile.PL Mon Jun 27 19:00:56 2005
@@ -789,7 +789,18 @@
     my $string = $self->ModPerl::BuildMM::MY::postamble;
 
     $string .= <<'EOF';
-mydist : Apache-Test/META.yml manifest tardist
+mydist : Apache-Test/META.yml mod_perl.spec manifest tardist
+
+rpm: dist
+       @[ -d $(PWD)/rpm ] || mkdir $(PWD)/rpm
+       rpmbuild -ta --define "_rpmdir $(PWD)/rpm" \
+                 --define "_srcrpmdir $(PWD)/rpm" \
+                 $(DISTVNAME).tar.gz
+       @mv $(PWD)/rpm/*/*.rpm $(PWD)/rpm/
+       @rm -rf $(PWD)/rpm/*/
+    
+mod_perl.spec: build/make_rpm_spec
+       $(PERL) build/make_rpm_spec
 
 Apache-Test/META.yml:
        cd Apache-Test && make metafile

Added: perl/modperl/trunk/build/make_rpm_spec
URL: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/build/make_rpm_spec?rev=202113&view=auto
==============================================================================
--- perl/modperl/trunk/build/make_rpm_spec (added)
+++ perl/modperl/trunk/build/make_rpm_spec Mon Jun 27 19:00:56 2005
@@ -0,0 +1,146 @@
+#!perl
+use strict;
+
+require "lib/mod_perl2.pm";
+
+my $dev_build = is_dev_build();
+my $release   = $dev_build ? svn_release() : 1;
+my $version   = $mod_perl2::VERSION_TRIPLET;
+my $path      = $dev_build ? "mod_perl-$version-dev" : "mod_perl-$version";
+my $tarname   = "$path.tar.gz";
+
+my $httpd_ver = min_httpd_ver();
+
+open(my $spec, ">mod_perl.spec") || die "Can't open mod_perl.spec $!";
+
+print $spec <<"EOF";
+%define         _version $mod_perl2::VERSION_TRIPLET
+%define         _release $release
+%define         _source http://perl.apache.org/dist/$tarname
+%define         _dirname $path
+%define         _httpd_min_ver $httpd_ver
+%define         _perl_min_ver 5.6.1
+EOF
+
+print $spec <<'EOF';
+Name:           mod_perl
+Version:        %{_version}
+Release:        %{_release}
+Summary:        An embedded Perl interpreter for the Apache Web server
+Group:          System Environment/Daemons
+License:        Apache License, Version 2.0
+Packager:       mod_perl Development Team <dev@perl.apache.org>
+URL:            http://perl.apache.org/
+Source:         %{_source}
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Requires:       httpd >= %{_httpd_min_ver}
+BuildRequires:  perl >= %{_perl_min_ver}
+BuildRequires:  httpd-devel >= %{_httpd_min_ver}
+BuildRequires:  apr-devel, apr-util-devel
+
+%description
+Mod_perl incorporates a Perl interpreter into the Apache web server,
+so that the Apache web server can directly execute Perl code.
+Mod_perl links the Perl runtime library into the Apache web server and
+provides an object-oriented Perl interface for Apache's C language
+API.  The end result is a quicker CGI script turnaround process, since
+no external Perl interpreter has to be started.
+
+Install mod_perl if you're installing the Apache web server and you'd
+like for it to directly incorporate a Perl interpreter.
+
+%package devel
+Summary:        Files needed for building XS modules that use mod_perl
+Group:          Development/Libraries
+Requires:       mod_perl = %{version}-%{release}, httpd-devel
+
+%description devel 
+The mod_perl-devel package contains the files needed for building XS
+modules that use mod_perl.
+
+%prep
+%setup -q -n %{_dirname}
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL </dev/null \
+       PREFIX=$RPM_BUILD_ROOT/usr \
+       INSTALLDIRS=vendor \
+       MP_APXS=%{_sbindir}/apxs
+make %{?_smp_mflags} OPTIMIZE="$RPM_OPT_FLAGS"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/httpd/modules
+make install \
+    MODPERL_AP_LIBEXECDIR=$RPM_BUILD_ROOT%{_libdir}/httpd/modules \
+    MODPERL_AP_INCLUDEDIR=$RPM_BUILD_ROOT%{_includedir}/httpd
+
+# Remove the temporary files.
+find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
+find $RPM_BUILD_ROOT -type f -name perllocal.pod -exec rm -f {} ';'
+find $RPM_BUILD_ROOT -type f -name '*.bs' -a -size 0 -exec rm -f {} ';'
+find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';'
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+%doc Changes LICENSE README* STATUS SVN-MOVE docs/
+%{_bindir}/*
+%{_libdir}/httpd/modules/mod_perl.so
+%{perl_vendorarch}/auto/*
+%{perl_vendorarch}/Apache/
+%{perl_vendorarch}/Apache2/
+%{perl_vendorarch}/Bundle/
+%{perl_vendorarch}/APR/
+%{perl_vendorarch}/ModPerl/
+%{perl_vendorarch}/*.pm
+%{_mandir}/man?/*
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/httpd/*
+
+%changelog
+EOF
+
+sub min_httpd_ver {
+    my $min_httpd_ver;
+    open my $mk, 'Makefile.PL';
+    while (<$mk>) {
+        if (/MIN_HTTPD_VERSION_DYNAMIC\s*=>\s*'(.*)'/) {
+          $min_httpd_ver = $1;
+          last;
+        }
+    }
+    close $mk;
+    $min_httpd_ver;
+}
+
+sub svn_release {
+  open my $svn, "<.svn/entries";
+  my $revision;
+  while (<$svn>) {
+    if (/revision="(\d+)"/) {
+      $revision = $1;
+      last;
+    }
+  }
+  close $svn;
+  $revision;
+}
+
+sub is_dev_build {
+    my $dev;
+    open my $fh, 'Changes';
+    while (<$fh>) {
+        if (/^=item.*-dev/) {
+            $dev = 1;
+            last;
+        }
+        last if /^=item/;
+    }
+    close $fh;
+    $dev;
+}

Propchange: perl/modperl/trunk/build/make_rpm_spec
------------------------------------------------------------------------------
    svn:executable = *

Modified: perl/modperl/trunk/lib/ModPerl/Manifest.pm
URL: 
http://svn.apache.org/viewcvs/perl/modperl/trunk/lib/ModPerl/Manifest.pm?rev=202113&r1=202112&r2=202113&view=diff
==============================================================================
--- perl/modperl/trunk/lib/ModPerl/Manifest.pm (original)
+++ perl/modperl/trunk/lib/ModPerl/Manifest.pm Mon Jun 27 19:00:56 2005
@@ -31,6 +31,7 @@
 #anything else to be added should go here:
 my @add_files = qw{
     MANIFEST
+    mod_perl.spec
     Apache-Test/META.yml
 };
 


Reply via email to