Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
160 lines (135 loc) · 6.84 KB
/
Copy pathMakefile
File metadata and controls
160 lines (135 loc) · 6.84 KB
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
ifeq ($(SCIDB),)
X := $(shell which scidb 2>/dev/null)
ifneq ($(X),)
X := $(shell dirname ${X})
SCIDB := $(shell dirname ${X})
endif
endif
VERSION := $(shell scidb --version | head -n 1 | cut -d ':' -f 2 |tr -d ' ')
CFLAGS=-std=gnu99 -fopenmp -g -pedantic -DVERSION=\"$(VERSION)\"
INC=-I. -DPROJECT_ROOT="\"$(SCIDB)\"" -I"$(SCIDB)/3rdparty/boost/include/" -I"$(SCIDB)/include" -I"$(SCIDB)/3rdparty/boost/include/boost/container" -DSCIDB_CLIENT
LIBS=-lstdc++ -ldl -lz -lpthread -L"$(SCIDB)/3rdparty/boost/lib" -L"$(SCIDB)/lib" -lscidbclient -lboost_system -lpam -Wl,--enable-new-dtags -Wl,-rpath,'$$ORIGIN:$$ORIGIN/../lib:$$ORIGIN/../../:$(SCIDB)/3rdparty/boost/lib:'
# Compiler settings for SciDB version >= 15.7
ifneq ("$(wildcard /usr/bin/g++-4.9)","")
CC := "/usr/bin/gcc-4.9"
CXX := "/usr/bin/g++-4.9"
CXXFLAGS=-std=c++11
else
ifneq ("$(wildcard /opt/rh/devtoolset-3/root/usr/bin/gcc)","")
CC := "/opt/rh/devtoolset-3/root/usr/bin/gcc"
CXX := "/opt/rh/devtoolset-3/root/usr/bin/g++"
CXXFLAGS=-std=c++11
endif
endif
# default: empty DESTDIR implicitly installs to /
DESTDIR=
shim:
$(MAKE) -C src shim
@cp src/shim .
client:
$(MAKE) -C src client
shim0:
$(MAKE) -C src shim0
@cp src/shim .
help:
@echo "make shim (compile and link)"
@echo
@echo "The remaining options may require setting the SCIDB environment"
@echo "variable to the path of the target SciDB installation. For example,"
@echo "make SCIDB=/opt/scidb/13.3 install"
@echo
@echo "make install (install program and files)"
@echo "make uninstall (remove program and files)"
@echo "make service (install a Debian or RHEL init.d-style service, shimsvc)"
@echo "make unservice (terminate and remove installed service)"
@echo "make deb-pkg (create a binary Ubuntu/Debian package, requires fpm)"
@echo "make rpm-pkg (create a binary RHEL package, requires fpm)"
@echo "make test<n> (build and run test number n)"
@echo "make test (build and run all but multiuser tests)"
@echo
@echo "Other tests are available. Read the contents of Makefile for details."
install: shim
@if test ! -d "$(SCIDB)"; then echo "Can't find scidb. Maybe try explicitly setting SCIDB variable, for example::\n\nmake SCIDB=/opt/scidb/13.3 install"; exit 1; fi
@if test -x /etc/init.d/shimsvc; then /etc/init.d/shimsvc stop;fi
mkdir -p "$(DESTDIR)$(SCIDB)/bin"
cp shim "$(DESTDIR)/$(SCIDB)/bin"
mkdir -p "$(DESTDIR)/var/lib/shim"
cp -aR wwwroot "$(DESTDIR)/var/lib/shim/"
chmod -R 755 "$(DESTDIR)/var/lib/shim"
@if test -d $(DESTDIR)/usr/local/share/man/man1;then cp man/shim.1 $(DESTDIR)/usr/local/share/man/man1/;fi
uninstall: unservice
@if test ! -d "$(SCIDB)"; then echo "Can't find scidb. Maybe try explicitly setting SCIDB variable, for example:\n\nmake SCIDB=/opt/scidb/13.3 uninstall"; exit 1; fi
- @if test -x /etc/init.d/shimsvc; then /etc/init.d/shimsvc stop;fi
rm -f "$(SCIDB)/bin/shim"
rm -rf /var/lib/shim
rm -f /usr/local/share/man/man1/shim.1
service: install
cp init.d/shimsvc /etc/init.d
chmod 0755 /etc/init.d/shimsvc
@if test -n "$$(which update-rc.d 2>/dev/null)"; then update-rc.d shimsvc defaults;fi
@if test -n "$$(which chkconfig 2>/dev/null)"; then chkconfig --add shimsvc && chkconfig shimsvc on;fi
/etc/init.d/shimsvc start
unservice:
@if test -f /etc/init.d/shimsvc; then /etc/init.d/shimsvc stop; fi
- @if test -n "$$(which update-rc.d 2>/dev/null)"; then sudo update-rc.d -f shimsvc remove;fi
- @if test -n "$$(which chkconfig 2>/dev/null)"; then chkconfig --del shimsvc;fi
rm -rf /etc/init.d/shimsvc
deb-pkg: shim
@if test -z "$$(which fpm 2>/dev/null)"; then echo "Error: Package building requires fpm, try running gem install fpm."; exit 1;fi
@if test ! -d "$(SCIDB)"; then echo "Can't find scidb. Maybe try explicitly setting SCIDB variable, for example::\n\nmake SCIDB=/opt/scidb/13.3 install"; exit 1; fi
mkdir -p pkgroot/$(SCIDB)/bin
cp shim "pkgroot/$(SCIDB)/bin"
mkdir -p pkgroot/etc/init.d
cp init.d/shimsvc pkgroot/etc/init.d
mkdir -p pkgroot/var/lib/shim
cp -aR wwwroot pkgroot/var/lib/shim/
chmod -R 755 pkgroot/var/lib/shim
mkdir -p pkgroot/usr/local/share/man/man1
@if test -d /usr/local/share/man/man1;then cp man/shim.1 pkgroot/usr/local/share/man/man1/;fi
fpm -s dir -t deb -n shim --vendor Paradigm4 -d libssl-dev --license AGPLv3 -m "<blewis@paradigm4.com>" --url "https://github.com/Paradigm4/shim" --description "Unofficial SciDB HTTP service" --provides "shim" -v $$(basename $(SCIDB)) --after-install init.d/after-install.sh --before-remove init.d/before-remove.sh -C pkgroot opt usr var etc/init.d
rpm-pkg: shim
@if test -z "$$(which fpm 2>/dev/null)"; then echo "Error: Package building requires fpm, try running gem install fpm."; exit 1;fi
@if test ! -d "$(SCIDB)"; then echo "Can't find scidb. Maybe try explicitly setting SCIDB variable, for example::\n\nmake SCIDB=/opt/scidb/13.3 install"; exit 1; fi
mkdir -p pkgroot/$(SCIDB)/bin
cp shim "pkgroot/$(SCIDB)/bin"
mkdir -p pkgroot/etc/init.d
cp init.d/shimsvc pkgroot/etc/init.d
mkdir -p pkgroot/var/lib/shim
cp -aR wwwroot pkgroot/var/lib/shim/
chmod -R 755 pkgroot/var/lib/shim
mkdir -p pkgroot/usr/local/share/man/man1
@if test -d /usr/local/share/man/man1;then cp man/shim.1 pkgroot/usr/local/share/man/man1/;fi
fpm -s dir -t rpm -n shim -d "openssl-devel" --vendor Paradigm4 --license AGPLv3 -m "<blewis@paradigm4.com>" --url "https://github.com/Paradigm4/shim" --description "Unofficial SciDB HTTP service" --provides "shim" -v $$(basename $(SCIDB)) --after-install init.d/after-install.sh --before-remove init.d/before-remove.sh -C pkgroot opt usr var etc/init.d
clean:
$(MAKE) -C src clean
rm -fr *.o *.so shim pkgroot *.rpm *.deb
test0:
@echo "ALL TESTS REQUIRE A SCIDB SERVER ON 127.0.0.1:1239 WITH security=trust"
test1: shim
@echo "Non-authenticated test"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/noauth.sh
test2: shim
@echo "Basic digest authentication"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/digest_auth.sh
test3: shim
@echo "TLS without authentication"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/tls.sh
test4: shim
@echo "TLS with digest authentication"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/tls_digest.sh
test5: shim
@echo "TLS with SciDB authentication"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/tls_scidbauth.sh
test9: shim
@echo "readbytes test"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/readbytes.sh
test10: shim
@echo "file upload test"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/upload.sh
test12: shim
@echo "post upload test"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/post_upload.sh
test13: shim
@echo "cache test"
@LD_LIBRARY_PATH="$(SCIDB)/lib:$(SCIDB)/3rdparty/boost/lib" ./tests/cache.sh"
test: test0 test1 test2 test3 test4 test9 test10 test12