core-appvm.spec 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. #
  2. # The Qubes OS Project, http://www.qubes-os.org
  3. #
  4. # Copyright (C) 2010 Joanna Rutkowska <joanna@invisiblethingslab.com>
  5. # Copyright (C) 2010 Rafal Wojtczuk <rafal@invisiblethingslab.com>
  6. #
  7. # This program is free software; you can redistribute it and/or
  8. # modify it under the terms of the GNU General Public License
  9. # as published by the Free Software Foundation; either version 2
  10. # of the License, or (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program; if not, write to the Free Software
  19. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  20. #
  21. #
  22. %{!?version: %define version %(cat version_vm)}
  23. Name: qubes-core-appvm
  24. Version: %{version}
  25. Release: 1%{dist}
  26. Summary: The Qubes core files for AppVM
  27. Group: Qubes
  28. Vendor: Invisible Things Lab
  29. License: GPL
  30. URL: http://www.qubes-os.org
  31. Requires: /usr/bin/xenstore-read
  32. Requires: fedora-release
  33. Requires: /usr/bin/mimeopen
  34. Requires: qubes-core-commonvm
  35. BuildRequires: gcc
  36. BuildRequires: xen-devel
  37. Provides: qubes-core-vm
  38. %define _builddir %(pwd)/appvm
  39. %define kde_service_dir /usr/share/kde4/services/ServiceMenus
  40. %description
  41. The Qubes core files for installation inside a Qubes AppVM.
  42. %pre
  43. if [ "$1" != 1 ] ; then
  44. # do this whole %pre thing only when updating for the first time...
  45. exit 0
  46. fi
  47. adduser --create-home user
  48. su user -c 'mkdir -p /home/user/.local/share'
  49. su user -c 'mkdir -p /home/user/.gnome2/nautilus-scripts'
  50. su user -c 'ln -s /usr/lib/qubes/qvm-copy-to-vm.gnome /home/user/.gnome2/nautilus-scripts/"Copy to other AppVM"'
  51. su user -c 'ln -s /usr/bin/qvm-open-in-dvm /home/user/.gnome2/nautilus-scripts/"Open in DisposableVM"'
  52. su user -c 'touch /home/user/.gnome2/nautilus-scripts/.scripts_created'
  53. su user -c 'touch /home/user/.gnome2/nautilus-scripts/.scripts_created2'
  54. mkdir -p $RPM_BUILD_ROOT/var/lib/qubes
  55. %build
  56. make clean all
  57. make -C ../common
  58. make -C ../u2mfn
  59. make -C ../vchan
  60. make -C ../qrexec
  61. %install
  62. mkdir -p $RPM_BUILD_ROOT/etc/init.d
  63. cp qubes_core_appvm $RPM_BUILD_ROOT/etc/init.d/
  64. mkdir -p $RPM_BUILD_ROOT/var/lib/qubes
  65. mkdir -p $RPM_BUILD_ROOT/usr/bin
  66. cp qubes_timestamp qvm-open-in-dvm $RPM_BUILD_ROOT/usr/bin
  67. cp qvm-open-in-vm $RPM_BUILD_ROOT/usr/bin
  68. cp qvm-copy-to-vm $RPM_BUILD_ROOT/usr/bin
  69. cp qvm-run $RPM_BUILD_ROOT/usr/bin
  70. mkdir -p $RPM_BUILD_ROOT/usr/lib/qubes
  71. cp wrap_in_html_if_url.sh $RPM_BUILD_ROOT/usr/lib/qubes
  72. cp qvm-copy-to-vm.kde $RPM_BUILD_ROOT/usr/lib/qubes
  73. cp qvm-copy-to-vm.gnome $RPM_BUILD_ROOT/usr/lib/qubes
  74. cp ../qrexec/qrexec_agent $RPM_BUILD_ROOT/usr/lib/qubes
  75. cp ../qrexec/qrexec_client_vm $RPM_BUILD_ROOT/usr/lib/qubes
  76. cp ../qrexec/qubes_rpc_multiplexer $RPM_BUILD_ROOT/usr/lib/qubes
  77. cp vm-file-editor qfile-agent qopen-in-vm qfile-unpacker $RPM_BUILD_ROOT/usr/lib/qubes
  78. cp vm-shell qrun-in-vm $RPM_BUILD_ROOT/usr/lib/qubes
  79. cp ../common/meminfo-writer $RPM_BUILD_ROOT/usr/lib/qubes
  80. mkdir -p $RPM_BUILD_ROOT/%{kde_service_dir}
  81. cp qvm-copy.desktop qvm-dvm.desktop $RPM_BUILD_ROOT/%{kde_service_dir}
  82. mkdir -p $RPM_BUILD_ROOT/mnt/removable
  83. mkdir -p $RPM_BUILD_ROOT/etc/qubes_rpc
  84. cp qubes.Filecopy $RPM_BUILD_ROOT/etc/qubes_rpc
  85. cp qubes.OpenInVM $RPM_BUILD_ROOT/etc/qubes_rpc
  86. cp qubes.VMShell $RPM_BUILD_ROOT/etc/qubes_rpc
  87. mkdir -p $RPM_BUILD_ROOT/var/lib/qubes/dom0-updates
  88. mkdir -p $RPM_BUILD_ROOT/etc/X11
  89. cp xorg-preload-apps.conf $RPM_BUILD_ROOT/etc/X11
  90. mkdir -p $RPM_BUILD_ROOT/home_volatile/user
  91. install -D ../vchan/libvchan.h $RPM_BUILD_ROOT/usr/include/libvchan.h
  92. install -D ../u2mfn/u2mfnlib.h $RPM_BUILD_ROOT/usr/include/u2mfnlib.h
  93. install -D ../u2mfn/u2mfn-kernel.h $RPM_BUILD_ROOT/usr/include/u2mfn-kernel.h
  94. install -D ../vchan/libvchan.so $RPM_BUILD_ROOT/%{_libdir}/libvchan.so
  95. install -D ../u2mfn/libu2mfn.so $RPM_BUILD_ROOT/%{_libdir}/libu2mfn.so
  96. install -d $RPM_BUILD_ROOT/etc/sudoers.d
  97. install -m 0440 qubes.sudoers $RPM_BUILD_ROOT/etc/sudoers.d/qubes
  98. mkdir -p $RPM_BUILD_ROOT/var/run/qubes
  99. %triggerin -- initscripts
  100. cp /var/lib/qubes/serial.conf /etc/init/serial.conf
  101. %post
  102. chkconfig --add qubes_core_appvm || echo "WARNING: Cannot add service qubes_core!"
  103. chkconfig qubes_core_appvm on || echo "WARNING: Cannot enable service qubes_core!"
  104. if [ "$1" != 1 ] ; then
  105. # do this whole %post thing only when updating for the first time...
  106. exit 0
  107. fi
  108. usermod -L user
  109. %preun
  110. if [ "$1" = 0 ] ; then
  111. # no more packages left
  112. chkconfig qubes_core_appvm off
  113. fi
  114. %clean
  115. rm -rf $RPM_BUILD_ROOT
  116. %files
  117. %defattr(-,root,root,-)
  118. /etc/init.d/qubes_core_appvm
  119. /usr/bin/qvm-copy-to-vm
  120. /usr/lib/qubes/qvm-copy-to-vm.kde
  121. /usr/lib/qubes/qvm-copy-to-vm.gnome
  122. /usr/bin/qvm-open-in-dvm
  123. /usr/bin/qvm-open-in-vm
  124. /usr/bin/qvm-run
  125. /usr/lib/qubes/meminfo-writer
  126. /usr/lib/qubes/vm-file-editor
  127. %{kde_service_dir}/qvm-copy.desktop
  128. %{kde_service_dir}/qvm-dvm.desktop
  129. /usr/lib/qubes/qrexec_agent
  130. /usr/lib/qubes/qrexec_client_vm
  131. /usr/lib/qubes/qubes_rpc_multiplexer
  132. /usr/lib/qubes/qfile-agent
  133. /usr/lib/qubes/qopen-in-vm
  134. /usr/lib/qubes/qfile-unpacker
  135. /usr/lib/qubes/vm-shell
  136. /usr/lib/qubes/qrun-in-vm
  137. /usr/lib/qubes/wrap_in_html_if_url.sh
  138. %dir /mnt/removable
  139. %dir /etc/qubes_rpc
  140. /etc/qubes_rpc/qubes.Filecopy
  141. /etc/qubes_rpc/qubes.OpenInVM
  142. /etc/qubes_rpc/qubes.VMShell
  143. /usr/bin/qubes_timestamp
  144. %dir /home_volatile
  145. %attr(700,user,user) /home_volatile/user
  146. /etc/X11/xorg-preload-apps.conf
  147. %dir /var/run/qubes
  148. %dir %attr(0775,user,user) /var/lib/qubes/dom0-updates
  149. /etc/sudoers.d/qubes
  150. %package devel
  151. Summary: Include files for qubes core libraries
  152. License: GPL v2 only
  153. Group: Development/Sources
  154. %description devel
  155. %files devel
  156. /usr/include/libvchan.h
  157. /usr/include/u2mfnlib.h
  158. /usr/include/u2mfn-kernel.h
  159. %package libs
  160. Summary: Qubes core libraries
  161. License: GPL v2 only
  162. Group: Development/Sources
  163. %description libs
  164. %files libs
  165. %{_libdir}/libvchan.so
  166. %{_libdir}/libu2mfn.so