forked from Ensembl/homebrew-web
-
Notifications
You must be signed in to change notification settings - Fork 0
/
httpd22.rb
114 lines (98 loc) · 3.7 KB
/
httpd22.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
class Httpd22 < Formula
desc "HTTP server"
homepage "https://httpd.apache.org/"
url "https://archive.apache.org/dist/httpd/httpd-2.2.31.tar.bz2"
sha256 "f32f9d19f535dac63b06cb55dfc023b40dcd28196b785f79f9346779e22f26ac"
conflicts_with "homebrew/apache/httpd22", :because => "different formula of the same software"
conflicts_with "homebrew/apache/httpd24", :because => "different formula and version of the same software"
conflicts_with "ensembl/web/httpd24", :because => "different versions of the same software"
skip_clean :la
option "with-mpm-worker", "Use the Worker Multi-Processing Module instead of Prefork"
option "with-mpm-event", "Use the Event Multi-Processing Module instead of Prefork"
option "with-privileged-ports", "Use the default ports 80 and 443 (which require root privileges), instead of 8080 and 8443"
depends_on "ensembl/web/apr-util"
depends_on "openssl"
depends_on "pcre" => :optional
depends_on "zlib"
if build.with?("mpm-worker") && build.with?("mpm-event")
raise "Cannot build with both worker and event MPMs, choose one"
end
def install
# point config files to opt_prefix instead of the version-specific prefix
inreplace "Makefile.in",
'#@@ServerRoot@@#$(prefix)#', '#@@ServerRoot@@'"##{opt_prefix}#"
# install custom layout
File.open("config.layout", "a") { |f| f.write(httpd_layout) }
args = %W[
--enable-layout=Homebrew
--enable-mods-shared=all
--enable-unique-id
--enable-ssl
--enable-dav
--enable-cache
--enable-proxy
--enable-logio
--enable-deflate
--enable-cgi
--enable-cgid
--enable-suexec
--enable-rewrite
--with-apr=#{Formula["ensembl/web/apr"].opt_prefix}
--with-apr-util=#{Formula["ensembl/web/apr-util"].opt_prefix}
--with-ssl=#{Formula["openssl"].opt_prefix}
--with-z=#{Formula["zlib"].opt_prefix}
]
if build.with? "mpm-worker"
args << "--with-mpm=worker"
elsif build.with? "mpm-event"
args << "--with-mpm=event"
else
args << "--with-mpm=prefork"
end
if build.with? "privileged-ports"
args << "--with-port=80" << "--with-sslport=443"
else
args << "--with-port=8080" << "--with-sslport=8443"
end
if build.with? "ldap"
args << "--with-ldap" << "--enable-ldap" << "--enable-authnz-ldap"
end
args << "--with-pcre=#{Formula["pcre"].opt_prefix}" if build.with? "pcre"
system "./configure", *args
system "make"
system "make", "install"
(var/"apache2/log").mkpath
(var/"apache2/run").mkpath
touch("#{var}/log/apache2/access_log") unless File.exist?("#{var}/log/apache2/access_log")
touch("#{var}/log/apache2/error_log") unless File.exist?("#{var}/log/apache2/error_log")
end
def httpd_layout
<<-EOS
<Layout Homebrew>
prefix: #{prefix}
exec_prefix: ${prefix}
bindir: ${exec_prefix}/bin
sbindir: ${exec_prefix}/bin
libdir: ${exec_prefix}/lib
libexecdir: ${exec_prefix}/libexec
mandir: #{man}
sysconfdir: #{etc}/apache2/2.2
datadir: #{var}/www
installbuilddir: ${prefix}/build
errordir: ${datadir}/error
iconsdir: ${datadir}/icons
htdocsdir: ${datadir}/htdocs
manualdir: ${datadir}/manual
cgidir: #{var}/apache2/cgi-bin
includedir: ${prefix}/include/apache2
localstatedir: #{var}/apache2
runtimedir: #{var}/run/apache2
logfiledir: #{var}/log/apache2
proxycachedir: ${localstatedir}/proxy
</Layout>
EOS
end
test do
system sbin/"httpd", "-v"
end
end