alias vi to vi + restorecon
[ovirt-node-image.git] / Makefile.am
bloba44ae4929a415ef26b5f2f65998871f685b63c6b
1 # Copyright (C) 2008 Red Hat, Inc.
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; version 2 of the License.
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 # GNU General Public License for more details.
12 # You should have received a copy of the GNU General Public License
13 # along with this program; if not, write to the Free Software
14 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
15 # MA  02110-1301, USA.  A copy of the GNU General Public License is
16 # also available at http://www.gnu.org/copyleft/gpl.html.
18 OVIRT_CACHE_DIR  ?= $(HOME)/ovirt-cache
19 OVIRT_LOCAL_REPO ?= file://$(OVIRT_CACHE_DIR)/ovirt
20 OVIRT_URL        ?= http://ovirt.org/repos/ovirt
21 SUM              ?= sha1sum
22 PKG_FMT           = iso
23 SRC_FMT          ?= tar
24 AUTH_KEYS        ?= ~/.ssh/authorized_keys
26 FEDORA_MIRROR     = http://mirrors.fedoraproject.org/mirrorlist
27 CUR_RAWHIDE       = 12
29 FEDORA            = $(shell rpm --eval '%{fedora}')
30 ARCH              = $(shell rpm --eval '%{_arch}')
32 CUR_PREVIEW       = 11
33 PREVIEW_URL      ?= http://markmc.fedorapeople.org/virt-preview/f$(CUR_PREVIEW)/$(ARCH)
35 NVR               = $(PACKAGE)-$(VERSION)-$(ARCH)
37 EXTRA_DIST =                            \
38   .gitignore                            \
39   $(PACKAGE).spec                       \
40   $(PACKAGE).spec.in                    \
41   common-blacklist.ks                   \
42   common-install.ks                     \
43   common-pkgs.ks                        \
44   common-post.ks                        \
45   $(PACKAGE).ks                         \
46   create-ovirt-iso-nodes                \
47   edit-livecd                           \
48   livecd-setauth                        \
49   livecd-rpms                           \
50   README
52 DISTCLEANFILES = $(PACKAGE)-$(VERSION).tar.gz \
53   $(PACKAGE).$(PKG_FMT) \
54   $(NVR).$(PKG_FMT) \
55   $(NVR).$(PKG_FMT).$(SUM) \
56   repos.ks ovirt-authorized_keys
58 # For Release: 0..., set _ovirt_dev=1 so that we get extra_release.GIT-
59 # annotated rpm version strings.
60 _ovirt_dev = \
61  $(shell grep -q '^[[:space:]]*Release:[[:space:]]*0' \
62    $(srcdir)/*.spec.in && echo 1 || :)
64 git_head    = $$(git log -1 --pretty=format:%h)
65 GIT_RELEASE = $(shell date --utc +%Y%m%d%H%M%S)git$(git_head)
66 RPMDIR      = $$(rpm --eval '%{_rpmdir}')
67 RPM_FLAGS   = --define "ovirt_cache_dir $(OVIRT_CACHE_DIR)"
68 RPM_FLAGS  += $(if $(_ovirt_dev),--define "extra_release .$(GIT_RELEASE)")
69 NODE_TMP    = $(OVIRT_CACHE_DIR)/$(PACKAGE)-$(ARCH)-tmp
70 SRC_KS      = $(NODE_TMP)/src.ks
72 repos.ks:
73         ( \
74             if [ 0$(FEDORA) == 0$(CUR_RAWHIDE) ]; then \
75                 FEDORA_REPO=rawhide ;\
76                 FEDORA_REPO_LOC="$(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/development/$(ARCH)/os,--mirrorlist=$(FEDORA_MIRROR)?repo=rawhide&arch=$(ARCH))" ;\
77                 OVIRT_DISTRO=development ;\
78             else \
79                 FEDORA_REPO=f$(FEDORA) ;\
80                 FEDORA_REPO_LOC="$(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/releases/$(FEDORA)/Everything/${ARCH}/os,--mirrorlist=$(FEDORA_MIRROR)?repo=fedora-$(FEDORA)&arch=$(ARCH))" ;\
81                 OVIRT_DISTRO=$(FEDORA) ;\
82                 UPDATE_REPO_LINE="repo --name=$${FEDORA_REPO}-updates $(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/updates/$(FEDORA)/${ARCH},--mirrorlist=$(FEDORA_MIRROR)?repo=updates-released-f$(FEDORA)&arch=$(ARCH))\n" ;\
83                 if [ 0$(FEDORA) == 0$(CUR_PREVIEW) ]; then \
84                     UPDATE_REPO_LINE="$${UPDATE_REPO_LINE}repo --name=preview --baseurl=$(PREVIEW_URL)\n" ;\
85                 fi ;\
86             fi ;\
87             echo "repo --name=$${FEDORA_REPO} $${FEDORA_REPO_LOC}" > $@ ;\
88             echo "repo --name=ovirt-org --baseurl=$(OVIRT_URL)/$${OVIRT_DISTRO}/$(ARCH)" >> $@ ;\
89             printf "$${UPDATE_REPO_LINE}" >> $@ ;\
90             echo "repo --name=ovirt-local --baseurl=$(OVIRT_LOCAL_REPO)" >> $@ \
91         )
93 src.ks: repos.ks
94         mkdir -p $(NODE_TMP)
95         ( \
96             cat repos.ks ;\
97             if [ 0$(FEDORA) == 0$(CUR_RAWHIDE) ]; then \
98                 FEDORA_REPO=rawhide ;\
99                 FEDORA_REPO_LOC="$(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/development/source/SRPMS,--mirrorlist=$(FEDORA_MIRROR)?repo=rawhide-source&arch=source)" ;\
100                 OVIRT_DISTRO=development ;\
101             else \
102                 FEDORA_REPO=f$(FEDORA) ;\
103                 FEDORA_REPO_LOC="$(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/releases/$(FEDORA)/Everything/source/SRPMS,--mirrorlist=$(FEDORA_MIRROR)?repo=fedora-source-$(FEDORA)&arch=source)" ;\
104                 OVIRT_DISTRO=$(FEDORA) ;\
105                 UPDATE_REPO_LINE="repo --name=$${FEDORA_REPO}-updates-source $(if $(FEDORA_URL),--baseurl=$(FEDORA_URL)/updates/$(FEDORA)/SRPMS,--mirrorlist=$(FEDORA_MIRROR)?repo=updates-released-source-f$(FEDORA)&arch=source)" ;\
106             fi ;\
107             echo "repo --name=$${FEDORA_REPO}-source $${FEDORA_REPO_LOC}" ;\
108             echo "repo --name=ovirt-org-source --baseurl=$(OVIRT_URL)/$${OVIRT_DISTRO}/src" ;\
109             echo "$${UPDATE_REPO_LINE}" ;\
110             echo "%packages --nobase" ;\
111             grep -v '^-' common-pkgs.ks ;\
112             echo "%end" ;\
113         ) > $(SRC_KS)
115 keys:
116         if [ "$(_ovirt_dev)" = 1 -a -f $(AUTH_KEYS) ]; then \
117             cp -va $(AUTH_KEYS) ovirt-authorized_keys ;\
118         fi
120 SELINUX_ENFORCING=$(shell /usr/sbin/getenforce)
121 $(NVR).$(PKG_FMT): no_nscd repos.ks keys
122         mkdir -p $(NODE_TMP)
123         mkdir -p $(OVIRT_CACHE_DIR)/yum-$(ARCH)
124         ( \
125             case $(SELINUX_ENFORCING) in \
126                 Enforcing) sudo /usr/sbin/setenforce Permissive ;; \
127                 Permissive) ;; \
128                 *) if ksflatten $(PACKAGE).ks 2>/dev/null \
129                        | grep -q '^selinux --disabled'; then \
130                        echo WARNING: SELinux disabled in kickstart ;\
131                    else \
132                        echo ERROR: SELinux enabled in kickstart, \
133                        but disabled on the build machine ;\
134                        exit 1 ;\
135                    fi ;; \
136             esac ;\
137         )
138         sudo livecd-creator --skip-minimize -c $(PACKAGE).ks \
139             -f $(PACKAGE) \
140             --tmpdir='$(NODE_TMP)' \
141             --cache='$(OVIRT_CACHE_DIR)/yum-$(ARCH)'
142         sudo chown $${USER} $(PACKAGE).$(PKG_FMT)
143         ( \
144             if [ $(SELINUX_ENFORCING) = Enforcing ]; then \
145                 sudo /usr/sbin/setenforce Enforcing || exit 1 ;\
146             fi \
147         )
149         ln -nf $(PACKAGE).$(PKG_FMT) $(NVR).$(PKG_FMT)
151 $(NVR).$(PKG_FMT).$(SUM): $(NVR).$(PKG_FMT)
152         $(SUM) $(NVR).$(PKG_FMT) > $(NVR).$(PKG_FMT).$(SUM)
154 $(PACKAGE).$(PKG_FMT) node: $(NVR).$(PKG_FMT).$(SUM)
156 PUNGI = $(NODE_TMP)/tree/pungi
157 source: src.ks
158         @sudo rm -Rf $(PUNGI)
159         @mkdir -p $(PUNGI)
161         cd $(PUNGI) && \
162             sudo pungi -G --ver=$(PACKAGE) -c $(SRC_KS) \
163             --cachedir=$(OVIRT_CACHE_DIR)/yum-$(ARCH)
164         if [ "$(SRC_FMT)" == "iso" ]; then \
165             cd $(PUNGI) && \
166                 sudo pungi --sourceiso --ver=$(PACKAGE) -c $(SRC_KS) \
167                 --cachedir=$(OVIRT_CACHE_DIR)/yum-$(ARCH) ;\
168             sudo mv $(PUNGI)/$(PACKAGE)/source/iso/Fedora-$(PACKAGE)-source.iso \
169                 $(PWD)/$(PACKAGE)-source-$(VERSION).iso ;\
170         elif [ "$(SRC_FMT)" == "tar" ]; then \
171             cd $(PUNGI)/$(PACKAGE)/source && \
172                 sudo tar cf ovirt-source.tar SRPMS ;\
173             sudo mv $(PUNGI)/$(PACKAGE)/source/ovirt-source.tar \
174                 $(PWD)/$(PACKAGE)-source-$(VERSION).tar ;\
175         else \
176             echo "Invalid src format: $(SRC_FMT)" ;\
177             exit 1 ;\
178         fi
179         sudo sudo chown -R $(USER) $(PWD)/$(PACKAGE)-source-$(VERSION).$(SRC_FMT)
180         sudo sudo chown -R $(USER) $(PUNGI)
181         $(SUM) $(PWD)/$(PACKAGE)-source-$(VERSION).$(SRC_FMT) \
182             > $(PACKAGE)-source-$(VERSION).$(SRC_FMT).$(SUM)
184 rpms: dist node
185         rpmbuild $(RPM_FLAGS) -ts $(distdir).tar.gz
186         rpmbuild $(RPM_FLAGS) --define "source_iso 1" -tb $(distdir).tar.gz
188 srpms: dist
189         rpmbuild $(RPM_FLAGS) -ts $(distdir).tar.gz
190         $(MAKE) _publish
192 iso_srpms: dist
193         rpmbuild $(RPM_FLAGS) --define "source_iso 1" -ts $(distdir).tar.gz
194         $(MAKE) _publish
196 publish: rpms _publish
198 _publish:
199         mkdir -p $(OVIRT_CACHE_DIR)
200         rsync -aq $(shell rpm --eval '%{_rpmdir}')/ $(OVIRT_CACHE_DIR)/ovirt/
201         rsync -aq $(shell rpm --eval '%{_srcrpmdir}')/ $(OVIRT_CACHE_DIR)/ovirt/src
202         createrepo $(OVIRT_CACHE_DIR)/ovirt
204 no_nscd:
205         if pgrep -xl nscd; then \
206             echo "Please stop nscd" ;\
207             exit 1 ;\
208         fi
210 .PHONY: rpms publish srpms $(NVR).$(PKG_FMT).$(SUM) $(NVR).$(PKG_FMT) \
211   $(PACKAGE).$(PKG_FMT) keys repos.ks src.ks source _publish iso_srpms \
212   no_nscd