220 lines
8.9 KiB
Diff
220 lines
8.9 KiB
Diff
Description: Adapt apxs to Debian specific changes
|
|
- Make apxs2 use a2enmod and /etc/apache2/mods-available
|
|
- Make libtool happier
|
|
- Use LDFLAGS from config_vars.mk, allows one to override them
|
|
Forwarded: not-needed
|
|
Author: Stefan Fritsch <sf@debian.org>
|
|
Last-Update: 2012-03-17
|
|
|
|
--- a/support/apxs.in
|
|
+++ b/support/apxs.in
|
|
@@ -48,7 +48,7 @@
|
|
my $CFG_TARGET = get_vars("progname");
|
|
my $CFG_SYSCONFDIR = get_vars("sysconfdir");
|
|
my $CFG_CFLAGS = join ' ', map { get_vars($_) }
|
|
- qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS);
|
|
+ qw(SHLTCFLAGS CFLAGS CPPFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS);
|
|
my $CFG_LDFLAGS = join ' ', map { get_vars($_) }
|
|
qw(LDFLAGS NOTEST_LDFLAGS SH_LDFLAGS);
|
|
my $includedir = $destdir . get_vars("includedir");
|
|
@@ -59,7 +59,7 @@
|
|
my $sbindir = get_vars("sbindir");
|
|
my $CFG_SBINDIR = eval qq("$sbindir");
|
|
my $ltflags = $ENV{'LTFLAGS'};
|
|
-$ltflags or $ltflags = "--silent";
|
|
+$ltflags or $ltflags = "";
|
|
|
|
my %internal_vars = map {$_ => 1}
|
|
qw(TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB
|
|
@@ -286,6 +286,7 @@
|
|
$data =~ s|%TARGET%|$CFG_TARGET|sg;
|
|
$data =~ s|%PREFIX%|$prefix|sg;
|
|
$data =~ s|%INSTALLBUILDDIR%|$installbuilddir|sg;
|
|
+ $data =~ s|%DATADIR%|$datadir|sg;
|
|
|
|
my ($mkf, $mods, $src) = ($data =~ m|^(.+)-=#=-\n(.+)-=#=-\n(.+)|s);
|
|
|
|
@@ -438,7 +439,7 @@
|
|
$la =~ s|\.c$|.la|;
|
|
my $o = $s;
|
|
$o =~ s|\.c$|.o|;
|
|
- push(@cmds, "$libtool $ltflags --mode=compile $CFG_CC $cflags -I$CFG_INCLUDEDIR $apr_includedir $apu_includedir $opt -c -o $lo $s && touch $slo");
|
|
+ push(@cmds, "$libtool $ltflags --mode=compile --tag=disable-static $CFG_CC $cflags -I$CFG_INCLUDEDIR $apr_includedir $apu_includedir $opt -c -o $lo $s && touch $slo");
|
|
unshift(@objs, $lo);
|
|
}
|
|
|
|
@@ -479,7 +480,7 @@
|
|
$opt .= " -rpath $CFG_LIBEXECDIR -module -avoid-version $apr_ldflags";
|
|
}
|
|
|
|
- push(@cmds, "$libtool $ltflags --mode=link $CFG_CC $ldflags -o $dso_file $opt $lo");
|
|
+ push(@cmds, "$libtool $ltflags --mode=link --tag=disable-static $CFG_CC $ldflags -o $dso_file $opt $lo");
|
|
|
|
# execute the commands
|
|
&execute_cmds(@cmds);
|
|
@@ -513,7 +514,7 @@
|
|
if ($opt_i) {
|
|
push(@cmds, $destdir . "$installbuilddir/instdso.sh SH_LIBTOOL='" .
|
|
"$libtool' $f $CFG_LIBEXECDIR");
|
|
- push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t");
|
|
+ push(@cmds, "chmod 644 $CFG_LIBEXECDIR/$t");
|
|
}
|
|
|
|
# determine module symbolname and filename
|
|
@@ -549,10 +550,11 @@
|
|
$filename = "mod_${name}.c";
|
|
}
|
|
my $dir = $CFG_LIBEXECDIR;
|
|
- $dir =~ s|^$CFG_PREFIX/?||;
|
|
+ # Debian doesn't have a CFG_PREFIX, so this stuffs up:
|
|
+ # $dir =~ s|^$CFG_PREFIX/?||;
|
|
$dir =~ s|(.)$|$1/|;
|
|
$t =~ s|\.la$|.so|;
|
|
- push(@lmd, sprintf("LoadModule %-18s %s", "${name}_module", "$dir$t"));
|
|
+ push(@lmd, [ $name, sprintf("LoadModule %-18s %s", "${name}_module", "$dir$t") ] );
|
|
}
|
|
|
|
# execute the commands
|
|
@@ -560,108 +562,35 @@
|
|
|
|
# activate module via LoadModule/AddModule directive
|
|
if ($opt_a or $opt_A) {
|
|
- if (not -f "$CFG_SYSCONFDIR/$CFG_TARGET.conf") {
|
|
- error("Config file $CFG_SYSCONFDIR/$CFG_TARGET.conf not found");
|
|
+ if (not -d "$CFG_SYSCONFDIR/mods-available") {
|
|
+ error("Config file $CFG_SYSCONFDIR/mods-available not found");
|
|
exit(1);
|
|
}
|
|
|
|
- open(FP, "<$CFG_SYSCONFDIR/$CFG_TARGET.conf") || die;
|
|
- my $content = join('', <FP>);
|
|
- close(FP);
|
|
-
|
|
- if ($content !~ m|\n#?\s*LoadModule\s+|) {
|
|
- error("Activation failed for custom $CFG_SYSCONFDIR/$CFG_TARGET.conf file.");
|
|
- error("At least one `LoadModule' directive already has to exist.");
|
|
- exit(1);
|
|
- }
|
|
-
|
|
- my $lmd;
|
|
- my $c = '';
|
|
- $c = '#' if ($opt_A);
|
|
- foreach $lmd (@lmd) {
|
|
- my $what = $opt_A ? "preparing" : "activating";
|
|
- my $lmd_re = $lmd;
|
|
- $lmd_re =~ s/\s+/\\s+/g;
|
|
-
|
|
- if ($content !~ m|\n#?\s*$lmd_re|) {
|
|
- # check for open <containers>, so that the new LoadModule
|
|
- # directive always appears *outside* of an <container>.
|
|
-
|
|
- my $before = ($content =~ m|^(.*\n)#?\s*LoadModule\s+[^\n]+\n|s)[0];
|
|
-
|
|
- # the '()=' trick forces list context and the scalar
|
|
- # assignment counts the number of list members (aka number
|
|
- # of matches) then
|
|
- my $cntopen = () = ($before =~ m|^\s*<[^/].*$|mg);
|
|
- my $cntclose = () = ($before =~ m|^\s*</.*$|mg);
|
|
-
|
|
- if ($cntopen == $cntclose) {
|
|
- # fine. Last LoadModule is contextless.
|
|
- $content =~ s|^(.*\n#?\s*LoadModule\s+[^\n]+\n)|$1$c$lmd\n|s;
|
|
+ my $entry;
|
|
+ foreach $entry (@lmd) {
|
|
+ my ($name, $lmd) = @{$entry};
|
|
+ my $filename = "$CFG_SYSCONFDIR/mods-available/$name.load";
|
|
+ if (-f $filename) {
|
|
+ my $cmd = "mv $filename $filename.bak~";
|
|
+ if (system($cmd) != 0) {
|
|
+ die "'$cmd' failed\n";
|
|
}
|
|
- elsif ($cntopen < $cntclose) {
|
|
- error('Configuration file is not valid. There are sections'
|
|
- . ' closed before opened.');
|
|
- exit(1);
|
|
- }
|
|
- else {
|
|
- # put our cmd after the section containing the last
|
|
- # LoadModule.
|
|
- my $found =
|
|
- $content =~ s!\A ( # string and capture start
|
|
- (?:(?:
|
|
- ^\s* # start of conf line with a
|
|
- (?:[^<]|<[^/]) # directive which does not
|
|
- # start with '</'
|
|
-
|
|
- .*(?:$)\n # rest of the line.
|
|
- # the '$' is in parentheses
|
|
- # to avoid misinterpreting
|
|
- # the string "$\" as
|
|
- # perl variable.
|
|
-
|
|
- )* # catch as much as possible
|
|
- # of such lines. (including
|
|
- # zero)
|
|
-
|
|
- ^\s*</.*(?:$)\n? # after the above, we
|
|
- # expect a config line with
|
|
- # a closing container (</)
|
|
-
|
|
- ) {$cntopen} # the whole pattern (bunch
|
|
- # of lines that end up with
|
|
- # a closing directive) must
|
|
- # be repeated $cntopen
|
|
- # times. That's it.
|
|
- # Simple, eh? ;-)
|
|
-
|
|
- ) # capture end
|
|
- !$1$c$lmd\n!mx;
|
|
-
|
|
- unless ($found) {
|
|
- error('Configuration file is not valid. There are '
|
|
- . 'sections opened and not closed.');
|
|
- exit(1);
|
|
- }
|
|
+ }
|
|
+
|
|
+ notice("[preparing module `$name' in $filename]");
|
|
+ open(FP, ">$filename") || die;
|
|
+ print FP "$lmd\n";
|
|
+ close(FP);
|
|
+
|
|
+ if ($opt_a) {
|
|
+ my $cmd = "a2enmod $name";
|
|
+ if (system($cmd) != 0) {
|
|
+ die "'$cmd' failed\n";
|
|
}
|
|
- } else {
|
|
- # replace already existing LoadModule line
|
|
- $content =~ s|^(.*\n)#?\s*$lmd_re[^\n]*\n|$1$c$lmd\n|s;
|
|
- }
|
|
- $lmd =~ m|LoadModule\s+(.+?)_module.*|;
|
|
- notice("[$what module `$1' in $CFG_SYSCONFDIR/$CFG_TARGET.conf]");
|
|
- }
|
|
- if (@lmd) {
|
|
- if (open(FP, ">$CFG_SYSCONFDIR/$CFG_TARGET.conf.new")) {
|
|
- print FP $content;
|
|
- close(FP);
|
|
- system("cp $CFG_SYSCONFDIR/$CFG_TARGET.conf $CFG_SYSCONFDIR/$CFG_TARGET.conf.bak && " .
|
|
- "cp $CFG_SYSCONFDIR/$CFG_TARGET.conf.new $CFG_SYSCONFDIR/$CFG_TARGET.conf && " .
|
|
- "rm $CFG_SYSCONFDIR/$CFG_TARGET.conf.new");
|
|
- } else {
|
|
- notice("unable to open configuration file");
|
|
}
|
|
- }
|
|
+
|
|
+ }
|
|
}
|
|
}
|
|
|
|
@@ -681,8 +610,8 @@
|
|
##
|
|
|
|
builddir=.
|
|
-top_srcdir=%PREFIX%
|
|
-top_builddir=%PREFIX%
|
|
+top_srcdir=%DATADIR%
|
|
+top_builddir=%DATADIR%
|
|
include %INSTALLBUILDDIR%/special.mk
|
|
|
|
# the used tools
|