diff --git a/apache2-mod_perl.changes b/apache2-mod_perl.changes index 4f6687e..e96c7fd 100644 --- a/apache2-mod_perl.changes +++ b/apache2-mod_perl.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Feb 22 12:37:39 UTC 2012 - dvaleev@suse.com + +- do lfs. Fixes ppc64 build + ------------------------------------------------------------------- Mon Feb 13 10:44:11 UTC 2012 - coolo@suse.com diff --git a/apache2-mod_perl.spec b/apache2-mod_perl.spec index 063f85f..148f4a2 100644 --- a/apache2-mod_perl.spec +++ b/apache2-mod_perl.spec @@ -53,7 +53,7 @@ Version: 2.0.5 Release: 0 Source0: http://perl.apache.org/dist/mod_perl-%{version}.tar.gz Patch: %{name}-2.0.4-tests.diff -Patch1: nolfs.patch +Patch1: lfs-perl-5.14.patch #%define apache_test_version 1_99_15 # cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic up -r MODPERL_%{apache_test_version} #Source1: Apache-Test-%{apache_test_version}.tar.bz2 @@ -114,7 +114,6 @@ software depending on apache2-mod_perl. #%setup -q -n modperl-2.0 -a 1 %setup -q -n mod_perl-%{version} %patch1 -p1 -#%patch find -name ".svn" -type d | xargs rm -rfv %build diff --git a/lfs-perl-5.14.patch b/lfs-perl-5.14.patch new file mode 100644 index 0000000..1b500fd --- /dev/null +++ b/lfs-perl-5.14.patch @@ -0,0 +1,136 @@ +Index: mod_perl-2.0.5/lib/Apache2/Build.pm +=================================================================== +--- mod_perl-2.0.5.orig/lib/Apache2/Build.pm ++++ mod_perl-2.0.5/lib/Apache2/Build.pm +@@ -598,7 +598,7 @@ sub cmp_tuples { + sub perl_ccopts { + my $self = shift; + +- my $cflags = $self->strip_lfs(" $Config{ccflags} "); ++ my $cflags = " $Config{ccflags} "; + + my $fixup = \&{"ccopts_$^O"}; + if (defined &$fixup) { +@@ -2077,94 +2077,6 @@ sub inc { + "@includes"; + } + +-### Picking the right LFS support flags for mod_perl, by Joe Orton ### +-# +-# on Unix systems where by default off_t is a "long", a 32-bit integer, +-# there are two different ways to get "large file" support, i.e. the +-# ability to manipulate files bigger than 2Gb: +-# +-# 1) you compile using -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64. This +-# makes sys/types.h expose off_t as a "long long", a 64-bit integer, and +-# changes the size of a few other types too. The C library headers +-# automatically arrange to expose a correct implementation of functions +-# like lseek() which take off_t parameters. +-# +-# 2) you compile using -D_LARGEFILE64_SOURCE, and use what is called the +-# "transitional" interface. This means that the system headers expose a +-# new type, "off64_t", which is a long long, but the size of off_t is not +-# changed. A bunch of new functions like lseek64() are exposed by the C +-# library headers, which take off64_t parameters in place of off_t. +-# +-# Perl built with -Duselargefiles uses approach (1). +-# +-# APR HEAD uses (2) by default. APR 0.9 does not by default use either +-# approach, but random users can take a httpd-2.0.49 tarball, and do: +-# +-# export CPPFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +-# ./configure +-# +-# to build a copy of apr/httpd which uses approach (1), though this +-# isn't really a supported configuration. +-# +-# The problem that mod_perl has to work around is when you take a +-# package built with approach (1), i.e. Perl, and any package which was +-# *not* built with (1), i.e. APR, and want to interface between +-# them. [1] +-# +-# So what you want to know is whether APR was built using approach (1) +-# or not. APR_HAS_LARGE_FILES in HEAD just tells you whether APR was +-# built using approach (2) or not, which isn't useful in solving this +-# problem. +-# +-# [1]: In some cases, it may be OK to interface between packages which +-# use (1) and packages which use (2). APR HEAD is currently not such a +-# case, since the size of apr_ino_t is still changing when +-# _FILE_OFFSET_BITS is defined. +-# +-# If you want to see how this matters, get some httpd function to do at +-# the very beginning of main(): +-# +-# printf("sizeof(request_rec) = %lu, sizeof(apr_finfo_t) = %ul", +-# sizeof(request_rec), sizeof(apr_finfo_t)); +-# +-# and then put the same printf in mod_perl somewhere, and see the +-# differences. This is why it is a really terribly silly idea to ever +-# use approach (1) in anything other than an entirely self-contained +-# application. +-# +-# there is no conflict if both libraries either have or don't have +-# large files support enabled +-sub has_large_files_conflict { +- my $self = shift; +- +- my $apxs_flags = join $self->apxs_extra_cflags, $self->apxs_extra_cppflags; +- my $apr_lfs64 = $apxs_flags =~ /-D_FILE_OFFSET_BITS=64/; +- my $perl_lfs64 = $Config{ccflags} =~ /-D_FILE_OFFSET_BITS=64/; +- +- # XXX: we don't really deal with the case where APR was built with +- # -D_FILE_OFFSET_BITS=64 but perl wasn't, since currently we strip +- # only perl's ccflags, not apr's flags. the reason we don't deal +- # with it is that we didn't have such a case yet, but may need to +- # deal with it later +- +- return $perl_lfs64 ^ $apr_lfs64; +-} +- +-# if perl is built with uselargefiles, but apr not, the build won't +-# work together as it uses two binary incompatible libraries, so +-# reduce the functionality to the greatest common denominator (C code +-# will have to make sure to prevent any operations that may rely on +-# effects created by uselargefiles, e.g. Off_t=8 instead of Off_t=4) +-sub strip_lfs { +- my ($self, $cflags) = @_; +- return $cflags unless $self->has_large_files_conflict(); +- +- my $lf = $Config{ccflags_uselargefiles} +- || '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'; +- $cflags =~ s/$lf//; +- $cflags; +-} +- + sub define { + my $self = shift; + +Index: mod_perl-2.0.5/xs/APR/PerlIO/Makefile.PL +=================================================================== +--- mod_perl-2.0.5.orig/xs/APR/PerlIO/Makefile.PL ++++ mod_perl-2.0.5/xs/APR/PerlIO/Makefile.PL +@@ -8,23 +8,6 @@ my $build = Apache2::Build->build_config + + my $ccopts = $build->ccopts; + +-# when uselargefiles is on, -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +-# are needed to get the right 'Off_t', without which perlio compiled +-# with Off_t as 'long long int', doesn't quite work with apr_perlio.c +-# compiled with Off_t as 'long int' +-# +-# On the other handl if apr is built without large files support, we +-# have binary compatibility problems, if we try to build mod_perl with +-# -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +-# +-# XXX: it seems that enabling these flags only for apr_perlio/PerlIO +-# seems to do the trick +-if ($build->has_large_files_conflict) { +- $ccopts .= $Config{uselargefiles} +- ? ' ' . $Config{ccflags_uselargefiles} +- : ''; +-} +- + ModPerl::BuildMM::WriteMakefile( + NAME => 'APR::PerlIO', + VERSION_FROM => 'PerlIO.pm', diff --git a/nolfs.patch b/nolfs.patch deleted file mode 100644 index 0b397cf..0000000 --- a/nolfs.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: mod_perl-2.0.5/lib/Apache2/Build.pm -=================================================================== ---- mod_perl-2.0.5.orig/lib/Apache2/Build.pm 2011-02-02 21:23:47.000000000 +0100 -+++ mod_perl-2.0.5/lib/Apache2/Build.pm 2011-05-26 17:12:46.276946520 +0200 -@@ -2147,7 +2147,8 @@ sub has_large_files_conflict { - # with it is that we didn't have such a case yet, but may need to - # deal with it later - -- return $perl_lfs64 ^ $apr_lfs64; -+ return 0; -+ # $perl_lfs64 ^ $apr_lfs64; - } - - # if perl is built with uselargefiles, but apr not, the build won't