summaryrefslogtreecommitdiff
path: root/debian/rules
blob: 332a32ecf03209be4077bb7e986997b6ad444e18 (plain)
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#!/usr/bin/make -f

DIR := debian/tmp
DIR_AWS := $(DIR)/vyos-1x-aws
DIR_LIBVYOSCONFIG := $(DIR)/libvyosconfig
VYOS_SBIN_DIR := usr/sbin
VYOS_BIN_DIR := usr/bin
VYOS_LIB_DIR := usr/lib
VYOS_LIBEXEC_DIR := usr/libexec/vyos
VYOS_DATA_DIR := usr/share/vyos
VYOS_CFG_TMPL_DIR := opt/vyatta/share/vyatta-cfg/templates
VYOS_OP_TMPL_DIR := opt/vyatta/share/vyatta-op/templates
VYOS_MIBS_DIR := usr/share/snmp/mibs
VYOS_LOCALUI_DIR := srv/localui

VYCONF := usr/libexec/vyos/vyconf
VYCONF_BIN := $(VYCONF)/bin
VYCONF_CONF := $(VYCONF)/config
VYCONF_SESSION := $(VYCONF)/session
VYCONF_DATA := usr/share/vyos/vyconf
VYCONF_DEF := etc/vyos
VYCONF_REFTREE_DIR := $(VYOS_LIBEXEC_DIR)/vyconf/reftree

OCAML_DIR := /opt/opam/${OCAML_VERSION}
VYOS_OCAML_TOOLS := src/ocaml/_build/install/default/bin

MIGRATION_SCRIPTS_DIR := opt/vyatta/etc/config-migrate/migrate
ACTIVATION_SCRIPTS_DIR := usr/libexec/vyos/activate
SYSTEM_SCRIPTS_DIR := usr/libexec/vyos/system
SERVICES_DIR := usr/libexec/vyos/services

DEB_TARGET_ARCH := $(shell dpkg-architecture -qDEB_TARGET_ARCH)

# Base version prefix from debian/changelog
BASE_VERSION := 999.0
COMMIT_ID := $(shell echo -n g && git rev-parse --short HEAD)
COMMIT_COUNT := $(shell git rev-list HEAD --count)
DIRTY_FLAG := $(shell ! git diff --quiet || ! git diff --cached --quiet && echo -dirty || echo)

%:
	dh $@ --with python3, --with quilt

# Skip dh_strip_nondeterminism - this is very time consuming
# and we have no non deterministic output (yet)
override_dh_strip_nondeterminism:

override_dh_gencontrol:
	dh_gencontrol -- -v$(BASE_VERSION)-$(COMMIT_COUNT)-$(COMMIT_ID)$(DIRTY_FLAG)

override_dh_auto_build:
	make all

override_dh_auto_install:
	dh_auto_install

	cd python; python3 setup.py install --install-layout=deb --root ../$(DIR); cd ..

	# Remove all __pycache__ directories before installing
	find . -type d -name '__pycache__' -exec rm -rf {} +

	# Install scripts
	mkdir -p $(DIR)/$(VYOS_SBIN_DIR)
	mkdir -p $(DIR)/$(VYOS_BIN_DIR)
	cp -r src/utils/* $(DIR)/$(VYOS_BIN_DIR)
	cp src/shim/vyshim $(DIR)/$(VYOS_SBIN_DIR)

	# Install conf mode scripts
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/conf_mode
	cp -r src/conf_mode/* $(DIR)/$(VYOS_LIBEXEC_DIR)/conf_mode

	# Install op mode scripts
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/op_mode
	cp -r src/op_mode/* $(DIR)/$(VYOS_LIBEXEC_DIR)/op_mode

	# Install op mode scripts
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/init
	cp -r src/init/* $(DIR)/$(VYOS_LIBEXEC_DIR)/init

	# Install validators
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/validators
	cp -r src/validators/* $(DIR)/$(VYOS_LIBEXEC_DIR)/validators

	# Install completion helpers
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/completion
	cp -r src/completion/* $(DIR)/$(VYOS_LIBEXEC_DIR)/completion

	# Install helper scripts
	cp -r src/helpers/* $(DIR)/$(VYOS_LIBEXEC_DIR)/

	# Install migration scripts
	mkdir -p $(DIR)/$(MIGRATION_SCRIPTS_DIR)
	cp -r src/migration-scripts/* $(DIR)/$(MIGRATION_SCRIPTS_DIR)

	# Install activation scripts
	mkdir -p $(DIR)/$(ACTIVATION_SCRIPTS_DIR)
	cp -r src/activation-scripts/* $(DIR)/$(ACTIVATION_SCRIPTS_DIR)

	# Install system scripts
	mkdir -p $(DIR)/$(SYSTEM_SCRIPTS_DIR)
	cp -r src/system/* $(DIR)/$(SYSTEM_SCRIPTS_DIR)

	# Install system services
	mkdir -p $(DIR)/$(SERVICES_DIR)
	cp -r src/services/* $(DIR)/$(SERVICES_DIR)

	# Install configuration command definitions
	mkdir -p $(DIR)/$(VYOS_CFG_TMPL_DIR)
	cp -r templates-cfg/* $(DIR)/$(VYOS_CFG_TMPL_DIR)

	# Install operational command definitions
	mkdir -p $(DIR)/$(VYOS_OP_TMPL_DIR)
	cp -r templates-op/* $(DIR)/$(VYOS_OP_TMPL_DIR)

	# Install data files
	mkdir -p $(DIR)/$(VYCONF_REFTREE_DIR)
	cp -r data/reftree.cache $(DIR)/$(VYCONF_REFTREE_DIR)
	mkdir -p $(DIR)/$(VYOS_DATA_DIR)
	cp -r data/* $(DIR)/$(VYOS_DATA_DIR)
	# Remove j2lint comments / linter configuration which would insert additional new-lines
	find $(DIR)/$(VYOS_DATA_DIR) -name "*.j2" -type f | xargs sed -i -e '/^{#.*#}/d'

	# Create localui dir
	mkdir -p $(DIR)/$(VYOS_LOCALUI_DIR)

	# Install SNMP MIBs
	mkdir -p $(DIR)/$(VYOS_MIBS_DIR)
	cp -d mibs/* $(DIR)/$(VYOS_MIBS_DIR)

	# Install etc configuration files
	mkdir -p $(DIR)/etc
	cp -r src/etc/* $(DIR)/etc

	# Install legacy Vyatta files
	mkdir -p $(DIR)/opt
	cp -r src/opt/* $(DIR)/opt

	# Install PAM configuration snippets
	mkdir -p $(DIR)/usr/share/pam-configs
	cp -r src/pam-configs/* $(DIR)/usr/share/pam-configs

	# Install systemd service units
	mkdir -p $(DIR)/lib/systemd/system
	cp -r src/systemd/* $(DIR)/lib/systemd/system

	# Make directory for generated configuration file
	mkdir -p $(DIR)/etc/vyos

	# Install smoke test scripts
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/tests/smoke/
	cp -r smoketest/scripts/* $(DIR)/$(VYOS_LIBEXEC_DIR)/tests/smoke

	# Install smoke test configs
	mkdir -p $(DIR)/$(VYOS_LIBEXEC_DIR)/tests/configs/
	cp -r smoketest/configs/* $(DIR)/$(VYOS_LIBEXEC_DIR)/tests/configs

	# Install system programs
	mkdir -p $(DIR)/$(VYOS_BIN_DIR)
	cp -r smoketest/bin/* $(DIR)/$(VYOS_BIN_DIR)

	# Install udev scripts
	mkdir -p $(DIR)/usr/lib/udev
	cp -r src/udev/* $(DIR)/usr/lib/udev

	# vyos-1x-aws package
	# Move some files to dedicated DEB packages
	#
	mkdir -p $(DIR_AWS)/lib/systemd/system
	mv $(DIR)/lib/systemd/system/aws-gwlbtun.service $(DIR_AWS)/lib/systemd/system

	mkdir -p $(DIR_AWS)/opt/vyatta/share/vyatta-cfg/templates/service
	mv $(DIR)/opt/vyatta/share/vyatta-cfg/templates/service/aws $(DIR_AWS)/opt/vyatta/share/vyatta-cfg/templates/service

	mkdir -p $(DIR_AWS)/usr/libexec/vyos/conf_mode
	mv $(DIR)/usr/libexec/vyos/conf_mode/service_aws_glb.py $(DIR_AWS)/usr/libexec/vyos/conf_mode

	mkdir -p $(DIR_AWS)/usr/share/vyos/templates
	mv $(DIR)/usr/share/vyos/templates/aws/ $(DIR_AWS)/usr/share/vyos/templates

	# libvyosconfig package
	mkdir -p $(DIR_LIBVYOSCONFIG)/$(VYOS_LIB_DIR)
	mkdir -p $(DIR_LIBVYOSCONFIG)/$(VYCONF_CONF)
	mkdir -p $(DIR_LIBVYOSCONFIG)/$(VYCONF_SESSION)
	mkdir -p $(DIR_LIBVYOSCONFIG)/$(VYCONF_DATA)
	mkdir -p $(DIR_LIBVYOSCONFIG)/$(VYCONF_DEF)
	mkdir -p $(DIR_LIBVYOSCONFIG)/$(VYCONF_BIN)

	cp $(OCAML_DIR)/share/vyconf/vyconf.proto $(DIR_LIBVYOSCONFIG)/$(VYCONF_DATA)
	cp $(OCAML_DIR)/share/vyconf/vyconfd.conf $(DIR_LIBVYOSCONFIG)/$(VYCONF_DEF)
	cp $(OCAML_DIR)/bin/vyconfd $(DIR_LIBVYOSCONFIG)/$(VYCONF)
	cp $(OCAML_DIR)/bin/vyconf_cli $(DIR_LIBVYOSCONFIG)/$(VYCONF)
	cp $(OCAML_DIR)/bin/vyconf_cli_compat $(DIR_LIBVYOSCONFIG)/$(VYCONF_BIN)
	cp libvyosconfig/_build/libvyosconfig.so $(DIR_LIBVYOSCONFIG)/$(VYOS_LIB_DIR)/libvyosconfig.so.0

	# OCaml binaries from former vyos-utils package
	cp $(VYOS_OCAML_TOOLS)/numeric $(DIR)/$(VYOS_LIBEXEC_DIR)/validators
	cp $(VYOS_OCAML_TOOLS)/validate-value $(DIR)/$(VYOS_LIBEXEC_DIR)
	cp $(VYOS_OCAML_TOOLS)/file-path $(DIR)/$(VYOS_LIBEXEC_DIR)/validators
	cp $(VYOS_OCAML_TOOLS)/url $(DIR)/$(VYOS_LIBEXEC_DIR)/validators
	cp $(VYOS_OCAML_TOOLS)/list_interfaces $(DIR)/$(VYOS_LIBEXEC_DIR)/completion
	cp $(VYOS_OCAML_TOOLS)/vyos-op-run $(DIR)/$(VYOS_BIN_DIR)

override_dh_installsystemd:
	dh_installsystemd -pvyos-1x --name vyos-router vyos-router.service
	dh_installsystemd -pvyos-1x --name vyos vyos.target