]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/extras/Makefile.install
adding a sample prereq installation makefile for debian and gentoo. The gentoo porti...
[Evergreen.git] / Open-ILS / src / extras / Makefile.install
1 # ---------------------------------------------------------------------
2 # Author: Bill Erickson <erickson@esilibrary.com>
3 #
4 # Makefile to install prerequisites for OpenSRF and Evergreen
5 #
6 # Currently supports Debian (etch) and Gentoo.  Installs Perl prereqs, 
7 # libjs with Perl wrapper, libdbi, libdbi-drivers, and libyaz
8 #
9 # usage:
10 #       make -f Makefile.install debian
11 #       - or -
12 #       make -f Makefile.install gentoo
13 #
14 # Notes:
15 #
16 #       This makefile has been tested much more with Debian than Gentoo.
17 #
18 #       Gentoo (especially amd64) requires a good bit of masked package
19 #       mangling for some packages.  These are not documented here because
20 #       they will continue to evolve
21 #
22 # ---------------------------------------------------------------------
23  
24
25  
26 LIBJS=js-1.60
27 LIBJS_PERL=JavaScript-SpiderMonkey-0.17
28 LIBJS_URL=ftp://ftp.mozilla.org/pub/mozilla.org/js/$(LIBJS).tar.gz
29 LIBJS_PERL_URL=ftp://mirror.datapipe.net/pub/CPAN/authors/id/T/TB/TBUSCH/$(LIBJS_PERL).tar.gz
30 # used for installing libjs lib and header files
31 JS_INSTALL_PREFIX=/usr/
32
33 LIBDBI=libdbi-0.8.2
34 LIBDBI_DRIVERS=libdbi-drivers-0.8.2-1
35 LIBDBI_HOST=http://open-ils.org/~erickson/evergreen
36
37 YAZ=yaz-2.1.56
38 YAZ_HOST=http://ftp.indexdata.dk/pub/yaz
39
40 # Debian dependencies
41 DEBS =  \
42         build-essential\
43         syslog-ng\
44         psmisc\
45         ntpdate\
46     memcached\
47     postgresql-client\
48     libxml2-dev\
49     libmodule-build-perl\
50     libexpat1-dev\
51     libmemcache-dev\
52     libperl-dev\
53     libcache-memcached-perl\
54         libtext-csv-perl\
55     libxml-libxml-perl\
56     libxslt1-dev\
57     libxml-libxslt-perl\
58     libwww-perl\
59     liberror-perl\
60     libclass-dbi-pg-perl\
61     libclass-dbi-abstractsearch-perl\
62     libtemplate-perl\
63     libtext-aspell-perl\
64     libdatetime-timezone-perl\
65     libdatetime-perl\
66     libunix-syslog-perl\
67     libgd-graph3d-perl\
68     libuniversal-require-perl\
69     libclass-dbi-sqlite-perl\
70     liblog-log4perl-perl\
71     libnet-jabber-perl\
72     libtest-pod-perl\
73     libfile-find-rule-perl\
74     libdatetime-format-builder-perl\
75     libmarc-record-perl\
76     librpc-xml-perl\
77     aspell\
78     aspell-en\
79     libxml-simple-perl\
80     libpq-dev\
81     libemail-send-perl\
82     ejabberd\
83     libtool\
84     apache2-mpm-prefork\
85     apache2-prefork-dev\
86     libapache2-mod-perl2\
87     libreadline5-dev
88
89 GENTOOS = \
90     vim\
91     ntp\
92     memcached\
93     libmemcache\
94     net-misc/telnet-bsd\
95     app-portage/gentoolkit\
96     gsasl\
97     ejabberd\
98     mod_perl\
99     yaz\
100     aspell-en\
101     net-fs/nfs-utils\
102     dev-libs/apr\
103     dev-db/libpq\
104     dev-db/postgresql\
105     dev-perl/Email-Send\
106     dev-perl/Cache-Memcached\
107     dev-perl/DateTime\
108     dev-perl/DateTime-TimeZone\
109     dev-perl/DBI\
110     dev-perl/DBD-Pg\
111     dev-perl/GD-Graph3d\
112     dev-perl/Log-Log4perl\
113     dev-perl/Text-Aspell\
114     dev-perl/Unix-Syslog\
115     dev-perl/XML-LibXML\
116     dev-perl/XML-LibXSLT\
117     dev-perl/XML-Simple\
118     dev-perl/Net-Jabber\
119     dev-perl/libwww-perl\
120     dev-perl/Template-Toolkit\
121     dev-perl/Error
122
123 GENTOO_RC = \
124     ejabberd\
125     memcached\
126     portmap
127
128 GENTOO_PERL = \
129     UNIVERSAL::require\
130     Class::DBI::AbstractSearch\
131     MARC::Record \
132     Net::Z3950::ZOOM \
133         Text::CSV
134
135 DEB_APACHE_MODS = \
136     expires\
137     include\
138     proxy\
139     proxy_http\
140     rewrite\
141     ssl
142  
143
144 # generic CPAN modules
145 CPAN_MODULES = \
146     DateTime::Format::ISO8601 \
147     TMTM/Class-DBI-0.96.tar.gz \
148     RHANDOM/Net-Server-0.90.tar.gz \
149     MARC::Charset MARC::File::XML\
150         Net::Z3950::ZOOM
151
152
153 # ----------------------------------------------------------------------------
154
155 all: 
156         @echo "please specify an OS" && exit 0
157
158
159 # these should be the same for any distro
160 install: install_yaz install_cpan install_js_sm install_libdbi 
161
162 debian: install_debs install debian_sys_config
163
164 gentoo: install_gentoos install_gentoo_rc install_gentoo_perl install
165
166
167 # - COMMON TARGETS ---------------------------------------------------------
168
169 # Install the CPAN modules
170 install_cpan: 
171         for m in $(CPAN_MODULES); do perl -MCPAN -e "install \"$$m\";"; done
172
173
174 install_yaz:    
175         if [ ! -d $(YAZ) ]; then wget $(YAZ_HOST)/$(YAZ).tar.gz; fi;
176         tar xzf $(YAZ).tar.gz
177         cd $(YAZ) && ./configure && make && make install
178
179 # Install the custom spidermonkey libs and JavaScript-SpiderMonkey Perl modules
180 install_js_sm: 
181         if [ ! -f $(LIBJS).tar.gz ]; then wget $(LIBJS_URL); fi;
182         if [ ! -f $(LIBJS_PERL).tar.gz ]; then wget $(LIBJS_PERL_URL); fi;
183         tar -zxf $(LIBJS).tar.gz
184         tar -zxf $(LIBJS_PERL).tar.gz
185         cd js/src/ && make -f Makefile.ref
186         mkdir -p $(JS_INSTALL_PREFIX)/include/js/
187         cp js/src/*.h $(JS_INSTALL_PREFIX)/include/js/
188         cp js/src/*.tbl $(JS_INSTALL_PREFIX)/include/js/
189         cp js/src/Linux_All_DBG.OBJ/*.so $(JS_INSTALL_PREFIX)/lib/
190         cp js/src/Linux_All_DBG.OBJ/*.a $(JS_INSTALL_PREFIX)/lib/
191         cd JavaScript-SpiderMonkey-0.17 && perl Makefile.PL -E4X && make && make test && make install
192
193
194 # Install libdbi and the postgres drivers
195 install_libdbi:
196         if [ ! -d $(LIBDBI) ]; then wget $(LIBDBI_HOST)/$(LIBDBI).tar.gz; fi;
197         if [ ! -d $(LIBDBI_DRIVERS) ]; then wget $(LIBDBI_HOST)/$(LIBDBI_DRIVERS).tar.gz; fi;
198         tar -zxf $(LIBDBI).tar.gz
199         tar -zxf $(LIBDBI_DRIVERS).tar.gz
200         cd $(LIBDBI) && ./configure --disable-docs && make all install
201         cd $(LIBDBI_DRIVERS) && ./configure  \
202                 --disable-docs --with-pgsql --enable-libdbi && make all install  
203
204
205 clean:
206         make -C $(LIBDBI) clean
207         make -C $(LIBDBI_DRIVERS) clean
208         make -C $(LIBJS_PERL) clean
209         make -f Makefile.ref -C js/src/ clean
210
211
212 # ------------------------------------------------------------------
213 # - DEBIAN ---------------------------------------------------------
214
215 debian_sys_config: 
216         # link the apache modules in
217         for m in $(DEB_APACHE_MODS); do a2enmod $$m; done;
218         
219         # adds a placeholder module so apxs will be happy
220         if [ ! "$$(grep mod_placeholder /etc/apache2/httpd.conf)" ]; then \
221                 echo -e "#\n#LoadModule mod_placeholder /usr/lib/apache2/modules/mod_placeholder.so" \
222                         >> /etc/apache2/httpd.conf; \
223         fi;
224
225 # Install the debian-specific dependencies
226 install_debs:
227         apt-get install $(DEBS)
228
229
230
231 # ------------------------------------------------------------------
232 # - GENTOO ---------------------------------------------------------
233
234 install_gentoos:
235         emerge -n $(GENTOOS)
236
237 install_gentoo_rc:
238         for m in $(GENTOO_RC); do rc-update add $$m default; done;
239
240 install_gentoo_perl:
241         for m in $(GENTOO_PERL); do perl -MCPAN -e "install \"$$m\";"; done
242
243 # ------------------------------------------------------------------
244     
245
246