Makefile 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. RPMS_DIR=rpm/
  2. VERSION := $(shell cat version)
  3. DIST_DOM0 ?= fc18
  4. OS ?= Linux
  5. PYTHON ?= python3
  6. ADMIN_API_METHODS_SIMPLE = \
  7. admin.deviceclass.List \
  8. admin.vmclass.List \
  9. admin.Events \
  10. admin.backup.Execute \
  11. admin.backup.Info \
  12. admin.backup.Cancel \
  13. admin.label.Create \
  14. admin.label.Get \
  15. admin.label.List \
  16. admin.label.Index \
  17. admin.label.Remove \
  18. admin.pool.Add \
  19. admin.pool.Info \
  20. admin.pool.UsageDetails \
  21. admin.pool.List \
  22. admin.pool.ListDrivers \
  23. admin.pool.Remove \
  24. admin.pool.Set.revisions_to_keep \
  25. admin.pool.volume.Info \
  26. admin.pool.volume.List \
  27. admin.pool.volume.ListSnapshots \
  28. admin.pool.volume.Resize \
  29. admin.pool.volume.Revert \
  30. admin.pool.volume.Set.revisions_to_keep \
  31. admin.pool.volume.Set.rw \
  32. admin.pool.volume.Snapshot \
  33. admin.property.Get \
  34. admin.property.GetAll \
  35. admin.property.GetDefault \
  36. admin.property.Help \
  37. admin.property.HelpRst \
  38. admin.property.List \
  39. admin.property.Reset \
  40. admin.property.Set \
  41. admin.vm.Create.AppVM \
  42. admin.vm.Create.DispVM \
  43. admin.vm.Create.StandaloneVM \
  44. admin.vm.Create.TemplateVM \
  45. admin.vm.CreateInPool.AppVM \
  46. admin.vm.CreateInPool.DispVM \
  47. admin.vm.CreateInPool.StandaloneVM \
  48. admin.vm.CreateInPool.TemplateVM \
  49. admin.vm.CreateDisposable \
  50. admin.vm.Kill \
  51. admin.vm.List \
  52. admin.vm.Pause \
  53. admin.vm.Remove \
  54. admin.vm.Shutdown \
  55. admin.vm.Start \
  56. admin.vm.Unpause \
  57. admin.vm.device.pci.Attach \
  58. admin.vm.device.pci.Available \
  59. admin.vm.device.pci.Detach \
  60. admin.vm.device.pci.List \
  61. admin.vm.device.pci.Set.persistent \
  62. admin.vm.device.block.Attach \
  63. admin.vm.device.block.Available \
  64. admin.vm.device.block.Detach \
  65. admin.vm.device.block.List \
  66. admin.vm.device.block.Set.persistent \
  67. admin.vm.device.mic.Attach \
  68. admin.vm.device.mic.Available \
  69. admin.vm.device.mic.Detach \
  70. admin.vm.device.mic.List \
  71. admin.vm.device.mic.Set.persistent \
  72. admin.vm.feature.CheckWithNetvm \
  73. admin.vm.feature.CheckWithTemplate \
  74. admin.vm.feature.CheckWithAdminVM \
  75. admin.vm.feature.CheckWithTemplateAndAdminVM \
  76. admin.vm.feature.Get \
  77. admin.vm.feature.List \
  78. admin.vm.feature.Remove \
  79. admin.vm.feature.Set \
  80. admin.vm.firewall.Flush \
  81. admin.vm.firewall.Get \
  82. admin.vm.firewall.Set \
  83. admin.vm.firewall.GetPolicy \
  84. admin.vm.firewall.SetPolicy \
  85. admin.vm.firewall.Reload \
  86. admin.vm.property.Get \
  87. admin.vm.property.GetAll \
  88. admin.vm.property.GetDefault \
  89. admin.vm.property.Help \
  90. admin.vm.property.HelpRst \
  91. admin.vm.property.List \
  92. admin.vm.property.Reset \
  93. admin.vm.property.Set \
  94. admin.vm.tag.Get \
  95. admin.vm.tag.List \
  96. admin.vm.tag.Remove \
  97. admin.vm.tag.Set \
  98. admin.vm.volume.CloneFrom \
  99. admin.vm.volume.CloneTo \
  100. admin.vm.volume.Info \
  101. admin.vm.volume.List \
  102. admin.vm.volume.ListSnapshots \
  103. admin.vm.volume.Resize \
  104. admin.vm.volume.Revert \
  105. admin.vm.volume.Set.revisions_to_keep \
  106. admin.vm.volume.Set.rw \
  107. admin.vm.Stats \
  108. $(null)
  109. ifeq ($(OS),Linux)
  110. DATADIR ?= /var/lib/qubes
  111. STATEDIR ?= /var/run/qubes
  112. LOGDIR ?= /var/log/qubes
  113. FILESDIR ?= /usr/share/qubes
  114. else ifeq ($(OS),Windows_NT)
  115. DATADIR ?= c:/qubes
  116. STATEDIR ?= c:/qubes/state
  117. LOGDIR ?= c:/qubes/log
  118. FILESDIR ?= c:/program files/Invisible Things Lab/Qubes
  119. endif
  120. help:
  121. @echo "make rpms -- generate binary rpm packages"
  122. @echo "make rpms-dom0 -- generate binary rpm packages for Dom0"
  123. @echo "make update-repo-current -- copy newly generated rpms to qubes yum repo"
  124. @echo "make update-repo-current-testing -- same, but to -current-testing repo"
  125. @echo "make update-repo-unstable -- same, but to -testing repo"
  126. @echo "make update-repo-installer -- copy dom0 rpms to installer repo"
  127. @echo "make clean -- cleanup"
  128. rpms: rpms-dom0
  129. rpms-vm:
  130. @true
  131. rpms-dom0:
  132. rpmbuild --define "_rpmdir $(RPMS_DIR)" -bb rpm_spec/core-dom0.spec
  133. rpmbuild --define "_rpmdir $(RPMS_DIR)" -bb rpm_spec/core-dom0-doc.spec
  134. rpm --addsign \
  135. $(RPMS_DIR)/x86_64/qubes-core-dom0-$(VERSION)*.rpm \
  136. $(RPMS_DIR)/noarch/qubes-core-dom0-doc-$(VERSION)*rpm
  137. all:
  138. $(PYTHON) setup.py build
  139. $(MAKE) -C qubes-rpc all
  140. # Currently supported only on xen
  141. install:
  142. ifeq ($(OS),Linux)
  143. $(MAKE) install -C linux/systemd
  144. $(MAKE) install -C linux/aux-tools
  145. $(MAKE) install -C linux/system-config
  146. endif
  147. $(PYTHON) setup.py install -O1 --skip-build --root $(DESTDIR)
  148. ln -s qvm-device $(DESTDIR)/usr/bin/qvm-block
  149. ln -s qvm-device $(DESTDIR)/usr/bin/qvm-pci
  150. ln -s qvm-device $(DESTDIR)/usr/bin/qvm-usb
  151. install -d $(DESTDIR)/usr/share/man/man1
  152. ln -s qvm-device.1.gz $(DESTDIR)/usr/share/man/man1/qvm-block.1.gz
  153. ln -s qvm-device.1.gz $(DESTDIR)/usr/share/man/man1/qvm-pci.1.gz
  154. ln -s qvm-device.1.gz $(DESTDIR)/usr/share/man/man1/qvm-usb.1.gz
  155. $(MAKE) install -C relaxng
  156. mkdir -p $(DESTDIR)/etc/qubes
  157. ifeq ($(BACKEND_VMM),xen)
  158. # Currently supported only on xen
  159. cp etc/qmemman.conf $(DESTDIR)/etc/qubes/
  160. endif
  161. mkdir -p $(DESTDIR)/etc/qubes-rpc/policy
  162. mkdir -p $(DESTDIR)/usr/libexec/qubes
  163. cp qubes-rpc-policy/qubes.FeaturesRequest.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.FeaturesRequest
  164. cp qubes-rpc-policy/qubes.Filecopy.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.Filecopy
  165. cp qubes-rpc-policy/qubes.OpenInVM.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.OpenInVM
  166. cp qubes-rpc-policy/qubes.OpenURL.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.OpenURL
  167. cp qubes-rpc-policy/qubes.VMShell.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMShell
  168. cp qubes-rpc-policy/qubes.VMRootShell.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMRootShell
  169. cp qubes-rpc-policy/qubes.NotifyUpdates.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyUpdates
  170. cp qubes-rpc-policy/qubes.NotifyTools.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyTools
  171. cp qubes-rpc-policy/qubes.GetImageRGBA.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.GetImageRGBA
  172. cp qubes-rpc-policy/qubes.GetRandomizedTime.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.GetRandomizedTime
  173. cp qubes-rpc-policy/qubes.NotifyTools.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyTools
  174. cp qubes-rpc-policy/qubes.NotifyUpdates.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.NotifyUpdates
  175. cp qubes-rpc-policy/qubes.OpenInVM.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.OpenInVM
  176. cp qubes-rpc-policy/qubes.StartApp.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.StartApp
  177. cp qubes-rpc-policy/qubes.VMShell.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.VMShell
  178. cp qubes-rpc-policy/qubes.UpdatesProxy.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.UpdatesProxy
  179. cp qubes-rpc-policy/qubes.GetDate.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.GetDate
  180. cp qubes-rpc-policy/qubes.ConnectTCP.policy $(DESTDIR)/etc/qubes-rpc/policy/qubes.ConnectTCP
  181. cp qubes-rpc-policy/admin.vm.Console.policy $(DESTDIR)/etc/qubes-rpc/policy/admin.vm.Console
  182. cp qubes-rpc-policy/policy.RegisterArgument.policy $(DESTDIR)/etc/qubes-rpc/policy/policy.RegisterArgument
  183. cp qubes-rpc/qubes.FeaturesRequest $(DESTDIR)/etc/qubes-rpc/
  184. cp qubes-rpc/qubes.GetDate $(DESTDIR)/etc/qubes-rpc/
  185. cp qubes-rpc/qubes.GetRandomizedTime $(DESTDIR)/etc/qubes-rpc/
  186. cp qubes-rpc/qubes.NotifyTools $(DESTDIR)/etc/qubes-rpc/
  187. cp qubes-rpc/qubes.NotifyUpdates $(DESTDIR)/etc/qubes-rpc/
  188. cp qubes-rpc/qubes.ConnectTCP $(DESTDIR)/etc/qubes-rpc/
  189. install qubes-rpc/qubesd-query-fast $(DESTDIR)/usr/libexec/qubes/
  190. install -m 0755 qvm-tools/qubes-bug-report $(DESTDIR)/usr/bin/qubes-bug-report
  191. install -m 0755 qvm-tools/qubes-hcl-report $(DESTDIR)/usr/bin/qubes-hcl-report
  192. install -m 0755 qvm-tools/qvm-sync-clock $(DESTDIR)/usr/bin/qvm-sync-clock
  193. install -m 0755 qvm-tools/qvm-console-dispvm $(DESTDIR)/usr/bin/qvm-console-dispvm
  194. for method in $(ADMIN_API_METHODS_SIMPLE); do \
  195. ln -s ../../usr/libexec/qubes/qubesd-query-fast \
  196. $(DESTDIR)/etc/qubes-rpc/$$method || exit 1; \
  197. done
  198. install qubes-rpc/admin.vm.volume.Import $(DESTDIR)/etc/qubes-rpc/
  199. install qubes-rpc/admin.vm.Console $(DESTDIR)/etc/qubes-rpc/
  200. PYTHONPATH=.:test-packages qubes-rpc-policy/generate-admin-policy \
  201. --destdir=$(DESTDIR)/etc/qubes-rpc/policy \
  202. --exclude admin.vm.Create.AdminVM \
  203. admin.vm.CreateInPool.AdminVM \
  204. admin.vm.device.testclass.Attach \
  205. admin.vm.device.testclass.Detach \
  206. admin.vm.device.testclass.List \
  207. admin.vm.device.testclass.Set.persistent \
  208. admin.vm.device.testclass.Available
  209. # sanity check
  210. for method in $(DESTDIR)/etc/qubes-rpc/policy/admin.*; do \
  211. ls $(DESTDIR)/etc/qubes-rpc/$$(basename $$method) >/dev/null || exit 1; \
  212. done
  213. install -d $(DESTDIR)/etc/qubes-rpc/policy/include
  214. install -m 0644 qubes-rpc-policy/admin-local-ro \
  215. qubes-rpc-policy/admin-local-rwx \
  216. qubes-rpc-policy/admin-global-ro \
  217. qubes-rpc-policy/admin-global-rwx \
  218. $(DESTDIR)/etc/qubes-rpc/policy/include/
  219. mkdir -p "$(DESTDIR)$(FILESDIR)"
  220. cp -r templates "$(DESTDIR)$(FILESDIR)/templates"
  221. rm -f "$(DESTDIR)$(FILESDIR)/templates/README"
  222. mkdir -p $(DESTDIR)$(DATADIR)
  223. mkdir -p $(DESTDIR)$(DATADIR)/vm-templates
  224. mkdir -p $(DESTDIR)$(DATADIR)/appvms
  225. mkdir -p $(DESTDIR)$(DATADIR)/servicevms
  226. mkdir -p $(DESTDIR)$(DATADIR)/vm-kernels
  227. mkdir -p $(DESTDIR)$(DATADIR)/backup
  228. mkdir -p $(DESTDIR)$(DATADIR)/dvmdata
  229. mkdir -p $(DESTDIR)$(STATEDIR)
  230. mkdir -p $(DESTDIR)$(LOGDIR)
  231. msi:
  232. rm -rf destinstdir
  233. mkdir -p destinstdir
  234. $(MAKE) install \
  235. DESTDIR=$(PWD)/destinstdir \
  236. PYTHON_SITEPATH=/site-packages \
  237. FILESDIR=/pfiles \
  238. BINDIR=/bin \
  239. DATADIR=/qubes \
  240. STATEDIR=/qubes/state \
  241. LOGDIR=/qubes/log
  242. # icons placeholder
  243. mkdir -p destinstdir/icons
  244. for i in blue gray green yellow orange black purple red; do touch destinstdir/icons/$$i.png; done
  245. candle -arch x64 -dversion=$(VERSION) installer.wxs
  246. light -b destinstdir -o core-admin.msm installer.wixobj
  247. rm -rf destinstdir