fix packaging for f37 (2/n)
[plcapi.git] / Makefile
1 #
2 # (Re)builds Python metafiles (__init__.py) and documentation
3 #
4 # Mark Huang <mlhuang@cs.princeton.edu>
5 # Copyright (C) 2005 The Trustees of Princeton University
6 #
7
8 # python-pycurl and python-psycopg2 avail. from fedora 5
9 # we used to ship our own version of psycopg2 and pycurl, for fedora4
10 # starting with 5.0, support for these two modules is taken out
11
12 # Other stuff - doc not implicit, it's redone by myplc-docs
13
14 # autoconf compatible variables
15 DESTDIR := /
16 datadir := /usr/share
17 bindir := /usr/bin
18
19 PWD := $(shell pwd)
20
21 all:
22         python3 setup.py build
23
24 install: install-python install-phpxmlrpc
25
26 install-python:
27         # we mention --upgrade because otherwise
28         # pip install complains the php/ target already exists
29         # and it refuses to put plc_api.php in there
30         pip install --upgrade --target $(DESTDIR)/$(datadir)/plc_api .
31         # it's important that plcsh sits in /usr/share/plc_api
32         # and not under bin/ so that python can find the PLC/ modules
33         mv $(DESTDIR)/$(datadir)/plc_api/bin/plcsh $(DESTDIR)/$(datadir)/plc_api
34         mv $(DESTDIR)/$(datadir)/plc_api/bin/Server.py $(DESTDIR)/$(datadir)/Server.py
35         # the old recipe used to read
36         # python3 setup.py install \
37         #     --install-purelib=$(DESTDIR)/$(datadir)/plc_api \
38         #     --install-scripts=$(DESTDIR)/$(datadir)/plc_api \
39         #     --install-data=$(DESTDIR)/$(datadir)/plc_api
40
41 # phpxmlrpc is a git subtree; we just ship all its contents
42 # under /usr/share/plc_api/php/phpxmlrpc
43 install-phpxmlrpc:
44         mkdir -p $(DESTDIR)/$(datadir)/plc_api/php/phpxmlrpc/
45         rsync --exclude .git -ai php/phpxmlrpc/ $(DESTDIR)/$(datadir)/plc_api/php/phpxmlrpc/
46
47 clean:
48         find . -name '*.pyc' | xargs rm -f
49         python3 setup.py clean && rm -rf build
50
51 index:
52         echo "This step is obsolete"
53
54 ##########
55
56 force:
57
58 .PHONY: all install force clean index tags
59
60 #################### devel tools
61 tags:
62         find . '(' -name '*.py' -o -name '*.sql' -o -name '*.php' -o -name Makefile -o -name '[0-9][0-9][0-9]*' ')' | fgrep -v '.git/' | xargs etags
63
64 .PHONY: tags
65
66 ########## sync
67 # 2 forms are supported
68 # (*) if your plc root context has direct ssh access:
69 # make sync PLC=private.one-lab.org
70 # (*) otherwise, for test deployments, use on your testmaster
71 # $ run export
72 # and cut'n paste the export lines before you run make sync
73
74 ifdef PLC
75 SSHURL:=root@$(PLC):/
76 SSHCOMMAND:=ssh root@$(PLC)
77 else
78 ifdef PLCHOSTLXC
79 SSHURL:=root@$(PLCHOSTLXC):/vservers/$(GUESTNAME)
80 SSHCOMMAND:=ssh root@$(PLCHOSTLXC) ssh -o StrictHostKeyChecking=no -o LogLevel=quiet $(GUESTHOSTNAME)
81 endif
82 endif
83
84 LOCAL_RSYNC_EXCLUDES    := --exclude '*.pyc' --exclude Accessors_site.py
85 RSYNC_EXCLUDES          := --exclude '*~' --exclude TAGS $(LOCAL_RSYNC_EXCLUDES)
86 RSYNC_COND_DRY_RUN      := $(if $(findstring n,$(MAKEFLAGS)),--dry-run,)
87 RSYNC                   := rsync -ai $(RSYNC_COND_DRY_RUN) $(RSYNC_EXCLUDES)
88
89 sync:
90 ifeq (,$(SSHURL))
91         @echo "sync: I need more info from the command line, e.g."
92         @echo "  make sync PLC=boot.planetlab.eu"
93         @echo "  make sync PLCHOSTLXC=.. GUESTHOSTNAME=.. GUESTNAME=.."
94         @exit 1
95 else
96         +$(RSYNC) plcsh PLC planetlab5.sql migrations php $(SSHURL)/usr/share/plc_api/
97         +$(RSYNC) db-config.d/ $(SSHURL)/etc/planetlab/db-config.d/
98         +$(RSYNC) plc.d/ $(SSHURL)/etc/plc.d/
99         +$(RSYNC) apache/plc.wsgi $(SSHURL)/usr/share/plc_api/apache/
100         $(SSHCOMMAND) systemctl restart plc
101 endif
102
103 #################### convenience, for debugging only
104 # make +foo : prints the value of $(foo)
105 # make ++foo : idem but verbose, i.e. foo=$(foo)
106 ++%: varname=$(subst +,,$@)
107 ++%:
108         @echo "$(varname)=$($(varname))"
109 +%: varname=$(subst +,,$@)
110 +%:
111         @echo "$($(varname))"