7baa188cd98e80f98121960062470fbe76a9aa56
[OpenSRF.git] / src / extras / Makefile.install
1 # ---------------------------------------------------------------------
2 # Author: Bill Erickson <erickson@esilibrary.com>
3 # Author: Dan Scott <dscott@laurentian.ca>
4 #
5 # Makefile to install prerequisites for OpenSRF
6 #
7 # Currently supports Debian (jessie/stretch) and Ubuntu
8 # (xenial/bionic)
9 #
10 # Installs Perl prereqs, libjs with Perl wrapper
11 #
12 # usage:
13 #       make -f Makefile.install debian-buster
14 #       - or -
15 #       make -f Makefile.install debian-stretch
16 #       - or -
17 #       make -f Makefile.install debian-jessie
18 #       - or -
19 #       make -f Makefile.install ubuntu-xenial
20 #   - or -
21 #   make -f Makefile.install ubuntu-bionic
22 #       - or -
23 #       make -f Makefile.install fedora
24 #
25 # ---------------------------------------------------------------------
26
27 # Make any assumptions about the shell being used explicit
28 SHELL=/bin/bash 
29
30 # 64 or 32 bit os?
31 LBITS=$(shell getconf LONG_BIT)
32
33 APT_TOOL=apt-get -yq
34
35 # Debian dependencies
36 DEBS =  \
37         autoconf\
38         automake\
39         build-essential\
40         check\
41         ejabberd\
42         less\
43         libapache2-mod-perl2\
44         libcache-memcached-perl\
45         libclass-dbi-abstractsearch-perl\
46         libclass-dbi-sqlite-perl\
47         libdatetime-format-builder-perl\
48         libdatetime-format-mail-perl\
49         libdatetime-perl\
50         libdatetime-timezone-perl\
51         liberror-perl\
52         libexpat1-dev\
53         libfile-find-rule-perl\
54         libgcrypt20-dev \
55         libgdbm-dev \
56         liblog-log4perl-perl\
57         libmemcached-dev \
58         libmemcached-tools \
59         libmodule-build-perl\
60         libnet-dns-perl\
61         libperl-dev\
62         libreadline-dev\
63         libtemplate-perl\
64         libtest-pod-perl\
65         libtie-ixhash-perl\
66         libtool\
67         libuniversal-require-perl\
68         libunix-syslog-perl\
69         libwww-perl\
70         libxml2-dev\
71         libxml-libxml-perl\
72         libxml-libxslt-perl\
73         libxml-simple-perl\
74         libxslt1-dev\
75         memcached\
76         pkg-config\
77         psmisc\
78         tar\
79         unzip\
80         zip\
81         zlib1g-dev
82
83 FEDORAS = \
84         autoconf \
85         automake \
86         check \
87         check-devel \
88         ejabberd \
89         expat-devel \
90         gcc \
91         gdbm-devel \
92         httpd \
93         httpd-devel \
94         less \
95         libgcrypt-devel \
96         libmemcached \
97         libmemcached-devel \
98         libtool \
99         libxml-libxml-perl \
100         libxml-libxslt-perl \
101         libxml2-devel \
102         libxslt-devel \
103         make \
104         memcached \
105         mod_perl \
106         perl-Cache-Memcached \
107         perl-Class-DBI \
108         perl-Class-DBI-AbstractSearch \
109         perl-Class-DBI-SQLite \
110         perl-DateTime-Format-Builder \
111         perl-DateTime-Format-ISO8601 \
112         perl-DateTime-Format-Mail \
113         perl-DateTime-Set \
114         perl-devel \
115         perl-Error \
116         perl-File-Find-Rule \
117         perl-JSON-XS \
118         perl-libwww-perl \
119         perl-Log-Log4perl \
120         perl-Module-Build \
121         perl-Net-DNS \
122         perl-Net-Server \
123         perl-SQL-Abstract-Limit \
124         perl-Template-Toolkit \
125         perl-Test-Deep \
126         perl-Test-Exception \
127         perl-Test-Pod \
128         perl-Tie-IxHash \
129         perl-UNIVERSAL-require \
130         perl-Unix-Syslog \
131         perl-XML-LibXML \
132         perl-XML-LibXSLT \
133         perl-XML-Simple \
134         psmisc \
135         readline-devel \
136         tar
137
138 DEB_APACHE_MODS = \
139         ssl
140
141 EXTRA_DEBS = \
142         libdatetime-format-iso8601-perl \
143         libjson-xs-perl \
144         libnet-server-perl
145
146 EXTRA_DEBS_JESSIE = \
147         apache2-mpm-prefork \
148         apache2-prefork-dev \
149         libncurses5-dev
150
151 EXTRA_DEBS_DEBIAN_BUSTER = \
152         apache2 \
153         apache2-dev \
154         libncurses5-dev
155
156 EXTRA_DEBS_DEBIAN_STRETCH = \
157         apache2 \
158         apache2-dev \
159         libncurses5-dev
160
161 EXTRA_DEBS_UBUNTU_XENIAL = \
162         apache2 \
163         apache2-dev \
164         libncurses5-dev
165
166 EXTRA_DEBS_UBUNTU_BIONIC = \
167         apache2 \
168         apache2-dev \
169         libncurses5-dev
170
171 # ----------------------------------------------------------------------------
172
173 all: 
174         @echo "please specify an OS" && exit 0
175
176
177 debian-buster: generic_debian buster apache_mpm_prefork_mods apache_perl_mod
178 debian-stretch: generic_debian stretch apache_mpm_prefork_mods apache_perl_mod
179 debian-jessie: generic_debian jessie apache_mpm_prefork_mods
180 buster: install_extra_debs install_extra_debs_buster debian_sys_config
181 stretch: install_extra_debs install_extra_debs_stretch debian_sys_config
182 jessie: install_extra_debs_jessie debian_sys_config
183 generic_debian: install_debs
184
185 fedora: install_fedora_rpms
186
187 ubuntu-xenial: generic_ubuntu xenial apache_mpm_prefork_mods apache_perl_mod
188 ubuntu-bionic: generic_ubuntu bionic apache_mpm_prefork_mods apache_perl_mod
189 xenial: install_extra_debs install_extra_debs_xenial debian_sys_config
190 bionic: install_extra_debs install_extra_debs_bionic debian_sys_config
191 generic_ubuntu: install_debs
192
193 # ------------------------------------------------------------------
194 # - DEBIAN ---------------------------------------------------------
195
196 debian_sys_config: 
197         # link the apache modules in
198         for m in $(DEB_APACHE_MODS); do a2enmod $$m; done;
199
200 # Install the debian-specific dependencies
201 install_debs:
202         $(APT_TOOL) install $(DEBS)
203
204 # Install the debian-specific dependencies for more modern distros
205 install_extra_debs:
206         $(APT_TOOL) install $(EXTRA_DEBS)
207
208 install_extra_debs_buster:
209         $(APT_TOOL) install $(EXTRA_DEBS_DEBIAN_BUSTER)
210
211 install_extra_debs_stretch:
212         $(APT_TOOL) install $(EXTRA_DEBS_DEBIAN_STRETCH)
213
214 install_extra_debs_jessie: install_extra_debs
215         $(APT_TOOL) install $(EXTRA_DEBS_JESSIE)
216
217 # Install even more packaged dependencies on modern distros
218 install_extra_debs_xenial:
219         $(APT_TOOL) install $(EXTRA_DEBS_UBUNTU_XENIAL)
220
221 install_extra_debs_bionic:
222         $(APT_TOOL) install $(EXTRA_DEBS_UBUNTU_BIONIC)
223
224
225 # Some OSes activate the Apache mpm_event module by default.
226 # OpenSRF requires prefork.
227 apache_mpm_prefork_mods:
228         a2dismod mpm_event
229         a2enmod mpm_prefork
230
231 # Need to activate mod_perl on some O/S.
232 apache_perl_mod:
233         a2enmod perl
234
235 # Fedora
236 install_fedora_rpms:
237         yum -y install $(FEDORAS)
238
239 # vim:noet:sw=4:ts=4: