Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 196 lines (166 sloc) 5.656 kb
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
ifdef B_BASE
include $(B_BASE)/common.mk
include $(B_BASE)/rpmbuild.mk
REPO=$(call git_loc,xen-api)
else
MY_OUTPUT_DIR ?= $(CURDIR)/output
MY_OBJ_DIR ?= $(CURDIR)/obj
REPO ?= $(CURDIR)

RPM_SPECSDIR?=$(shell rpm --eval='%_specdir')
RPM_SRPMSDIR?=$(shell rpm --eval='%_srcrpmdir')
RPM_SOURCESDIR?=$(shell rpm --eval='%_sourcedir')
RPMBUILD?=rpmbuild
XEN_RELEASE?=unknown
endif

BASE_PATH=$(shell scripts/base-path scripts/xapi.conf)

JQUERY=$(CARBON_DISTFILES)/javascript/jquery/jquery-1.1.3.1.pack.js
JQUERY_TREEVIEW=$(CARBON_DISTFILES)/javascript/jquery/treeview/jquery.treeview.zip

COMPILE_NATIVE ?= yes
COMPILE_BYTE ?= no
export COMPILE_NATIVE COMPILE_BYTE

# FHS stuff
VARDIR=/var/xapi
VARPATCHDIR=/var/patch
ETCDIR=/etc/xensource
OPTDIR=/opt/xensource
PLUGINDIR=/etc/xapi.d/plugins
HOOKSDIR=/etc/xapi.d
INVENTORY=/etc/xensource-inventory
XAPICONF=/etc/xapi.conf
RRDDCONF=/etc/xcp-rrdd.conf
LIBEXECDIR=/opt/xensource/libexec
SCRIPTSDIR=/etc/xensource/scripts
SHAREDIR=/opt/xensource
WEBDIR=/opt/xensource/www
XHADIR=/opt/xensource/xha
BINDIR=/opt/xensource/bin
SBINDIR=/opt/xensource/bin

export VARDIR ETCDIR OPTDIR PLUGINDIR HOOKSDIR INVENTORY VARPATCHDIR LIBEXECDIR XAPICONF RRDDCONF SCRIPTSDIR SHAREDIR WEBDIR XHADIR BINDIR SBINDIR

.PHONY: all
all: version ocaml/fhs.ml
omake -j 8 phase1
omake -j 8 phase2
omake -j 8 phase3
@make test

.PHONY: phase3
phase3:
omake phase3

.PHONY: test
test:
omake test
@echo @
@echo @ Running unit tests
@echo @
# Pipe ugly bash output to /dev/null
@echo @ xapi unit test suite
@./ocaml/test/suite
@echo @ xapi_unit_test
@./ocaml/xapi/xapi_unit_test
@echo @ xenops-cli unit test
@./ocaml/xenops-cli/runtest.sh 2> /dev/null
@echo
@echo @ HA binpack test
@./ocaml/xapi/binpack
@echo @ squeezed test
@./ocaml/xenops/squeeze_test
# The following test no longer runs:
# ./ocaml/database/database_test
# The following test no longer compiles:
# ./ocaml/xenops/device_number_test
# The following test must be run in dom0:
# ./ocaml/xenops/cancel_utils_test

.PHONY: install
install:
omake install
omake lib-uninstall
omake lib-install

.PHONY: lib-install
lib-install:
omake DESTDIR=$(DESTDIR) lib-install

.PHONY: lib-uninstall
lib-uninstall:
omake DESTDIR=$(DESTDIR) lib-uninstall

.PHONY: sdk-install
sdk-install: doc
omake sdk-install

.PHONY: noarch-install
noarch-install: doc
omake noarch-install

.PHONY: clean
clean:
omake clean
omake lib-uninstall
rm -rf dist/staging
rm -f .omakedb .omakedb.lock xapi.spec

.PHONY: otags
otags:
otags -vi -r . -o tags

.PHONY: doc
doc: api-doc api-libs-doc

.PHONY: api-doc
api-doc: version
omake phase1 phase2 # autogenerated files might be required
omake doc

.PHONY: api-libs-doc
api-libs-doc:
@(cd ../xen-api-libs 2> /dev/null && $(MAKE) doc) || \
(echo ">>> If you have a myclone of xen-api-libs, its documentation will be included. <<<")

PLATFORM_VERSION ?= 0.0.0

.PHONY: version
version:
@printf "(* This file is autogenerated. Grep for e17512ce-ba7c-11df-887b-0026b9799147 (random uuid) to see where it comes from. ;o) *) \n \
let git_id = \"$(shell git show-ref --head | grep -E ' HEAD$$' | cut -f 1 -d ' ')\" \n \
let hostname = \"$(shell hostname)\" \n \
let date = \"$(shell date -u +%Y-%m-%d)\" \n \
let product_version = Util_inventory.lookup ~default:\"\" \"PRODUCT_VERSION\" \n \
let product_version_text = Util_inventory.lookup ~default:\"\" \"PRODUCT_VERSION_TEXT\" \n \
let product_version_text_short = Util_inventory.lookup ~default:\"\" \"PRODUCT_VERSION_TEXT_SHORT\" \n \
let platform_name = \"$(PLATFORM_NAME)\" \n \
let platform_version = \"$(PLATFORM_VERSION)\" \n \
let product_brand = Util_inventory.lookup ~default:\"\" \"PRODUCT_BRAND\" \n \
let build_number = Util_inventory.lookup ~default:\"$(BUILD_NUMBER)\" \"BUILD_NUMBER\" \n \
let xapi_version_major = $(shell cut -d. -f1 VERSION) \n \
let xapi_version_minor = $(shell cut -d. -f2 VERSION) \n" \
> ocaml/util/version.ml

ocaml/fhs.ml :
@printf "(* This file is autogenerated by xen-api.git/Makefile *)\n \
let vardir=\"$(VARDIR)\"\n \
let etcdir=\"$(ETCDIR)\"\n \
let optdir=\"$(OPTDIR)\"\n \
let plugindir=\"$(PLUGINDIR)\"\n \
let inventory=\"$(INVENTORY)\"\n \
let hooksdir=\"$(HOOKSDIR)\"\n \
let libexecdir=\"$(LIBEXECDIR)\"\n \
let xapiconf=\"$(XAPICONF)\"\n \
let rrddconf=\"$(RRDDCONF)\"\n \
let scriptsdir=\"$(SCRIPTSDIR)\"\n \
let varpatchdir=\"$(VARPATCHDIR)\"\n \
let webdir=\"$(WEBDIR)\"\n \
let xhadir=\"$(XHADIR)\"\n \
let bindir=\"$(BINDIR)\"\n \
let sbindir=\"$(SBINDIR)\"\n \
let sharedir=\"$(SHAREDIR)\"\n" \
> ocaml/fhs.ml

.PHONY: clean
 clean:

xapi.spec: xapi.spec.in
noarch.spec: noarch.spec.in

%.spec: %.spec.in
sed -e 's/@RPM_RELEASE@/$(shell git rev-list HEAD | wc -l)/g' < $< > $@
sed -i "s!@OPTDIR@!${OPTDIR}!g" $@

.PHONY: srpm
srpm: xapi.spec noarch.spec
mkdir -p $(RPM_SOURCESDIR) $(RPM_SPECSDIR) $(RPM_SRPMSDIR)
while ! [ -d .git ]; do cd ..; done; \
git archive --prefix=xapi-0.2/ --format=tar HEAD | bzip2 -z > $(RPM_SOURCESDIR)/xapi-0.2.tar.bz2 # xen-api/Makefile
git archive --prefix=xapi-noarch-0.2/ --format=tar HEAD | bzip2 -z > $(RPM_SOURCESDIR)/xapi-noarch-0.2.tar.bz2 # xen-api/Makefile
cp $(JQUERY) $(JQUERY_TREEVIEW) $(RPM_SOURCESDIR)
make -C $(REPO) version
rm -f $(RPM_SOURCESDIR)/xapi-version.patch
(cd $(REPO); diff -u /dev/null ocaml/util/version.ml > $(RPM_SOURCESDIR)/xapi-version.patch) || true
cp -f xapi.spec noarch.spec $(RPM_SPECSDIR)/
chown root.root $(RPM_SPECSDIR)/xapi.spec $(RPM_SPECSDIR)/noarch.spec || true
$(RPMBUILD) -bs --nodeps $(RPM_SPECSDIR)/xapi.spec
$(RPMBUILD) -bs --nodeps $(RPM_SPECSDIR)/noarch.spec


.PHONY: build
build: all

Something went wrong with that request. Please try again.