Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 06 May 2002 23:38:27 +0100
From:      hikari-chan <hikari@hikari.org.uk>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/37803: New port: mod_v2h mass vhosting module for Apache
Message-ID:  <E174r7j-000OOx-00@mail.shad0w.org.uk>

next in thread | raw e-mail | index | archive | help

>Number:         37803
>Category:       ports
>Synopsis:       New port: mod_v2h mass vhosting module for Apache
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon May 06 15:40:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     hikari-chan
>Release:        FreeBSD 4.5-STABLE i386
>Organization:
disorganization
>Environment:
System: FreeBSD pandora.shad0w.org.uk 4.5-STABLE FreeBSD 4.5-STABLE #1: Fri Feb 22 14:45:34 GMT 2002 root@pandora.shad0w.org.uk:/usr/obj/usr/src/sys/PANDORA i386

>Description:
	mod_v2h is a mass virtual hosting module for Apache, it uses mySQL
for holding its data.  I needed to install on a system, so I figured I might
as well write a port for it while I was at it :)

	mod_v2h normaly builds inside the Apache 2 modules directory, so I've
had to clobber together a Makefile to do the build and install instead and 
pinched a little of the Apache apxs script to add the LoadModule line to 
httpd.conf.

>How-To-Repeat:
>Fix:
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#/usr/ports/www/mod_v2h/
#/usr/ports/www/mod_v2h/Makefile
#/usr/ports/www/mod_v2h/pkg-comment
#/usr/ports/www/mod_v2h/pkg-descr
#/usr/ports/www/mod_v2h/distinfo
#/usr/ports/www/mod_v2h/patches
#/usr/ports/www/mod_v2h/patches/patch-aa
#/usr/ports/www/mod_v2h/pkg-plist
#
echo c - /usr/ports/www/mod_v2h/
mkdir -p /usr/ports/www/mod_v2h/ > /dev/null 2>&1
echo x - /usr/ports/www/mod_v2h/Makefile
sed 's/^X//' >/usr/ports/www/mod_v2h/Makefile << 'END-of-/usr/ports/www/mod_v2h/Makefile'
X#
X# ports collection makefile for: mod_v2h
X#
X# Date created: 6th May 2002
X# Whom: hikari-chan
X#
X# $FreeBSD$
X#
X
XPORTNAME=mod_v2h
XPORTVERSION=2.0
XCATEGORIES?=www
XMASTER_SITES=http://www.fractal.net/files/
XDISTNAME=mod_v2h
X
XMAINTAINER=     hikari@hikari.org.uk
X
XBUILD_DEPENDS=  ${LOCALBASE}/sbin/httpd:${PORTSDIR}/www/apache2:\
X${LOCALBASE}/lib/mysql/libmysqlclient.so:${PORTSDIR}/databases/mysql323-client
XRUN_DEPENDS=    ${LOCALBASE}/sbin/httpd:${PORTSDIR}/www/apache2:\
X${LOCALBASE}/lib/mysql/libmysqlclient.so:${PORTSDIR}/databases/mysql323-client
X
XPATCHDIR=       patches
X
XWRKSRC=         ${WRKDIR}/$(DISTNAME)-2
X
X# yadda yadda
Xpost-install:
X@echo ""
X@echo "===>   Stripping ${LOCALBASE}/libexec/apache2/mod_v2h.so"
X@strip ${LOCALBASE}/libexec/apache2/mod_v2h.so
X@echo ""
X@echo "---------------------------------------"
X@echo "Remember to check the documentation on:"
X@echo "http://www.fractal.net/mod_v2h.tm"
X@echo "---------------------------------------"
X@echo ""
X
X.include <bsd.port.mk>
END-of-/usr/ports/www/mod_v2h/Makefile
echo x - /usr/ports/www/mod_v2h/pkg-comment
sed 's/^X//' >/usr/ports/www/mod_v2h/pkg-comment << 'END-of-/usr/ports/www/mod_v2h/pkg-comment'
XA mass virtual hosting module for Apache with support
END-of-/usr/ports/www/mod_v2h/pkg-comment
echo x - /usr/ports/www/mod_v2h/pkg-descr
sed 's/^X//' >/usr/ports/www/mod_v2h/pkg-descr << 'END-of-/usr/ports/www/mod_v2h/pkg-descr'
Xmod_v2h is a mass virtual hosting module for Apache with support
Xfor referencing translation paths from MySQL.  mod_v2h also has
Xthe ability to cache translation rules into a memory image for
Xfaster performance.
X
XWWW: http://www.fractal.net/mod_v2h.tm
X
X- hikari-chan
Xhikari@hikari.org.uk
END-of-/usr/ports/www/mod_v2h/pkg-descr
echo x - /usr/ports/www/mod_v2h/distinfo
sed 's/^X//' >/usr/ports/www/mod_v2h/distinfo << 'END-of-/usr/ports/www/mod_v2h/distinfo'
XMD5 (mod_v2h.tar.gz) = 8333be4ea39c043ad0bdfe0950709d64
END-of-/usr/ports/www/mod_v2h/distinfo
echo c - /usr/ports/www/mod_v2h/patches
mkdir -p /usr/ports/www/mod_v2h/patches > /dev/null 2>&1
echo x - /usr/ports/www/mod_v2h/patches/patch-aa
sed 's/^X//' >/usr/ports/www/mod_v2h/patches/patch-aa << 'END-of-/usr/ports/www/mod_v2h/patches/patch-aa'
X--- /dev/nullTue May  7 00:58:02 2002
X+++ MakefileTue May  7 00:31:27 2002
X@@ -0,0 +1,26 @@
X+APXS=${LOCALBASE}/sbin/apxs
X+PERL=/usr/bin/perl
X+RM=/bin/rm
X+CP=/bin/cp
X+MKDIR=/bin/mkdir
X+
X+CXX=g++
X+CFLAGS+=-shared
X+EXTRA_INCLUDES+=-I${LOCALBASE}/include/mysql -I${LOCALBASE}/include/apache2
X+LIBS+=-lmysqlclient
X+LDFLAGS+=-L${LOCALBASE}/lib/mysql -Wl,-R,/usr/local/lib/mysql \
X+-Wl,-soname,mod_v2h.so
X+
X+all:
X+$(CXX) $(CFLAGS) $(EXTRA_INCLUDES) $(LDFLAGS) $(LIBS) -o mod_v2h.so mod_v2h.cpp
X+
X+install:
X+$(CP) mod_v2h.so ${LOCALBASE}/libexec/apache2/mod_v2h.so
X+$(PERL) add-module
X+$(MKDIR) -p ${LOCALBASE}/share/doc/mod_v2h
X+$(CP) README AUTHORS ${LOCALBASE}/share/doc/mod_v2h/
X+
X+clean:
X+$(RM) -rf .libs
X+$(RM) -f mod_v2h.la
X+
X--- /dev/nullTue May  7 00:58:02 2002
X+++ add-moduleTue May  7 00:30:25 2002
X@@ -0,0 +1,60 @@
X+#!/usr/bin/perl
X+
X+# This was stolen from the Apache apxs script
X+$CFG_SYSCONFDIR = "/usr/local/etc/apache2";
X+$CFG_TARGET = "httpd";
X+$name = "v2h";
X+$dir = "libexec/apache2/";
X+$t = "mod_v2h.so";
X+
X+push(@lmd, sprintf("LoadModule %-18s %s", "${name}_module", "$dir$t"));
X+
X+open(FP, "<$CFG_SYSCONFDIR/$CFG_TARGET.conf") || die("Couldn't open conf file");
X+my $content = join('', <FP>);
X+close(FP);
X+
X+if ($content !~ m|\n#?\s*LoadModule\s+|) {
X+ error("Activation failed for custom $CFG_SYSCONFDIR/$CFG_TARGET.conf file.");
X+ error("At least one `LoadModule' directive already has to exist.");
X+ exit(1);
X+}
X+
X+my $lmd;
X+my $c = '';
X+
X+foreach $lmd (@lmd) {
X+ if ($content !~ m|\n#?\s*$lmd|) {
X+  $content =~ s|^(.*\n#?\s*LoadModule\s+[^\n]+\n)|$1$c$lmd\n|sg;
X+ } else {
X+  $content =~ s|^(.*\n)#?\s*$lmd[^\n]*\n|$1$c$lmd\n|sg;
X+ }
X+
X+ $lmd =~ m|LoadModule\s+(.+?)_module.*|;
X+ notice("[activating module `$1' in $CFG_SYSCONFDIR/$CFG_TARGET.conf]");
X+}
X+
X+my $amd;
X+
X+foreach $amd (@amd) {
X+ if ($content !~ m|\n#?\s*$amd|) {
X+  $content =~ s|^(.*\n#?\s*AddModule\s+[^\n]+\n)|$1$c$amd\n|sg;
X+ } else {
X+  $content =~ s|^(.*\n)#?\s*$amd[^\n]*\n|$1$c$amd\n|sg;
X+ }
X+}
X+
X+if (@lmd or @amd) {
X+ if (open(FP, ">$CFG_SYSCONFDIR/$CFG_TARGET.conf.new")) {
X+  print FP $content;
X+  close(FP);
X+  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");
X+} else {
X+ notice("unable to open configuration file");
X+}
X+
X+}
X+
X+sub notice{
X+    print STDERR "$_[0]\n";
X+}
X+
X
END-of-/usr/ports/www/mod_v2h/patches/patch-aa
echo x - /usr/ports/www/mod_v2h/pkg-plist
sed 's/^X//' >/usr/ports/www/mod_v2h/pkg-plist << 'END-of-/usr/ports/www/mod_v2h/pkg-plist'
Xlibexec/apache2/mod_v2h.so
X%%PORTDOCS%%share/doc/mod_v2h/AUTHORS
X%%PORTDOCS%%share/doc/mod_v2h/README
X%%PORTDOCS%%@dirrm share/doc/mod_v2h
END-of-/usr/ports/www/mod_v2h/pkg-plist
exit

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E174r7j-000OOx-00>